diff options
author | Bastiaan Olij <mux213@gmail.com> | 2023-11-22 17:00:32 +1100 |
---|---|---|
committer | Bastiaan Olij <mux213@gmail.com> | 2024-01-10 16:58:40 +1100 |
commit | 4c806c03dfcc88a92e7acd36ace62d91b5390d2b (patch) | |
tree | 7469cd8ef1ee35491bf800295a28c095f22f04a3 /modules/openxr/extensions/openxr_hand_tracking_extension.h | |
parent | 9b522ac1a85cab1a7a867b7a9f3bb102d9376ac2 (diff) | |
download | redot-engine-4c806c03dfcc88a92e7acd36ace62d91b5390d2b.tar.gz |
OpenXR: Add support for hand tracking source extension
Diffstat (limited to 'modules/openxr/extensions/openxr_hand_tracking_extension.h')
-rw-r--r-- | modules/openxr/extensions/openxr_hand_tracking_extension.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/modules/openxr/extensions/openxr_hand_tracking_extension.h b/modules/openxr/extensions/openxr_hand_tracking_extension.h index f9b26fd604..967538b377 100644 --- a/modules/openxr/extensions/openxr_hand_tracking_extension.h +++ b/modules/openxr/extensions/openxr_hand_tracking_extension.h @@ -43,9 +43,17 @@ public: OPENXR_MAX_TRACKED_HANDS }; + enum HandTrackedSource { + OPENXR_SOURCE_UNKNOWN, + OPENXR_SOURCE_UNOBSTRUCTED, + OPENXR_SOURCE_CONTROLLER, + OPENXR_SOURCE_MAX + }; + struct HandTracker { bool is_initialized = false; XrHandJointsMotionRangeEXT motion_range = XR_HAND_JOINTS_MOTION_RANGE_UNOBSTRUCTED_EXT; + HandTrackedSource source = OPENXR_SOURCE_UNKNOWN; XrHandTrackerEXT hand_tracker = XR_NULL_HANDLE; XrHandJointLocationEXT joint_locations[XR_HAND_JOINT_COUNT_EXT]; @@ -53,6 +61,7 @@ public: XrHandJointVelocitiesEXT velocities; XrHandJointLocationsEXT locations; + XrHandTrackingDataSourceStateEXT data_source; }; static OpenXRHandTrackingExtension *get_singleton(); @@ -77,6 +86,8 @@ public: XrHandJointsMotionRangeEXT get_motion_range(HandTrackedHands p_hand) const; void set_motion_range(HandTrackedHands p_hand, XrHandJointsMotionRangeEXT p_motion_range); + HandTrackedSource get_hand_tracking_source(HandTrackedHands p_hand) const; + XrSpaceLocationFlags get_hand_joint_location_flags(HandTrackedHands p_hand, XrHandJointEXT p_joint) const; Quaternion get_hand_joint_rotation(HandTrackedHands p_hand, XrHandJointEXT p_joint) const; Vector3 get_hand_joint_position(HandTrackedHands p_hand, XrHandJointEXT p_joint) const; @@ -96,6 +107,7 @@ private: // related extensions bool hand_tracking_ext = false; bool hand_motion_range_ext = false; + bool hand_tracking_source_ext = false; // functions void cleanup_hand_tracking(); |