diff options
author | Bastiaan Olij <mux213@gmail.com> | 2023-10-03 22:38:43 +1100 |
---|---|---|
committer | Bastiaan Olij <mux213@gmail.com> | 2023-10-04 13:18:31 +1100 |
commit | c60ef33175b8e92a7eee56e0766d0edd5d6c7a6d (patch) | |
tree | fe3fda659c86333220c8ad4854491fa938ce3cb3 /modules/openxr/extensions/openxr_hand_tracking_extension.h | |
parent | f5696c311cdb09e0a34fa4ba7ef5d2524c515b89 (diff) | |
download | redot-engine-c60ef33175b8e92a7eee56e0766d0edd5d6c7a6d.tar.gz |
OpenXR Fix small hand tracking issues
Diffstat (limited to 'modules/openxr/extensions/openxr_hand_tracking_extension.h')
-rw-r--r-- | modules/openxr/extensions/openxr_hand_tracking_extension.h | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/modules/openxr/extensions/openxr_hand_tracking_extension.h b/modules/openxr/extensions/openxr_hand_tracking_extension.h index 99d315c525..5ca0ff60d3 100644 --- a/modules/openxr/extensions/openxr_hand_tracking_extension.h +++ b/modules/openxr/extensions/openxr_hand_tracking_extension.h @@ -35,10 +35,14 @@ #include "core/math/quaternion.h" #include "openxr_extension_wrapper.h" -#define MAX_OPENXR_TRACKED_HANDS 2 - class OpenXRHandTrackingExtension : public OpenXRExtensionWrapper { public: + enum HandTrackedHands { + OPENXR_TRACKED_LEFT_HAND, + OPENXR_TRACKED_RIGHT_HAND, + OPENXR_MAX_TRACKED_HANDS + }; + struct HandTracker { bool is_initialized = false; XrHandJointsMotionRangeEXT motion_range = XR_HAND_JOINTS_MOTION_RANGE_UNOBSTRUCTED_EXT; @@ -47,7 +51,6 @@ public: XrHandJointLocationEXT joint_locations[XR_HAND_JOINT_COUNT_EXT]; XrHandJointVelocityEXT joint_velocities[XR_HAND_JOINT_COUNT_EXT]; - XrHandTrackingAimStateFB aimState; XrHandJointVelocitiesEXT velocities; XrHandJointLocationsEXT locations; }; @@ -69,29 +72,28 @@ public: virtual void on_state_stopping() override; bool get_active(); - const HandTracker *get_hand_tracker(uint32_t p_hand) const; + const HandTracker *get_hand_tracker(HandTrackedHands p_hand) const; - XrHandJointsMotionRangeEXT get_motion_range(uint32_t p_hand) const; - void set_motion_range(uint32_t p_hand, XrHandJointsMotionRangeEXT p_motion_range); + XrHandJointsMotionRangeEXT get_motion_range(HandTrackedHands p_hand) const; + void set_motion_range(HandTrackedHands p_hand, XrHandJointsMotionRangeEXT p_motion_range); - Quaternion get_hand_joint_rotation(uint32_t p_hand, XrHandJointEXT p_joint) const; - Vector3 get_hand_joint_position(uint32_t p_hand, XrHandJointEXT p_joint) const; - float get_hand_joint_radius(uint32_t 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; + float get_hand_joint_radius(HandTrackedHands p_hand, XrHandJointEXT p_joint) const; - Vector3 get_hand_joint_linear_velocity(uint32_t p_hand, XrHandJointEXT p_joint) const; - Vector3 get_hand_joint_angular_velocity(uint32_t p_hand, XrHandJointEXT p_joint) const; + Vector3 get_hand_joint_linear_velocity(HandTrackedHands p_hand, XrHandJointEXT p_joint) const; + Vector3 get_hand_joint_angular_velocity(HandTrackedHands p_hand, XrHandJointEXT p_joint) const; private: static OpenXRHandTrackingExtension *singleton; // state XrSystemHandTrackingPropertiesEXT handTrackingSystemProperties; - HandTracker hand_trackers[MAX_OPENXR_TRACKED_HANDS]; // Fixed for left and right hand + HandTracker hand_trackers[OPENXR_MAX_TRACKED_HANDS]; // Fixed for left and right hand // related extensions bool hand_tracking_ext = false; bool hand_motion_range_ext = false; - bool hand_tracking_aim_state_ext = false; // functions void cleanup_hand_tracking(); |