32 static_assert(std::is_standard_layout_v<BodyTrackerBase>,
33 "glue base must be standard layout for pointer recovery");
34 static_assert(is_non_virtual_base_v<BodyTrackerBase, T>,
35 "glue base must be a non-virtual base of T for pointer recovery");
37 auto &xbt = *getXBT();
42 .get_skeleton = getSkeletonWrap,
43 .reset_calibration_meta = resetCalibrationMetaWrap,
44 .set_calibration_override_meta = setCalibrationOverrideMetaWrap,
45 .set_fidelity_meta = setFidelityMetaWrap,
46 .destroy = destroyBodyTrackerWrap,
53 derived()
const noexcept
55 return static_cast<const T &
>(*this);
61 return static_cast<T &
>(*this);
77 getXBT()
const noexcept
100#define GET(xbt) (fromXBT(xbt)->derived())
107 int64_t at_timestamp_ns,
110 return GET(xbt).locate(xso, base_space, base_offset, at_timestamp_ns, out_location);
117 return GET(xbt).getSkeleton(out_skeleton);
124 return GET(xbt).resetCalibrationMeta();
129 setCalibrationOverrideMetaWrap(
struct xrt_body_tracker *xbt,
float body_height)
noexcept
131 return GET(xbt).setCalibrationOverrideMeta(body_height);
136 setFidelityMetaWrap(
struct xrt_body_tracker *xbt,
enum xrt_body_tracking_fidelity_meta fidelity)
noexcept
138 return GET(xbt).setFidelityMeta(fidelity);
145 T::destroyBodyTracker(xbt);
CRTP glue wrapper for xrt_body_tracker.
Definition g_body_tracker.hpp:28
Definition xrt_defines.h:2198
Result of a locate call.
Definition xrt_body_tracker.h:75
A body tracker, owns the policy for selecting which device and body-tracking source back a single Ope...
Definition xrt_body_tracker.h:102
A space very similar to a OpenXR XrSpace but not a full one-to-one mapping, but used to power XrSpace...
Definition xrt_space.h:32
Header defining xrt body tracker.