diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-02 12:03:09 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-02 12:03:09 +0100 |
commit | fb5f34a75a4b2e2becb97448b2bfcaf9ae214cd5 (patch) | |
tree | e30d48e7eedbe80357ee9a0ae5d2d5be0e94b934 /modules/openxr/openxr_interface.cpp | |
parent | 24a2560d3050ce5fd978e0c37871852340003a4a (diff) | |
parent | 5935bfa8603b7c22df4ea777a688723a408e6c5d (diff) | |
download | redot-engine-fb5f34a75a4b2e2becb97448b2bfcaf9ae214cd5.tar.gz |
Merge pull request #87745 from dsnopek/openxr-change-reference-space
OpenXR: Allow changing play area mode during active session
Diffstat (limited to 'modules/openxr/openxr_interface.cpp')
-rw-r--r-- | modules/openxr/openxr_interface.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/modules/openxr/openxr_interface.cpp b/modules/openxr/openxr_interface.cpp index 6b311b73a8..ebcd331f3d 100644 --- a/modules/openxr/openxr_interface.cpp +++ b/modules/openxr/openxr_interface.cpp @@ -711,7 +711,6 @@ XRInterface::PlayAreaMode OpenXRInterface::get_play_area_mode() const { } bool OpenXRInterface::set_play_area_mode(XRInterface::PlayAreaMode p_mode) { - ERR_FAIL_COND_V_MSG(initialized, false, "Cannot change play area mode after OpenXR interface has been initialized"); ERR_FAIL_NULL_V(openxr_api, false); XrReferenceSpaceType reference_space; @@ -726,8 +725,15 @@ bool OpenXRInterface::set_play_area_mode(XRInterface::PlayAreaMode p_mode) { return false; } - openxr_api->set_requested_reference_space(reference_space); - return true; + if (openxr_api->set_requested_reference_space(reference_space)) { + XRServer *xr_server = XRServer::get_singleton(); + if (xr_server) { + xr_server->clear_reference_frame(); + } + return true; + } + + return false; } PackedVector3Array OpenXRInterface::get_play_area() const { |