diff --git a/src/xrt/auxiliary/util/u_builders.c b/src/xrt/auxiliary/util/u_builders.c index f89f85c1f..dd770549b 100644 --- a/src/xrt/auxiliary/util/u_builders.c +++ b/src/xrt/auxiliary/util/u_builders.c @@ -113,33 +113,33 @@ u_builder_setup_tracking_origins(struct xrt_device *head, struct xrt_tracking_origin *right_origin = right ? right->tracking_origin : NULL; if (left_origin != NULL && left_origin->type == XRT_TRACKING_TYPE_NONE) { - left_origin->offset.position.x = -0.2f; - left_origin->offset.position.y = 1.3f; - left_origin->offset.position.z = -0.5f; + left_origin->initial_offset.position.x = -0.2f; + left_origin->initial_offset.position.y = 1.3f; + left_origin->initial_offset.position.z = -0.5f; } if (right_origin != NULL && right_origin->type == XRT_TRACKING_TYPE_NONE) { - right_origin->offset.position.x = 0.2f; - right_origin->offset.position.y = 1.3f; - right_origin->offset.position.z = -0.5f; + right_origin->initial_offset.position.x = 0.2f; + right_origin->initial_offset.position.y = 1.3f; + right_origin->initial_offset.position.z = -0.5f; } // Head comes last, because left and right may share tracking origin. if (head_origin != NULL && head_origin->type == XRT_TRACKING_TYPE_NONE) { // "nominal height" 1.6m - head_origin->offset.position.x = 0.0f; - head_origin->offset.position.y = 1.6f; - head_origin->offset.position.z = 0.0f; + head_origin->initial_offset.position.x = 0.0f; + head_origin->initial_offset.position.y = 1.6f; + head_origin->initial_offset.position.z = 0.0f; } if (head_origin) { - apply_offset(&head_origin->offset.position, global_tracking_origin_offset); + apply_offset(&head_origin->initial_offset.position, global_tracking_origin_offset); } if (left_origin && left_origin != head_origin) { - apply_offset(&left->tracking_origin->offset.position, global_tracking_origin_offset); + apply_offset(&left->tracking_origin->initial_offset.position, global_tracking_origin_offset); } if (right_origin && right_origin != head_origin && right_origin != left_origin) { - apply_offset(&right->tracking_origin->offset.position, global_tracking_origin_offset); + apply_offset(&right->tracking_origin->initial_offset.position, global_tracking_origin_offset); } } diff --git a/src/xrt/auxiliary/util/u_device.c b/src/xrt/auxiliary/util/u_device.c index 6d38edba6..7ffaeb135 100644 --- a/src/xrt/auxiliary/util/u_device.c +++ b/src/xrt/auxiliary/util/u_device.c @@ -316,7 +316,7 @@ u_device_allocate(enum u_device_alloc_flags flags, size_t size, size_t input_cou if (alloc_tracking) { xdev->tracking_origin = (struct xrt_tracking_origin *)(ptr + offset_tracking); xdev->tracking_origin->type = XRT_TRACKING_TYPE_NONE; - xdev->tracking_origin->offset.orientation.w = 1.0f; + xdev->tracking_origin->initial_offset.orientation.w = 1.0f; snprintf(xdev->tracking_origin->name, XRT_TRACKING_NAME_LEN, "%s", "No tracking"); } diff --git a/src/xrt/auxiliary/util/u_space_overseer.c b/src/xrt/auxiliary/util/u_space_overseer.c index 6e5260ac6..9c91ab859 100644 --- a/src/xrt/auxiliary/util/u_space_overseer.c +++ b/src/xrt/auxiliary/util/u_space_overseer.c @@ -914,7 +914,7 @@ u_space_overseer_legacy_setup(struct u_space_overseer *uso, if (ptr != NULL) { xs = (struct xrt_space *)ptr; } else { - u_space_overseer_create_offset_space(uso, root, &torig->offset, &xs); + u_space_overseer_create_offset_space(uso, root, &torig->initial_offset, &xs); u_hashmap_int_insert(torig_map, key, xs); } diff --git a/src/xrt/drivers/euroc/euroc_device.c b/src/xrt/drivers/euroc/euroc_device.c index 88006a621..da1bbc70e 100644 --- a/src/xrt/drivers/euroc/euroc_device.c +++ b/src/xrt/drivers/euroc/euroc_device.c @@ -196,7 +196,7 @@ euroc_device_create(struct xrt_prober *xp) xd->tracking_origin = &ed->tracking_origin; xd->tracking_origin->type = XRT_TRACKING_TYPE_EXTERNAL_SLAM; - xd->tracking_origin->offset.orientation.w = 1.0f; + xd->tracking_origin->initial_offset.orientation.w = 1.0f; snprintf(xd->tracking_origin->name, XRT_TRACKING_NAME_LEN, "%s %s", dev_name, "SLAM Tracker"); if (is_hmd) { @@ -217,7 +217,7 @@ euroc_device_create(struct xrt_prober *xp) u_var_add_root(ed, dev_name, false); u_var_add_pose(ed, &ed->pose, "pose"); u_var_add_pose(ed, &ed->offset, "offset"); - u_var_add_pose(ed, &ed->tracking_origin.offset, "tracking offset"); + u_var_add_pose(ed, &ed->tracking_origin.initial_offset, "tracking offset"); bool tracked = xp->tracking->create_tracked_slam(xp->tracking, &ed->slam) >= 0; if (!tracked) { diff --git a/src/xrt/drivers/ht/ht_driver.c b/src/xrt/drivers/ht/ht_driver.c index 4c4dcef16..b624f55a3 100644 --- a/src/xrt/drivers/ht/ht_driver.c +++ b/src/xrt/drivers/ht/ht_driver.c @@ -203,10 +203,10 @@ ht_device_create_common(struct t_stereo_camera_calibration *calib, } htd->base.tracking_origin->type = XRT_TRACKING_TYPE_RGB; - htd->base.tracking_origin->offset.position.x = 0.0f; - htd->base.tracking_origin->offset.position.y = 0.0f; - htd->base.tracking_origin->offset.position.z = 0.0f; - htd->base.tracking_origin->offset.orientation.w = 1.0f; + htd->base.tracking_origin->initial_offset.position.x = 0.0f; + htd->base.tracking_origin->initial_offset.position.y = 0.0f; + htd->base.tracking_origin->initial_offset.position.z = 0.0f; + htd->base.tracking_origin->initial_offset.orientation.w = 1.0f; htd->base.update_inputs = u_device_noop_update_inputs; htd->base.get_hand_tracking = ht_device_get_hand_tracking; diff --git a/src/xrt/drivers/hydra/hydra_driver.c b/src/xrt/drivers/hydra/hydra_driver.c index 5fbfa6419..6d71edca5 100644 --- a/src/xrt/drivers/hydra/hydra_driver.c +++ b/src/xrt/drivers/hydra/hydra_driver.c @@ -595,9 +595,9 @@ hydra_found(struct xrt_prober *xp, hs->base.type = XRT_TRACKING_TYPE_HYDRA; snprintf(hs->base.name, XRT_TRACKING_NAME_LEN, "%s", "Razer Hydra magnetic tracking"); // Arbitrary static transform from local space to base. - hs->base.offset.position.y = 1.0f; - hs->base.offset.position.z = -0.25f; - hs->base.offset.orientation.w = 1.0f; + hs->base.initial_offset.position.y = 1.0f; + hs->base.initial_offset.position.z = -0.25f; + hs->base.initial_offset.orientation.w = 1.0f; hs->data_hid = data_hid; hs->command_hid = command_hid; diff --git a/src/xrt/drivers/multi_wrapper/multi.c b/src/xrt/drivers/multi_wrapper/multi.c index 0eef63de6..b4e303d90 100644 --- a/src/xrt/drivers/multi_wrapper/multi.c +++ b/src/xrt/drivers/multi_wrapper/multi.c @@ -109,8 +109,8 @@ get_tracked_pose(struct xrt_device *xdev, m_space_relation_ident(&in_target_space); in_target_space.relation_flags = tracker_relation.relation_flags; - struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->offset; - struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->offset; + struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->initial_offset; + struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->initial_offset; attached_override(d, &target_relation, target_offset, &tracker_relation, tracker_offset, &in_target_space, out_relation); @@ -163,8 +163,8 @@ get_hand_tracking(struct xrt_device *xdev, m_space_relation_ident(&in_target_space); in_target_space.relation_flags = tracker_relation.relation_flags; - struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->offset; - struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->offset; + struct xrt_pose *target_offset = &d->tracking_override.target->tracking_origin->initial_offset; + struct xrt_pose *tracker_offset = &d->tracking_override.tracker->tracking_origin->initial_offset; attached_override(d, &out_value->hand_pose, target_offset, &tracker_relation, tracker_offset, &in_target_space, &out_value->hand_pose); diff --git a/src/xrt/drivers/ohmd/oh_device.c b/src/xrt/drivers/ohmd/oh_device.c index 72c7e3ef7..121999cde 100644 --- a/src/xrt/drivers/ohmd/oh_device.c +++ b/src/xrt/drivers/ohmd/oh_device.c @@ -1233,7 +1233,7 @@ oh_device_create(ohmd_context *ctx, bool no_hmds, struct xrt_device **out_xdevs) //! @todo: support mix of 3dof and 6dof OpenHMD devices struct oh_system *sys = U_TYPED_CALLOC(struct oh_system); sys->base.type = XRT_TRACKING_TYPE_NONE; - sys->base.offset.orientation.w = 1.0f; + sys->base.initial_offset.orientation.w = 1.0f; u_var_add_root(sys, "OpenHMD Wrapper", false); diff --git a/src/xrt/drivers/realsense/rs_ddev.c b/src/xrt/drivers/realsense/rs_ddev.c index ebb737596..4d7e562bf 100644 --- a/src/xrt/drivers/realsense/rs_ddev.c +++ b/src/xrt/drivers/realsense/rs_ddev.c @@ -466,7 +466,7 @@ rs_ddev_create(int device_idx) rs->base.destroy = rs_ddev_destroy; rs->base.name = XRT_DEVICE_REALSENSE; rs->base.tracking_origin->type = XRT_TRACKING_TYPE_EXTERNAL_SLAM; - rs->base.tracking_origin->offset = (struct xrt_pose)XRT_POSE_IDENTITY; + rs->base.tracking_origin->initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; // Print name. snprintf(rs->base.str, XRT_DEVICE_NAME_LEN, "Intel RealSense Device-SLAM"); diff --git a/src/xrt/drivers/remote/r_hub.c b/src/xrt/drivers/remote/r_hub.c index aaaf0b3c0..f72e06a76 100644 --- a/src/xrt/drivers/remote/r_hub.c +++ b/src/xrt/drivers/remote/r_hub.c @@ -415,7 +415,7 @@ r_create_devices(uint16_t port, r->base.destroy = r_hub_system_devices_destroy; r->base.get_roles = r_hub_system_devices_get_roles; r->origin.type = XRT_TRACKING_TYPE_RGB; - r->origin.offset = (struct xrt_pose)XRT_POSE_IDENTITY; + r->origin.initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; r->reset.head.center = (struct xrt_pose)XRT_POSE_IDENTITY; r->reset.head.center.position.y = 1.6f; r->reset.left.active = true; @@ -487,7 +487,7 @@ r_create_devices(uint16_t port, struct xrt_space *root = xso->semantic.root; // Convenience struct xrt_space *offset = NULL; - u_space_overseer_create_offset_space(uso, root, &r->origin.offset, &offset); + u_space_overseer_create_offset_space(uso, root, &r->origin.initial_offset, &offset); for (uint32_t i = 0; i < r->base.xdev_count; i++) { u_space_overseer_link_space_to_device(uso, offset, r->base.xdevs[i]); diff --git a/src/xrt/drivers/rift_s/rift_s.c b/src/xrt/drivers/rift_s/rift_s.c index 217e7a61a..71e918780 100644 --- a/src/xrt/drivers/rift_s/rift_s.c +++ b/src/xrt/drivers/rift_s/rift_s.c @@ -158,7 +158,7 @@ rift_s_system_create(struct xrt_prober *xp, struct rift_s_system *sys = U_TYPED_CALLOC(struct rift_s_system); sys->base.type = XRT_TRACKING_TYPE_NONE; - sys->base.offset.orientation.w = 1.0f; + sys->base.initial_offset.orientation.w = 1.0f; /* Init refcount */ sys->ref.count = 1; diff --git a/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp b/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp index d35c08d20..16175ab07 100644 --- a/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp +++ b/src/xrt/drivers/steamvr_lh/steamvr_lh.cpp @@ -115,7 +115,7 @@ Context::create(const std::string &steam_install, c->providers = std::move(providers); std::strncpy(c->name, "SteamVR Lighthouse Tracking", XRT_TRACKING_NAME_LEN); c->type = XRT_TRACKING_TYPE_LIGHTHOUSE; - c->offset = XRT_POSE_IDENTITY; + c->initial_offset = XRT_POSE_IDENTITY; for (vr::IServerTrackedDeviceProvider *const &driver : c->providers) { vr::EVRInitError err = driver->Init(c.get()); if (err != vr::VRInitError_None) { diff --git a/src/xrt/drivers/survive/survive_driver.c b/src/xrt/drivers/survive/survive_driver.c index 52f067266..53294e650 100644 --- a/src/xrt/drivers/survive/survive_driver.c +++ b/src/xrt/drivers/survive/survive_driver.c @@ -1336,10 +1336,10 @@ survive_get_devices(struct xrt_device **out_xdevs, struct vive_config **out_vive ss->ctx = actx; ss->base.type = XRT_TRACKING_TYPE_LIGHTHOUSE; snprintf(ss->base.name, XRT_TRACKING_NAME_LEN, "%s", "Libsurvive Tracking"); - ss->base.offset.position.x = 0.0f; - ss->base.offset.position.y = 0.0f; - ss->base.offset.position.z = 0.0f; - ss->base.offset.orientation.w = 1.0f; + ss->base.initial_offset.position.x = 0.0f; + ss->base.initial_offset.position.y = 0.0f; + ss->base.initial_offset.position.z = 0.0f; + ss->base.initial_offset.orientation.w = 1.0f; ss->timecode_offset_ms = (struct u_var_draggable_f32){ .val = debug_get_float_option_survive_timecode_offset_ms(), .min = -20.0, diff --git a/src/xrt/drivers/twrap/twrap_slam.c b/src/xrt/drivers/twrap/twrap_slam.c index e2d43fa85..55efbc02b 100644 --- a/src/xrt/drivers/twrap/twrap_slam.c +++ b/src/xrt/drivers/twrap/twrap_slam.c @@ -176,7 +176,7 @@ twrap_slam_create_device(struct xrt_frame_context *xfctx, dx->base.destroy = twrap_slam_destroy; dx->base.name = name; dx->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; - dx->base.tracking_origin->offset = (struct xrt_pose)XRT_POSE_IDENTITY; + dx->base.tracking_origin->initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; dx->base.inputs[0].name = XRT_INPUT_GENERIC_TRACKER_POSE; dx->base.orientation_tracking_supported = true; dx->base.position_tracking_supported = true; diff --git a/src/xrt/drivers/ultraleap_v2/ulv2_driver.cpp b/src/xrt/drivers/ultraleap_v2/ulv2_driver.cpp index 237b3d61e..5d368e445 100644 --- a/src/xrt/drivers/ultraleap_v2/ulv2_driver.cpp +++ b/src/xrt/drivers/ultraleap_v2/ulv2_driver.cpp @@ -387,7 +387,7 @@ ulv2_create_device(struct xrt_device **out_xdev) ulv2d->base.tracking_origin = &ulv2d->tracking_origin; ulv2d->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; - math_pose_identity(&ulv2d->base.tracking_origin->offset); + math_pose_identity(&ulv2d->base.tracking_origin->initial_offset); ulv2d->log_level = debug_get_log_option_ulv2_log(); diff --git a/src/xrt/drivers/ultraleap_v5/ulv5_driver.cpp b/src/xrt/drivers/ultraleap_v5/ulv5_driver.cpp index d3928123f..8d2454a1c 100644 --- a/src/xrt/drivers/ultraleap_v5/ulv5_driver.cpp +++ b/src/xrt/drivers/ultraleap_v5/ulv5_driver.cpp @@ -310,7 +310,7 @@ ulv5_create_device(struct xrt_device **out_xdev) ulv5d->base.tracking_origin = &ulv5d->tracking_origin; ulv5d->base.tracking_origin->type = XRT_TRACKING_TYPE_OTHER; - math_pose_identity(&ulv5d->base.tracking_origin->offset); + math_pose_identity(&ulv5d->base.tracking_origin->initial_offset); ulv5d->log_level = debug_get_log_option_ulv5_log(); diff --git a/src/xrt/include/xrt/xrt_tracking.h b/src/xrt/include/xrt/xrt_tracking.h index b63b245f3..e7fec33bd 100644 --- a/src/xrt/include/xrt/xrt_tracking.h +++ b/src/xrt/include/xrt/xrt_tracking.h @@ -76,10 +76,10 @@ struct xrt_tracking_origin enum xrt_tracking_type type; /*! - * Read and written to by the state-tracker using the device(s) - * this tracking system is tracking. + * Read-only. Set once by the builder, or in some cases, the driver. + * With some systems, the offset may be changed at runtime using the space overseer. */ - struct xrt_pose offset; + struct xrt_pose initial_offset; }; /*! diff --git a/src/xrt/ipc/client/ipc_client_instance.c b/src/xrt/ipc/client/ipc_client_instance.c index cb635306d..b79ed653a 100644 --- a/src/xrt/ipc/client/ipc_client_instance.c +++ b/src/xrt/ipc/client/ipc_client_instance.c @@ -283,12 +283,12 @@ ipc_instance_create(struct xrt_instance_info *i_info, struct xrt_instance **out_ memcpy(xtrack->name, ism->itracks[i].name, sizeof(xtrack->name)); xtrack->type = ism->itracks[i].type; - xtrack->offset = ism->itracks[i].offset; + xtrack->initial_offset = ism->itracks[i].offset; ii->xtracks[count++] = xtrack; u_var_add_root(xtrack, "Tracking origin", true); u_var_add_ro_text(xtrack, xtrack->name, "name"); - u_var_add_pose(xtrack, &xtrack->offset, "offset"); + u_var_add_pose(xtrack, &xtrack->initial_offset, "offset"); } ii->xtrack_count = count; diff --git a/src/xrt/ipc/server/ipc_server_process.c b/src/xrt/ipc/server/ipc_server_process.c index e09e76bed..cfcfa1419 100644 --- a/src/xrt/ipc/server/ipc_server_process.c +++ b/src/xrt/ipc/server/ipc_server_process.c @@ -322,7 +322,7 @@ init_shm(struct ipc_server *s) struct ipc_shared_tracking_origin *itrack = &ism->itracks[count++]; memcpy(itrack->name, xtrack->name, sizeof(itrack->name)); itrack->type = xtrack->type; - itrack->offset = xtrack->offset; + itrack->offset = xtrack->initial_offset; } ism->itrack_count = count; diff --git a/src/xrt/state_trackers/oxr/oxr_session_frame_end.c b/src/xrt/state_trackers/oxr/oxr_session_frame_end.c index 10523e33f..843337abb 100644 --- a/src/xrt/state_trackers/oxr/oxr_session_frame_end.c +++ b/src/xrt/state_trackers/oxr/oxr_session_frame_end.c @@ -1789,7 +1789,7 @@ oxr_session_frame_end(struct oxr_logger *log, struct oxr_session *sess, const Xr do_synchronize_state_change(log, sess); struct xrt_pose inv_offset = {0}; - math_pose_invert(&xdev->tracking_origin->offset, &inv_offset); + math_pose_invert(&xdev->tracking_origin->initial_offset, &inv_offset); struct xrt_layer_frame_data data = { .frame_id = sess->frame_id.begun, diff --git a/src/xrt/state_trackers/prober/p_tracking.c b/src/xrt/state_trackers/prober/p_tracking.c index bb6c0959a..009a3cd4e 100644 --- a/src/xrt/state_trackers/prober/p_tracking.c +++ b/src/xrt/state_trackers/prober/p_tracking.c @@ -421,15 +421,15 @@ p_tracking_init(struct prober *p) fact->base.create_tracked_psvr = p_factory_create_tracked_psvr; fact->base.create_tracked_slam = p_factory_create_tracked_slam; fact->origin.type = XRT_TRACKING_TYPE_RGB; - fact->origin.offset.orientation.y = 1.0f; - fact->origin.offset.position.z = -2.0f; - fact->origin.offset.position.y = 1.0f; + fact->origin.initial_offset.orientation.y = 1.0f; + fact->origin.initial_offset.position.z = -2.0f; + fact->origin.initial_offset.position.y = 1.0f; fact->p = p; snprintf(fact->origin.name, sizeof(fact->origin.name), "PSVR & PSMV tracking"); u_var_add_root(fact, "Tracking Factory", false); - u_var_add_pose(fact, &fact->origin.offset, "offset"); + u_var_add_pose(fact, &fact->origin.initial_offset, "offset"); // Finally set us as the tracking factory. p->base.tracking = &fact->base; diff --git a/src/xrt/state_trackers/steamvr_drv/ovrd_driver.cpp b/src/xrt/state_trackers/steamvr_drv/ovrd_driver.cpp index 451135c9d..5d9b07884 100644 --- a/src/xrt/state_trackers/steamvr_drv/ovrd_driver.cpp +++ b/src/xrt/state_trackers/steamvr_drv/ovrd_driver.cpp @@ -881,7 +881,7 @@ public: struct xrt_space_relation rel; xrt_device_get_tracked_pose(m_xdev, grip_name, now_ns, &rel); - struct xrt_pose *offset = &m_xdev->tracking_origin->offset; + struct xrt_pose *offset = &m_xdev->tracking_origin->initial_offset; struct xrt_relation_chain chain = {}; m_relation_chain_push_relation(&chain, &rel); @@ -1268,7 +1268,7 @@ CDeviceDriver_Monado::GetPose() struct xrt_space_relation rel; xrt_device_get_tracked_pose(m_xdev, XRT_INPUT_GENERIC_HEAD_POSE, now_ns, &rel); - struct xrt_pose *offset = &m_xdev->tracking_origin->offset; + struct xrt_pose *offset = &m_xdev->tracking_origin->initial_offset; struct xrt_relation_chain chain = {}; m_relation_chain_push_relation(&chain, &rel); diff --git a/src/xrt/targets/common/target_builder_rgb_tracking.c b/src/xrt/targets/common/target_builder_rgb_tracking.c index 60b7cacb8..41ed2faf5 100644 --- a/src/xrt/targets/common/target_builder_rgb_tracking.c +++ b/src/xrt/targets/common/target_builder_rgb_tracking.c @@ -301,9 +301,9 @@ rgb_open_system_impl(struct xrt_builder *xb, build.xfctx = xfctx; build.origin = origin; build.origin->type = XRT_TRACKING_TYPE_RGB; - build.origin->offset.orientation.y = 1.0f; - build.origin->offset.position.z = -2.0f; - build.origin->offset.position.y = 1.0f; + build.origin->initial_offset.orientation.y = 1.0f; + build.origin->initial_offset.position.z = -2.0f; + build.origin->initial_offset.position.y = 1.0f; setup_pipeline(xp, &build); #else diff --git a/src/xrt/targets/sdl_test/sdl_device.c b/src/xrt/targets/sdl_test/sdl_device.c index 2e7b20b90..210887af8 100644 --- a/src/xrt/targets/sdl_test/sdl_device.c +++ b/src/xrt/targets/sdl_test/sdl_device.c @@ -120,7 +120,7 @@ sdl_device_init(struct sdl_program *sp) u_distortion_mesh_set_none(xdev); // Tracking origin. - xdev->tracking_origin->offset = (struct xrt_pose)XRT_POSE_IDENTITY; + xdev->tracking_origin->initial_offset = (struct xrt_pose)XRT_POSE_IDENTITY; xdev->tracking_origin->type = XRT_TRACKING_TYPE_OTHER; snprintf(xdev->tracking_origin->name, XRT_TRACKING_NAME_LEN, "SDL Tracking"); }