diff options
author | David Snopek <dsnopek@gmail.com> | 2024-01-23 11:14:47 -0600 |
---|---|---|
committer | David Snopek <dsnopek@gmail.com> | 2024-01-25 10:24:39 -0600 |
commit | 3d2cbb216e21de44703bb0e9412fbd2d09514088 (patch) | |
tree | d64d0079a5de70b46bb2f7bd431055848d526e97 /modules/openxr/extensions/openxr_hand_tracking_extension.cpp | |
parent | 74c32faa78b54863f8f25c538083907c2bf71791 (diff) | |
download | redot-engine-3d2cbb216e21de44703bb0e9412fbd2d09514088.tar.gz |
OpenXR: Make it possible to implement vendor extensions to hand tracking from GDExtension
Diffstat (limited to 'modules/openxr/extensions/openxr_hand_tracking_extension.cpp')
-rw-r--r-- | modules/openxr/extensions/openxr_hand_tracking_extension.cpp | 8 |
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; |