diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..9bb7ed9a
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "thirdparty/godot-cpp"]
+ path = thirdparty/godot-cpp
+ url = https://github.com/godotengine/godot-cpp
diff --git a/CHANGES.md b/CHANGES.md
index 3c1c8154..6ef0859b 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -10,6 +10,7 @@
- Add support for Quest 3 devices
- Update the directory structure for the v2 plugin
- Update Meta OpenXR mobile SDK to version 57
+- Add support for the Meta scene capture API
## 1.1.0
- Update Meta OpenXR loader to version 54
diff --git a/demo/addons/godotopenxr/export/meta/godot_openxr_meta_editor_export_plugin.gd b/demo/addons/godotopenxr/export/meta/godot_openxr_meta_editor_export_plugin.gd
index 3f1f2af5..5c9a3ebd 100644
--- a/demo/addons/godotopenxr/export/meta/godot_openxr_meta_editor_export_plugin.gd
+++ b/demo/addons/godotopenxr/export/meta/godot_openxr_meta_editor_export_plugin.gd
@@ -68,6 +68,19 @@ const PASSTHROUGH_OPTION = {
"update_visibility": false,
}
+const USE_ANCHOR_API_OPTION = {
+ "option": {
+ "name": "meta_xr_features/use_anchor_api",
+ "class_name": "",
+ "type": TYPE_BOOL,
+ "hint": PROPERTY_HINT_NONE,
+ "hint_string": "",
+ "usage": PROPERTY_USAGE_DEFAULT,
+ },
+ "default_value": false,
+ "update_visibility": false,
+}
+
const SUPPORT_QUEST_1_OPTION = {
"option": {
"name": "meta_xr_features/quest_1_support",
@@ -130,6 +143,7 @@ func _get_export_options(platform) -> Array[Dictionary]:
HAND_TRACKING_OPTION,
HAND_TRACKING_FREQUENCY_OPTION,
PASSTHROUGH_OPTION,
+ USE_ANCHOR_API_OPTION,
SUPPORT_QUEST_1_OPTION,
SUPPORT_QUEST_2_OPTION,
SUPPORT_QUEST_3_OPTION,
@@ -195,6 +209,10 @@ func _get_export_option_warning(platform, option) -> String:
if not(openxr_enabled) and _get_int_option(option, PASSTHROUGH_NONE_VALUE) > PASSTHROUGH_NONE_VALUE:
warning = "\"Passthrough\" requires \"XR Mode\" to be \"OpenXR\".\n"
+ "meta_xr_features/use_anchor_api":
+ if not(openxr_enabled) and _get_bool_option(option):
+ warning = "\"Use anchor API\" is only valid when \"XR Mode\" is \"OpenXR\"."
+
_:
warning = super._get_export_option_warning(platform, option)
@@ -234,6 +252,11 @@ func _get_android_manifest_element_contents(platform, debug) -> String:
elif passthrough_mode == PASSTHROUGH_REQUIRED_VALUE:
contents += " \n"
+ # Check for anchor api
+ var use_anchor_api = _get_bool_option("meta_xr_features/use_anchor_api")
+ if use_anchor_api:
+ contents += " \n"
+
return contents
diff --git a/demo/export_presets.cfg b/demo/export_presets.cfg
index f64039b0..16964a60 100644
--- a/demo/export_presets.cfg
+++ b/demo/export_presets.cfg
@@ -211,3 +211,4 @@ meta_xr_features/quest_1_support=false
meta_xr_features/quest_2_support=true
meta_xr_features/quest_3_support=true
meta_xr_features/quest_pro_support=true
+meta_xr_features/use_anchor_api=false
diff --git a/godotopenxrmeta/CMakeLists.txt b/godotopenxrmeta/CMakeLists.txt
new file mode 100644
index 00000000..35c1f2a6
--- /dev/null
+++ b/godotopenxrmeta/CMakeLists.txt
@@ -0,0 +1,161 @@
+cmake_minimum_required(VERSION 3.22.1)
+
+## Default configs
+# Default android abi is arm64-v8a
+if (NOT ANDROID_ABI)
+ set(ANDROID_ABI "arm64-v8a")
+endif (NOT ANDROID_ABI)
+
+if (ANDROID_ABI STREQUAL "armeabi-v7a")
+ set(GODOT_CPP_LIB_ABI "arm32")
+elseif (ANDROID_ABI STREQUAL "x86")
+ set(GODOT_CPP_LIB_ABI "x86_32")
+elseif (ANDROID_ABI STREQUAL "x86_64")
+ set(GODOT_CPP_LIB_ABI "x86_64")
+else ()
+ set(GODOT_CPP_LIB_ABI "arm64")
+endif ()
+
+# Default android platform is android-21
+if (NOT ANDROID_PLATFORM)
+ set(ANDROID_PLATFORM "android-21")
+endif (NOT ANDROID_PLATFORM)
+
+# Default build type is Debug
+if (NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE Debug)
+endif (NOT CMAKE_BUILD_TYPE)
+
+if (CMAKE_BUILD_TYPE MATCHES Debug)
+ add_definitions(-D_DEBUG)
+ set(GODOT_CPP_LIB_BUILD_TYPE debug)
+ set(OPENXR_MOBILE_LIB_BUILD_TYPE Debug)
+else ()
+ add_definitions(-DNDEBUG)
+ set(GODOT_CPP_LIB_BUILD_TYPE release)
+ set(OPENXR_MOBILE_LIB_BUILD_TYPE Release)
+endif (CMAKE_BUILD_TYPE MATCHES Debug)
+
+if (NOT (ANDROID_STL STREQUAL "c++_shared"))
+ set(ANDROID_STL "c++_shared")
+endif (NOT (ANDROID_STL STREQUAL "c++_shared"))
+
+# Check if ANDROID_NDK is set.
+if (NOT ANDROID_NDK)
+ # Set to ANDROID_NDK_HOME environment variable if it's set.
+ if (DEFINED ENV{ANDROID_NDK_HOME})
+ set(ANDROID_NDK $ENV{ANDROID_NDK_HOME})
+ else (DEFINED ENV{ANDROID_NDK_HOME})
+ message(WARNING "ANDROID_NDK_HOME is not set")
+ endif (DEFINED ENV{ANDROID_NDK_HOME})
+endif (NOT ANDROID_NDK)
+
+# Check if CMAKE_TOOLCHAIN_FILE is set.
+if (NOT CMAKE_TOOLCHAIN_FILE)
+ set(CMAKE_TOOLCHAIN_FILE "${ANDROID_NDK}/build/cmake/android.toolchain.cmake")
+endif (NOT CMAKE_TOOLCHAIN_FILE)
+
+if (NOT DEFINED BITS)
+ set(BITS 32)
+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(BITS 64)
+ endif (CMAKE_SIZEOF_VOID_P EQUAL 8)
+endif (NOT DEFINED BITS)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+
+project(godotopenxrmeta LANGUAGES CXX)
+
+add_definitions(-DANDROID)
+
+set(GODOT_COMPILE_FLAGS)
+set(GODOT_LINKER_FLAGS)
+
+set(GODOT_LINKER_FLAGS "-Wl")
+
+set(GODOT_COMPILE_FLAGS "-fPIC -g -Wwrite-strings")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wchar-subscripts -Wcomment -Wdisabled-optimization")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wformat -Wformat=2 -Wformat-security -Wformat-y2k")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wimport -Winit-self -Winline -Winvalid-pch")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wlong-long -Wmissing-braces -Wmissing-format-attribute")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wmissing-include-dirs -Wmissing-noreturn -Wpacked -Wpointer-arith")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wredundant-decls -Wreturn-type -Wsequence-point")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wswitch -Wswitch-enum -Wtrigraphs")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused-label")
+set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wunused-value -Wvariadic-macros -Wvolatile-register-var -Wno-error=attributes")
+
+if (NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
+ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -Wno-ignored-attributes")
+endif ()
+
+if (CMAKE_BUILD_TYPE MATCHES Debug)
+ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -fno-omit-frame-pointer -O0")
+else ()
+ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} -O3")
+endif (CMAKE_BUILD_TYPE MATCHES Debug)
+
+
+## godot-cpp library
+set(GODOT_CPP_DIR "${CMAKE_SOURCE_DIR}/../thirdparty/godot-cpp")
+set(GODOT-CPP "godot-cpp")
+
+# Use the godot-cpp prebuilt static binary
+set(GODOT_CPP_STATIC_LIB "${GODOT_CPP_DIR}/bin/libgodot-cpp.android.template_${GODOT_CPP_LIB_BUILD_TYPE}.${GODOT_CPP_LIB_ABI}.a")
+
+list(APPEND GODOT_CPP_INCLUDE_DIRECTORIES "${GODOT_CPP_DIR}/include")
+list(APPEND GODOT_CPP_INCLUDE_DIRECTORIES "${GODOT_CPP_DIR}/gen/include")
+list(APPEND GODOT_CPP_INCLUDE_DIRECTORIES "${GODOT_CPP_DIR}/gdextension")
+
+add_library(${GODOT-CPP}
+ STATIC
+ IMPORTED GLOBAL
+ INTERFACE_INCLUDE_DIRECTORIES "${GODOT_CPP_INCLUDE_DIRECTORIES}"
+ )
+set_target_properties(${GODOT-CPP} PROPERTIES IMPORTED_LOCATION ${GODOT_CPP_STATIC_LIB})
+
+
+## OpenXR Mobile loader library
+# Sets the path to the OpenXR mobile library directory.
+set(OPENXR_MOBILE_ROOT_DIR "${CMAKE_SOURCE_DIR}/libs/ovr_openxr_mobile_sdk/OpenXR")
+set(OPENXR_MOBILE_HEADERS_DIR "${OPENXR_MOBILE_ROOT_DIR}/Include" CACHE STRING "")
+
+set(OPENXR_HEADERS_DIR "${CMAKE_SOURCE_DIR}/../thirdparty/openxr/include")
+
+set(OPENXR_MOBILE_LIB_PATH "${OPENXR_MOBILE_ROOT_DIR}/Libs/Android/${ANDROID_ABI}/${OPENXR_MOBILE_LIB_BUILD_TYPE}/libopenxr_loader.so")
+add_library(openxr_loader
+ SHARED
+ IMPORTED GLOBAL
+ )
+set_target_properties(openxr_loader PROPERTIES IMPORTED_LOCATION ${OPENXR_MOBILE_LIB_PATH})
+
+
+## Setup the project sources
+file(GLOB_RECURSE ANDROID_SOURCES ${CMAKE_SOURCE_DIR}/src/main/cpp/*.c**)
+file(GLOB_RECURSE ANDROID_HEADERS ${CMAKE_SOURCE_DIR}/src/main/cpp/*.h**)
+
+add_library(${CMAKE_PROJECT_NAME}
+ SHARED
+ ${ANDROID_SOURCES}
+ ${ANDROID_HEADERS}
+ )
+
+target_include_directories(${CMAKE_PROJECT_NAME}
+ SYSTEM PUBLIC
+ ${GODOT_CPP_INCLUDE_DIRECTORIES}
+ ${OPENXR_HEADERS_DIR}
+ ${OPENXR_MOBILE_HEADERS_DIR}
+ )
+
+target_link_libraries(${CMAKE_PROJECT_NAME}
+ android
+ log
+ ${GODOT-CPP}
+ openxr_loader
+ )
+
+# Add the compile flags
+set_property(TARGET ${CMAKE_PROJECT_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${GODOT_COMPILE_FLAGS})
+set_property(TARGET ${CMAKE_PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${GODOT_LINKER_FLAGS})
diff --git a/godotopenxrmeta/build.gradle b/godotopenxrmeta/build.gradle
index 2bb15f8f..58ba195d 100644
--- a/godotopenxrmeta/build.gradle
+++ b/godotopenxrmeta/build.gradle
@@ -15,12 +15,23 @@ android {
minSdk versions.minSdk
targetSdk versions.targetSdk
versionName getReleaseVersion()
+ externalNativeBuild {
+ cmake {
+ cppFlags ''
+ }
+ }
ndk {
//noinspection ChromeOsAbiSupport
abiFilters "arm64-v8a"
}
}
+ externalNativeBuild {
+ cmake {
+ path file('CMakeLists.txt')
+ version '3.22.1'
+ }
+ }
namespace = "org.godotengine.openxrloaders.meta"
@@ -46,6 +57,16 @@ android {
withJavadocJar()
}
}
+
+ buildFeatures {
+ prefabPublishing true
+ }
+
+ prefab {
+ openxr_loader {
+ headers "libs/ovr_openxr_mobile_sdk/OpenXR/Include"
+ }
+ }
}
dependencies {
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/extx1_event_channel.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/extx1_event_channel.h
new file mode 100755
index 00000000..20a8ed92
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/extx1_event_channel.h
@@ -0,0 +1,103 @@
+#ifndef EXTX1_EVENT_CHANNEL_H_
+#define EXTX1_EVENT_CHANNEL_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_EXTX1_event_channel
+
+#define XR_EXTX1_event_channel 1
+XR_DEFINE_HANDLE(XrEventChannelEXTX1)
+#define XR_EXTX1_event_channel_SPEC_VERSION 3
+#define XR_EXTX1_EVENT_CHANNEL_EXTENSION_NAME "XR_EXTX1_event_channel"
+static const XrStructureType XR_TYPE_EVENT_CHANNEL_CREATE_INFO_EXTX1 = (XrStructureType) 1000170001;
+static const XrStructureType XR_TYPE_EVENT_CHANNEL_TARGET_EXTX1 = (XrStructureType) 1000170002;
+static const XrStructureType XR_TYPE_SELECT_EVENT_CHANNEL_INFO_EXTX1 = (XrStructureType) 1000170003;
+// XrEventChannelEXTX1
+static const XrObjectType XR_OBJECT_TYPE_EVENT_CHANNEL_EXTX1 = (XrObjectType) 1000170000;
+
+typedef enum XrSelectEventChannelFlagsEXTX1 {
+ XR_SELECT_EVENT_CHANNEL_FLAGS_EXTX1_MAX_ENUM = 0x7FFFFFFF
+} XrSelectEventChannelFlagsEXTX1;
+typedef struct XrEventChannelCreateInfoEXTX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrEventChannelCreateInfoEXTX1;
+
+typedef struct XrEventChannelTargetEXTX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrEventChannelEXTX1 channel;
+} XrEventChannelTargetEXTX1;
+
+typedef struct XrSelectEventChannelInfoEXTX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSelectEventChannelFlagsEXTX1 flags;
+ XrDuration timeout;
+ uint32_t eventChannelCount;
+ const XrEventChannelEXTX1* eventChannels;
+} XrSelectEventChannelInfoEXTX1;
+
+typedef XrResult (XRAPI_PTR *PFN_xrCreateEventChannelEXTX1)(XrInstance instance, const XrEventChannelCreateInfoEXTX1* createInfo, XrEventChannelEXTX1* channel);
+typedef XrResult (XRAPI_PTR *PFN_xrDestroyEventChannelEXTX1)(XrEventChannelEXTX1 channel);
+typedef XrResult (XRAPI_PTR *PFN_xrPollEventChannelEXTX1)(XrEventChannelEXTX1 channel, XrEventDataBuffer* eventData);
+typedef XrResult (XRAPI_PTR *PFN_xrSelectEventChannelEXTX1)(XrInstance instance, XrSelectEventChannelInfoEXTX1* info, uint32_t* channelWithEvent);
+typedef XrResult (XRAPI_PTR *PFN_xrSetDefaultEventChannelEXTX1)(XrInstance instance, XrEventChannelEXTX1 channel);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateEventChannelEXTX1(
+ XrInstance instance,
+ const XrEventChannelCreateInfoEXTX1* createInfo,
+ XrEventChannelEXTX1* channel);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrDestroyEventChannelEXTX1(
+ XrEventChannelEXTX1 channel);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrPollEventChannelEXTX1(
+ XrEventChannelEXTX1 channel,
+ XrEventDataBuffer* eventData);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSelectEventChannelEXTX1(
+ XrInstance instance,
+ XrSelectEventChannelInfoEXTX1* info,
+ uint32_t* channelWithEvent);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSetDefaultEventChannelEXTX1(
+ XrInstance instance,
+ XrEventChannelEXTX1 channel);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif /* XR_EXTX1_event_channel */
+
+#ifdef XR_EXTX1_EVENT_CHANNEL_TAG_ALIAS
+typedef XrEventChannelCreateInfoEXTX1 XrEventChannelCreateInfoEXT;
+typedef XrEventChannelEXTX1 XrEventChannelEXT;
+typedef XrEventChannelTargetEXTX1 XrEventChannelTargetEXT;
+typedef XrSelectEventChannelFlagsEXTX1 XrSelectEventChannelFlagsEXT;
+typedef XrSelectEventChannelInfoEXTX1 XrSelectEventChannelInfoEXT;
+#define XR_EXT_event_channel_SPEC_VERSION XR_EXTX1_event_channel_SPEC_VERSION
+#define XR_EXT_EVENT_CHANNEL_EXTENSION_NAME XR_EXTX1_EVENT_CHANNEL_EXTENSION_NAME
+#define XR_TYPE_EVENT_CHANNEL_CREATE_INFO_EXT XR_TYPE_EVENT_CHANNEL_CREATE_INFO_EXTX1
+#define XR_TYPE_EVENT_CHANNEL_TARGET_EXT XR_TYPE_EVENT_CHANNEL_TARGET_EXTX1
+#define XR_TYPE_SELECT_EVENT_CHANNEL_INFO_EXT XR_TYPE_SELECT_EVENT_CHANNEL_INFO_EXTX1
+#define XR_OBJECT_TYPE_EVENT_CHANNEL_EXT XR_OBJECT_TYPE_EVENT_CHANNEL_EXTX1
+#endif /* XR_EXTX1_EVENT_CHANNEL_TAG_ALIAS */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/extx1_hand_tracking_data_source.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/extx1_hand_tracking_data_source.h
new file mode 100755
index 00000000..2bdf579c
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/extx1_hand_tracking_data_source.h
@@ -0,0 +1,67 @@
+#ifndef EXTX1_HAND_TRACKING_DATA_SOURCE_H_
+#define EXTX1_HAND_TRACKING_DATA_SOURCE_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_EXTX1_hand_tracking_data_source
+
+#define XR_EXTX1_hand_tracking_data_source 1
+#define XR_EXTX1_hand_tracking_data_source_SPEC_VERSION 1
+#define XR_EXTX1_HAND_TRACKING_DATA_SOURCE_EXTENSION_NAME "XR_EXTX1_hand_tracking_data_source"
+static const XrStructureType XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXTX1 = (XrStructureType) 1000294000;
+static const XrStructureType XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXTX1 = (XrStructureType) 1000294001;
+
+typedef enum XrHandTrackingDataSourceEXTX1 {
+ // This data source value indicates individual fingers and joints are tracked from unobstructed data source such as optical hand tracking, digital gloves or motion capture devices.
+ XR_HAND_TRACKING_DATA_SOURCE_UNOBSTRUCTED_EXTX1 = 1,
+ // This data source value indicates hand joints are inferred based on motion controller state.
+ XR_HAND_TRACKING_DATA_SOURCE_CONTROLLER_EXTX1 = 2,
+ XR_HAND_TRACKING_DATA_SOURCE_EXTX1_MAX_ENUM = 0x7FFFFFFF
+} XrHandTrackingDataSourceEXTX1;
+// XrHandTrackingDataSourceInfoEXTX1 extends XrHandTrackerCreateInfoEXT
+typedef struct XrHandTrackingDataSourceInfoEXTX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ uint32_t requestedDataSourceCount;
+ XrHandTrackingDataSourceEXTX1* requestedDataSources;
+} XrHandTrackingDataSourceInfoEXTX1;
+
+// XrHandTrackingDataSourceStateEXTX1 extends XrHandJointLocationsEXT
+typedef struct XrHandTrackingDataSourceStateEXTX1 {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 isActive;
+ XrHandTrackingDataSourceEXTX1 dataSource;
+} XrHandTrackingDataSourceStateEXTX1;
+
+#endif /* XR_EXTX1_hand_tracking_data_source */
+
+#ifdef XR_EXTX1_HAND_TRACKING_DATA_SOURCE_TAG_ALIAS
+typedef XrHandTrackingDataSourceEXTX1 XrHandTrackingDataSourceEXT;
+#define XR_HAND_TRACKING_DATA_SOURCE_UNOBSTRUCTED_EXT XR_HAND_TRACKING_DATA_SOURCE_UNOBSTRUCTED_EXTX1
+#define XR_HAND_TRACKING_DATA_SOURCE_CONTROLLER_EXT XR_HAND_TRACKING_DATA_SOURCE_CONTROLLER_EXTX1
+typedef XrHandTrackingDataSourceInfoEXTX1 XrHandTrackingDataSourceInfoEXT;
+typedef XrHandTrackingDataSourceStateEXTX1 XrHandTrackingDataSourceStateEXT;
+#define XR_EXT_hand_tracking_data_source_SPEC_VERSION XR_EXTX1_hand_tracking_data_source_SPEC_VERSION
+#define XR_EXT_HAND_TRACKING_DATA_SOURCE_EXTENSION_NAME XR_EXTX1_HAND_TRACKING_DATA_SOURCE_EXTENSION_NAME
+#define XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXT XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXTX1
+#define XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXTX1
+#endif /* XR_EXTX1_HAND_TRACKING_DATA_SOURCE_TAG_ALIAS */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_body_tracking.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_body_tracking.h
new file mode 100755
index 00000000..2ad40a8d
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_body_tracking.h
@@ -0,0 +1,192 @@
+#ifndef FB_BODY_TRACKING_H_
+#define FB_BODY_TRACKING_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_FB_body_tracking
+
+#define XR_FB_body_tracking 1
+XR_DEFINE_HANDLE(XrBodyTrackerFB)
+#define XR_FB_body_tracking_SPEC_VERSION 1
+#define XR_FB_BODY_TRACKING_EXTENSION_NAME "XR_FB_body_tracking"
+// XrBodyTrackerFB
+static const XrObjectType XR_OBJECT_TYPE_BODY_TRACKER_FB = (XrObjectType) 1000076000;
+static const XrStructureType XR_TYPE_BODY_TRACKER_CREATE_INFO_FB = (XrStructureType) 1000076001;
+static const XrStructureType XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB = (XrStructureType) 1000076002;
+static const XrStructureType XR_TYPE_SYSTEM_BODY_TRACKING_PROPERTIES_FB = (XrStructureType) 1000076004;
+static const XrStructureType XR_TYPE_BODY_JOINT_LOCATIONS_FB = (XrStructureType) 1000076005;
+static const XrStructureType XR_TYPE_BODY_SKELETON_FB = (XrStructureType) 1000076006;
+
+typedef enum XrBodyJointFB {
+ XR_BODY_JOINT_ROOT_FB = 0,
+ XR_BODY_JOINT_HIPS_FB = 1,
+ XR_BODY_JOINT_SPINE_LOWER_FB = 2,
+ XR_BODY_JOINT_SPINE_MIDDLE_FB = 3,
+ XR_BODY_JOINT_SPINE_UPPER_FB = 4,
+ XR_BODY_JOINT_CHEST_FB = 5,
+ XR_BODY_JOINT_NECK_FB = 6,
+ XR_BODY_JOINT_HEAD_FB = 7,
+ XR_BODY_JOINT_LEFT_SHOULDER_FB = 8,
+ XR_BODY_JOINT_LEFT_SCAPULA_FB = 9,
+ XR_BODY_JOINT_LEFT_ARM_UPPER_FB = 10,
+ XR_BODY_JOINT_LEFT_ARM_LOWER_FB = 11,
+ XR_BODY_JOINT_LEFT_HAND_WRIST_TWIST_FB = 12,
+ XR_BODY_JOINT_RIGHT_SHOULDER_FB = 13,
+ XR_BODY_JOINT_RIGHT_SCAPULA_FB = 14,
+ XR_BODY_JOINT_RIGHT_ARM_UPPER_FB = 15,
+ XR_BODY_JOINT_RIGHT_ARM_LOWER_FB = 16,
+ XR_BODY_JOINT_RIGHT_HAND_WRIST_TWIST_FB = 17,
+ XR_BODY_JOINT_LEFT_HAND_PALM_FB = 18,
+ XR_BODY_JOINT_LEFT_HAND_WRIST_FB = 19,
+ XR_BODY_JOINT_LEFT_HAND_THUMB_METACARPAL_FB = 20,
+ XR_BODY_JOINT_LEFT_HAND_THUMB_PROXIMAL_FB = 21,
+ XR_BODY_JOINT_LEFT_HAND_THUMB_DISTAL_FB = 22,
+ XR_BODY_JOINT_LEFT_HAND_THUMB_TIP_FB = 23,
+ XR_BODY_JOINT_LEFT_HAND_INDEX_METACARPAL_FB = 24,
+ XR_BODY_JOINT_LEFT_HAND_INDEX_PROXIMAL_FB = 25,
+ XR_BODY_JOINT_LEFT_HAND_INDEX_INTERMEDIATE_FB = 26,
+ XR_BODY_JOINT_LEFT_HAND_INDEX_DISTAL_FB = 27,
+ XR_BODY_JOINT_LEFT_HAND_INDEX_TIP_FB = 28,
+ XR_BODY_JOINT_LEFT_HAND_MIDDLE_METACARPAL_FB = 29,
+ XR_BODY_JOINT_LEFT_HAND_MIDDLE_PROXIMAL_FB = 30,
+ XR_BODY_JOINT_LEFT_HAND_MIDDLE_INTERMEDIATE_FB = 31,
+ XR_BODY_JOINT_LEFT_HAND_MIDDLE_DISTAL_FB = 32,
+ XR_BODY_JOINT_LEFT_HAND_MIDDLE_TIP_FB = 33,
+ XR_BODY_JOINT_LEFT_HAND_RING_METACARPAL_FB = 34,
+ XR_BODY_JOINT_LEFT_HAND_RING_PROXIMAL_FB = 35,
+ XR_BODY_JOINT_LEFT_HAND_RING_INTERMEDIATE_FB = 36,
+ XR_BODY_JOINT_LEFT_HAND_RING_DISTAL_FB = 37,
+ XR_BODY_JOINT_LEFT_HAND_RING_TIP_FB = 38,
+ XR_BODY_JOINT_LEFT_HAND_LITTLE_METACARPAL_FB = 39,
+ XR_BODY_JOINT_LEFT_HAND_LITTLE_PROXIMAL_FB = 40,
+ XR_BODY_JOINT_LEFT_HAND_LITTLE_INTERMEDIATE_FB = 41,
+ XR_BODY_JOINT_LEFT_HAND_LITTLE_DISTAL_FB = 42,
+ XR_BODY_JOINT_LEFT_HAND_LITTLE_TIP_FB = 43,
+ XR_BODY_JOINT_RIGHT_HAND_PALM_FB = 44,
+ XR_BODY_JOINT_RIGHT_HAND_WRIST_FB = 45,
+ XR_BODY_JOINT_RIGHT_HAND_THUMB_METACARPAL_FB = 46,
+ XR_BODY_JOINT_RIGHT_HAND_THUMB_PROXIMAL_FB = 47,
+ XR_BODY_JOINT_RIGHT_HAND_THUMB_DISTAL_FB = 48,
+ XR_BODY_JOINT_RIGHT_HAND_THUMB_TIP_FB = 49,
+ XR_BODY_JOINT_RIGHT_HAND_INDEX_METACARPAL_FB = 50,
+ XR_BODY_JOINT_RIGHT_HAND_INDEX_PROXIMAL_FB = 51,
+ XR_BODY_JOINT_RIGHT_HAND_INDEX_INTERMEDIATE_FB = 52,
+ XR_BODY_JOINT_RIGHT_HAND_INDEX_DISTAL_FB = 53,
+ XR_BODY_JOINT_RIGHT_HAND_INDEX_TIP_FB = 54,
+ XR_BODY_JOINT_RIGHT_HAND_MIDDLE_METACARPAL_FB = 55,
+ XR_BODY_JOINT_RIGHT_HAND_MIDDLE_PROXIMAL_FB = 56,
+ XR_BODY_JOINT_RIGHT_HAND_MIDDLE_INTERMEDIATE_FB = 57,
+ XR_BODY_JOINT_RIGHT_HAND_MIDDLE_DISTAL_FB = 58,
+ XR_BODY_JOINT_RIGHT_HAND_MIDDLE_TIP_FB = 59,
+ XR_BODY_JOINT_RIGHT_HAND_RING_METACARPAL_FB = 60,
+ XR_BODY_JOINT_RIGHT_HAND_RING_PROXIMAL_FB = 61,
+ XR_BODY_JOINT_RIGHT_HAND_RING_INTERMEDIATE_FB = 62,
+ XR_BODY_JOINT_RIGHT_HAND_RING_DISTAL_FB = 63,
+ XR_BODY_JOINT_RIGHT_HAND_RING_TIP_FB = 64,
+ XR_BODY_JOINT_RIGHT_HAND_LITTLE_METACARPAL_FB = 65,
+ XR_BODY_JOINT_RIGHT_HAND_LITTLE_PROXIMAL_FB = 66,
+ XR_BODY_JOINT_RIGHT_HAND_LITTLE_INTERMEDIATE_FB = 67,
+ XR_BODY_JOINT_RIGHT_HAND_LITTLE_DISTAL_FB = 68,
+ XR_BODY_JOINT_RIGHT_HAND_LITTLE_TIP_FB = 69,
+ XR_BODY_JOINT_COUNT_FB = 70,
+ XR_BODY_JOINT_NONE_FB = -1,
+ XR_BODY_JOINT_MAX_ENUM_FB = 0x7FFFFFFF
+} XrBodyJointFB;
+
+// Describes the set of body joints to track when creating an slink:XrBodyTrackerFB.
+typedef enum XrBodyJointSetFB {
+ // Indicates that the created slink:XrBodyTrackerFB tracks the set of body joints described by elink:XrBodyJointFB enum, i.e. the flink:xrLocateBodyJointsFB function returns an array of joint locations with the count of ename:XR_BODY_JOINT_COUNT_FB and can be indexed using elink:XrBodyJointFB.
+ XR_BODY_JOINT_SET_DEFAULT_FB = 0,
+ XR_BODY_JOINT_SET_MAX_ENUM_FB = 0x7FFFFFFF
+} XrBodyJointSetFB;
+typedef struct XrBodyJointLocationFB {
+ XrSpaceLocationFlags locationFlags;
+ XrPosef pose;
+} XrBodyJointLocationFB;
+
+typedef struct XrSystemBodyTrackingPropertiesFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 supportsBodyTracking;
+} XrSystemBodyTrackingPropertiesFB;
+
+typedef struct XrBodyTrackerCreateInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBodyJointSetFB bodyJointSet;
+} XrBodyTrackerCreateInfoFB;
+
+typedef struct XrBodySkeletonJointFB {
+ int32_t joint;
+ int32_t parentJoint;
+ XrPosef pose;
+} XrBodySkeletonJointFB;
+
+typedef struct XrBodySkeletonFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ uint32_t jointCount;
+ XrBodySkeletonJointFB* joints;
+} XrBodySkeletonFB;
+
+typedef struct XrBodyJointsLocateInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace baseSpace;
+ XrTime time;
+} XrBodyJointsLocateInfoFB;
+
+typedef struct XrBodyJointLocationsFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 isActive;
+ float confidence;
+ uint32_t jointCount;
+ XrBodyJointLocationFB* jointLocations;
+ uint32_t skeletonChangedCount;
+ XrTime time;
+} XrBodyJointLocationsFB;
+
+typedef XrResult (XRAPI_PTR *PFN_xrCreateBodyTrackerFB)(XrSession session, const XrBodyTrackerCreateInfoFB* createInfo, XrBodyTrackerFB* bodyTracker);
+typedef XrResult (XRAPI_PTR *PFN_xrDestroyBodyTrackerFB)(XrBodyTrackerFB bodyTracker);
+typedef XrResult (XRAPI_PTR *PFN_xrLocateBodyJointsFB)(XrBodyTrackerFB bodyTracker, const XrBodyJointsLocateInfoFB* locateInfo, XrBodyJointLocationsFB* locations);
+typedef XrResult (XRAPI_PTR *PFN_xrGetBodySkeletonFB)(XrBodyTrackerFB bodyTracker, XrBodySkeletonFB* skeleton);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateBodyTrackerFB(
+ XrSession session,
+ const XrBodyTrackerCreateInfoFB* createInfo,
+ XrBodyTrackerFB* bodyTracker);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrDestroyBodyTrackerFB(
+ XrBodyTrackerFB bodyTracker);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrLocateBodyJointsFB(
+ XrBodyTrackerFB bodyTracker,
+ const XrBodyJointsLocateInfoFB* locateInfo,
+ XrBodyJointLocationsFB* locations);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetBodySkeletonFB(
+ XrBodyTrackerFB bodyTracker,
+ XrBodySkeletonFB* skeleton);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif /* XR_FB_body_tracking */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_composition_layer_depth_test.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_composition_layer_depth_test.h
new file mode 100755
index 00000000..00248b28
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_composition_layer_depth_test.h
@@ -0,0 +1,76 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : fb_composition_layer_depth_test.h
+Content : Extension to control if a layer will participate in depth testing. If
+ extension is not used no layer will participate in depth testing.
+Language : C99 Copyright
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+/*
+ Extension 213 XR_FB_composition_layer_depth_test
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_composition_layer_depth_test
+
+// This extension enables depth-tested layer composition. The compositor will maintain a depth
+// buffer in addition to a color buffer. The depth buffer is cleared to a depth corresponding to the
+// infinitely far distance at the beginning of composition.
+
+// When composing each layer, if depth testing is requested, the incoming layer depths are
+// transformed into the compositor window space depth and compared to the depth stored in the frame
+// buffer. If the depth test fails, the fragment is discarded. If the depth test passes the depth
+// buffer is updated if depth writes are enabled, and color processing continues.
+
+// Depth testing requires depth values for the layer. For projection layers, this can be supplied
+// via the XR_KHR_composition_layer_depth extension. For geometric primitive layers, the runtime
+// computes the depth of the sample directly from the layer parameters.
+// XrCompositionLayerDepthTestFB may only be chained to layers that support depth.
+
+#define XR_FB_composition_layer_depth_test 1
+#define XR_FB_composition_layer_depth_test_SPEC_VERSION 1
+#define XR_FB_COMPOSITION_LAYER_DEPTH_TEST_EXTENSION_NAME "XR_FB_composition_layer_depth_test"
+
+typedef enum XrCompareOpFB {
+ XR_COMPARE_OP_NEVER_FB = 0,
+ XR_COMPARE_OP_LESS_FB = 1,
+ XR_COMPARE_OP_EQUAL_FB = 2,
+ XR_COMPARE_OP_LESS_OR_EQUAL_FB = 3,
+ XR_COMPARE_OP_GREATER_FB = 4,
+ XR_COMPARE_OP_NOT_EQUAL_FB = 5,
+ XR_COMPARE_OP_GREATER_OR_EQUAL_FB = 6,
+ XR_COMPARE_OP_ALWAYS_FB = 7,
+} XrCompareOpFB;
+
+// To specify that a layer should be depth tested, a XrCompositionLayerDepthTestFB structure must be
+// passed via the polymorphic XrCompositionLayerBaseHeader structure’s next parameter chain.
+
+// Valid Usage (Implicit)
+// * The XR_FB_composition_layer_depth_test extension must be enabled prior to using
+// XrCompositionLayerDepthTestFB
+// * type must be XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB
+// * next must be NULL or a valid pointer to the next structure in a structure chain
+// * compareOp must be a valid XrCompareOpFB value
+
+XR_STRUCT_ENUM(XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB, 1000212000);
+typedef struct XrCompositionLayerDepthTestFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 depthMask;
+ XrCompareOpFB compareOp;
+} XrCompositionLayerDepthTestFB;
+
+#endif // XR_FB_composition_layer_depth_test
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_eye_tracking_social.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_eye_tracking_social.h
new file mode 100755
index 00000000..9e9795e3
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_eye_tracking_social.h
@@ -0,0 +1,89 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : fb_eye_tracking.h
+Content : Eye tracking APIs.
+Language : C99
+*************************************************************************************/
+
+#pragma once
+
+#include
+#include
+
+/*
+ 203 XR_FB_eye_tracking_social
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_eye_tracking_social
+#define XR_FB_eye_tracking_social 1
+
+#define XR_FB_eye_tracking_social_SPEC_VERSION 1
+#define XR_FB_EYE_TRACKING_SOCIAL_EXTENSION_NAME "XR_FB_eye_tracking_social"
+
+XR_DEFINE_HANDLE(XrEyeTrackerFB)
+XR_STRUCT_ENUM(XR_TYPE_EYE_TRACKER_CREATE_INFO_FB, 1000202001);
+XR_STRUCT_ENUM(XR_TYPE_EYE_GAZES_INFO_FB, 1000202002);
+XR_STRUCT_ENUM(XR_TYPE_EYE_GAZES_FB, 1000202003);
+
+XR_STRUCT_ENUM(XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_FB, 1000202004);
+
+typedef struct XrSystemEyeTrackingPropertiesFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 supportsEyeTracking;
+} XrSystemEyeTrackingPropertiesFB;
+
+typedef struct XrEyeTrackerCreateInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrEyeTrackerCreateInfoFB;
+
+typedef struct XrEyeGazesInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace baseSpace;
+ XrTime time;
+} XrEyeGazesInfoFB;
+
+typedef struct XrEyeGazeFB {
+ XrBool32 isValid;
+ XrPosef gazePose;
+ float gazeConfidence;
+} XrEyeGazeFB;
+#define XrEyeGazeV2FB XrEyeGazeFB
+
+typedef enum XrEyePositionFB {
+ XR_EYE_POSITION_LEFT_FB = 0,
+ XR_EYE_POSITION_RIGHT_FB = 1,
+ XR_EYE_POSITION_COUNT_FB = 2,
+ XR_EYE_POSITION_MAX_ENUM_FB = 0x7FFFFFFF
+} XrEyePositionFB;
+
+typedef struct XrEyeGazesFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrEyeGazeFB gaze[2];
+ XrTime time;
+} XrEyeGazesFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrCreateEyeTrackerFB)(
+ XrSession session,
+ const XrEyeTrackerCreateInfoFB* createInfo,
+ XrEyeTrackerFB* eyeTracker);
+typedef XrResult(XRAPI_PTR* PFN_xrDestroyEyeTrackerFB)(XrEyeTrackerFB eyeTracker);
+typedef XrResult(XRAPI_PTR* PFN_xrGetEyeGazesFB)(
+ XrEyeTrackerFB eyeTracker,
+ const XrEyeGazesInfoFB* gazeInfo,
+ XrEyeGazesFB* eyeGazes);
+
+#endif // XR_FB_eye_tracking
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_haptic_amplitude_envelope.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_haptic_amplitude_envelope.h
new file mode 100755
index 00000000..baeeb257
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_haptic_amplitude_envelope.h
@@ -0,0 +1,48 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : fb_haptic_amplitude_envelope.h
+Content : Haptic Amplitude Envelope extension.
+Language : C99
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+/*
+ 174 XR_FB_haptic_amplitude_envelope
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_haptic_amplitude_envelope
+#define XR_FB_haptic_amplitude_envelope 1
+
+#define XR_FB_haptic_amplitude_envelope_SPEC_VERSION 1
+#define XR_FB_HAPTIC_AMPLITUDE_ENVELOPE_EXTENSION_NAME "XR_FB_haptic_amplitude_envelope"
+
+#define XR_MAX_HAPTIC_AMPLITUDE_ENVELOPE_SAMPLES_FB 4000u
+
+XR_STRUCT_ENUM(XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB, 1000173001);
+/// If triggered on localized haptics (trigger/thumb), this will throw an
+/// XR_ERROR_FEATURE_UNSUPPORTED
+typedef struct XrHapticAmplitudeEnvelopeVibrationFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ /// time for which the effect will be played
+ XrDuration duration;
+ /// number of elements in the array
+ uint32_t amplitudeCount;
+ /// array representing the amplitude envelope
+ const float* amplitudes;
+} XrHapticAmplitudeEnvelopeVibrationFB;
+
+#endif // XR_FB_haptic_amplitude_envelope
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_haptic_pcm.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_haptic_pcm.h
new file mode 100755
index 00000000..bd7f2bce
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_haptic_pcm.h
@@ -0,0 +1,92 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : fb_haptic_pcm.h
+Content : Haptic PCM extension.
+Language : C99
+*************************************************************************************/
+
+#pragma once
+
+#include
+#include
+
+/*
+ 210 XR_FB_haptic_pcm
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_haptic_pcm
+#define XR_FB_haptic_pcm 1
+#define XR_FB_haptic_pcm_SPEC_VERSION 1
+#define XR_FB_HAPTIC_PCM_EXTENSION_NAME "XR_FB_haptic_pcm"
+
+/// We have fixed the internal buffer size. The developer may check the bufferCountOutout field of
+/// the XrHapticPcmVibrationFB struct to know how many samples were processed.
+#define XR_MAX_HAPTIC_PCM_BUFFER_SIZE_FB 4000
+
+XR_STRUCT_ENUM(XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB, 1000209002);
+static const XrStructureType XR_TYPE_DEVICE_PCM_SAMPLE_RATE_GET_INFO_FB =
+ (XrStructureType)XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB;
+/// Provided to xrGetDevicePCMSampleRateFB to retrieve the PCM sample rate
+/// of the last connected controller
+typedef struct XrDevicePcmSampleRateStateFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ /// value will be populated with a PCM haptic sample rate in Hz
+ float sampleRate;
+} XrDevicePcmSampleRateStateFB;
+
+typedef XrDevicePcmSampleRateStateFB XrDevicePcmSampleRateGetInfoFB;
+
+XR_STRUCT_ENUM(XR_TYPE_HAPTIC_PCM_VIBRATION_FB, 1000209001);
+/// This struct provides a high fidelity control over the haptics effect
+/// If triggered on localized haptics (trigger/thumb), this will throw an
+/// XR_ERROR_FEATURE_UNSUPPORTED
+typedef struct XrHapticPcmVibrationFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ /// number of samples
+ uint32_t bufferSize;
+ /// the samples that the developer provides, expectation is that these samples are points on a
+ /// sine curve
+ const float* buffer;
+ /// number of samples to be playes per second, this is used to determine the duration of the
+ /// effect
+ float sampleRate;
+ /// if set to false, any existing samples will be cleared and a new haptic effect will begin, if
+ /// true, samples will be appended to the currently playing effect
+ XrBool32 append;
+ /// pointer to an unsigned integer, which contains the number of samples that were consumed from
+ /// the input
+ uint32_t* samplesConsumed;
+} XrHapticPcmVibrationFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrGetDeviceSampleRateFB)(
+ XrSession session,
+ const XrHapticActionInfo* hapticActionInfo,
+ XrDevicePcmSampleRateGetInfoFB* deviceSampleRate);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+/// Get the PCM haptics sample rate of the last connected controller
+/// If the controller is not supported by the PCM haptics APIs,
+/// deviceSampleRate->sampleRate will be set to 0.0f.
+XRAPI_ATTR XrResult XRAPI_CALL xrGetDeviceSampleRateFB(
+ XrSession session,
+ const XrHapticActionInfo* hapticActionInfo,
+ XrDevicePcmSampleRateGetInfoFB* deviceSampleRate);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+
+#endif // XR_FB_haptic_pcm
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_scene.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_scene.h
new file mode 100755
index 00000000..d4a47c84
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_scene.h
@@ -0,0 +1,251 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_scene.h
+Content : This header defines spatial entity components and functions used to obtain
+ information from Scene Model.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+// Extension 176
+
+#ifndef XR_FB_scene
+#define XR_FB_scene 1
+
+#define XR_FB_scene_SPEC_VERSION 1
+#define XR_FB_SCENE_EXTENSION_NAME "XR_FB_scene"
+
+static const XrSpaceComponentTypeFB XR_SPACE_COMPONENT_TYPE_BOUNDED_2D_FB =
+ (XrSpaceComponentTypeFB)3;
+static const XrSpaceComponentTypeFB XR_SPACE_COMPONENT_TYPE_BOUNDED_3D_FB =
+ (XrSpaceComponentTypeFB)4;
+static const XrSpaceComponentTypeFB XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB =
+ (XrSpaceComponentTypeFB)5;
+static const XrSpaceComponentTypeFB XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB =
+ (XrSpaceComponentTypeFB)6;
+
+// Helper structs to define a 3D bounding box, similar to the 2D counterparts.
+typedef struct XrExtent3DfFB {
+ float width;
+ float height;
+ float depth;
+} XrExtent3DfFB;
+
+typedef struct XrOffset3DfFB {
+ float x;
+ float y;
+ float z;
+} XrOffset3DfFB;
+
+typedef struct XrRect3DfFB {
+ XrOffset3DfFB offset;
+ XrExtent3DfFB extent;
+} XrRect3DfFB;
+
+// Semantic labels component for two-call idiom with xrGetSpaceSemanticLabelsFB.
+static const XrStructureType XR_TYPE_SEMANTIC_LABELS_FB = (XrStructureType)1000175000;
+typedef struct XrSemanticLabelsFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+
+ // Input, capacity of the label buffer in byte.
+ uint32_t bufferCapacityInput;
+
+ // Output, size of the label buffer in byte.
+ uint32_t bufferCountOutput;
+
+ // Multiple labels represented by raw string, separated by comma (,).
+ char* buffer;
+} XrSemanticLabelsFB;
+
+// Room layout component for two-call idiom with xrGetSpaceRoomLayoutFB.
+static const XrStructureType XR_TYPE_ROOM_LAYOUT_FB = (XrStructureType)1000175001;
+typedef struct XrRoomLayoutFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+
+ // Floor of the room layout.
+ XrUuidEXT floorUuid;
+
+ // Ceiling of the room layout.
+ XrUuidEXT ceilingUuid;
+
+ // Input, capacity of wall list buffer.
+ uint32_t wallUuidCapacityInput;
+
+ // Output, number of walls included in the list.
+ uint32_t wallUuidCountOutput;
+
+ // Ordered list of walls of the room layout.
+ XrUuidEXT* wallUuids;
+} XrRoomLayoutFB;
+
+// 2D boundary for two-call idiom with xrGetSpaceBoundary2DFB.
+static const XrStructureType XR_TYPE_BOUNDARY_2D_FB = (XrStructureType)1000175002;
+typedef struct XrBoundary2DFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+
+ // Input, capacity of the vertex buffer.
+ uint32_t vertexCapacityInput;
+
+ // Output, size of the vertex buffer.
+ uint32_t vertexCountOutput;
+
+ // Vertices of the polygonal boundary in the coordinate frame of the associated space.
+ // Currently only support outer bounds.
+ XrVector2f* vertices;
+} XrBoundary2DFB;
+
+// Get 2D bounding box associated with space that has bounded 2D component enabled.
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceBoundingBox2DFB)(
+ XrSession session,
+ XrSpace space,
+ XrRect2Df* boundingBox2DOutput);
+
+// Get 3D bounding box associated with space that has bounded 3D component enabled.
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceBoundingBox3DFB)(
+ XrSession session,
+ XrSpace space,
+ XrRect3DfFB* boundingBox3DOutput);
+
+// Get semantic labels associated with space that has semantic labels component enabled.
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceSemanticLabelsFB)(
+ XrSession session,
+ XrSpace space,
+ XrSemanticLabelsFB* semanticLabelsOutput);
+
+// Get 2D boundary associated with space that has bounded 2D component enabled.
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceBoundary2DFB)(
+ XrSession session,
+ XrSpace space,
+ XrBoundary2DFB* boundary2DOutput);
+
+// Get room layout associated with space that has room layout component enabled.
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceRoomLayoutFB)(
+ XrSession session,
+ XrSpace space,
+ XrRoomLayoutFB* roomLayoutOutput);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+// Get 2D bounding box associated with space that has bounded 2D component enabled.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrGetSpaceBoundingBox2DFB(XrSession session, XrSpace space, XrRect2Df* boundingBox2DOutput);
+
+// Get 3D bounding box associated with space that has bounded 3D component enabled.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrGetSpaceBoundingBox3DFB(XrSession session, XrSpace space, XrRect3DfFB* boundingBox3DOutput);
+
+// Get semantic labels associated with space that has semantic labels component enabled.
+// Note: This functions uses two-call idiom:
+// 1) When byteCapacityInput == 0, only byteCountOutput will be updated and no semantic label string
+// will be copied;
+// 2) When byteCapacityInput >= byteCountOutput, semantic labels will be copied to labels as a
+// string;
+// 3) Otherwise returns XR_ERROR_SIZE_INSUFFICIENT.
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceSemanticLabelsFB(
+ XrSession session,
+ XrSpace space,
+ XrSemanticLabelsFB* semanticLabelsOutput);
+
+// Get 2D boundary associated with space that has bounded 2D component enabled.
+// Note: This functions uses two-call idiom:
+// 1) When vertexCapacityInput == 0, only vertexCountOutput will be updated and no vertices will
+// be copied;
+// 2) When vertexCapacityInput >= vertexCountOutput, vertices will be copied to boundary2DOutput;
+// 3) Otherwise returns XR_ERROR_SIZE_INSUFFICIENT.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrGetSpaceBoundary2DFB(XrSession session, XrSpace space, XrBoundary2DFB* boundary2DOutput);
+
+// Get room layout associated with space that has room layout component enabled.
+// Note: This functions uses two-call idiom:
+// 1) When wallUuidCapacityInput == 0, only wallUuidCountOutput will be updated and no UUIDs will
+// be copied;
+// 2) When wallUuidCapacityInput >= wallUuidCountOutput, UUIDs will be copied to
+// entityContainerOutput;
+// 3) Otherwise returns XR_ERROR_SIZE_INSUFFICIENT.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrGetSpaceRoomLayoutFB(XrSession session, XrSpace space, XrRoomLayoutFB* roomLayoutOutput);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+#endif // XR_FB_scene
+
+// Planned additions for spec version 2
+#if XR_FB_scene_SPEC_VERSION == 1
+#undef XR_FB_scene_SPEC_VERSION
+#define XR_FB_scene_SPEC_VERSION 2
+
+typedef XrFlags64 XrSemanticLabelsSupportFlagsFB;
+
+// When this flag is set in XrSemanticLabelsSupportInfoFB::flags, the system may return multiple
+// semantic labels separated by comma (,) in XrSemanticLabelsFB. Otherwise, the system returns a
+// single semantic label.
+static const XrSemanticLabelsSupportFlagsFB
+ XR_SEMANTIC_LABELS_SUPPORT_MULTIPLE_SEMANTIC_LABELS_BIT_FB = 0x00000001;
+
+// Struct used to tell the system what semantic labels and format in the return are supported by the
+// caller. This struct may be provided as the next of XrSemanticLabelsFB. When the next of
+// XrSemanticLabelsFB is nullptr, the system assumes the behavior used in spec version 1, i.e.:
+// (1) None of the flags are set. Specifically, the system returns a single semantic label.
+// (2) recognizedLabels include a set of labels supported in spec version 1. Specifically, they are
+// "DESK,COUCH,FLOOR,CEILING,WALL_FACE,WINDOW_FRAME,DOOR_FRAME,OTHER".
+static const XrStructureType XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB = (XrStructureType)1000175010;
+typedef struct XrSemanticLabelsSupportInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+
+ XrSemanticLabelsSupportFlagsFB flags;
+
+ // Set of semantic labels recognized by the caller. Each semantic label is separated by comma
+ // (,). It must be a zero-terminated string.
+ const char* recognizedLabels;
+} XrSemanticLabelsSupportInfoFB;
+
+#endif // XR_FB_scene_SPEC_VERSION == 1
+
+// Planned additions for spec version 3
+#if XR_FB_scene_SPEC_VERSION == 2
+#undef XR_FB_scene_SPEC_VERSION
+#define XR_FB_scene_SPEC_VERSION 3
+
+// When this flag is set in XrSemanticLabelsSupportInfoFB::flags, the system returns TABLE instead
+// of DESK in XrSemanticLabelsFB. Otherwise, the system returns DESK instead of TABLE in
+// XrSemanticLabelsFB. Note that XrSemanticLabelsSupportInfoFB::recognizedLabels needs to include
+// TABLE or DESK to receive those labels. Otherwise they will be returned as OTHER.
+static const XrSemanticLabelsSupportFlagsFB
+ XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_DESK_TO_TABLE_MIGRATION_BIT_FB = 0x00000002;
+
+#endif // XR_FB_scene_SPEC_VERSION == 2
+
+// Planned additions for spec version 4
+#if XR_FB_scene_SPEC_VERSION == 3
+#undef XR_FB_scene_SPEC_VERSION
+#define XR_FB_scene_SPEC_VERSION 4
+
+// When this flag is set in XrSemanticLabelsSupportInfoFB::flags, the system may return
+// INVISIBLE_WALL_FACE instead of WALL_FACE to represent an invisible wall that is used to
+// conceptually separate a space (e.g., separate a living space from a kitchen space in an open
+// floor plan house even though there is no real wall between the two spaces) instead of a real
+// wall. Otherwise, the system returns WALL_FACE to represent both an invisible and real wall.
+static const XrSemanticLabelsSupportFlagsFB
+ XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_INVISIBLE_WALL_FACE_BIT_FB = 0x00000004;
+
+#endif // XR_FB_scene_SPEC_VERSION == 3
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_scene_capture.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_scene_capture.h
new file mode 100755
index 00000000..940edbf4
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_scene_capture.h
@@ -0,0 +1,74 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_scene_capture.h
+Content : Scene Capture functionality.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+// Extension 199
+
+#ifndef XR_FB_scene_capture
+#define XR_FB_scene_capture 1
+
+#define XR_FB_scene_capture_SPEC_VERSION 1
+#define XR_FB_SCENE_CAPTURE_EXTENSION_NAME "XR_FB_scene_capture"
+
+// Events.
+static const XrStructureType XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB =
+ (XrStructureType)1000198001;
+
+// Struct of scene capture complete event
+// The event struct contains the result of the scene capture operation
+typedef struct XrEventDataSceneCaptureCompleteFB {
+ XrStructureType type; // XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+} XrEventDataSceneCaptureCompleteFB;
+
+// Struct for requesting scene capture.
+static const XrStructureType XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB = (XrStructureType)1000198050;
+typedef struct XrSceneCaptureRequestInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+
+ // Length of request buffer.
+ uint32_t requestByteCount;
+
+ // Request buffer.
+ const char* request;
+} XrSceneCaptureRequestInfoFB;
+
+// Request scene capture to the system.
+typedef XrResult(XRAPI_PTR* PFN_xrRequestSceneCaptureFB)(
+ XrSession session,
+ const XrSceneCaptureRequestInfoFB* request,
+ XrAsyncRequestIdFB* requestId);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+// Request scene capture to the system.
+XRAPI_ATTR XrResult XRAPI_CALL xrRequestSceneCaptureFB(
+ XrSession session,
+ const XrSceneCaptureRequestInfoFB* request,
+ XrAsyncRequestIdFB* requestId);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+#endif // XR_FB_scene_capture
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity.h
new file mode 100755
index 00000000..36e6e122
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity.h
@@ -0,0 +1,376 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_spatial_entity.h
+Content : spatial entity interface.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+/*
+ 114 XR_FB_spatial_entity
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef XR_FB_spatial_entity
+#define XR_FB_spatial_entity 1
+
+#ifndef XR_FB_spatial_entity_EXPERIMENTAL_VERSION
+#define XR_FB_spatial_entity_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_EXTENSION_NAME "XR_FB_spatial_entity"
+#endif
+
+// Potentially long running requests return an async request identifier
+// which will be part of messages returned via events. The nature of
+// the response event or events depends on the request, but the async
+// request identifier, returned immediately at request time, is used
+// to associate responses with requests.
+typedef uint64_t XrAsyncRequestIdFB;
+
+static const XrResult XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB = (XrResult)-1000113000;
+static const XrResult XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB = (XrResult)-1000113001;
+static const XrResult XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB = (XrResult)-1000113002;
+static const XrResult XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB = (XrResult)-1000113003;
+
+// Every XrSpace object represents a spatial entity that may support an
+// arbitrary number of component interfaces. If the component interface
+// is advertised as supported, and the support is enabled, then functions
+// associated with that interface may be used with that XrSpace.
+//
+// Whether a component interface is enabled at creation depends on the
+// method of creation.
+//
+// The XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB interface must be enabled to use
+// xrLocateSpace() on any space created through the Spatial Entity system
+// introduced with this extension.
+//
+// When functions use a space in a context where one or more necessary
+// components are not enabled for the space,
+// XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB must be returned.
+//
+typedef enum XrSpaceComponentTypeFB {
+ // Works with xrLocateSpace, etc.
+ XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB = 0,
+ // enables save, load, erase, etc.
+ XR_SPACE_COMPONENT_TYPE_STORABLE_FB = 1,
+ // Bounded 2D component, used in fb_scene extension.
+ // XR_SPACE_COMPONENT_TYPE_BOUNDED_2D_FB = 3,
+ // Bounded 3D component, used in fb_scene extension.
+ // XR_SPACE_COMPONENT_TYPE_BOUNDED_3D_FB = 4,
+ // Semantic labels component, used in fb_scene extension.
+ // XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB = 5,
+ // Room layout component, used in fb_scene extension.
+ // XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB = 6,
+ // Space container component, used in fb_spatial_entity_container extension.
+ // XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB = 7,
+ XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpaceComponentTypeFB;
+
+// Spatial Entity system properties
+static const XrStructureType XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB =
+ (XrStructureType)1000113004;
+typedef struct XrSystemSpatialEntityPropertiesFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 supportsSpatialEntity;
+} XrSystemSpatialEntityPropertiesFB;
+
+// Create info struct used when creating a spatial anchor
+static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB = (XrStructureType)1000113003;
+typedef struct XrSpatialAnchorCreateInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrPosef poseInSpace;
+ XrTime time;
+} XrSpatialAnchorCreateInfoFB;
+
+// Struct used to enable a component
+static const XrStructureType XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB =
+ (XrStructureType)1000113007;
+typedef struct XrSpaceComponentStatusSetInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceComponentTypeFB componentType;
+ XrBool32 enabled;
+ XrDuration timeout;
+} XrSpaceComponentStatusSetInfoFB;
+
+// Struct to hold component status
+//
+// Next chain provided here for future component interfaces that
+// may have more detailed status to provide.
+//
+// The changePending flag is set immediately upon requesting a
+// component enabled change, but the change in the enabled state
+// is not reflected in the status until the async request
+// completes successfully.
+static const XrStructureType XR_TYPE_SPACE_COMPONENT_STATUS_FB = (XrStructureType)1000113001;
+typedef struct XrSpaceComponentStatusFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 enabled;
+ XrBool32 changePending;
+} XrSpaceComponentStatusFB;
+
+// Event returned once a Spatial Anchor has successfully been created
+static const XrStructureType XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB =
+ (XrStructureType)1000113005;
+typedef struct XrEventDataSpatialAnchorCreateCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+} XrEventDataSpatialAnchorCreateCompleteFB;
+
+// The xrSetSpaceComponentStatusFB request delivers the result of the
+// request via event. If the request was not successful, the
+// component status will be unaltered except that the changePending status
+// is cleared.
+static const XrStructureType XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB =
+ (XrStructureType)1000113006;
+typedef struct XrEventDataSpaceSetStatusCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+ XrSpaceComponentTypeFB componentType;
+ XrBool32 enabled;
+} XrEventDataSpaceSetStatusCompleteFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrCreateSpatialAnchorFB)(
+ XrSession session,
+ const XrSpatialAnchorCreateInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceUuidFB)(XrSpace space, XrUuidEXT* uuid);
+
+typedef XrResult(XRAPI_PTR* PFN_xrEnumerateSpaceSupportedComponentsFB)(
+ XrSpace space,
+ uint32_t componentTypeCapacityInput,
+ uint32_t* componentTypeCountOutput,
+ XrSpaceComponentTypeFB* componentTypes);
+
+typedef XrResult(XRAPI_PTR* PFN_xrSetSpaceComponentStatusFB)(
+ XrSpace space,
+ const XrSpaceComponentStatusSetInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceComponentStatusFB)(
+ XrSpace space,
+ XrSpaceComponentTypeFB componentType,
+ XrSpaceComponentStatusFB* status);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+// xrCreateSpatialAnchorFB is used to create a new spatial anchor space
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFB(
+ XrSession session,
+ const XrSpatialAnchorCreateInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+// xrGetSpaceUuidFB is used to access the uuid for an XrSpace if supported
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceUuidFB(XrSpace space, XrUuidEXT* uuid);
+
+// All the component interfaces that an entity supports can be discovered
+// through the xrEnumerateSpaceSupportedComponentsFB() function. The list of
+// supported components will not change over the life of the entity.
+XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSpaceSupportedComponentsFB(
+ XrSpace space,
+ uint32_t componentTypeCapacityInput,
+ uint32_t* componentTypeCountOutput,
+ XrSpaceComponentTypeFB* componentTypes);
+
+// xrSetSpaceComponentStatusFB() enables or disables any supported component
+// interface for a space. Some component interfaces may take time to become
+// ready. Rather than block, xrSetSpaceComponentStatusFB() returns an async
+// request identifier, and its result is returned via event.
+//
+// XR_ERROR_SPACE_SET_COMPONENT_STATUS_PENDING is returned if xrSetSpaceComponentStatusFB()
+// is called on a space that has an xrSetSpaceComponentStatusFB() call pending already.
+XRAPI_ATTR XrResult XRAPI_CALL xrSetSpaceComponentStatusFB(
+ XrSpace space,
+ const XrSpaceComponentStatusSetInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+// xrGetSpaceComponentStatusFB is used to determine whether a component interface is
+// currently enabled for a space.
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceComponentStatusFB(
+ XrSpace space,
+ XrSpaceComponentTypeFB componentType,
+ XrSpaceComponentStatusFB* status);
+
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif // XR_FB_spatial_entity
+
+// =============================================================================
+// Begin Backwards Compatibility (DEPRECATED)
+// =============================================================================
+
+// Separate include guard for experimental backwards compatibility,
+// to make sure this still gets included even when the extension
+// is included in openxr.h
+#ifndef XR_FBX_spatial_entity
+#define XR_FBX_spatial_entity 1
+
+// Conditionally define experimental versions, since they are not getting defined
+// if the extension is included from openxr.h
+
+#ifndef XR_FBX2_spatial_entity_SPEC_VERSION
+#define XR_FBX2_spatial_entity_SPEC_VERSION 2
+#define XR_FBX2_SPATIAL_ENTITY_EXTENSION_NAME "XR_FBX2_spatial_entity"
+#endif
+
+
+#ifdef XR_FB_spatial_entity_EXPERIMENTAL_VERSION
+
+#if XR_FB_spatial_entity_EXPERIMENTAL_VERSION == 2
+#undef XR_FB_spatial_entity_SPEC_VERSION
+#define XR_FB_spatial_entity_SPEC_VERSION XR_FBX2_spatial_entity_SPEC_VERSION
+#undef XR_FB_SPATIAL_ENTITY_EXTENSION_NAME
+#define XR_FB_SPATIAL_ENTITY_EXTENSION_NAME XR_FBX2_SPATIAL_ENTITY_EXTENSION_NAME
+#else
+#error "unknown experimental version for XR_FB_spatial_entity"
+#endif
+
+
+#if XR_FB_spatial_entity_EXPERIMENTAL_VERSION >= 2
+
+#define XR_UUID_SIZE_FBX2 2
+typedef struct XrSpatialEntityUuidFBX2 {
+ uint64_t value[XR_UUID_SIZE_FBX2];
+} XrSpatialEntityUuidFBX2;
+
+static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FBX2 = (XrStructureType)1000011303;
+
+static const XrStructureType XR_TYPE_COMPONENT_ENABLE_REQUEST_FBX2 = (XrStructureType)1000113000;
+typedef struct XrComponentEnableRequestFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceComponentTypeFB componentType;
+ XrBool32 enable;
+ XrDuration timeout;
+} XrComponentEnableRequestFBX2;
+
+static const XrStructureType XR_TYPE_EVENT_DATA_SET_COMPONENT_ENABLE_RESULT_FBX2 =
+ (XrStructureType)1000113002;
+typedef struct XrEventDataSetComponentEnableResultFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpaceComponentTypeFB componentType;
+ XrSpace space;
+} XrEventDataSetComponentEnableResultFBX2;
+
+typedef XrResult(XRAPI_PTR* PFN_xrCreateSpatialAnchorFBX2)(
+ XrSession session,
+ const XrSpatialAnchorCreateInfoFB* info,
+ XrSpace* space);
+
+typedef XrResult(
+ XRAPI_PTR* PFN_xrGetSpatialEntityUuidFBX2)(XrSpace space, XrSpatialEntityUuidFBX2* uuid);
+
+typedef XrResult(XRAPI_PTR* PFN_xrEnumerateSupportedComponentsFBX2)(
+ XrSpace space,
+ uint32_t componentTypeCapacityInput,
+ uint32_t* componentTypeCountOutput,
+ XrSpaceComponentTypeFB* componentTypes);
+
+typedef XrResult(XRAPI_PTR* PFN_xrSetComponentEnabledFBX2)(
+ XrSpace space,
+ const XrComponentEnableRequestFBX2* info,
+ XrAsyncRequestIdFB* requestId);
+
+typedef XrResult(XRAPI_PTR* PFN_xrGetComponentStatusFBX2)(
+ XrSpace space,
+ XrSpaceComponentTypeFB componentType,
+ XrSpaceComponentStatusFB* status);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+XRAPI_ATTR XrResult XRAPI_CALL
+xrGetSpatialEntityUuidFB(XrSpace space, XrSpatialEntityUuidFBX2* uuid);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSupportedComponentsFB(
+ XrSpace space,
+ uint32_t componentTypeCapacityInput,
+ uint32_t* componentTypeCountOutput,
+ XrSpaceComponentTypeFB* componentTypes);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSetComponentEnabledFB(
+ XrSpace space,
+ const XrComponentEnableRequestFBX2* info,
+ XrAsyncRequestIdFB* requestId);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetComponentStatusFB(
+ XrSpace space,
+ XrSpaceComponentTypeFB componentType,
+ XrSpaceComponentStatusFB* status);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+
+#endif // XR_FB_spatial_entity_EXPERIMENTAL_VERSION >= 2
+
+#if XR_FB_spatial_entity_EXPERIMENTAL_VERSION == 2
+
+#define XR_ERROR_COMPONENT_NOT_SUPPORTED_FB XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB
+#define XR_ERROR_COMPONENT_NOT_ENABLED_FB XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB
+#define XR_ERROR_SET_COMPONENT_ENABLE_PENDING_FB XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB
+#define XR_ERROR_SET_COMPONENT_ENABLE_ALREADY_ENABLED_FB \
+ XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB
+
+#define XrComponentTypeFB XrSpaceComponentTypeFB
+#define XR_COMPONENT_TYPE_LOCATABLE_FB XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB
+#define XR_COMPONENT_TYPE_STORABLE_FB XR_SPACE_COMPONENT_TYPE_STORABLE_FB
+#define XR_COMPONENT_TYPE_MAX_ENUM_FB XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB
+
+#define XrComponentStatusFB XrSpaceComponentStatusFB
+#define XR_TYPE_COMPONENT_STATUS_FB XR_TYPE_SPACE_COMPONENT_STATUS_FB
+
+#define XR_UUID_SIZE_FB XR_UUID_SIZE_FBX2
+#define XrSpatialEntityUuidFB XrSpatialEntityUuidFBX2
+
+#define XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FBX2
+
+#define XR_TYPE_COMPONENT_ENABLE_REQUEST_FB XR_TYPE_COMPONENT_ENABLE_REQUEST_FBX2
+#define XrComponentEnableRequestFB XrComponentEnableRequestFBX2
+
+#define XR_TYPE_EVENT_DATA_SET_COMPONENT_ENABLE_RESULT_FB \
+ XR_TYPE_EVENT_DATA_SET_COMPONENT_ENABLE_RESULT_FBX2
+#define XrEventDataSetComponentEnableResultFB XrEventDataSetComponentEnableResultFBX2
+
+#define PFN_xrCreateSpatialAnchorFB PFN_xrCreateSpatialAnchorFBX2
+#define PFN_xrGetSpatialEntityUuidFB PFN_xrGetSpatialEntityUuidFBX2
+#define PFN_xrEnumerateSupportedComponentsFB PFN_xrEnumerateSupportedComponentsFBX2
+#define PFN_xrSetComponentEnabledFB PFN_xrSetComponentEnabledFBX2
+#define PFN_xrGetComponentStatusFB PFN_xrGetComponentStatusFBX2
+
+#endif // XR_FB_spatial_entity_EXPERIMENTAL_VERSION == 2
+
+
+#endif // XR_FB_spatial_entity_EXPERIMENTAL_VERSION
+
+// =============================================================================
+// End Backwards Compatibility (DEPRECATED)
+// =============================================================================
+
+#endif // XR_FBX_spatial_entity
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_container.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_container.h
new file mode 100755
index 00000000..fed37511
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_container.h
@@ -0,0 +1,77 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_spatial_entity_container.h
+Content : Spatial entity container functionality.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+// Extension 200
+
+#ifndef XR_FB_spatial_entity_container
+#define XR_FB_spatial_entity_container 1
+
+
+#ifndef XR_FB_spatial_entity_container_EXPERIMENTAL_VERSION
+#define XR_FB_spatial_entity_container_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_CONTAINER_EXTENSION_NAME "XR_FB_spatial_entity_container"
+#else
+#error "unknown experimental version number for XR_FB_spatial_entity_container_EXPERIMENTAL_VERSION"
+#endif
+
+static const XrSpaceComponentTypeFB XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB =
+ (XrSpaceComponentTypeFB)7;
+
+// Space container component.
+static const XrStructureType XR_TYPE_SPACE_CONTAINER_FB = (XrStructureType)1000199000;
+typedef struct XrSpaceContainerFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+
+ // Input, capacity of UUID list.
+ uint32_t uuidCapacityInput;
+
+ // Output, number of spatial entities included in the list.
+ uint32_t uuidCountOutput;
+
+ // List of spatial entities contained in the entity to which this component is attached.
+ XrUuidEXT* uuids;
+} XrSpaceContainerFB;
+
+// Get space container component.
+typedef XrResult(XRAPI_PTR* PFN_xrGetSpaceContainerFB)(
+ XrSession session,
+ XrSpace space,
+ XrSpaceContainerFB* spaceContainerOutput);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+// Get space container component.
+// Note: This functions uses two-call idiom:
+// 1) When uuidCapacityInput == 0, only uuidCountOutput will be updated and no UUIDs will be
+// copied;
+// 2) When uuidCapacityInput >= uuidCountOutput, UUIDs will be copied to
+// spaceContainerOutput;
+// 3) Otherwise returns XR_ERROR_SIZE_INSUFFICIENT.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrGetSpaceContainerFB(XrSession session, XrSpace space, XrSpaceContainerFB* spaceContainerOutput);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+#endif // XR_FB_spatial_entity_container
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_query.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_query.h
new file mode 100755
index 00000000..50462d03
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_query.h
@@ -0,0 +1,320 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_spatial_entity_query.h
+Content : spatial entity interface.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+#include
+
+/*
+ 157 XR_FB_spatial_entity_query
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef XR_FB_spatial_entity_query
+#define XR_FB_spatial_entity_query 1
+
+#ifndef XR_FB_spatial_entity
+#error "This extension depends XR_FB_spatial_entity which has not been defined"
+#endif
+
+#ifndef XR_FB_spatial_entity_storage
+#error "This extension depends XR_FB_spatial_entity_storage which has not been defined"
+#endif
+
+#ifndef XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION
+#define XR_FB_spatial_entity_query_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME "XR_FB_spatial_entity_query"
+#endif
+
+// This extension allows an application to query the spaces that have been previously shared
+// or persisted onto the device
+//
+// The following types of Query actions can be performed:
+//
+// - XR_SPACE_QUERY_ACTION_LOAD_FB
+// Performs a simple query that returns a XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB
+// when results found during the query become available. There will also be a final
+// XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB event that is returned when all XrSpaces
+// have been returned. This query type can be used when looking for a list of all
+// spaces that match the filter criteria specified. Using this query does an implicit load
+// on the spaces found by this query.
+//
+
+// Type of query being performed.
+typedef enum XrSpaceQueryActionFB {
+ // returns XrSpaces
+ XR_SPACE_QUERY_ACTION_LOAD_FB = 0,
+ XR_SPACE_QUERY_ACTION_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpaceQueryActionFB;
+
+// Query base struct
+typedef struct XR_MAY_ALIAS XrSpaceQueryInfoBaseHeaderFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSpaceQueryInfoBaseHeaderFB;
+
+// Query filter base struct
+typedef struct XR_MAY_ALIAS XrSpaceFilterInfoBaseHeaderFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSpaceFilterInfoBaseHeaderFB;
+
+// Query result to be returned in the results array of XrEventSpatialEntityQueryResultsFBX2 or as
+// output from xrRetrieveSpaceQueryResultsFB(). No type or next pointer included to save
+// space in the results array.
+typedef struct XrSpaceQueryResultFB {
+ XrSpace space;
+ XrUuidEXT uuid;
+} XrSpaceQueryResultFB;
+
+// May be used to query for spaces and perform a specific action on the spaces returned.
+// The available actions can be found in XrSpaceQueryActionFB.
+// The filter info provided to the filter member of the struct will be used as an inclusive
+// filter. All spaces that match this criteria will be included in the results returned.
+// The excludeFilter member of the struct is not supported at this time.
+static const XrStructureType XR_TYPE_SPACE_QUERY_INFO_FB = (XrStructureType)1000156001;
+typedef struct XrSpaceQueryInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceQueryActionFB queryAction;
+ uint32_t maxResultCount;
+ XrDuration timeout;
+ const XrSpaceFilterInfoBaseHeaderFB* filter;
+ const XrSpaceFilterInfoBaseHeaderFB* excludeFilter;
+} XrSpaceQueryInfoFB;
+
+// Storage location info is used by the query filters and added to the next chain in order to
+// specify which location the query filter wishes to perform it query from
+static const XrStructureType XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB =
+ (XrStructureType)1000156003;
+typedef struct XrSpaceStorageLocationFilterInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceStorageLocationFB location;
+} XrSpaceStorageLocationFilterInfoFB;
+
+// May be used to query the system to find all spaces that match the uuids provided
+// in the filter info
+static const XrStructureType XR_TYPE_SPACE_UUID_FILTER_INFO_FB = (XrStructureType)1000156054;
+typedef struct XrSpaceUuidFilterInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ uint32_t uuidCount;
+ const XrUuidEXT* uuids;
+} XrSpaceUuidFilterInfoFB;
+
+// May be used to query the system to find all spaces that have a particular component enabled
+static const XrStructureType XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB = (XrStructureType)1000156052;
+typedef struct XrSpaceComponentFilterInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceComponentTypeFB componentType;
+} XrSpaceComponentFilterInfoFB;
+
+static const XrStructureType XR_TYPE_SPACE_QUERY_RESULTS_FB = (XrStructureType)1000156002;
+typedef struct XrSpaceQueryResultsFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ uint32_t resultCapacityInput;
+ uint32_t resultCountOutput;
+ XrSpaceQueryResultFB* results;
+} XrSpaceQueryResultsFB;
+
+static const XrStructureType XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB =
+ (XrStructureType)1000156103;
+typedef struct XrEventDataSpaceQueryResultsAvailableFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+} XrEventDataSpaceQueryResultsAvailableFB;
+
+// When a query has completely finished this event will be returned
+static const XrStructureType XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB =
+ (XrStructureType)1000156104;
+typedef struct XrEventDataSpaceQueryCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+} XrEventDataSpaceQueryCompleteFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrQuerySpacesFB)(
+ XrSession session,
+ const XrSpaceQueryInfoBaseHeaderFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+typedef XrResult(XRAPI_PTR* PFN_xrRetrieveSpaceQueryResultsFB)(
+ XrSession session,
+ XrAsyncRequestIdFB requestId,
+ XrSpaceQueryResultsFB* results);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+XRAPI_ATTR XrResult XRAPI_CALL xrQuerySpacesFB(
+ XrSession session,
+ const XrSpaceQueryInfoBaseHeaderFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+// Call this function to get available results for a request. Results are available following a
+// XrEventDataSpaceQueryResultsAvailableFB from xrPollEvent() and will be purged from the
+// runtime once results have been copied into the application's buffer. The application should call
+// this function once to populate resultCount before allocating enough memory for a second call to
+// actually retrieve any available results.
+XRAPI_ATTR XrResult XRAPI_CALL xrRetrieveSpaceQueryResultsFB(
+ XrSession session,
+ XrAsyncRequestIdFB requestId,
+ XrSpaceQueryResultsFB* results);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+#endif // XR_FB_spatial_entity_query
+
+// =============================================================================
+// Begin Backwards Compatibility (DEPRECATED)
+// =============================================================================
+// Separate include guard for experimental backwards compatibility,
+// to make sure this still gets included even when the extension
+// is included in openxr.h
+#ifndef XR_FBX_spatial_entity_query
+#define XR_FBX_spatial_entity_query 1
+
+// Conditionally define experimental versions, since they are not getting defined
+// if the extension is included from openxr.h
+#ifndef XR_FBX2_spatial_entity_query_SPEC_VERSION
+#define XR_FBX2_spatial_entity_query_SPEC_VERSION 2
+#define XR_FBX2_SPATIAL_ENTITY_QUERY_EXTENSION_NAME "XR_FBX2_spatial_entity_query"
+#endif
+
+#ifdef XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION
+
+#if XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION == 2
+#undef XR_FB_spatial_entity_query_SPEC_VERSION
+#define XR_FB_spatial_entity_query_SPEC_VERSION XR_FBX2_spatial_entity_query_SPEC_VERSION
+#undef XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME
+#define XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME XR_FBX2_SPATIAL_ENTITY_QUERY_EXTENSION_NAME
+#else
+#error "unknown experimental version for XR_FB_spatial_entity_query"
+#endif
+
+#if XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION >= 2
+
+static const XrStructureType XR_TYPE_SPATIAL_ENTITY_QUERY_INFO_ACTION_QUERY_FBX2 =
+ (XrStructureType)1000156000;
+typedef struct XrSpatialEntityQueryInfoActionQueryFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ int32_t maxQuerySpaces;
+ XrDuration timeout;
+ XrSpaceQueryActionFB queryAction;
+ const XrSpaceFilterInfoBaseHeaderFB* filter;
+ const XrSpaceFilterInfoBaseHeaderFB* excludeFilter;
+} XrSpatialEntityQueryInfoActionQueryFBX2;
+
+static const XrStructureType XR_TYPE_SPATIAL_ENTITY_QUERY_FILTER_IDS_FBX2 =
+ (XrStructureType)1000156053;
+typedef struct XrSpatialEntityQueryFilterIdsFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpatialEntityUuidFBX2* uuids;
+ uint32_t numIds;
+} XrSpatialEntityQueryFilterIdsFBX2;
+
+typedef struct XrSpatialEntityQueryResultFBX2 {
+ XrSpace space;
+ XrSpatialEntityUuidFBX2 uuid;
+} XrSpatialEntityQueryResultFBX2;
+
+#define XR_SPATIAL_ENTITY_QUERY_MAX_RESULTS_PER_EVENT_FBX2 128
+static const XrStructureType XR_TYPE_EVENT_SPATIAL_ENTITY_QUERY_RESULTS_FBX2 =
+ (XrStructureType)1000156102;
+typedef struct XrEventSpatialEntityQueryResultsFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB request;
+ uint32_t numResults;
+ XrSpatialEntityQueryResultFBX2 results[XR_SPATIAL_ENTITY_QUERY_MAX_RESULTS_PER_EVENT_FBX2];
+} XrEventSpatialEntityQueryResultsFBX2;
+
+static const XrStructureType XR_TYPE_EVENT_SPATIAL_ENTITY_QUERY_COMPLETE_FBX2 =
+ (XrStructureType)1000156101;
+typedef struct XrEventSpatialEntityQueryCompleteFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrResult result;
+ int32_t numSpacesFound;
+ XrAsyncRequestIdFB request;
+} XrEventSpatialEntityQueryCompleteFBX2;
+
+typedef XrResult(XRAPI_PTR* PFN_xrQuerySpatialEntityFBX2)(
+ XrSession session,
+ const XrSpaceQueryInfoBaseHeaderFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+
+#endif // XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION >= 2
+
+#if XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION == 2
+
+#define XrSpatialEntityQueryPredicateFB XrSpaceQueryActionFB
+#define XR_SPATIAL_ENTITY_QUERY_PREDICATE_LOAD_FB XR_SPACE_QUERY_ACTION_LOAD_FB
+#define XR_SPATIAL_ENTITY_QUERY_PREDICATE_MAX_ENUM_FB XR_SPACE_QUERY_ACTION_MAX_ENUM_FB
+
+#define XR_TYPE_SPATIAL_ENTITY_QUERY_INFO_ACTION_QUERY_FB \
+ XR_TYPE_SPATIAL_ENTITY_QUERY_INFO_ACTION_QUERY_FBX2
+#define XrSpatialEntityQueryInfoActionQueryFB XrSpatialEntityQueryInfoActionQueryFBX2
+
+#define XrSpatialEntityQueryInfoBaseHeaderFB XrSpaceQueryInfoBaseHeaderFB
+#define XrSpatialEntityQueryFilterBaseHeaderFB XrSpaceFilterInfoBaseHeaderFB
+
+#define XR_TYPE_SPATIAL_ENTITY_STORAGE_LOCATION_INFO_FB \
+ XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB
+#define XrSpatialEntityStorageLocationInfoFB XrSpaceStorageLocationFilterInfoFB
+
+#define XR_TYPE_SPATIAL_ENTITY_QUERY_FILTER_IDS_FB XR_TYPE_SPATIAL_ENTITY_QUERY_FILTER_IDS_FBX2
+#define XrSpatialEntityQueryFilterIdsFB XrSpatialEntityQueryFilterIdsFBX2
+
+#define XR_TYPE_SPATIAL_ENTITY_QUERY_FILTER_COMPONENT_TYPE_FB XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB
+#define XrSpatialEntityQueryFilterComponentTypeFB XrSpaceComponentFilterInfoFB
+
+#define XR_FB_SPATIAL_ENTITY_QUERY_MAX_RESULTS_PER_EVENT \
+ XR_SPATIAL_ENTITY_QUERY_MAX_RESULTS_PER_EVENT_FBX2
+#define XR_FBX2_SPATIAL_ENTITY_QUERY_MAX_RESULTS_PER_EVENT \
+ XR_SPATIAL_ENTITY_QUERY_MAX_RESULTS_PER_EVENT_FBX2
+
+#define XR_TYPE_EVENT_SPATIAL_ENTITY_QUERY_RESULTS_FB \
+ XR_TYPE_EVENT_SPATIAL_ENTITY_QUERY_RESULTS_FBX2
+#define XrEventSpatialEntityQueryResultsFB XrEventSpatialEntityQueryResultsFBX2
+
+#define XR_TYPE_EVENT_SPATIAL_ENTITY_QUERY_COMPLETE_FB \
+ XR_TYPE_EVENT_SPATIAL_ENTITY_QUERY_COMPLETE_FBX2
+#define XrEventSpatialEntityQueryCompleteFB XrEventSpatialEntityQueryCompleteFBX2
+
+#define PFN_xrQuerySpatialEntityFB PFN_xrQuerySpatialEntityFBX1
+#define PFN_xrTerminateSpatialEntityQueryFB PFN_xrTerminateSpatialEntityQueryFBX2
+
+#endif // XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION == 2
+
+
+#endif // XR_FB_spatial_entity_query_EXPERIMENTAL_VERSION
+
+// =============================================================================
+// End Backwards Compatibility (DEPRECATED)
+// =============================================================================
+
+#endif // XR_FBX_spatial_entity_query
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_sharing.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_sharing.h
new file mode 100755
index 00000000..fbec6b84
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_sharing.h
@@ -0,0 +1,115 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_spatial_entity_sharing.h
+Content : spatial entity interface.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+#include
+#include
+#include
+
+/*
+ 170 XR_FB_spatial_entity_sharing
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_spatial_entity_sharing
+#define XR_FB_spatial_entity_sharing 1
+
+#ifndef XR_FB_spatial_entity
+#error "This extension depends on XR_FB_spatial_entity which has not been defined"
+#endif // XR_FB_spatial_entity
+
+#ifndef XR_FB_spatial_entity_storage
+#error "This extension depends on XR_FB_spatial_entity_storage which has not been defined"
+#endif // XR_FB_spatial_entity_storage
+
+// XR_FB_spatial_entity_storage_batch is only a dependency in Experimental Version 5.
+// In production Share has been properly decoupled from batch_storage, although the dependency on
+// storage remains due to this extending XrSpaceStorageLocationFB.
+#if defined(XR_FB_spatial_entity_sharing_EXPERIMENTAL_VERSION) && \
+ XR_FB_spatial_entity_sharing_EXPERIMENTAL_VERSION == 5
+#ifndef XR_FB_spatial_entity_storage_batch
+#error "This extension depends on XR_FB_spatial_entity_storage_batch which has not been defined"
+#endif // XR_FB_spatial_entity_storage_batch
+#endif // XR_FB_spatial_entity_sharing_EXPERIMENTAL_VERSION == 5
+
+#ifndef XR_FB_spatial_entity_sharing_EXPERIMENTAL_VERSION
+#ifndef XR_FB_spatial_entity_user
+#error "This extension depends on XR_FB_spatial_entity_user which has not been defined"
+#endif // XR_FB_spatial_entity
+#endif // XR_FB_spatial_entity_sharing_EXPERIMENTAL_VERSION
+
+#ifndef XR_FB_spatial_entity_sharing_EXPERIMENTAL_VERSION
+#define XR_FB_spatial_entity_sharing_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_SHARING_EXTENSION_NAME "XR_FB_spatial_entity_sharing"
+#endif // !defined(XR_FB_spatial_entity_sharing_EXPERIMENTAL_VERSION)
+
+static const XrSpaceComponentTypeFB XR_SPACE_COMPONENT_TYPE_SHARABLE_FB = (XrSpaceComponentTypeFB)2;
+static const XrSpaceStorageLocationFB XR_SPACE_STORAGE_LOCATION_CLOUD_FB =
+ (XrSpaceStorageLocationFB)2;
+
+XR_STRUCT_ENUM(XR_TYPE_SPACE_SHARE_INFO_FB, 1000169001);
+XR_STRUCT_ENUM(XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB, 1000169002);
+
+XR_RESULT_ENUM(XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB, -1000169000);
+XR_RESULT_ENUM(XR_ERROR_SPACE_LOCALIZATION_FAILED_FB, -1000169001);
+XR_RESULT_ENUM(XR_ERROR_SPACE_NETWORK_TIMEOUT_FB, -1000169002);
+XR_RESULT_ENUM(XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB, -1000169003);
+
+// This is defined here unless using experimental version 1 of
+// XR_FB_spatial_entity_storage_batch.
+#if !defined(XR_FB_spatial_entity_storage_batch_EXPERIMENTAL_VERSION) || \
+ XR_FB_spatial_entity_storage_batch_EXPERIMENTAL_VERSION > 1
+XR_RESULT_ENUM(XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB, -1000169004);
+#endif
+
+typedef struct XrSpaceShareInfoFB {
+ XrStructureType type; // XR_TYPE_SPACE_SHARE_INFO_FB
+ const void* XR_MAY_ALIAS next;
+ uint32_t spaceCount;
+ XrSpace* spaces;
+ uint32_t userCount;
+ XrSpaceUserFB* users;
+} XrSpaceShareInfoFB;
+
+typedef struct XrEventDataSpaceShareCompleteFB {
+ XrStructureType type; // XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+} XrEventDataSpaceShareCompleteFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrShareSpacesFB)(
+ XrSession session,
+ const XrSpaceShareInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+// xrShareSpacesFB triggers the share flow for an Anchor. This flow can
+// potentially take a long time to complete since explicit user action is required to
+// authorize the sharing action, and once authorized a request is sent to the cloud.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrShareSpacesFB(XrSession session, const XrSpaceShareInfoFB* info, XrAsyncRequestIdFB* requestId);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // XR_NO_PROTOTYPES
+
+#endif // XR_FB_spatial_entity_sharing
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_storage.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_storage.h
new file mode 100755
index 00000000..8f1b52a2
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_storage.h
@@ -0,0 +1,257 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_spatial_entity_storage.h
+Content : spatial entity interface.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+/*
+ 159 XR_FB_spatial_entity_storage
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef XR_FB_spatial_entity_storage
+#define XR_FB_spatial_entity_storage 1
+
+#ifndef XR_FB_spatial_entity
+#error "This extension depends XR_FB_spatial_entity which has not been defined"
+#endif
+
+#ifndef XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION
+#define XR_FB_spatial_entity_storage_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME "XR_FB_spatial_entity_storage"
+#endif
+
+// In order to persist XrSpaces between application uses the XR_SPACE_COMPONENT_TYPE_STORABLE_FB
+// component can be enabled on a space that supports this functionality. If this
+// component has been enabled it allows for application developers to access the ability to
+// save and erase persisted XrSpaces.
+
+// Storage location to be used to store, erase, and query spaces from
+typedef enum XrSpaceStorageLocationFB {
+ XR_SPACE_STORAGE_LOCATION_INVALID_FB = 0,
+ XR_SPACE_STORAGE_LOCATION_LOCAL_FB = 1,
+ XR_SPACE_STORAGE_LOCATION_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpaceStorageLocationFB;
+
+// Whether data should be persisted indefinitely or otherwise
+typedef enum XrSpacePersistenceModeFB {
+ XR_SPACE_PERSISTENCE_MODE_INVALID_FB = 0,
+ XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB = 1,
+ XR_SPACE_PERSISTENCE_MODE_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpacePersistenceModeFB;
+
+// Space save information used by xrSaveSpaceFB
+static const XrStructureType XR_TYPE_SPACE_SAVE_INFO_FB = (XrStructureType)1000158000;
+typedef struct XrSpaceSaveInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrSpaceStorageLocationFB location;
+ XrSpacePersistenceModeFB persistenceMode;
+} XrSpaceSaveInfoFB;
+
+// Space erase information used by xrEraseSpaceFB
+static const XrStructureType XR_TYPE_SPACE_ERASE_INFO_FB = (XrStructureType)1000158001;
+typedef struct XrSpaceEraseInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrSpaceStorageLocationFB location;
+} XrSpaceEraseInfoFB;
+
+// Save Result
+// The save result event contains the success of the save/write operation to the
+// specified location as well as the XrSpace handle on which the save operation was attempted
+// on in addition to the unique Uuid and the triggered async request id from the initial
+// calling function
+static const XrStructureType XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB =
+ (XrStructureType)1000158106;
+typedef struct XrEventDataSpaceSaveCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+ XrSpaceStorageLocationFB location;
+} XrEventDataSpaceSaveCompleteFB;
+
+// Erase Result
+// The erase result event contains the success of the erase operation from the specified storage
+// location. It will also provide the uuid of the anchor and the async request id from the initial
+// calling function
+static const XrStructureType XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB =
+ (XrStructureType)1000158107;
+typedef struct XrEventDataSpaceEraseCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+ XrSpaceStorageLocationFB location;
+} XrEventDataSpaceEraseCompleteFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrSaveSpaceFB)(
+ XrSession session,
+ const XrSpaceSaveInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+typedef XrResult(XRAPI_PTR* PFN_xrEraseSpaceFB)(
+ XrSession session,
+ const XrSpaceEraseInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+XRAPI_ATTR XrResult XRAPI_CALL
+xrSaveSpaceFB(XrSession session, const XrSpaceSaveInfoFB* info, XrAsyncRequestIdFB* requestId);
+
+XRAPI_ATTR XrResult XRAPI_CALL
+xrEraseSpaceFB(XrSession session, const XrSpaceEraseInfoFB* info, XrAsyncRequestIdFB* requestId);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+#endif // XR_FB_spatial_entity_storage
+
+// =============================================================================
+// Begin Backwards Compatibility (DEPRECATED)
+// =============================================================================
+
+// Separate include guard for experimental backwards compatibility,
+// to make sure this still gets included even when the extension
+// is included in openxr.h
+#ifndef XR_FBX_spatial_entity_storage
+#define XR_FBX_spatial_entity_storage 1
+
+// Conditionally define experimental versions, since they are not getting defined
+// if the extension is included from openxr.h
+#ifndef XR_FBX2_spatial_entity_storage_SPEC_VERSION
+#define XR_FBX2_spatial_entity_storage_SPEC_VERSION 2
+#define XR_FBX2_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME "XR_FBX2_spatial_entity_storage"
+#endif
+
+#ifdef XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION
+
+#if XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION == 2
+#undef XR_FB_spatial_entity_storage_SPEC_VERSION
+#define XR_FB_spatial_entity_storage_SPEC_VERSION XR_FBX2_spatial_entity_storage_SPEC_VERSION
+#undef XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME
+#define XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME XR_FBX2_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME
+#else
+#error "unknown experimental version for XR_FB_spatial_entity_storage"
+#endif
+
+#if XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION >= 2
+
+
+static const XrStructureType XR_TYPE_EVENT_SPATIAL_ENTITY_STORAGE_SAVE_RESULT_FBX2 =
+ (XrStructureType)1000077103;
+typedef struct XrEventSpatialEntityStorageSaveResultFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrResult result;
+ XrSpace space;
+ XrSpatialEntityUuidFBX2 uuid;
+ XrAsyncRequestIdFB request;
+} XrEventSpatialEntityStorageSaveResultFBX2;
+
+static const XrStructureType XR_TYPE_EVENT_SPATIAL_ENTITY_STORAGE_ERASE_RESULT_FBX2 =
+ (XrStructureType)1000077104;
+typedef struct XrEventSpatialEntityStorageEraseResultFBX2 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrResult result;
+ XrSpaceStorageLocationFB location;
+ XrSpatialEntityUuidFBX2 uuid;
+ XrAsyncRequestIdFB request;
+} XrEventSpatialEntityStorageEraseResultFBX2;
+
+
+typedef XrResult(XRAPI_PTR* PFN_xrSpatialEntitySaveSpaceFBX2)(
+ XrSession session,
+ const XrSpaceSaveInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+typedef XrResult(XRAPI_PTR* PFN_xrSpatialEntityEraseSpaceFBX2)(
+ XrSession session,
+ const XrSpaceEraseInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSpatialEntitySaveSpaceFB(
+ XrSession session,
+ const XrSpaceSaveInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSpatialEntityEraseSpaceFB(
+ XrSession session,
+ const XrSpaceEraseInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // !XR_NO_PROTOTYPES
+
+#endif // XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION >= 2
+
+#if XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION == 2
+
+#define XrSpatialEntityStorageLocationFB XrSpaceStorageLocationFB
+#define XR_SPATIAL_ENTITY_STORAGE_LOCATION_INVALID_FB XR_SPACE_STORAGE_LOCATION_INVALID_FB
+#define XR_SPATIAL_ENTITY_STORAGE_LOCATION_LOCAL_FB XR_SPACE_STORAGE_LOCATION_LOCAL_FB
+#define XR_SPATIAL_ENTITY_STORAGE_LOCATION_MAX_ENUM_FB XR_SPACE_STORAGE_LOCATION_MAX_ENUM_FB
+
+#define XrSpatialEntityStoragePersistenceModeFB XrSpacePersistenceModeFB
+#define XR_SPATIAL_ENTITY_STORAGE_PERSISTENCE_MODE_INVALID_FB XR_SPACE_PERSISTENCE_MODE_INVALID_FB
+#define XR_SPATIAL_ENTITY_STORAGE_PERSISTENCE_MODE_INDEFINITE_HIGH_PRI_FB \
+ XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB
+#define XR_SPATIAL_ENTITY_STORAGE_PERSISTENCE_MODE_MAX_ENUM_FB XR_SPACE_PERSISTENCE_MODE_MAX_ENUM_FB
+
+#define XR_TYPE_SPATIAL_ENTITY_STORAGE_SAVE_INFO_FB XR_TYPE_SPACE_SAVE_INFO_FB
+#define XrSpatialEntityStorageSaveInfoFB XrSpaceSaveInfoFB
+
+#define XR_TYPE_SPATIAL_ENTITY_STORAGE_ERASE_INFO_FB XR_TYPE_SPACE_ERASE_INFO_FB
+#define XrSpatialEntityStorageEraseInfoFB XrSpaceEraseInfoFB
+
+
+#define XR_TYPE_EVENT_SPATIAL_ENTITY_STORAGE_SAVE_RESULT_FB \
+ XR_TYPE_EVENT_SPATIAL_ENTITY_STORAGE_SAVE_RESULT_FBX2
+#define XrEventSpatialEntityStorageSaveResultFB XrEventSpatialEntityStorageSaveResultFBX2
+
+#define XR_TYPE_EVENT_SPATIAL_ENTITY_STORAGE_ERASE_RESULT_FB \
+ XR_TYPE_EVENT_SPATIAL_ENTITY_STORAGE_ERASE_RESULT_FBX2
+#define XrEventSpatialEntityStorageEraseResultFB XrEventSpatialEntityStorageEraseResultFBX2
+
+
+#define PFN_xrSpatialEntitySaveSpaceFB PFN_xrSpatialEntitySaveSpaceFBX2
+#define PFN_xrSpatialEntityEraseSpaceFB PFN_xrSpatialEntityEraseSpaceFBX2
+
+#endif // XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION == 2
+
+
+#endif // XR_FB_spatial_entity_storage_EXPERIMENTAL_VERSION
+
+#endif // XR_FBX_spatial_entity_storage
+// =============================================================================
+// End Backwards Compatibility (DEPRECATED)
+// =============================================================================
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_storage_batch.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_storage_batch.h
new file mode 100755
index 00000000..47fb4c13
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_storage_batch.h
@@ -0,0 +1,79 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_spatial_entity_storage_batch.h
+Content : Spatial Entity batch storage interface.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+#include
+#include
+
+/*
+ 239 XR_FB_spatial_entity_storage_batch
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_spatial_entity_storage_batch
+#define XR_FB_spatial_entity_storage_batch 1
+
+#ifndef XR_FB_spatial_entity
+#error "This extension depends on XR_FB_spatial_entity which has not been defined"
+#endif // XR_FB_spatial_entity
+
+#ifndef XR_FB_spatial_entity_storage
+#error "This extension depends on XR_FB_spatial_entity_storage which has not been defined"
+#endif // XR_FB_spatial_entity_storage
+
+#ifndef XR_FB_spatial_entity_storage_batch_EXPERIMENTAL_VERSION
+#define XR_FB_spatial_entity_storage_batch_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_STORAGE_BATCH_EXTENSION_NAME "XR_FB_spatial_entity_storage_batch"
+#endif // !XR_FB_spatial_entity_storage_batch_EXPERIMENTAL_VERSION
+
+XR_STRUCT_ENUM(XR_TYPE_SPACE_LIST_SAVE_INFO_FB, 1000238000);
+XR_STRUCT_ENUM(XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB, 1000238001);
+
+typedef struct XrSpaceListSaveInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ uint32_t spaceCount;
+ XrSpace* spaces;
+ XrSpaceStorageLocationFB location;
+} XrSpaceListSaveInfoFB;
+
+typedef struct XrEventDataSpaceListSaveCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+} XrEventDataSpaceListSaveCompleteFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrSaveSpaceListFB)(
+ XrSession session,
+ const XrSpaceListSaveInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSaveSpaceListFB(
+ XrSession session,
+ const XrSpaceListSaveInfoFB* info,
+ XrAsyncRequestIdFB* request);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // XR_NO_PROTOTYPES
+#endif // XR_FB_spatial_entity_storage_batch
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_user.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_user.h
new file mode 100755
index 00000000..bd416090
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_spatial_entity_user.h
@@ -0,0 +1,72 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : fb_spatial_entity_user.h
+Content : spatial entity interface.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+#include
+
+/*
+ 242 XR_FB_spatial_entity_user
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_spatial_entity_user
+#define XR_FB_spatial_entity_user 1
+
+#define XR_FB_spatial_entity_user_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_USER_EXTENSION_NAME "XR_FB_spatial_entity_user"
+
+XR_DEFINE_HANDLE(XrSpaceUserFB);
+
+XR_STRUCT_ENUM(XR_TYPE_SPACE_USER_CREATE_INFO_FB, 1000241001);
+
+typedef uint64_t XrSpaceUserIdFB;
+typedef struct XrSpaceUserCreateInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceUserIdFB userId;
+} XrSpaceUserCreateInfoFB;
+
+typedef XrResult(XRAPI_PTR* PFN_xrCreateSpaceUserFB)(
+ XrSession session,
+ const XrSpaceUserCreateInfoFB* info,
+ XrSpaceUserFB* user);
+
+typedef XrResult(
+ XRAPI_PTR* PFN_xrGetSpaceUserIdFB)(const XrSpaceUserFB user, XrSpaceUserIdFB* userId);
+
+typedef XrResult(XRAPI_PTR* PFN_xrDestroySpaceUserFB)(const XrSpaceUserFB user);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+
+// xrCreateSpaceUserFB creates a XrSpaceUserFB handle with the specified information.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrCreateSpaceUserFB(XrSession session, const XrSpaceUserCreateInfoFB* info, XrSpaceUserFB* user);
+
+// xrGetSpaceUserIdFB retrieves the userId corresponding to the given XrSpaceUserFB handle.
+XRAPI_ATTR XrResult XRAPI_CALL
+xrGetSpaceUserIdFB(const XrSpaceUserFB user, XrSpaceUserIdFB* userId);
+
+// XrSpaceUserFB handles are destroyed using xrDestroySpaceUserFB.
+XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpaceUserFB(const XrSpaceUserFB user);
+
+#endif // XR_EXTENSION_PROTOTYPES
+#endif // XR_NO_PROTOTYPES
+
+#endif // XR_FB_spatial_entity_user
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_touch_controller_pro.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_touch_controller_pro.h
new file mode 100755
index 00000000..24df2f74
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_touch_controller_pro.h
@@ -0,0 +1,319 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : fb_touch_controller_pro.h
+Content : Touch Controller Pro interaction profile.
+Language : C99
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+/*
+ 168 XR_FB_touch_controller_pro
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_touch_controller_pro
+#define XR_FB_touch_controller_pro 1
+
+#define XR_FB_touch_controller_pro_SPEC_VERSION 1
+#define XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME "XR_FB_touch_controller_pro"
+
+// Facebook Touch Controller PRO Profile
+// Path: /interaction_profiles/facebook/touch_controller_pro
+// Valid for user paths:
+// /user/hand/left
+// /user/hand/right
+//
+// This interaction profile represents the input sources and haptics on the Facebook Touch
+// controller pro. This is a superset of the existing `Oculus Touch Controller Profile`
+// Path: /interaction_profiles/oculus/touch_controller
+//
+// Supported component paths compatible with the above:
+//
+// On /user/hand/left only:
+// …/input/x/click
+// …/input/x/touch
+// …/input/y/click
+// …/input/y/touch
+// …/input/menu/click
+//
+// On /user/hand/right only:
+// …/input/a/click
+// …/input/a/touch
+// …/input/b/click
+// …/input/b/touch
+// …/input/system/click (may not be available for application use)
+//
+// On both:
+// …/input/squeeze/value
+// …/input/trigger/value
+// …/input/trigger/touch
+// …/input/thumbstick
+// …/input/thumbstick/x
+// …/input/thumbstick/y
+// …/input/thumbstick/click
+// …/input/thumbstick/touch
+// …/input/thumbrest/touch
+// …/input/grip/pose
+// …/input/aim/pose
+// …/output/haptic
+//
+// Additional supported paths enabled by this profile
+//
+// On both:
+// …/input/thumbrest/force
+// …/input/stylus_fb/force
+// …/input/trigger/curl_fb
+// …/input/trigger/slide_fb
+// …/input/trigger/proximity_fb
+// …/input/thumb_fb/proximity_fb
+// …/output/trigger_haptic_fb
+// …/output/thumb_haptic_fb
+
+#endif // XR_FB_touch_controller_pro
+
+#ifndef XR_FBX_touch_controller_pro
+#define XR_FBX_touch_controller_pro 1
+#define XR_FBX1_touch_controller_pro_SPEC_VERSION 1
+#define XR_FBX1_TOUCH_CONTROLLER_PRO_EXTENSION_NAME "XR_FBX1_touch_controller_pro"
+#define XR_FBX2_touch_controller_pro_SPEC_VERSION 2
+#define XR_FBX2_TOUCH_CONTROLLER_PRO_EXTENSION_NAME "XR_FBX2_touch_controller_pro"
+#define XR_FBX3_touch_controller_pro_SPEC_VERSION 3
+#define XR_FBX3_TOUCH_CONTROLLER_PRO_EXTENSION_NAME "XR_FBX3_touch_controller_pro"
+
+#ifdef XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION
+#undef XR_FB_touch_controller_pro_SPEC_VERSION
+#undef XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME
+#if XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION == 1
+#define XR_FB_touch_controller_pro_SPEC_VERSION XR_FBX1_touch_controller_pro_SPEC_VERSION
+#define XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME XR_FBX1_TOUCH_CONTROLLER_PRO_EXTENSION_NAME
+#elif XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION == 2
+#define XR_FB_touch_controller_pro_SPEC_VERSION XR_FBX2_touch_controller_pro_SPEC_VERSION
+#define XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME XR_FBX2_TOUCH_CONTROLLER_PRO_EXTENSION_NAME
+#elif XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION == 3
+#define XR_FB_touch_controller_pro_SPEC_VERSION XR_FBX3_touch_controller_pro_SPEC_VERSION
+#define XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME XR_FBX3_TOUCH_CONTROLLER_PRO_EXTENSION_NAME
+#else
+#error "unknown experimental version number for XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION"
+#endif // XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION
+#endif
+
+#ifdef XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION
+#if XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION == 3
+// X3 adds Pinch API support
+
+// Left for an(other) iteration to keep experimental builds working
+#define XR_FB_touch_controller_pro_DEPRECATED_EXPERIMENTAL_VERSION 1
+#define XR_FB_TOUCH_CONTROLLER_PRO_DEPRECATED_EXPERIMENTAL_EXTENSION_NAME \
+ "XR_FBX1_touch_controller_pro"
+
+// system properties
+XR_STRUCT_ENUM(XR_TYPE_TOUCH_CONTROLLER_PRO_DEPRECATED_PROPERTIES_FB, 1000167000);
+typedef struct XrTouchControllerPro_DEPRECATED_PropertiesFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 supportsLeftController;
+ XrBool32 supportsRightController;
+} XrTouchControllerPro_DEPRECATED_PropertiesFB;
+
+// Facebook Touch Controller PRO Profile
+// Path: /interaction_profiles/facebook/touch_controller_pro
+// Valid for user paths:
+// /user/hand/left
+// /user/hand/right
+//
+// This interaction profile represents the input sources and haptics on the Facebook Touch
+// controller pro. This is a superset of the existing `Oculus Touch Controller Profile`
+// Path: /interaction_profiles/oculus/touch_controller
+//
+// Supported component paths compatible with the above:
+//
+// On /user/hand/left only:
+// …/input/x/click
+// …/input/x/touch
+// …/input/y/click
+// …/input/y/touch
+// …/input/menu/click
+//
+// On /user/hand/right only:
+// …/input/a/click
+// …/input/a/touch
+// …/input/b/click
+// …/input/b/touch
+// …/input/system/click (may not be available for application use)
+//
+// On both:
+// …/input/squeeze/value
+// …/input/trigger/value
+// …/input/trigger/touch
+// …/input/thumbstick
+// …/input/thumbstick/x
+// …/input/thumbstick/y
+// …/input/thumbstick/click
+// …/input/thumbstick/touch
+// …/input/thumbrest/touch
+// …/input/grip/pose
+// …/input/aim/pose
+// …/output/haptic
+//
+// Additional supported paths enabled by this profile
+//
+// On both:
+// …/input/thumbrest/force
+// …/input/stylus_fb/force
+// …/input/trigger/curl_fb
+// …/input/trigger/slide_fb
+// …/input/trigger/proximity_fb
+// …/input/thumb_fb/proximity_fb
+// …/input/pinch_fb/value // NEW in X3
+// …/input/pinch_fb/force // NEW in X3
+// …/output/trigger_haptic_fb
+// …/output/thumb_haptic_fb
+
+#elif XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION == 2
+
+// Left for an iteration to keep experimental builds working
+#define XR_FB_touch_controller_pro_DEPRECATED_EXPERIMENTAL_VERSION 1
+#define XR_FB_TOUCH_CONTROLLER_PRO_DEPRECATED_EXPERIMENTAL_EXTENSION_NAME \
+ "XR_FBX1_touch_controller_pro"
+
+// system properties
+XR_STRUCT_ENUM(XR_TYPE_TOUCH_CONTROLLER_PRO_DEPRECATED_PROPERTIES_FB, 1000167000);
+typedef struct XrTouchControllerPro_DEPRECATED_PropertiesFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 supportsLeftController;
+ XrBool32 supportsRightController;
+} XrTouchControllerPro_DEPRECATED_PropertiesFB;
+
+// Facebook Touch Controller PRO Profile
+// Path: /interaction_profiles/facebook/touch_controller_pro
+// Valid for user paths:
+// /user/hand/left
+// /user/hand/right
+//
+// This interaction profile represents the input sources and haptics on the Facebook Touch
+// controller pro. This is a superset of the existing `Oculus Touch Controller Profile`
+// Path: /interaction_profiles/oculus/touch_controller
+//
+// Supported component paths compatible with the above:
+//
+// On /user/hand/left only:
+// …/input/x/click
+// …/input/x/touch
+// …/input/y/click
+// …/input/y/touch
+// …/input/menu/click
+//
+// On /user/hand/right only:
+// …/input/a/click
+// …/input/a/touch
+// …/input/b/click
+// …/input/b/touch
+// …/input/system/click (may not be available for application use)
+//
+// On both:
+// …/input/squeeze/value
+// …/input/trigger/value
+// …/input/trigger/touch
+// …/input/thumbstick
+// …/input/thumbstick/x
+// …/input/thumbstick/y
+// …/input/thumbstick/click
+// …/input/thumbstick/touch
+// …/input/thumbrest/touch
+// …/input/grip/pose
+// …/input/aim/pose
+// …/output/haptic
+//
+// Additional supported paths enabled by this profile
+//
+// On both:
+// …/input/thumbrest/force
+// …/input/stylus_fb/force
+// …/input/trigger/curl_fb
+// …/input/trigger/slide_fb
+// …/input/trigger/proximity_fb
+// …/input/thumb_fb/proximity_fb
+// …/output/trigger_haptic_fb
+// …/output/thumb_haptic_fb
+
+#elif XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION == 1
+
+// Facebook Touch Controller PRO Profile
+// Path: /interaction_profiles/facebook/touch_controller_pro
+// Valid for user paths:
+// /user/hand/left
+// /user/hand/right
+//
+// This interaction profile represents the input sources and haptics on the Facebook Touch
+// controller pro. This is a superset of the existing `Oculus Touch Controller Profile`
+// Path: /interaction_profiles/oculus/touch_controller
+//
+// Supported component paths compatible with the above:
+//
+// On /user/hand/left only:
+// …/input/x/click
+// …/input/x/touch
+// …/input/y/click
+// …/input/y/touch
+// …/input/menu/click
+//
+// On /user/hand/right only:
+// …/input/a/click
+// …/input/a/touch
+// …/input/b/click
+// …/input/b/touch
+// …/input/system/click (may not be available for application use)
+//
+// On both:
+// …/input/squeeze/value
+// …/input/trigger/value
+// …/input/trigger/touch
+// …/input/thumbstick/x
+// …/input/thumbstick/y
+// …/input/thumbstick/click
+// …/input/thumbstick/touch
+// …/input/thumbrest/touch
+// …/input/grip/pose
+// …/input/aim/pose
+// …/output/haptic
+//
+// Additional supported paths enabled by this profile
+//
+// On both:
+// …/input/trackpad/x
+// …/input/trackpad/y
+// …/input/trackpad/force
+// …/input/stylus/force
+// …/input/trigger/curl
+// …/input/trigger/slide
+// …/input/trigger/proximity_fb
+// …/input/thumb_fb/proximity_fb
+// …/output/trigger_haptic
+// …/output/thumb_haptic
+
+// system properties
+XR_STRUCT_ENUM(XR_TYPE_TOUCH_CONTROLLER_PRO_PROPERTIES_FB, 1000167000);
+typedef struct XrTouchControllerProPropertiesFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 supportsLeftController;
+ XrBool32 supportsRightController;
+} XrTouchControllerProPropertiesFB;
+
+#endif // XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION == 1
+
+#endif // defined(XR_FB_touch_controller_pro_EXPERIMENTAL_VERSION)
+
+#endif // XR_FBX_touch_controller_pro
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_touch_controller_proximity.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_touch_controller_proximity.h
new file mode 100755
index 00000000..8c974f95
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/fb_touch_controller_proximity.h
@@ -0,0 +1,78 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : fb_touch_controller_proximity.h
+Content : Touch Controller Proximity interaction profile extension.
+Language : C99
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+/*
+ 207 XR_FB_touch_controller_proximity
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_FB_touch_controller_proximity
+
+#define XR_FB_touch_controller_proximity 1
+#define XR_FB_touch_controller_proximity_SPEC_VERSION 1
+#define XR_FB_TOUCH_CONTROLLER_PROXIMITY_EXTENSION_NAME "XR_FB_touch_controller_proximity"
+
+// Oculus Touch Controller Profile with additional paths
+// Path: /interaction_profiles/oculus/touch_controller
+// Valid for user paths:
+// /user/hand/left
+// /user/hand/right
+//
+// This interaction profile represents the input sources and haptics on the Oculus Touch
+// controller. This is a superset of the existing `Oculus Touch Controller Profile`
+// Path: /interaction_profiles/oculus/touch_controller
+//
+// Supported component paths compatible with the above:
+//
+// On /user/hand/left only:
+// …/input/x/click
+// …/input/x/touch
+// …/input/y/click
+// …/input/y/touch
+// …/input/menu/click
+//
+// On /user/hand/right only:
+// …/input/a/click
+// …/input/a/touch
+// …/input/b/click
+// …/input/b/touch
+// …/input/system/click (may not be available for application use)
+//
+// On both:
+// …/input/squeeze/value
+// …/input/trigger/value
+// …/input/trigger/touch
+// …/input/thumbstick
+// …/input/thumbstick/x
+// …/input/thumbstick/y
+// …/input/thumbstick/click
+// …/input/thumbstick/touch
+// …/input/thumbrest/touch
+// …/input/grip/pose
+// …/input/aim/pose
+// …/output/haptic
+//
+// Additional paths enabled by this extension
+//
+// On both:
+// …/input/trigger/proximity_fb
+// …/input/thumb_fb/proximity_fb
+
+#endif // ifndef XR_FB_touch_controller_proximity
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_automatic_layer_filter.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_automatic_layer_filter.h
new file mode 100755
index 00000000..cbb2c12d
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_automatic_layer_filter.h
@@ -0,0 +1,30 @@
+#ifndef META_AUTOMATIC_LAYER_FILTER_H_
+#define META_AUTOMATIC_LAYER_FILTER_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_META_automatic_layer_filter
+
+#define XR_META_automatic_layer_filter 1
+#define XR_META_automatic_layer_filter_SPEC_VERSION 1
+#define XR_META_AUTOMATIC_LAYER_FILTER_EXTENSION_NAME "XR_META_automatic_layer_filter"
+// Specifies that the runtime may automatically toggle a texture filtering mechanism to improve visual quality of layer
+static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_AUTO_LAYER_FILTER_BIT_META = (XrCompositionLayerSettingsFlagsFB) 0x00000020;
+#endif /* XR_META_automatic_layer_filter */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_foveation_eye_tracked.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_foveation_eye_tracked.h
new file mode 100755
index 00000000..f4ab7f47
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_foveation_eye_tracked.h
@@ -0,0 +1,80 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : meta_foveation_eye_tracked.h
+Content : Eye tracked foveated rendering extension.
+ already merged: https://gitlab.khronos.org/openxr/openxr/-/merge_requests/2239
+Language : C99
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+/*
+ Extension 201 XR_META_foveation_eye_tracked
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_META_foveation_eye_tracked
+
+#define XR_META_foveation_eye_tracked 1
+#define XR_FOVEATION_CENTER_SIZE_META 2
+#define XR_META_foveation_eye_tracked_SPEC_VERSION 1
+#define XR_META_FOVEATION_EYE_TRACKED_EXTENSION_NAME "XR_META_foveation_eye_tracked"
+
+typedef XrFlags64 XrFoveationEyeTrackedProfileCreateFlagsMETA;
+
+// Flag bits for XrFoveationEyeTrackedProfileCreateFlagsMETA
+
+typedef XrFlags64 XrFoveationEyeTrackedStateFlagsMETA;
+
+// Flag bits for XrFoveationEyeTrackedStateFlagsMETA
+static const XrFoveationEyeTrackedStateFlagsMETA XR_FOVEATION_EYE_TRACKED_STATE_VALID_BIT_META =
+ 0x00000001;
+
+// XrFoveationEyeTrackedProfileCreateInfoMETA extends XrFoveationLevelProfileCreateInfoFB
+XR_STRUCT_ENUM(XR_TYPE_FOVEATION_EYE_TRACKED_PROFILE_CREATE_INFO_META, 1000200000);
+typedef struct XrFoveationEyeTrackedProfileCreateInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrFoveationEyeTrackedProfileCreateFlagsMETA flags;
+} XrFoveationEyeTrackedProfileCreateInfoMETA;
+
+XR_STRUCT_ENUM(XR_TYPE_FOVEATION_EYE_TRACKED_STATE_META, 1000200001);
+typedef struct XrFoveationEyeTrackedStateMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrVector2f foveationCenter[XR_FOVEATION_CENTER_SIZE_META];
+ XrFoveationEyeTrackedStateFlagsMETA flags;
+} XrFoveationEyeTrackedStateMETA;
+
+// XrSystemFoveationEyeTrackedPropertiesMETA extends XrSystemProperties
+XR_STRUCT_ENUM(XR_TYPE_SYSTEM_FOVEATION_EYE_TRACKED_PROPERTIES_META, 1000200002);
+typedef struct XrSystemFoveationEyeTrackedPropertiesMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 supportsFoveationEyeTracked;
+} XrSystemFoveationEyeTrackedPropertiesMETA;
+
+typedef XrResult(XRAPI_PTR* PFN_xrGetFoveationEyeTrackedStateMETA)(
+ XrSession session,
+ XrFoveationEyeTrackedStateMETA* foveationState);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrGetFoveationEyeTrackedStateMETA(
+ XrSession session,
+ XrFoveationEyeTrackedStateMETA* foveationState);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+
+#endif // XR_META_foveation_eye_tracked
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_local_dimming.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_local_dimming.h
new file mode 100755
index 00000000..928ac122
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_local_dimming.h
@@ -0,0 +1,46 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+Filename : meta_local_dimming.h
+Content : Local dimming extension.
+Merge Request : https://gitlab.khronos.org/openxr/openxr/-/merge_requests/2267
+Language : C99
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+/*
+ Extension 217 XR_META_local_dimming
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XR_META_local_dimming
+#define XR_META_local_dimming 1
+#define XR_META_local_dimming_SPEC_VERSION 1
+#define XR_META_LOCAL_DIMMING_EXTENSION_NAME "XR_META_local_dimming"
+
+typedef enum XrLocalDimmingModeMETA {
+ XR_LOCAL_DIMMING_MODE_OFF_META = 0,
+ XR_LOCAL_DIMMING_MODE_ON_META = 1,
+ XR_LOCAL_DIMMING_MODE_MAX_ENUM_META = 0x7FFFFFFF
+} XrLocalDimmingModeMETA;
+
+XR_STRUCT_ENUM(XR_TYPE_FRAME_END_INFO_LOCAL_DIMMING_META, 1000216000); // legacy enum name
+XR_STRUCT_ENUM(XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META, 1000216000);
+struct XrLocalDimmingFrameEndInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrLocalDimmingModeMETA localDimmingMode;
+};
+
+#endif // XR_META_local_dimming
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_recommended_layer_resolution.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_recommended_layer_resolution.h
new file mode 100755
index 00000000..6ec16cf1
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_recommended_layer_resolution.h
@@ -0,0 +1,54 @@
+#ifndef META_RECOMMENDED_LAYER_RESOLUTION_H_
+#define META_RECOMMENDED_LAYER_RESOLUTION_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_META_recommended_layer_resolution
+
+#define XR_META_recommended_layer_resolution 1
+#define XR_META_recommended_layer_resolution_SPEC_VERSION 1
+#define XR_META_RECOMMENDED_LAYER_RESOLUTION_EXTENSION_NAME "XR_META_recommended_layer_resolution"
+static const XrStructureType XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META = (XrStructureType) 1000254000;
+static const XrStructureType XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META = (XrStructureType) 1000254001;
+typedef struct XrRecommendedLayerResolutionMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrExtent2Di recommendedImageDimensions;
+ XrBool32 isValid;
+} XrRecommendedLayerResolutionMETA;
+
+typedef struct XrRecommendedLayerResolutionGetInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrCompositionLayerBaseHeader* layer;
+ XrTime predictedDisplayTime;
+} XrRecommendedLayerResolutionGetInfoMETA;
+
+typedef XrResult (XRAPI_PTR *PFN_xrGetRecommendedLayerResolutionMETA)(XrSession session, const XrRecommendedLayerResolutionGetInfoMETA* layerResolutionRecommendationGetInfo, XrRecommendedLayerResolutionMETA* layerResolutionRecommendation);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrGetRecommendedLayerResolutionMETA(
+ XrSession session,
+ const XrRecommendedLayerResolutionGetInfoMETA* layerResolutionRecommendationGetInfo,
+ XrRecommendedLayerResolutionMETA* layerResolutionRecommendation);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif /* XR_META_recommended_layer_resolution */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_spatial_entity_mesh.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_spatial_entity_mesh.h
new file mode 100755
index 00000000..6c1febc2
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_spatial_entity_mesh.h
@@ -0,0 +1,57 @@
+#ifndef META_SPATIAL_ENTITY_MESH_H_
+#define META_SPATIAL_ENTITY_MESH_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_META_spatial_entity_mesh
+
+#define XR_META_spatial_entity_mesh 1
+#define XR_META_spatial_entity_mesh_SPEC_VERSION 1
+#define XR_META_SPATIAL_ENTITY_MESH_EXTENSION_NAME "XR_META_spatial_entity_mesh"
+static const XrSpaceComponentTypeFB XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META = (XrSpaceComponentTypeFB) 1000269000;
+static const XrStructureType XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META = (XrStructureType) 1000269001;
+static const XrStructureType XR_TYPE_SPACE_TRIANGLE_MESH_META = (XrStructureType) 1000269002;
+typedef struct XrSpaceTriangleMeshGetInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSpaceTriangleMeshGetInfoMETA;
+
+typedef struct XrSpaceTriangleMeshMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ uint32_t vertexCapacityInput;
+ uint32_t vertexCountOutput;
+ XrVector3f* vertices;
+ uint32_t indexCapacityInput;
+ uint32_t indexCountOutput;
+ uint32_t* indices;
+} XrSpaceTriangleMeshMETA;
+
+typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceTriangleMeshMETA)(XrSpace space, const XrSpaceTriangleMeshGetInfoMETA* getInfo, XrSpaceTriangleMeshMETA* triangleMeshOutput);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceTriangleMeshMETA(
+ XrSpace space,
+ const XrSpaceTriangleMeshGetInfoMETA* getInfo,
+ XrSpaceTriangleMeshMETA* triangleMeshOutput);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif /* XR_META_spatial_entity_mesh */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_virtual_keyboard.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_virtual_keyboard.h
new file mode 100755
index 00000000..24c3afc2
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/meta_virtual_keyboard.h
@@ -0,0 +1,255 @@
+#ifndef META_VIRTUAL_KEYBOARD_H_
+#define META_VIRTUAL_KEYBOARD_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_META_virtual_keyboard
+
+#define XR_META_virtual_keyboard 1
+XR_DEFINE_HANDLE(XrVirtualKeyboardMETA)
+#define XR_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE_META 3992
+#define XR_META_virtual_keyboard_SPEC_VERSION 1
+#define XR_META_VIRTUAL_KEYBOARD_EXTENSION_NAME "XR_META_virtual_keyboard"
+// XrVirtualKeyboardMETA
+static const XrObjectType XR_OBJECT_TYPE_VIRTUAL_KEYBOARD_META = (XrObjectType) 1000219000;
+static const XrStructureType XR_TYPE_SYSTEM_VIRTUAL_KEYBOARD_PROPERTIES_META = (XrStructureType) 1000219001;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_CREATE_INFO_META = (XrStructureType) 1000219002;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_SPACE_CREATE_INFO_META = (XrStructureType) 1000219003;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_LOCATION_INFO_META = (XrStructureType) 1000219004;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_MODEL_VISIBILITY_SET_INFO_META = (XrStructureType) 1000219005;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_ANIMATION_STATE_META = (XrStructureType) 1000219006;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_MODEL_ANIMATION_STATES_META = (XrStructureType) 1000219007;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_TEXTURE_DATA_META = (XrStructureType) 1000219009;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_INPUT_INFO_META = (XrStructureType) 1000219010;
+static const XrStructureType XR_TYPE_VIRTUAL_KEYBOARD_TEXT_CONTEXT_CHANGE_INFO_META = (XrStructureType) 1000219011;
+static const XrStructureType XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_COMMIT_TEXT_META = (XrStructureType) 1000219014;
+static const XrStructureType XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_BACKSPACE_META = (XrStructureType) 1000219015;
+static const XrStructureType XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_ENTER_META = (XrStructureType) 1000219016;
+static const XrStructureType XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_SHOWN_META = (XrStructureType) 1000219017;
+static const XrStructureType XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_HIDDEN_META = (XrStructureType) 1000219018;
+
+typedef enum XrVirtualKeyboardLocationTypeMETA {
+ // Indicates that the application will provide the position and scale of the keyboard.
+ XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_CUSTOM_META = 0,
+ // Indicates that the runtime will set the position and scale for far field keyboard.
+ XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_FAR_META = 1,
+ // Indicates that the runtime will set the position and scale for direct interaction keyboard.
+ XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_DIRECT_META = 2,
+ XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_MAX_ENUM_META = 0x7FFFFFFF
+} XrVirtualKeyboardLocationTypeMETA;
+
+typedef enum XrVirtualKeyboardInputSourceMETA {
+ // Left controller ray.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_LEFT_META = 1,
+ // Right controller ray.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_RIGHT_META = 2,
+ // Left hand ray.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_LEFT_META = 3,
+ // Right hand ray.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_RIGHT_META = 4,
+ // Left controller direct touch.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_LEFT_META = 5,
+ // Right controller direct touch.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_RIGHT_META = 6,
+ // Left hand direct touch.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_LEFT_META = 7,
+ // Right hand direct touch.
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_RIGHT_META = 8,
+ XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_MAX_ENUM_META = 0x7FFFFFFF
+} XrVirtualKeyboardInputSourceMETA;
+typedef XrFlags64 XrVirtualKeyboardInputStateFlagsMETA;
+
+// Flag bits for XrVirtualKeyboardInputStateFlagsMETA
+// If the input source is considered 'pressed' at all. Pinch for hands, Primary button for controllers.
+static const XrVirtualKeyboardInputStateFlagsMETA XR_VIRTUAL_KEYBOARD_INPUT_STATE_PRESSED_BIT_META = 0x00000001;
+
+typedef struct XrSystemVirtualKeyboardPropertiesMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 supportsVirtualKeyboard;
+} XrSystemVirtualKeyboardPropertiesMETA;
+
+typedef struct XrVirtualKeyboardCreateInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrVirtualKeyboardCreateInfoMETA;
+
+typedef struct XrVirtualKeyboardSpaceCreateInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardLocationTypeMETA locationType;
+ XrSpace space;
+ // only set if locationType == XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_CUSTOM_META
+ XrPosef poseInSpace;
+} XrVirtualKeyboardSpaceCreateInfoMETA;
+
+typedef struct XrVirtualKeyboardLocationInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardLocationTypeMETA locationType;
+ XrSpace space;
+ // only set if locationType == XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_CUSTOM_META
+ XrPosef poseInSpace;
+ float scale;
+} XrVirtualKeyboardLocationInfoMETA;
+
+typedef struct XrVirtualKeyboardModelVisibilitySetInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 visible;
+} XrVirtualKeyboardModelVisibilitySetInfoMETA;
+
+typedef struct XrVirtualKeyboardAnimationStateMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ int32_t animationIndex;
+ float fraction;
+} XrVirtualKeyboardAnimationStateMETA;
+
+typedef struct XrVirtualKeyboardModelAnimationStatesMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ uint32_t stateCapacityInput;
+ uint32_t stateCountOutput;
+ XrVirtualKeyboardAnimationStateMETA* states;
+} XrVirtualKeyboardModelAnimationStatesMETA;
+
+typedef struct XrVirtualKeyboardTextureDataMETA {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ uint32_t textureWidth;
+ uint32_t textureHeight;
+ uint32_t bufferCapacityInput;
+ uint32_t bufferCountOutput;
+ uint8_t* buffer;
+} XrVirtualKeyboardTextureDataMETA;
+
+typedef struct XrVirtualKeyboardInputInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardInputSourceMETA inputSource;
+ XrSpace inputSpace;
+ XrPosef inputPoseInSpace;
+ XrVirtualKeyboardInputStateFlagsMETA inputState;
+} XrVirtualKeyboardInputInfoMETA;
+
+typedef struct XrVirtualKeyboardTextContextChangeInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ const char* textContext;
+} XrVirtualKeyboardTextContextChangeInfoMETA;
+
+typedef struct XrEventDataVirtualKeyboardCommitTextMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardMETA keyboard;
+ char text[XR_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE_META];
+} XrEventDataVirtualKeyboardCommitTextMETA;
+
+typedef struct XrEventDataVirtualKeyboardBackspaceMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardMETA keyboard;
+} XrEventDataVirtualKeyboardBackspaceMETA;
+
+typedef struct XrEventDataVirtualKeyboardEnterMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardMETA keyboard;
+} XrEventDataVirtualKeyboardEnterMETA;
+
+typedef struct XrEventDataVirtualKeyboardShownMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardMETA keyboard;
+} XrEventDataVirtualKeyboardShownMETA;
+
+typedef struct XrEventDataVirtualKeyboardHiddenMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrVirtualKeyboardMETA keyboard;
+} XrEventDataVirtualKeyboardHiddenMETA;
+
+typedef XrResult (XRAPI_PTR *PFN_xrCreateVirtualKeyboardMETA)(XrSession session, const XrVirtualKeyboardCreateInfoMETA* createInfo, XrVirtualKeyboardMETA* keyboard);
+typedef XrResult (XRAPI_PTR *PFN_xrDestroyVirtualKeyboardMETA)(XrVirtualKeyboardMETA keyboard);
+typedef XrResult (XRAPI_PTR *PFN_xrCreateVirtualKeyboardSpaceMETA)(XrSession session, XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardSpaceCreateInfoMETA* createInfo, XrSpace* keyboardSpace);
+typedef XrResult (XRAPI_PTR *PFN_xrSuggestVirtualKeyboardLocationMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardLocationInfoMETA* locationInfo);
+typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardScaleMETA)(XrVirtualKeyboardMETA keyboard, float* scale);
+typedef XrResult (XRAPI_PTR *PFN_xrSetVirtualKeyboardModelVisibilityMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardModelVisibilitySetInfoMETA* modelVisibility);
+typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardModelAnimationStatesMETA)(XrVirtualKeyboardMETA keyboard, XrVirtualKeyboardModelAnimationStatesMETA* animationStates);
+typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardDirtyTexturesMETA)(XrVirtualKeyboardMETA keyboard, uint32_t textureIdCapacityInput, uint32_t* textureIdCountOutput, uint64_t* textureIds);
+typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardTextureDataMETA)(XrVirtualKeyboardMETA keyboard, uint64_t textureId, XrVirtualKeyboardTextureDataMETA* textureData);
+typedef XrResult (XRAPI_PTR *PFN_xrSendVirtualKeyboardInputMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardInputInfoMETA* info, XrPosef* interactorRootPose);
+typedef XrResult (XRAPI_PTR *PFN_xrChangeVirtualKeyboardTextContextMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardTextContextChangeInfoMETA* changeInfo);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateVirtualKeyboardMETA(
+ XrSession session,
+ const XrVirtualKeyboardCreateInfoMETA* createInfo,
+ XrVirtualKeyboardMETA* keyboard);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrDestroyVirtualKeyboardMETA(
+ XrVirtualKeyboardMETA keyboard);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateVirtualKeyboardSpaceMETA(
+ XrSession session,
+ XrVirtualKeyboardMETA keyboard,
+ const XrVirtualKeyboardSpaceCreateInfoMETA* createInfo,
+ XrSpace* keyboardSpace);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSuggestVirtualKeyboardLocationMETA(
+ XrVirtualKeyboardMETA keyboard,
+ const XrVirtualKeyboardLocationInfoMETA* locationInfo);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardScaleMETA(
+ XrVirtualKeyboardMETA keyboard,
+ float* scale);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSetVirtualKeyboardModelVisibilityMETA(
+ XrVirtualKeyboardMETA keyboard,
+ const XrVirtualKeyboardModelVisibilitySetInfoMETA* modelVisibility);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardModelAnimationStatesMETA(
+ XrVirtualKeyboardMETA keyboard,
+ XrVirtualKeyboardModelAnimationStatesMETA* animationStates);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardDirtyTexturesMETA(
+ XrVirtualKeyboardMETA keyboard,
+ uint32_t textureIdCapacityInput,
+ uint32_t* textureIdCountOutput,
+ uint64_t* textureIds);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardTextureDataMETA(
+ XrVirtualKeyboardMETA keyboard,
+ uint64_t textureId,
+ XrVirtualKeyboardTextureDataMETA* textureData);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSendVirtualKeyboardInputMETA(
+ XrVirtualKeyboardMETA keyboard,
+ const XrVirtualKeyboardInputInfoMETA* info,
+ XrPosef* interactorRootPose);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrChangeVirtualKeyboardTextContextMETA(
+ XrVirtualKeyboardMETA keyboard,
+ const XrVirtualKeyboardTextContextChangeInfoMETA* changeInfo);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif /* XR_META_virtual_keyboard */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax1_environment_depth.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax1_environment_depth.h
new file mode 100755
index 00000000..43f69b40
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax1_environment_depth.h
@@ -0,0 +1,165 @@
+#ifndef METAX1_ENVIRONMENT_DEPTH_H_
+#define METAX1_ENVIRONMENT_DEPTH_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_METAX1_environment_depth
+
+#define XR_METAX1_environment_depth 1
+XR_DEFINE_HANDLE(XrEnvironmentDepthProviderMETAX1)
+#define XR_METAX1_environment_depth_SPEC_VERSION 1
+#define XR_METAX1_ENVIRONMENT_DEPTH_EXTENSION_NAME "XR_METAX1_environment_depth"
+// XrEnvironmentDepthProviderMETAX1
+static const XrObjectType XR_OBJECT_TYPE_ENVIRONMENT_DEPTH_PROVIDER_METAX1 = (XrObjectType) 1000262000;
+static const XrStructureType XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_METAX1 = (XrStructureType) 1000262002;
+static const XrStructureType XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_METAX1 = (XrStructureType) 1000262003;
+static const XrStructureType XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_PROPERTIES_METAX1 = (XrStructureType) 1000262004;
+static const XrStructureType XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_METAX1 = (XrStructureType) 1000262005;
+static const XrStructureType XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_METAX1 = (XrStructureType) 1000262006;
+static const XrStructureType XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_METAX1 = (XrStructureType) 1000262007;
+// Warning: The requested depth image is not yet available.
+static const XrResult XR_ENVIRONMENT_DEPTH_NOT_AVAILABLE_METAX1 = (XrResult) 1000262000;
+typedef XrFlags64 XrEnvironmentDepthProviderCreateFlagsMETAX1;
+
+// Flag bits for XrEnvironmentDepthProviderCreateFlagsMETAX1
+// Remove hands from depth maps.
+static const XrEnvironmentDepthProviderCreateFlagsMETAX1 XR_ENVIRONMENT_DEPTH_PROVIDER_CREATE_FLAGS_REMOVE_HANDS_BIT_METAX1 = 0x00000001;
+
+typedef XrFlags64 XrEnvironmentDepthSwapchainCreateFlagsMETAX1;
+
+// Flag bits for XrEnvironmentDepthSwapchainCreateFlagsMETAX1
+
+typedef struct XrEnvironmentDepthProviderCreateInfoMETAX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrEnvironmentDepthProviderCreateFlagsMETAX1 createFlags;
+} XrEnvironmentDepthProviderCreateInfoMETAX1;
+
+typedef struct XrEnvironmentDepthSwapchainCreateInfoMETAX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrEnvironmentDepthSwapchainCreateFlagsMETAX1 createFlags;
+} XrEnvironmentDepthSwapchainCreateInfoMETAX1;
+
+typedef struct XrEnvironmentDepthSwapchainPropertiesMETAX1 {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrSwapchain swapchain;
+ XrSwapchainCreateFlags createFlags;
+ XrSwapchainUsageFlags usageFlags;
+ int64_t format;
+ uint32_t sampleCount;
+ uint32_t width;
+ uint32_t height;
+ uint32_t faceCount;
+ uint32_t arraySize;
+ uint32_t mipCount;
+} XrEnvironmentDepthSwapchainPropertiesMETAX1;
+
+typedef struct XrEnvironmentDepthImageAcquireInfoMETAX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrTime displayTime;
+} XrEnvironmentDepthImageAcquireInfoMETAX1;
+
+typedef struct XrEnvironmentDepthImageViewMETAX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrPosef pose;
+ uint32_t swapchainIndex;
+ uint32_t imageArrayIndex;
+ XrFovf fov;
+ float minDepth;
+ float maxDepth;
+ float nearZ;
+ float farZ;
+} XrEnvironmentDepthImageViewMETAX1;
+
+typedef struct XrEnvironmentDepthImageMETAX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrTime generationTime;
+ XrTime displayTime;
+ uint32_t viewCount;
+ XrEnvironmentDepthImageViewMETAX1* views;
+} XrEnvironmentDepthImageMETAX1;
+
+typedef XrResult (XRAPI_PTR *PFN_xrCreateEnvironmentDepthProviderMETAX1)(XrSession session, const XrEnvironmentDepthProviderCreateInfoMETAX1* createInfo, XrEnvironmentDepthProviderMETAX1* environmentDepthProvider);
+typedef XrResult (XRAPI_PTR *PFN_xrDestroyEnvironmentDepthProviderMETAX1)(XrEnvironmentDepthProviderMETAX1 environmentDepthProvider);
+typedef XrResult (XRAPI_PTR *PFN_xrStartEnvironmentDepthProviderMETAX1)(XrEnvironmentDepthProviderMETAX1 environmentDepthProvider);
+typedef XrResult (XRAPI_PTR *PFN_xrStopEnvironmentDepthProviderMETAX1)(XrEnvironmentDepthProviderMETAX1 environmentDepthProvider);
+typedef XrResult (XRAPI_PTR *PFN_xrCreateEnvironmentDepthSwapchainMETAX1)(XrEnvironmentDepthProviderMETAX1 environmentDepthProvider, const XrEnvironmentDepthSwapchainCreateInfoMETAX1* createInfo, XrEnvironmentDepthSwapchainPropertiesMETAX1* swapchainProperties);
+typedef XrResult (XRAPI_PTR *PFN_xrAcquireEnvironmentDepthImageMETAX1)(XrEnvironmentDepthProviderMETAX1 environmentDepthProvider, const XrEnvironmentDepthImageAcquireInfoMETAX1* acquireInfo, XrEnvironmentDepthImageMETAX1* environmentDepthImage);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateEnvironmentDepthProviderMETAX1(
+ XrSession session,
+ const XrEnvironmentDepthProviderCreateInfoMETAX1* createInfo,
+ XrEnvironmentDepthProviderMETAX1* environmentDepthProvider);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrDestroyEnvironmentDepthProviderMETAX1(
+ XrEnvironmentDepthProviderMETAX1 environmentDepthProvider);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrStartEnvironmentDepthProviderMETAX1(
+ XrEnvironmentDepthProviderMETAX1 environmentDepthProvider);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrStopEnvironmentDepthProviderMETAX1(
+ XrEnvironmentDepthProviderMETAX1 environmentDepthProvider);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateEnvironmentDepthSwapchainMETAX1(
+ XrEnvironmentDepthProviderMETAX1 environmentDepthProvider,
+ const XrEnvironmentDepthSwapchainCreateInfoMETAX1* createInfo,
+ XrEnvironmentDepthSwapchainPropertiesMETAX1* swapchainProperties);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrAcquireEnvironmentDepthImageMETAX1(
+ XrEnvironmentDepthProviderMETAX1 environmentDepthProvider,
+ const XrEnvironmentDepthImageAcquireInfoMETAX1* acquireInfo,
+ XrEnvironmentDepthImageMETAX1* environmentDepthImage);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif /* XR_METAX1_environment_depth */
+
+#ifdef XR_METAX1_ENVIRONMENT_DEPTH_TAG_ALIAS
+typedef XrEnvironmentDepthProviderMETAX1 XrEnvironmentDepthProviderMETA;
+typedef XrEnvironmentDepthProviderCreateInfoMETAX1 XrEnvironmentDepthProviderCreateInfoMETA;
+typedef XrEnvironmentDepthProviderCreateFlagsMETAX1 XrEnvironmentDepthProviderCreateFlagsMETA;
+
+#define XR_ENVIRONMENT_DEPTH_PROVIDER_CREATE_FLAGS_REMOVE_HANDS_BIT_META XR_ENVIRONMENT_DEPTH_PROVIDER_CREATE_FLAGS_REMOVE_HANDS_BIT_METAX1
+typedef XrEnvironmentDepthSwapchainCreateFlagsMETAX1 XrEnvironmentDepthSwapchainCreateFlagsMETA;
+
+typedef XrEnvironmentDepthSwapchainCreateInfoMETAX1 XrEnvironmentDepthSwapchainCreateInfoMETA;
+typedef XrEnvironmentDepthSwapchainPropertiesMETAX1 XrEnvironmentDepthSwapchainPropertiesMETA;
+typedef XrEnvironmentDepthImageAcquireInfoMETAX1 XrEnvironmentDepthImageAcquireInfoMETA;
+typedef XrEnvironmentDepthImageViewMETAX1 XrEnvironmentDepthImageViewMETA;
+typedef XrEnvironmentDepthImageMETAX1 XrEnvironmentDepthImageMETA;
+#define XR_META_environment_depth_SPEC_VERSION XR_METAX1_environment_depth_SPEC_VERSION
+#define XR_META_ENVIRONMENT_DEPTH_EXTENSION_NAME XR_METAX1_ENVIRONMENT_DEPTH_EXTENSION_NAME
+#define XR_OBJECT_TYPE_ENVIRONMENT_DEPTH_PROVIDER_META XR_OBJECT_TYPE_ENVIRONMENT_DEPTH_PROVIDER_METAX1
+#define XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_META XR_TYPE_ENVIRONMENT_DEPTH_PROVIDER_CREATE_INFO_METAX1
+#define XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_META XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_CREATE_INFO_METAX1
+#define XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_PROPERTIES_META XR_TYPE_ENVIRONMENT_DEPTH_SWAPCHAIN_PROPERTIES_METAX1
+#define XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_META XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_ACQUIRE_INFO_METAX1
+#define XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_META XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_VIEW_METAX1
+#define XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_META XR_TYPE_ENVIRONMENT_DEPTH_IMAGE_METAX1
+#define XR_ENVIRONMENT_DEPTH_NOT_AVAILABLE_META XR_ENVIRONMENT_DEPTH_NOT_AVAILABLE_METAX1
+#endif /* XR_METAX1_ENVIRONMENT_DEPTH_TAG_ALIAS */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax1_simultaneous_hands_controllers_management.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax1_simultaneous_hands_controllers_management.h
new file mode 100755
index 00000000..5604be69
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax1_simultaneous_hands_controllers_management.h
@@ -0,0 +1,73 @@
+#ifndef METAX1_SIMULTANEOUS_HANDS_CONTROLLERS_MANAGEMENT_H_
+#define METAX1_SIMULTANEOUS_HANDS_CONTROLLERS_MANAGEMENT_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_METAX1_simultaneous_hands_controllers_management
+
+#define XR_METAX1_simultaneous_hands_controllers_management 1
+#define XR_METAX1_simultaneous_hands_controllers_management_SPEC_VERSION 1
+#define XR_METAX1_SIMULTANEOUS_HANDS_CONTROLLERS_MANAGEMENT_EXTENSION_NAME "XR_METAX1_simultaneous_hands_controllers_management"
+static const XrStructureType XR_TYPE_SYSTEM_SIMULTANEOUS_HANDS_CONTROLLERS_PROPERTIES_METAX1 = (XrStructureType) 1000280001;
+static const XrStructureType XR_TYPE_SIMULTANEOUS_HANDS_CONTROLLERS_TRACKING_RESUME_INFO_METAX1 = (XrStructureType) 1000280002;
+static const XrStructureType XR_TYPE_SIMULTANEOUS_HANDS_CONTROLLERS_TRACKING_PAUSE_INFO_METAX1 = (XrStructureType) 1000280003;
+typedef struct XrSystemSimultaneousHandsControllersPropertiesMETAX1 {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 supportsSimultaneousHandsAndControllers;
+} XrSystemSimultaneousHandsControllersPropertiesMETAX1;
+
+typedef struct XrSimultaneousHandsControllersTrackingResumeInfoMETAX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSimultaneousHandsControllersTrackingResumeInfoMETAX1;
+
+typedef struct XrSimultaneousHandsControllersTrackingPauseInfoMETAX1 {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSimultaneousHandsControllersTrackingPauseInfoMETAX1;
+
+typedef XrResult (XRAPI_PTR *PFN_xrResumeSimultaneousHandsControllersTrackingMETAX1)(XrSession session, const XrSimultaneousHandsControllersTrackingResumeInfoMETAX1* resumeInfo);
+typedef XrResult (XRAPI_PTR *PFN_xrPauseSimultaneousHandsControllersTrackingMETAX1)(XrSession session, const XrSimultaneousHandsControllersTrackingPauseInfoMETAX1* pauseInfo);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrResumeSimultaneousHandsControllersTrackingMETAX1(
+ XrSession session,
+ const XrSimultaneousHandsControllersTrackingResumeInfoMETAX1* resumeInfo);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrPauseSimultaneousHandsControllersTrackingMETAX1(
+ XrSession session,
+ const XrSimultaneousHandsControllersTrackingPauseInfoMETAX1* pauseInfo);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+#endif /* XR_METAX1_simultaneous_hands_controllers_management */
+
+#ifdef XR_METAX1_SIMULTANEOUS_HANDS_CONTROLLERS_MANAGEMENT_TAG_ALIAS
+typedef XrSystemSimultaneousHandsControllersPropertiesMETAX1 XrSystemSimultaneousHandsControllersPropertiesMETA;
+typedef XrSimultaneousHandsControllersTrackingResumeInfoMETAX1 XrSimultaneousHandsControllersTrackingResumeInfoMETA;
+typedef XrSimultaneousHandsControllersTrackingPauseInfoMETAX1 XrSimultaneousHandsControllersTrackingPauseInfoMETA;
+#define XR_META_simultaneous_hands_controllers_management_SPEC_VERSION XR_METAX1_simultaneous_hands_controllers_management_SPEC_VERSION
+#define XR_META_SIMULTANEOUS_HANDS_CONTROLLERS_MANAGEMENT_EXTENSION_NAME XR_METAX1_SIMULTANEOUS_HANDS_CONTROLLERS_MANAGEMENT_EXTENSION_NAME
+#define XR_TYPE_SYSTEM_SIMULTANEOUS_HANDS_CONTROLLERS_PROPERTIES_META XR_TYPE_SYSTEM_SIMULTANEOUS_HANDS_CONTROLLERS_PROPERTIES_METAX1
+#define XR_TYPE_SIMULTANEOUS_HANDS_CONTROLLERS_TRACKING_RESUME_INFO_META XR_TYPE_SIMULTANEOUS_HANDS_CONTROLLERS_TRACKING_RESUME_INFO_METAX1
+#define XR_TYPE_SIMULTANEOUS_HANDS_CONTROLLERS_TRACKING_PAUSE_INFO_META XR_TYPE_SIMULTANEOUS_HANDS_CONTROLLERS_TRACKING_PAUSE_INFO_METAX1
+#endif /* XR_METAX1_SIMULTANEOUS_HANDS_CONTROLLERS_MANAGEMENT_TAG_ALIAS */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax2_detached_controllers.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax2_detached_controllers.h
new file mode 100755
index 00000000..fba35c0a
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/metax2_detached_controllers.h
@@ -0,0 +1,34 @@
+#ifndef METAX2_DETACHED_CONTROLLERS_H_
+#define METAX2_DETACHED_CONTROLLERS_H_ 1
+
+/**********************
+This file is @generated from the OpenXR XML API registry.
+Language : C99
+Copyright : (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+***********************/
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef XR_METAX2_detached_controllers
+
+#define XR_METAX2_detached_controllers 1
+#define XR_METAX2_detached_controllers_SPEC_VERSION 1
+#define XR_METAX2_DETACHED_CONTROLLERS_EXTENSION_NAME "XR_METAX2_detached_controllers"
+#endif /* XR_METAX2_detached_controllers */
+
+#ifdef XR_METAX2_DETACHED_CONTROLLERS_TAG_ALIAS
+#define XR_META_detached_controllers_SPEC_VERSION XR_METAX2_detached_controllers_SPEC_VERSION
+#define XR_META_DETACHED_CONTROLLERS_EXTENSION_NAME XR_METAX2_DETACHED_CONTROLLERS_EXTENSION_NAME
+#endif /* XR_METAX2_DETACHED_CONTROLLERS_TAG_ALIAS */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_extension_helpers.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_extension_helpers.h
new file mode 100755
index 00000000..1d6e630f
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_extension_helpers.h
@@ -0,0 +1,19 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : openxr_extension_helpers.h
+Content : Helpers for private and experimental extension definition headers.
+Language : C99
+
+*************************************************************************************/
+
+#pragma once
+
+#include
+
+#define XR_ENUM(type, enm, constant) static const type enm = (type)constant
+#define XR_STRUCT_ENUM(enm, constant) XR_ENUM(XrStructureType, enm, constant)
+#define XR_REFSPACE_ENUM(enm, constant) XR_ENUM(XrReferenceSpaceType, enm, constant)
+#define XR_RESULT_ENUM(enm, constant) XR_ENUM(XrResult, enm, constant)
+#define XR_COMPONENT_ENUM(enm, constant) XR_ENUM(XrComponentTypeFB, enm, constant)
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_oculus.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_oculus.h
new file mode 100755
index 00000000..4092bff6
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_oculus.h
@@ -0,0 +1,24 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : openxr_oculus.h
+Content : Oculus OpenXR Extensions.
+Language : C99
+
+*************************************************************************************/
+
+#ifndef OPENXR_OCULUS_H_
+#define OPENXR_OCULUS_H_ 1
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+// XR_KHR_loader_init and XR_KHR_loader_init_android now available in 1.0.11 public spec.
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // OPENXR_OCULUS_H_
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_oculus_helpers.h b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_oculus_helpers.h
new file mode 100755
index 00000000..74f86698
--- /dev/null
+++ b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Include/openxr/openxr_oculus_helpers.h
@@ -0,0 +1,274 @@
+// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
+
+/************************************************************************************
+
+Filename : openxr_oculus_helpers.h
+Content : OpenXR Helper routines
+Language : C99
+
+*************************************************************************************/
+
+#ifndef OPENXR_OCULUS_HELPERS_H
+#define OPENXR_OCULUS_HELPERS_H 1
+
+#include
+#include
+
+#include "math.h" // for cosf(), sinf(), tanf()
+
+// OpenXR time values are expressed in nanseconds.
+static inline double FromXrTime(const XrTime time) {
+ return (time * 1e-9);
+}
+
+static inline XrTime ToXrTime(const double timeInSeconds) {
+ return (timeInSeconds * 1e9);
+}
+
+static inline XrVector3f XrVector3f_Zero() {
+ XrVector3f r;
+ r.x = r.y = r.z = 0.0f;
+ return r;
+}
+
+static inline XrVector3f XrVector3f_ScalarMultiply(const XrVector3f v, float scale) {
+ XrVector3f u;
+ u.x = v.x * scale;
+ u.y = v.y * scale;
+ u.z = v.z * scale;
+ return u;
+}
+
+static inline float XrVector3f_LengthSquared(const XrVector3f v) {
+ return XrVector3f_Dot(&v, &v);
+}
+
+static inline XrVector3f XrVector3f_Normalized(const XrVector3f v) {
+ float rcpLen = 1.0f / XrVector3f_Length(&v);
+ return XrVector3f_ScalarMultiply(v, rcpLen);
+}
+
+static inline XrQuaternionf XrQuaternionf_Identity() {
+ XrQuaternionf r;
+ r.x = r.y = r.z = 0.0;
+ r.w = 1.0f;
+ return r;
+}
+
+static inline XrQuaternionf XrQuaternionf_CreateFromVectorAngle(
+ const XrVector3f axis,
+ const float angle) {
+ XrQuaternionf r;
+ if (XrVector3f_LengthSquared(axis) == 0.0f) {
+ return XrQuaternionf_Identity();
+ }
+
+ XrVector3f unitAxis = XrVector3f_Normalized(axis);
+ float sinHalfAngle = sinf(angle * 0.5f);
+
+ r.w = cosf(angle * 0.5f);
+ r.x = unitAxis.x * sinHalfAngle;
+ r.y = unitAxis.y * sinHalfAngle;
+ r.z = unitAxis.z * sinHalfAngle;
+ return r;
+}
+
+static inline XrQuaternionf XrQuaternionf_Inverse(const XrQuaternionf q) {
+ XrQuaternionf r;
+ r.x = -q.x;
+ r.y = -q.y;
+ r.z = -q.z;
+ r.w = q.w;
+ return r;
+}
+
+static inline XrVector3f XrQuaternionf_Rotate(const XrQuaternionf a, const XrVector3f v) {
+ XrVector3f r;
+ XrQuaternionf q = {v.x, v.y, v.z, 0.0f};
+ XrQuaternionf aq;
+ XrQuaternionf_Multiply(&aq, &q, &a);
+ XrQuaternionf aInv = XrQuaternionf_Inverse(a);
+ XrQuaternionf aqaInv;
+ XrQuaternionf_Multiply(&aqaInv, &aInv, &aq);
+ r.x = aqaInv.x;
+ r.y = aqaInv.y;
+ r.z = aqaInv.z;
+ return r;
+}
+
+static inline XrPosef XrPosef_Identity() {
+ XrPosef r;
+ r.orientation = XrQuaternionf_Identity();
+ r.position = XrVector3f_Zero();
+ return r;
+}
+
+static inline XrPosef XrPosef_Create(const XrQuaternionf orientation, const XrVector3f position) {
+ XrPosef r;
+ r.orientation = orientation;
+ r.position = position;
+ return r;
+}
+
+static inline XrVector3f XrPosef_Transform(const XrPosef a, const XrVector3f v) {
+ XrVector3f r0 = XrQuaternionf_Rotate(a.orientation, v);
+ XrVector3f result;
+ XrVector3f_Add(&result, &r0, &a.position);
+ return result;
+}
+
+static inline XrPosef XrPosef_Inverse(const XrPosef a) {
+ XrPosef b;
+ b.orientation = XrQuaternionf_Inverse(a.orientation);
+ b.position = XrQuaternionf_Rotate(b.orientation, XrVector3f_ScalarMultiply(a.position, -1.0f));
+ return b;
+}
+
+// These functions were added to xr_linear.h in 1.0.27
+// Note that they are named the same, but use parameters
+// slightly differently. So if your compiler sent you here
+// update usage to match xr_linear.h.
+#if XR_CURRENT_API_VERSION < XR_MAKE_VERSION(1, 0, 27)
+
+inline static void XrMatrix4x4f_CreateFromRigidTransform(XrMatrix4x4f* result, const XrPosef* s) {
+ const XrVector3f identityScale = {1.0f, 1.0f, 1.0f};
+ XrMatrix4x4f_CreateTranslationRotationScale(
+ result, &s->position, &s->orientation, &identityScale);
+}
+
+inline static void XrQuaternionf_CreateIdentity(XrQuaternionf* q) {
+ q->x = 0.0f;
+ q->y = 0.0f;
+ q->z = 0.0f;
+ q->w = 1.0f;
+}
+
+inline static void XrQuaternionf_Invert(XrQuaternionf* result, const XrQuaternionf* q) {
+ result->x = -q->x;
+ result->y = -q->y;
+ result->z = -q->z;
+ result->w = q->w;
+}
+
+inline static void XrQuaternionf_Normalize(XrQuaternionf* q) {
+ const float lengthRcp = XrRcpSqrt(q->x * q->x + q->y * q->y + q->z * q->z + q->w * q->w);
+ q->x *= lengthRcp;
+ q->y *= lengthRcp;
+ q->z *= lengthRcp;
+ q->w *= lengthRcp;
+}
+
+inline static void
+XrQuaternionf_RotateVector3f(XrVector3f* result, const XrQuaternionf* a, const XrVector3f* v) {
+ XrQuaternionf q = {v->x, v->y, v->z, 0.0f};
+ XrQuaternionf aq;
+ XrQuaternionf_Multiply(&aq, &q, a);
+ XrQuaternionf aInv;
+ XrQuaternionf_Invert(&aInv, a);
+ XrQuaternionf aqaInv;
+ XrQuaternionf_Multiply(&aqaInv, &aInv, &aq);
+
+ result->x = aqaInv.x;
+ result->y = aqaInv.y;
+ result->z = aqaInv.z;
+}
+
+inline static void XrPosef_CreateIdentity(XrPosef* result) {
+ XrQuaternionf_CreateIdentity(&result->orientation);
+ XrVector3f_Set(&result->position, 0);
+}
+
+inline static void
+XrPosef_TransformVector3f(XrVector3f* result, const XrPosef* a, const XrVector3f* v) {
+ XrVector3f r0;
+ XrQuaternionf_RotateVector3f(&r0, &a->orientation, v);
+ XrVector3f_Add(result, &r0, &a->position);
+}
+
+inline static void XrPosef_Multiply(XrPosef* result, const XrPosef* a, const XrPosef* b) {
+ XrQuaternionf_Multiply(&result->orientation, &b->orientation, &a->orientation);
+ XrPosef_TransformVector3f(&result->position, a, &b->position);
+}
+
+inline static void XrPosef_Invert(XrPosef* result, const XrPosef* a) {
+ XrQuaternionf_Invert(&result->orientation, &a->orientation);
+ XrVector3f aPosNeg;
+ XrVector3f_Scale(&aPosNeg, &a->position, -1.0f);
+ XrQuaternionf_RotateVector3f(&result->position, &result->orientation, &aPosNeg);
+}
+
+// Creates a rotation matrix.
+// If -Z=forward, +Y=up, +X=right, then radiansX=pitch, radiansY=yaw, radiansZ=roll.
+static inline void XrMatrix4x4f_CreateRotationRadians(
+ XrMatrix4x4f* result,
+ const float radiansX,
+ const float radiansY,
+ const float radiansZ) {
+ const float sinX = sinf(radiansX);
+ const float cosX = cosf(radiansX);
+ const XrMatrix4x4f rotationX = {
+ {1.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ cosX,
+ sinX,
+ 0.0f,
+ 0.0f,
+ -sinX,
+ cosX,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 1.0f}};
+
+ const float sinY = sinf(radiansY);
+ const float cosY = cosf(radiansY);
+ const XrMatrix4x4f rotationY = {
+ {cosY,
+ 0,
+ -sinY,
+ 0.0f,
+ 0.0f,
+ 1.0f,
+ 0.0f,
+ 0.0f,
+ sinY,
+ 0.0f,
+ cosY,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 1.0f}};
+
+ const float sinZ = sinf(radiansZ);
+ const float cosZ = cosf(radiansZ);
+ const XrMatrix4x4f rotationZ = {
+ {cosZ,
+ sinZ,
+ 0.0f,
+ 0.0f,
+ -sinZ,
+ cosZ,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 1.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 1.0f}};
+
+ XrMatrix4x4f rotationXY;
+ XrMatrix4x4f_Multiply(&rotationXY, &rotationY, &rotationX);
+ XrMatrix4x4f_Multiply(result, &rotationZ, &rotationXY);
+}
+
+#endif // XR_CURRENT_API_VERSION < XR_MAKE_VERSION(1, 0, 27)
+
+#endif // OPENXR_OCULUS_HELPERS_H
diff --git a/godotopenxrmeta/src/debug/jniLibs/arm64-v8a/libopenxr_loader.so b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/arm64-v8a/Debug/libopenxr_loader.so
similarity index 100%
rename from godotopenxrmeta/src/debug/jniLibs/arm64-v8a/libopenxr_loader.so
rename to godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/arm64-v8a/Debug/libopenxr_loader.so
diff --git a/godotopenxrmeta/src/main/jniLibs/arm64-v8a/libopenxr_loader.so b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/arm64-v8a/Release/libopenxr_loader.so
similarity index 100%
rename from godotopenxrmeta/src/main/jniLibs/arm64-v8a/libopenxr_loader.so
rename to godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/arm64-v8a/Release/libopenxr_loader.so
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/armeabi-v7a/Debug/libopenxr_loader.so b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/armeabi-v7a/Debug/libopenxr_loader.so
new file mode 100644
index 00000000..e69de29b
diff --git a/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/armeabi-v7a/Release/libopenxr_loader.so b/godotopenxrmeta/libs/ovr_openxr_mobile_sdk/OpenXR/Libs/Android/armeabi-v7a/Release/libopenxr_loader.so
new file mode 100644
index 00000000..e69de29b
diff --git a/godotopenxrmeta/src/main/cpp/openxr_fb_scene_capture_extension_wrapper.cpp b/godotopenxrmeta/src/main/cpp/openxr_fb_scene_capture_extension_wrapper.cpp
new file mode 100644
index 00000000..b3f48e80
--- /dev/null
+++ b/godotopenxrmeta/src/main/cpp/openxr_fb_scene_capture_extension_wrapper.cpp
@@ -0,0 +1,100 @@
+#include "openxr_fb_scene_capture_extension_wrapper.h"
+#include
+#include
+#include
+#include
+
+using namespace godot;
+
+OpenXRFbSceneCaptureExtensionWrapper *OpenXRFbSceneCaptureExtensionWrapper::singleton = nullptr;
+
+OpenXRFbSceneCaptureExtensionWrapper *OpenXRFbSceneCaptureExtensionWrapper::get_singleton() {
+ if (singleton == nullptr) {
+ singleton = memnew(OpenXRFbSceneCaptureExtensionWrapper());
+ }
+ return singleton;
+}
+
+OpenXRFbSceneCaptureExtensionWrapper::OpenXRFbSceneCaptureExtensionWrapper() :
+ OpenXRExtensionWrapperExtension() {
+
+ ERR_FAIL_COND_MSG(singleton != nullptr, "An OpenXRFbSceneCaptureExtensionWrapper singleton already exists.");
+
+ request_extensions[XR_FB_SCENE_CAPTURE_EXTENSION_NAME] = &fb_scene_capture_ext;
+ singleton = this;
+}
+
+OpenXRFbSceneCaptureExtensionWrapper::~OpenXRFbSceneCaptureExtensionWrapper() {
+ cleanup();
+}
+
+void OpenXRFbSceneCaptureExtensionWrapper::_bind_methods() {
+
+ ClassDB::bind_static_method("OpenXRFbSceneCaptureExtensionWrapper", D_METHOD("get_singleton"), &OpenXRFbSceneCaptureExtensionWrapper::get_singleton);
+ ClassDB::bind_method(D_METHOD("is_scene_capture_supported"), &OpenXRFbSceneCaptureExtensionWrapper::is_scene_capture_supported);
+ ClassDB::bind_method(D_METHOD("is_scene_capture_enabled"), &OpenXRFbSceneCaptureExtensionWrapper::is_scene_capture_enabled);
+ ClassDB::bind_method(D_METHOD("request_scene_capture"), &OpenXRFbSceneCaptureExtensionWrapper::request_scene_capture);
+
+ ADD_SIGNAL(MethodInfo("scene_capture_completed"));
+
+}
+
+void OpenXRFbSceneCaptureExtensionWrapper::cleanup() {
+ fb_scene_capture_ext = false;
+}
+
+godot::Dictionary OpenXRFbSceneCaptureExtensionWrapper::_get_requested_extensions() {
+ godot::Dictionary result;
+ for (auto ext: request_extensions) {
+ godot::String key = ext.first;
+ uint64_t value = reinterpret_cast(ext.second);
+ result[key] = (godot::Variant)value;
+ }
+ return result;
+}
+
+void OpenXRFbSceneCaptureExtensionWrapper::_on_instance_created(uint64_t instance) {
+ if (fb_scene_capture_ext) {
+ bool result = initialize_fb_scene_capture_extension((XrInstance)instance);
+ if (!result) {
+ UtilityFunctions::print("Failed to initialize fb_scene_capture extension");
+ fb_scene_capture_ext = false;
+ }
+ }
+}
+
+void OpenXRFbSceneCaptureExtensionWrapper::_on_instance_destroyed() {
+ cleanup();
+}
+
+bool OpenXRFbSceneCaptureExtensionWrapper::request_scene_capture() {
+ XrAsyncRequestIdFB requestId;
+ XrSceneCaptureRequestInfoFB request;
+ request.type = XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB;
+ request.next = nullptr;
+ request.requestByteCount = 0;
+ request.request = nullptr;
+ XrResult result = xrRequestSceneCaptureFB((XrSession)get_openxr_api()->get_session(), &request, &requestId);
+ scene_capture_enabled = (result == XR_SUCCESS);
+ return scene_capture_enabled;
+}
+
+bool OpenXRFbSceneCaptureExtensionWrapper::is_scene_capture_enabled() {
+ return scene_capture_enabled;
+}
+
+bool OpenXRFbSceneCaptureExtensionWrapper::initialize_fb_scene_capture_extension(const XrInstance p_instance) {
+ GDEXTENSION_INIT_XR_FUNC_V(xrRequestSceneCaptureFB);
+
+ return true;
+}
+
+bool OpenXRFbSceneCaptureExtensionWrapper::_on_event_polled(const void *event) {
+
+ if (static_cast(event)->type == XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB) {
+ scene_capture_enabled = false;
+ Object::emit_signal("scene_capture_completed");
+ return true;
+ }
+ return false;
+}
diff --git a/godotopenxrmeta/src/main/cpp/openxr_fb_scene_capture_extension_wrapper.h b/godotopenxrmeta/src/main/cpp/openxr_fb_scene_capture_extension_wrapper.h
new file mode 100644
index 00000000..b485b5e7
--- /dev/null
+++ b/godotopenxrmeta/src/main/cpp/openxr_fb_scene_capture_extension_wrapper.h
@@ -0,0 +1,62 @@
+#ifndef OPENXR_FB_SCENE_CAPTURE_EXTENSION_WRAPPER_H
+#define OPENXR_FB_SCENE_CAPTURE_EXTENSION_WRAPPER_H
+
+#include
+#include
+#include
+#include
+
+#include "util.h"
+
+#include