summaryrefslogtreecommitdiffstats
path: root/modules/openxr/extensions/openxr_hand_tracking_extension.h
diff options
context:
space:
mode:
authorBastiaan Olij <mux213@gmail.com>2023-10-03 22:38:43 +1100
committerBastiaan Olij <mux213@gmail.com>2023-10-04 13:18:31 +1100
commitc60ef33175b8e92a7eee56e0766d0edd5d6c7a6d (patch)
treefe3fda659c86333220c8ad4854491fa938ce3cb3 /modules/openxr/extensions/openxr_hand_tracking_extension.h
parentf5696c311cdb09e0a34fa4ba7ef5d2524c515b89 (diff)
downloadredot-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.h28
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();