diff options
Diffstat (limited to 'modules/openxr/openxr_interface.h')
-rw-r--r-- | modules/openxr/openxr_interface.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/modules/openxr/openxr_interface.h b/modules/openxr/openxr_interface.h index 39cc68ae9b..81efbd6777 100644 --- a/modules/openxr/openxr_interface.h +++ b/modules/openxr/openxr_interface.h @@ -152,6 +152,7 @@ public: /** environment blend mode. */ virtual Array get_supported_environment_blend_modes() override; + virtual XRInterface::EnvironmentBlendMode get_environment_blend_mode() const override; virtual bool set_environment_blend_mode(XRInterface::EnvironmentBlendMode mode) override; void on_state_ready(); @@ -161,8 +162,65 @@ public: void on_pose_recentered(); void tracker_profile_changed(RID p_tracker, RID p_interaction_profile); + /** Hand tracking. */ + enum Hand { + HAND_LEFT, + HAND_RIGHT, + HAND_MAX, + }; + + enum HandMotionRange { + HAND_MOTION_RANGE_UNOBSTRUCTED, + HAND_MOTION_RANGE_CONFORM_TO_CONTROLLER, + HAND_MOTION_RANGE_MAX + }; + + void set_motion_range(const Hand p_hand, const HandMotionRange p_motion_range); + HandMotionRange get_motion_range(const Hand p_hand) const; + + enum HandJoints { + HAND_JOINT_PALM = 0, + HAND_JOINT_WRIST = 1, + HAND_JOINT_THUMB_METACARPAL = 2, + HAND_JOINT_THUMB_PROXIMAL = 3, + HAND_JOINT_THUMB_DISTAL = 4, + HAND_JOINT_THUMB_TIP = 5, + HAND_JOINT_INDEX_METACARPAL = 6, + HAND_JOINT_INDEX_PROXIMAL = 7, + HAND_JOINT_INDEX_INTERMEDIATE = 8, + HAND_JOINT_INDEX_DISTAL = 9, + HAND_JOINT_INDEX_TIP = 10, + HAND_JOINT_MIDDLE_METACARPAL = 11, + HAND_JOINT_MIDDLE_PROXIMAL = 12, + HAND_JOINT_MIDDLE_INTERMEDIATE = 13, + HAND_JOINT_MIDDLE_DISTAL = 14, + HAND_JOINT_MIDDLE_TIP = 15, + HAND_JOINT_RING_METACARPAL = 16, + HAND_JOINT_RING_PROXIMAL = 17, + HAND_JOINT_RING_INTERMEDIATE = 18, + HAND_JOINT_RING_DISTAL = 19, + HAND_JOINT_RING_TIP = 20, + HAND_JOINT_LITTLE_METACARPAL = 21, + HAND_JOINT_LITTLE_PROXIMAL = 22, + HAND_JOINT_LITTLE_INTERMEDIATE = 23, + HAND_JOINT_LITTLE_DISTAL = 24, + HAND_JOINT_LITTLE_TIP = 25, + HAND_JOINT_MAX = 26, + }; + + Quaternion get_hand_joint_rotation(Hand p_hand, HandJoints p_joint) const; + Vector3 get_hand_joint_position(Hand p_hand, HandJoints p_joint) const; + float get_hand_joint_radius(Hand p_hand, HandJoints p_joint) const; + + Vector3 get_hand_joint_linear_velocity(Hand p_hand, HandJoints p_joint) const; + Vector3 get_hand_joint_angular_velocity(Hand p_hand, HandJoints p_joint) const; + OpenXRInterface(); ~OpenXRInterface(); }; +VARIANT_ENUM_CAST(OpenXRInterface::Hand) +VARIANT_ENUM_CAST(OpenXRInterface::HandMotionRange) +VARIANT_ENUM_CAST(OpenXRInterface::HandJoints) + #endif // OPENXR_INTERFACE_H |