From 5935bfa8603b7c22df4ea777a688723a408e6c5d Mon Sep 17 00:00:00 2001 From: David Snopek Date: Tue, 30 Jan 2024 10:30:54 -0600 Subject: OpenXR: Allow changing play area mode during active session --- modules/openxr/openxr_interface.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'modules/openxr/openxr_interface.cpp') 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 { -- cgit v1.2.3