1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

OpenXR: Add support for binding modifiers

This commit is contained in:
Bastiaan Olij
2024-09-18 10:14:21 +10:00
parent c2e4ae782a
commit 0a61ebdcea
56 changed files with 3127 additions and 763 deletions

View File

@@ -300,6 +300,7 @@ private:
String name; // Name of the interaction profile (i.e. "/interaction_profiles/valve/index_controller")
XrPath path; // OpenXR path for this profile
Vector<XrActionSuggestedBinding> bindings; // OpenXR action bindings
Vector<PackedByteArray> modifiers; // Array of modifiers we'll add into XrBindingModificationsKHR
};
RID_Owner<InteractionProfile, true> interaction_profile_owner;
RID get_interaction_profile_rid(XrPath p_path);
@@ -410,8 +411,8 @@ public:
XRPose::TrackingConfidence transform_from_location(const XrSpaceLocation &p_location, Transform3D &r_transform);
XRPose::TrackingConfidence transform_from_location(const XrHandJointLocationEXT &p_location, Transform3D &r_transform);
void parse_velocities(const XrSpaceVelocity &p_velocity, Vector3 &r_linear_velocity, Vector3 &r_angular_velocity);
bool xr_result(XrResult result, const char *format, Array args = Array()) const;
XrPath get_xr_path(const String &p_path);
bool is_top_level_path_supported(const String &p_toplevel_path);
bool is_interaction_profile_supported(const String &p_ip_path);
bool interaction_profile_supports_io_path(const String &p_ip_path, const String &p_io_path);
@@ -435,6 +436,7 @@ public:
static const Vector<OpenXRExtensionWrapper *> &get_registered_extension_wrappers();
static void register_extension_metadata();
static void cleanup_extension_wrappers();
static PackedStringArray get_all_requested_extensions();
void set_form_factor(XrFormFactor p_form_factor);
XrFormFactor get_form_factor() const { return form_factor; }
@@ -515,22 +517,26 @@ public:
RID action_set_create(const String p_name, const String p_localized_name, const int p_priority);
String action_set_get_name(RID p_action_set);
XrActionSet action_set_get_handle(RID p_action_set);
bool attach_action_sets(const Vector<RID> &p_action_sets);
void action_set_free(RID p_action_set);
RID action_create(RID p_action_set, const String p_name, const String p_localized_name, OpenXRAction::ActionType p_action_type, const Vector<RID> &p_trackers);
String action_get_name(RID p_action);
XrAction action_get_handle(RID p_action);
void action_free(RID p_action);
RID interaction_profile_create(const String p_name);
String interaction_profile_get_name(RID p_interaction_profile);
void interaction_profile_clear_bindings(RID p_interaction_profile);
bool interaction_profile_add_binding(RID p_interaction_profile, RID p_action, const String p_path);
int interaction_profile_add_binding(RID p_interaction_profile, RID p_action, const String p_path);
bool interaction_profile_add_modifier(RID p_interaction_profile, const PackedByteArray &p_modifier);
bool interaction_profile_suggest_bindings(RID p_interaction_profile);
void interaction_profile_free(RID p_interaction_profile);
RID find_tracker(const String &p_name);
RID find_action(const String &p_name);
RID find_action_set(const String p_name);
RID find_action(const String &p_name, const RID &p_action_set = RID());
bool sync_action_sets(const Vector<RID> p_active_sets);
bool get_action_bool(RID p_action, RID p_tracker);