summaryrefslogtreecommitdiffstats
path: root/modules/openxr/extensions/openxr_hand_tracking_extension.h
diff options
context:
space:
mode:
authorBastiaan Olij <mux213@gmail.com>2023-11-22 17:00:32 +1100
committerBastiaan Olij <mux213@gmail.com>2024-01-10 16:58:40 +1100
commit4c806c03dfcc88a92e7acd36ace62d91b5390d2b (patch)
tree7469cd8ef1ee35491bf800295a28c095f22f04a3 /modules/openxr/extensions/openxr_hand_tracking_extension.h
parent9b522ac1a85cab1a7a867b7a9f3bb102d9376ac2 (diff)
downloadredot-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.h12
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();