summaryrefslogtreecommitdiffstats
path: root/modules/openxr/openxr_interface.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-02-02 12:03:09 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-02-02 12:03:09 +0100
commitfb5f34a75a4b2e2becb97448b2bfcaf9ae214cd5 (patch)
treee30d48e7eedbe80357ee9a0ae5d2d5be0e94b934 /modules/openxr/openxr_interface.cpp
parent24a2560d3050ce5fd978e0c37871852340003a4a (diff)
parent5935bfa8603b7c22df4ea777a688723a408e6c5d (diff)
downloadredot-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.cpp12
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 {