summaryrefslogtreecommitdiffstats
path: root/modules/openxr/extensions/openxr_hand_tracking_extension.h
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-10-04 15:43:18 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-10-04 15:43:18 +0200
commitd7bca20359e551b837777ade9cd4eadaf64d5daf (patch)
tree4160bb82b93eb00378d08b0d80382eda32d58671 /modules/openxr/extensions/openxr_hand_tracking_extension.h
parent1e544505be34c794d83052ea48ed70702cdec831 (diff)
parentc60ef33175b8e92a7eee56e0766d0edd5d6c7a6d (diff)
downloadredot-engine-d7bca20359e551b837777ade9cd4eadaf64d5daf.tar.gz
Merge pull request #82722 from BastiaanOlij/openxr_fix_hand_tracking_issues
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();