diff --git a/modules/openxr/doc_classes/OpenXRAPIExtension.xml b/modules/openxr/doc_classes/OpenXRAPIExtension.xml index 6dfc4bedf5..48608375c3 100644 --- a/modules/openxr/doc_classes/OpenXRAPIExtension.xml +++ b/modules/openxr/doc_classes/OpenXRAPIExtension.xml @@ -149,6 +149,18 @@ Returns the ID of the system, which is an [url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/XrSystemId.html]XrSystemId[/url] cast to an integer. + + + + Returns the view configuration type, which is an [url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/XrViewConfigurationType.html]XrViewConfigurationType[/url] cast to an integer. + + + + + + Returns the number of views. It is usually two, one for each eye, but may differ with different view configurations. + + diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp index 88f27c6639..d7ba393671 100644 --- a/modules/openxr/openxr_api.cpp +++ b/modules/openxr/openxr_api.cpp @@ -1561,7 +1561,7 @@ void OpenXRAPI::set_form_factor(XrFormFactor p_form_factor) { form_factor = p_form_factor; } -uint32_t OpenXRAPI::get_view_count() { +uint32_t OpenXRAPI::get_view_count() const { return view_configuration_views.size(); } diff --git a/modules/openxr/openxr_api.h b/modules/openxr/openxr_api.h index 11902828b0..e462c26a75 100644 --- a/modules/openxr/openxr_api.h +++ b/modules/openxr/openxr_api.h @@ -502,7 +502,7 @@ public: void set_form_factor(XrFormFactor p_form_factor); XrFormFactor get_form_factor() const { return form_factor; } - uint32_t get_view_count(); + uint32_t get_view_count() const; void set_view_configuration(XrViewConfigurationType p_view_configuration); XrViewConfigurationType get_view_configuration() const { return view_configuration; } diff --git a/modules/openxr/openxr_api_extension.cpp b/modules/openxr/openxr_api_extension.cpp index 750d9bb9ad..14017c2653 100644 --- a/modules/openxr/openxr_api_extension.cpp +++ b/modules/openxr/openxr_api_extension.cpp @@ -50,6 +50,9 @@ void OpenXRAPIExtension::_bind_methods() { ClassDB::bind_method(D_METHOD("end_debug_label_region"), &OpenXRAPIExtension::end_debug_label_region); ClassDB::bind_method(D_METHOD("insert_debug_label", "label_name"), &OpenXRAPIExtension::insert_debug_label); + ClassDB::bind_method(D_METHOD("get_view_count"), &OpenXRAPIExtension::get_view_count); + ClassDB::bind_method(D_METHOD("get_view_configuration"), &OpenXRAPIExtension::get_view_configuration); + ClassDB::bind_method(D_METHOD("is_initialized"), &OpenXRAPIExtension::is_initialized); ClassDB::bind_method(D_METHOD("is_running"), &OpenXRAPIExtension::is_running); @@ -183,6 +186,16 @@ void OpenXRAPIExtension::insert_debug_label(const String &p_label_name) { OpenXRAPI::get_singleton()->insert_debug_label(p_label_name); } +uint32_t OpenXRAPIExtension::get_view_count() const { + ERR_FAIL_NULL_V(OpenXRAPI::get_singleton(), 0); + return (uint32_t)OpenXRAPI::get_singleton()->get_view_count(); +} + +uint64_t OpenXRAPIExtension::get_view_configuration() const { + ERR_FAIL_NULL_V(OpenXRAPI::get_singleton(), 0); + return (uint64_t)OpenXRAPI::get_singleton()->get_view_configuration(); +} + bool OpenXRAPIExtension::is_initialized() { ERR_FAIL_NULL_V(OpenXRAPI::get_singleton(), false); return OpenXRAPI::get_singleton()->is_initialized(); diff --git a/modules/openxr/openxr_api_extension.h b/modules/openxr/openxr_api_extension.h index 63dd1c2f1e..f17e123ab7 100644 --- a/modules/openxr/openxr_api_extension.h +++ b/modules/openxr/openxr_api_extension.h @@ -77,6 +77,9 @@ public: void end_debug_label_region(); void insert_debug_label(const String &p_label_name); + uint32_t get_view_count() const; + uint64_t get_view_configuration() const; + bool is_initialized(); bool is_running();