31 static_assert(std::is_standard_layout_v<HandTrackerBase>,
32 "glue base must be standard layout for pointer recovery");
33 static_assert(is_non_virtual_base_v<HandTrackerBase, T>,
34 "glue base must be a non-virtual base of T for pointer recovery");
36 auto &xht = *getXHT();
38 xht.locate = locateWrap;
39 xht.set_output = setOutputWrap;
40 xht.destroy = destroyHandTrackerWrap;
46 derived()
const noexcept
48 return static_cast<const T &
>(*this);
54 return static_cast<T &
>(*this);
70 getXHT()
const noexcept
93#define GET(xht) (fromXHT(xht)->derived())
100 int64_t at_timestamp_ns,
103 return GET(xht).locate(xso, base_space, base_offset, at_timestamp_ns, out_location);
112 return GET(xht).setOutput(name, value);
119 T::destroyHandTracker(xht);
CRTP glue wrapper for xrt_hand_tracker.
Definition g_hand_tracker.hpp:27
Catch guards for glue classes.
Shared type traits for glue classes.
enum xrt_result xrt_result_t
Result type used across Monado.
xrt_output_name
Name of a output with a baked in type.
Definition xrt_defines.h:1612
Result of locating a hand tracker.
Definition xrt_hand_tracker.h:59
A hand tracker that owns device/source selection policy.
Definition xrt_hand_tracker.h:76
A union of all output types.
Definition xrt_defines.h:2386
A pose composed of a position and orientation.
Definition xrt_defines.h:492
Object that oversees and manages spaces, one created for each XR system.
Definition xrt_space.h:97
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 hand tracker.