summaryrefslogtreecommitdiffstats
path: root/modules/openxr/openxr_interface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/openxr/openxr_interface.cpp')
-rw-r--r--modules/openxr/openxr_interface.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/modules/openxr/openxr_interface.cpp b/modules/openxr/openxr_interface.cpp
index 73ac529537..68e04694e3 100644
--- a/modules/openxr/openxr_interface.cpp
+++ b/modules/openxr/openxr_interface.cpp
@@ -160,11 +160,11 @@ void OpenXRInterface::_bind_methods() {
StringName OpenXRInterface::get_name() const {
return StringName("OpenXR");
-};
+}
uint32_t OpenXRInterface::get_capabilities() const {
return XRInterface::XR_VR + XRInterface::XR_STEREO;
-};
+}
PackedStringArray OpenXRInterface::get_suggested_tracker_names() const {
// These are hardcoded in OpenXR, note that they will only be available if added to our action map
@@ -300,10 +300,7 @@ void OpenXRInterface::_load_action_map() {
continue;
}
- PackedStringArray paths = xr_binding->get_paths();
- for (int k = 0; k < paths.size(); k++) {
- openxr_api->interaction_profile_add_binding(ip, action->action_rid, paths[k]);
- }
+ openxr_api->interaction_profile_add_binding(ip, action->action_rid, xr_binding->get_binding_path());
}
// Now submit our suggestions
@@ -614,7 +611,7 @@ bool OpenXRInterface::initialize_on_startup() const {
bool OpenXRInterface::is_initialized() const {
return initialized;
-};
+}
bool OpenXRInterface::initialize() {
XRServer *xr_server = XRServer::get_singleton();
@@ -1137,6 +1134,12 @@ void OpenXRInterface::process() {
if (head.is_valid()) {
head->set_pose("default", head_transform, head_linear_velocity, head_angular_velocity, head_confidence);
}
+
+ if (reference_stage_changing) {
+ // Now that we have updated tracking information in our updated reference space, trigger our pose recentered signal.
+ emit_signal(SNAME("pose_recentered"));
+ reference_stage_changing = false;
+ }
}
void OpenXRInterface::pre_render() {
@@ -1318,8 +1321,8 @@ void OpenXRInterface::on_state_exiting() {
emit_signal(SNAME("instance_exiting"));
}
-void OpenXRInterface::on_pose_recentered() {
- emit_signal(SNAME("pose_recentered"));
+void OpenXRInterface::on_reference_space_change_pending() {
+ reference_stage_changing = true;
}
void OpenXRInterface::on_refresh_rate_changes(float p_new_rate) {