summaryrefslogtreecommitdiffstats
path: root/modules/openxr/extensions/openxr_hand_tracking_extension.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/openxr/extensions/openxr_hand_tracking_extension.cpp')
-rw-r--r--modules/openxr/extensions/openxr_hand_tracking_extension.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/modules/openxr/extensions/openxr_hand_tracking_extension.cpp b/modules/openxr/extensions/openxr_hand_tracking_extension.cpp
index 04fc4bf890..884fb41a3c 100644
--- a/modules/openxr/extensions/openxr_hand_tracking_extension.cpp
+++ b/modules/openxr/extensions/openxr_hand_tracking_extension.cpp
@@ -179,6 +179,14 @@ void OpenXRHandTrackingExtension::on_process() {
next_pointer = &hand_trackers[i].data_source;
}
+ // Needed for vendor hand tracking extensions implemented from GDExtension.
+ for (OpenXRExtensionWrapper *wrapper : OpenXRAPI::get_singleton()->get_registered_extension_wrappers()) {
+ void *np = wrapper->set_hand_joint_locations_and_get_next_pointer(i, next_pointer);
+ if (np != nullptr) {
+ next_pointer = np;
+ }
+ }
+
hand_trackers[i].locations.type = XR_TYPE_HAND_JOINT_LOCATIONS_EXT;
hand_trackers[i].locations.next = next_pointer;
hand_trackers[i].locations.isActive = false;