Add SolarXR WebSockets driver
This driver makes tracking data from SlimeVR available through XR_FB_body_tracking, XR_META_body_tracking_full_body (code commented out pending !2206), and optionally XR_MNDX_xdev_space. This MR omits builder hookups for bookkeeping's sake, however the driver should work with pretty much every builder.
Loading with XR_MNDX_xdev_space support:
const uint32_t count = solarxr_device_create_xdevs(head, &xsysd->xdevs[xsysd->xdev_count], ARRAY_SIZE(xsysd->xdevs) - xsysd->xdev_count);
if(count != 0)
xsysd->static_roles.body = xsysd->xdevs[xsysd->xdev_count];
xsysd->xdev_count += count;
Loading without XR_MNDX_xdev_space support:
xsysd->static_roles.body = solarxr_device_create(head);
if(xsysd->static_roles.body != NULL)
xsysd->xdevs[xsysd->xdev_count++] = xsysd->static_roles.body;
I've included a copy of the SolarXR schema with syntax fixes for FlatCC (i.e. removing (deprecated)
attributes), but in the long term it would be preferable to reference upstream directly.
Side note: make sure to test with https://github.com/SlimeVR/SlimeVR-Server/tree/main compiled from source, as it includes a bugfix needed to get head position feedback working.