Add hands idk they broken

Signed-off-by: Slendi <slendi@socopon.com>
This commit is contained in:
2025-07-16 11:53:27 +03:00
parent 7dc90058b2
commit 78c86aaabd
7 changed files with 2442 additions and 759 deletions

View File

@@ -62,8 +62,8 @@ target_sources(${PROJECT_NAME} PUBLIC
src/main.cpp
)
target_sources(${PROJECT_NAME} PUBLIC FILE_SET CXX_MODULES FILES
src/Util.cppm
src/Math.cppm
src/Compositor.cppm
src/LunarWM.cppm
)
target_link_libraries(${PROJECT_NAME} PUBLIC
@@ -80,7 +80,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC
)
set_target_properties(${PROJECT_NAME} PROPERTIES
CXX_CLANG_TIDY "clang-tidy;-header-filter=^${CMAKE_SOURCE_DIR}/src/.*;-checks=*,-some-disabled-checks,misc-const-correctness,modernize-use-nullptr,bugprone-branch-clone,bugprone-use-after-move,performance-unnecessary-value-param,hicpp-no-malloc,cppcoreguidelines-pro-type-const-cast,clang-analyzer-core.NullDereference,-fuchsia-overloaded-operator,-readability-identifier-length,-bugprone-easily-swappable-parameters,-fuchsia-trailing-return,-misc-non-private-member-variables-in-classes,-readability-math-missing-parentheses,-llvmlibc-implementation-in-namespace,-misc-include-cleaner,-modernize-use-std-print,-llvmlibc-restrict-system-libc-headers,-fuchsia-statically-constructed-objects,-cppcoreguidelines-avoid-non-const-global-variables,-llvmlibc-callee-namespace,-misc-use-anonymous-namespace,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-hicpp-uppercase-literal-suffix,-readability-uppercase-literal-suffix,-fuchsia-default-arguments-calls,-altera-unroll-loops,-fuchsia-default-arguments-declarations,-readability-function-cognitive-complexity,-altera-struct-pack-align,-altera-id-dependent-backward-branch,-cppcoreguidelines-pro-type-reinterpret-cast,-boost-use-ranges,-cppcoreguidelines-owning-memory,-readability-redundant-declaration"
CXX_CLANG_TIDY "clang-tidy;-header-filter=^${CMAKE_SOURCE_DIR}/src/.*;-checks=*,-some-disabled-checks,misc-const-correctness,modernize-use-nullptr,bugprone-branch-clone,bugprone-use-after-move,performance-unnecessary-value-param,hicpp-no-malloc,cppcoreguidelines-pro-type-const-cast,clang-analyzer-core.NullDereference,-fuchsia-overloaded-operator,-readability-identifier-length,-bugprone-easily-swappable-parameters,-fuchsia-trailing-return,-misc-non-private-member-variables-in-classes,-readability-math-missing-parentheses,-llvmlibc-implementation-in-namespace,-misc-include-cleaner,-modernize-use-std-print,-llvmlibc-restrict-system-libc-headers,-fuchsia-statically-constructed-objects,-cppcoreguidelines-avoid-non-const-global-variables,-llvmlibc-callee-namespace,-misc-use-anonymous-namespace,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-hicpp-uppercase-literal-suffix,-readability-uppercase-literal-suffix,-fuchsia-default-arguments-calls,-altera-unroll-loops,-fuchsia-default-arguments-declarations,-readability-function-cognitive-complexity,-altera-struct-pack-align,-altera-id-dependent-backward-branch,-cppcoreguidelines-pro-type-reinterpret-cast,-boost-use-ranges,-cppcoreguidelines-owning-memory,-readability-redundant-declaration,-bugprone-unchecked-optional-access"
)
# Wayland protocol codegen

722
assets/hand_l.gltf Normal file

File diff suppressed because one or more lines are too long

722
assets/hand_r.gltf Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +0,0 @@
module;
export module LunarWM.Compositor;

File diff suppressed because it is too large Load Diff

View File

@@ -218,4 +218,9 @@ requires std::is_arithmetic_v<T> struct Viewport {
Vec2<T> depth_limits;
};
template<typename T> constexpr auto deg2rad(T degrees) -> T
{
return degrees * (std::numbers::pi / 180.0);
}
} // namespace LunarWM::Math

676
src/Util.cppm Normal file
View File

@@ -0,0 +1,676 @@
module;
// NOLINTBEGIN
#include <openxr/openxr.h>
// NOLINTEND
export module LunarWM.Util;
import std;
namespace std {
template<> struct formatter<XrResult, char> {
template<class ParseContext> constexpr auto parse(ParseContext &ctx)
{
return ctx.begin();
}
static constexpr auto to_string(XrResult r) -> std::string_view
{
switch (r) {
case XR_FRAME_DISCARDED:
return "XR_FRAME_DISCARDED";
case XR_ERROR_VALIDATION_FAILURE:
return "XR_ERROR_VALIDATION_FAILURE: The function usage was "
"invalid in "
"some way.";
case XR_ERROR_RUNTIME_FAILURE:
return "XR_ERROR_RUNTIME_FAILURE: The runtime failed to handle the "
"function in an unexpected way that is not covered by "
"another "
"error result.";
case XR_ERROR_OUT_OF_MEMORY:
return "XR_ERROR_OUT_OF_MEMORY: A memory allocation has failed.";
case XR_ERROR_API_VERSION_UNSUPPORTED:
return "XR_ERROR_API_VERSION_UNSUPPORTED: The runtime does not "
"support "
"the requested API version.";
case XR_ERROR_INITIALIZATION_FAILED:
return "XR_ERROR_INITIALIZATION_FAILED: Initialization of object "
"could "
"not be completed.";
case XR_ERROR_FUNCTION_UNSUPPORTED:
return "XR_ERROR_FUNCTION_UNSUPPORTED: The requested function was "
"not "
"found or is otherwise unsupported.";
case XR_ERROR_FEATURE_UNSUPPORTED:
return "XR_ERROR_FEATURE_UNSUPPORTED: The requested feature is not "
"supported.";
case XR_ERROR_EXTENSION_NOT_PRESENT:
return "XR_ERROR_EXTENSION_NOT_PRESENT: A requested extension is "
"not "
"supported.";
case XR_ERROR_LIMIT_REACHED:
return "XR_ERROR_LIMIT_REACHED: The runtime supports no more of "
"the "
"requested resource.";
case XR_ERROR_SIZE_INSUFFICIENT:
return "XR_ERROR_SIZE_INSUFFICIENT: The supplied size was smaller "
"than "
"required.";
case XR_ERROR_HANDLE_INVALID:
return "XR_ERROR_HANDLE_INVALID: A supplied object handle was "
"invalid.";
case XR_ERROR_INSTANCE_LOST:
return "XR_ERROR_INSTANCE_LOST: The XrInstance was lost or could "
"not be "
"found. It will need to be destroyed and optionally "
"recreated.";
case XR_ERROR_SESSION_RUNNING:
return "XR_ERROR_SESSION_RUNNING: The session is already running.";
case XR_ERROR_SESSION_NOT_RUNNING:
return "XR_ERROR_SESSION_NOT_RUNNING: The session is not yet "
"running.";
case XR_ERROR_SESSION_LOST:
return "XR_ERROR_SESSION_LOST: The XrSession was lost. It will "
"need to "
"be destroyed and optionally recreated.";
case XR_ERROR_SYSTEM_INVALID:
return "XR_ERROR_SYSTEM_INVALID: The provided XrSystemId was "
"invalid.";
case XR_ERROR_PATH_INVALID:
return "XR_ERROR_PATH_INVALID: The provided XrPath was not valid.";
case XR_ERROR_PATH_COUNT_EXCEEDED:
return "XR_ERROR_PATH_COUNT_EXCEEDED: The maximum number of "
"supported "
"semantic paths has been reached.";
case XR_ERROR_PATH_FORMAT_INVALID:
return "XR_ERROR_PATH_FORMAT_INVALID: The semantic path character "
"format "
"is invalid.";
case XR_ERROR_PATH_UNSUPPORTED:
return "XR_ERROR_PATH_UNSUPPORTED: The semantic path is "
"unsupported.";
case XR_ERROR_LAYER_INVALID:
return "XR_ERROR_LAYER_INVALID: The layer was NULL or otherwise "
"invalid.";
case XR_ERROR_LAYER_LIMIT_EXCEEDED:
return "XR_ERROR_LAYER_LIMIT_EXCEEDED: The number of specified "
"layers is "
"greater than the supported number.";
case XR_ERROR_SWAPCHAIN_RECT_INVALID:
return "XR_ERROR_SWAPCHAIN_RECT_INVALID: The image rect was "
"negatively "
"sized or otherwise invalid.";
case XR_ERROR_SWAPCHAIN_FORMAT_UNSUPPORTED:
return "XR_ERROR_SWAPCHAIN_FORMAT_UNSUPPORTED: The image format is "
"not "
"supported by the runtime or platform.";
case XR_ERROR_ACTION_TYPE_MISMATCH:
return "XR_ERROR_ACTION_TYPE_MISMATCH: The API used to retrieve an "
"actions state does not match the actions type.";
case XR_ERROR_SESSION_NOT_READY:
return "XR_ERROR_SESSION_NOT_READY: The session is not in the "
"ready "
"state.";
case XR_ERROR_SESSION_NOT_STOPPING:
return "XR_ERROR_SESSION_NOT_STOPPING: The session is not in the "
"stopping state.";
case XR_ERROR_TIME_INVALID:
return "XR_ERROR_TIME_INVALID: The provided XrTime was zero, "
"negative, "
"or out of range.";
case XR_ERROR_REFERENCE_SPACE_UNSUPPORTED:
return "XR_ERROR_REFERENCE_SPACE_UNSUPPORTED: The specified "
"reference "
"space is not supported by the runtime or system.";
case XR_ERROR_FILE_ACCESS_ERROR:
return "XR_ERROR_FILE_ACCESS_ERROR: The file could not be "
"accessed.";
case XR_ERROR_FILE_CONTENTS_INVALID:
return "XR_ERROR_FILE_CONTENTS_INVALID: The files contents were "
"invalid.";
case XR_ERROR_FORM_FACTOR_UNSUPPORTED:
return "XR_ERROR_FORM_FACTOR_UNSUPPORTED: The specified form "
"factor is "
"not supported by the current runtime or platform.";
case XR_ERROR_FORM_FACTOR_UNAVAILABLE:
return "XR_ERROR_FORM_FACTOR_UNAVAILABLE: The specified form "
"factor is "
"supported, but the device is currently not available, e.g. "
"not "
"plugged in or powered off.";
case XR_ERROR_API_LAYER_NOT_PRESENT:
return "XR_ERROR_API_LAYER_NOT_PRESENT: A requested API layer is "
"not "
"present or could not be loaded.";
case XR_ERROR_CALL_ORDER_INVALID:
return "XR_ERROR_CALL_ORDER_INVALID: The call was made without "
"having "
"made a previously required call.";
case XR_ERROR_GRAPHICS_DEVICE_INVALID:
return "XR_ERROR_GRAPHICS_DEVICE_INVALID: The given graphics "
"device is "
"not in a valid state. The graphics device could be lost or "
"initialized without meeting graphics requirements.";
case XR_ERROR_POSE_INVALID:
return "XR_ERROR_POSE_INVALID: The supplied pose was invalid with "
"respect to the requirements.";
case XR_ERROR_INDEX_OUT_OF_RANGE:
return "XR_ERROR_INDEX_OUT_OF_RANGE: The supplied index was "
"outside the "
"range of valid indices.";
case XR_ERROR_VIEW_CONFIGURATION_TYPE_UNSUPPORTED:
return "XR_ERROR_VIEW_CONFIGURATION_TYPE_UNSUPPORTED: The "
"specified view "
"configuration type is not supported by the runtime or "
"platform.";
case XR_ERROR_ENVIRONMENT_BLEND_MODE_UNSUPPORTED:
return "XR_ERROR_ENVIRONMENT_BLEND_MODE_UNSUPPORTED: The specified "
"environment blend mode is not supported by the runtime or "
"platform.";
case XR_ERROR_NAME_DUPLICATED:
return "XR_ERROR_NAME_DUPLICATED: The name provided was a "
"duplicate of "
"an already-existing resource.";
case XR_ERROR_NAME_INVALID:
return "XR_ERROR_NAME_INVALID: The name provided was invalid.";
case XR_ERROR_ACTIONSET_NOT_ATTACHED:
return "XR_ERROR_ACTIONSET_NOT_ATTACHED: A referenced action set "
"is not "
"attached to the session.";
case XR_ERROR_ACTIONSETS_ALREADY_ATTACHED:
return "XR_ERROR_ACTIONSETS_ALREADY_ATTACHED: The session already "
"has "
"attached action sets.";
case XR_ERROR_LOCALIZED_NAME_DUPLICATED:
return "XR_ERROR_LOCALIZED_NAME_DUPLICATED: The localized name "
"provided "
"was a duplicate of an already-existing resource.";
case XR_ERROR_LOCALIZED_NAME_INVALID:
return "XR_ERROR_LOCALIZED_NAME_INVALID: The localized name "
"provided was "
"invalid.";
case XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING:
return "XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING: The "
"xrGetGraphicsRequirements* call was not made before "
"calling "
"xrCreateSession.";
case XR_ERROR_RUNTIME_UNAVAILABLE:
return "XR_ERROR_RUNTIME_UNAVAILABLE: The loader was unable to "
"find or "
"load a runtime.";
case XR_ERROR_EXTENSION_DEPENDENCY_NOT_ENABLED:
return "XR_ERROR_EXTENSION_DEPENDENCY_NOT_ENABLED: One or more of "
"the "
"extensions being enabled has dependency on extensions that "
"are "
"not enabled.";
case XR_ERROR_PERMISSION_INSUFFICIENT:
return "XR_ERROR_PERMISSION_INSUFFICIENT: Insufficient "
"permissions. This "
"error is included for use by vendor extensions. The "
"precise "
"definition of XR_ERROR_PERMISSION_INSUFFICIENT and actions "
"possible by the developer or user to resolve it can vary "
"by "
"platform, extension or function. The developer should "
"refer to "
"the documentation of the function that returned the error "
"code "
"and extension it was defined.";
case XR_ERROR_ANDROID_THREAD_SETTINGS_ID_INVALID_KHR:
return "XR_ERROR_ANDROID_THREAD_SETTINGS_ID_INVALID_KHR: "
"xrSetAndroidApplicationThreadKHR failed as thread id is "
"invalid. "
"(Added by the XR_KHR_android_thread_settings extension)";
case XR_ERROR_ANDROID_THREAD_SETTINGS_FAILURE_KHR:
return "XR_ERROR_ANDROID_THREAD_SETTINGS_FAILURE_KHR: "
"xrSetAndroidApplicationThreadKHR failed setting the thread "
"attributes/priority. (Added by the "
"XR_KHR_android_thread_settings extension)";
case XR_ERROR_CREATE_SPATIAL_ANCHOR_FAILED_MSFT:
return "XR_ERROR_CREATE_SPATIAL_ANCHOR_FAILED_MSFT: Spatial anchor "
"could "
"not be created at that location. (Added by the "
"XR_MSFT_spatial_anchor extension)";
case XR_ERROR_SECONDARY_VIEW_CONFIGURATION_TYPE_NOT_ENABLED_MSFT:
return "XR_ERROR_SECONDARY_VIEW_CONFIGURATION_TYPE_NOT_ENABLED_"
"MSFT: The "
"secondary view configuration was not enabled when creating "
"the "
"session. (Added by the "
"XR_MSFT_secondary_view_configuration "
"extension)";
case XR_ERROR_CONTROLLER_MODEL_KEY_INVALID_MSFT:
return "XR_ERROR_CONTROLLER_MODEL_KEY_INVALID_MSFT: The controller "
"model "
"key is invalid. (Added by the XR_MSFT_controller_model "
"extension)";
case XR_ERROR_REPROJECTION_MODE_UNSUPPORTED_MSFT:
return "XR_ERROR_REPROJECTION_MODE_UNSUPPORTED_MSFT: The "
"reprojection "
"mode is not supported. (Added by the "
"XR_MSFT_composition_layer_reprojection extension)";
case XR_ERROR_COMPUTE_NEW_SCENE_NOT_COMPLETED_MSFT:
return "XR_ERROR_COMPUTE_NEW_SCENE_NOT_COMPLETED_MSFT: Compute new "
"scene "
"not completed. (Added by the XR_MSFT_scene_understanding "
"extension)";
case XR_ERROR_SCENE_COMPONENT_ID_INVALID_MSFT:
return "XR_ERROR_SCENE_COMPONENT_ID_INVALID_MSFT: Scene component "
"id "
"invalid. (Added by the XR_MSFT_scene_understanding "
"extension)";
case XR_ERROR_SCENE_COMPONENT_TYPE_MISMATCH_MSFT:
return "XR_ERROR_SCENE_COMPONENT_TYPE_MISMATCH_MSFT: Scene "
"component "
"type mismatch. (Added by the XR_MSFT_scene_understanding "
"extension)";
case XR_ERROR_SCENE_MESH_BUFFER_ID_INVALID_MSFT:
return "XR_ERROR_SCENE_MESH_BUFFER_ID_INVALID_MSFT: Scene mesh "
"buffer id "
"invalid. (Added by the XR_MSFT_scene_understanding "
"extension)";
case XR_ERROR_SCENE_COMPUTE_FEATURE_INCOMPATIBLE_MSFT:
return "XR_ERROR_SCENE_COMPUTE_FEATURE_INCOMPATIBLE_MSFT: Scene "
"compute "
"feature incompatible. (Added by the "
"XR_MSFT_scene_understanding "
"extension)";
case XR_ERROR_SCENE_COMPUTE_CONSISTENCY_MISMATCH_MSFT:
return "XR_ERROR_SCENE_COMPUTE_CONSISTENCY_MISMATCH_MSFT: Scene "
"compute "
"consistency mismatch. (Added by the "
"XR_MSFT_scene_understanding "
"extension)";
case XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB:
return "XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB: The display "
"refresh rate is not supported by the platform. (Added by "
"the "
"XR_FB_display_refresh_rate extension)";
case XR_ERROR_COLOR_SPACE_UNSUPPORTED_FB:
return "XR_ERROR_COLOR_SPACE_UNSUPPORTED_FB: The color space is "
"not "
"supported by the runtime. (Added by the XR_FB_color_space "
"extension)";
case XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB:
return "XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB: The component "
"type is "
"not supported for this space. (Added by the "
"XR_FB_spatial_entity "
"extension)";
case XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB:
return "XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB: The required "
"component "
"is not enabled for this space. (Added by the "
"XR_FB_spatial_entity extension)";
case XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB:
return "XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB: A request to "
"set the "
"components status is currently pending. (Added by the "
"XR_FB_spatial_entity extension)";
case XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB:
return "XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB: The "
"component is "
"already set to the requested value. (Added by the "
"XR_FB_spatial_entity extension)";
case XR_ERROR_UNEXPECTED_STATE_PASSTHROUGH_FB:
return "XR_ERROR_UNEXPECTED_STATE_PASSTHROUGH_FB: The object state "
"is "
"unexpected for the issued command. (Added by the "
"XR_FB_passthrough extension)";
case XR_ERROR_FEATURE_ALREADY_CREATED_PASSTHROUGH_FB:
return "XR_ERROR_FEATURE_ALREADY_CREATED_PASSTHROUGH_FB: Trying to "
"create an MR feature when one was already created and only "
"one "
"instance is allowed. (Added by the XR_FB_passthrough "
"extension)";
case XR_ERROR_FEATURE_REQUIRED_PASSTHROUGH_FB:
return "XR_ERROR_FEATURE_REQUIRED_PASSTHROUGH_FB: Requested "
"functionality requires a feature to be created first. "
"(Added by "
"the XR_FB_passthrough extension)";
case XR_ERROR_NOT_PERMITTED_PASSTHROUGH_FB:
return "XR_ERROR_NOT_PERMITTED_PASSTHROUGH_FB: Requested "
"functionality "
"is not permitted - application is not allowed to perform "
"the "
"requested operation. (Added by the XR_FB_passthrough "
"extension)";
case XR_ERROR_INSUFFICIENT_RESOURCES_PASSTHROUGH_FB:
return "XR_ERROR_INSUFFICIENT_RESOURCES_PASSTHROUGH_FB: There were "
"insufficient resources available to perform an operation. "
"(Added "
"by the XR_FB_passthrough extension)";
case XR_ERROR_UNKNOWN_PASSTHROUGH_FB:
return "XR_ERROR_UNKNOWN_PASSTHROUGH_FB: Unknown Passthrough error "
"(no "
"further details provided). (Added by the XR_FB_passthrough "
"extension)";
case XR_ERROR_RENDER_MODEL_KEY_INVALID_FB:
return "XR_ERROR_RENDER_MODEL_KEY_INVALID_FB: The model key is "
"invalid. "
"(Added by the XR_FB_render_model extension)";
case XR_ERROR_MARKER_NOT_TRACKED_VARJO:
return "XR_ERROR_MARKER_NOT_TRACKED_VARJO: Marker tracking is "
"disabled "
"or the specified marker is not currently tracked. (Added "
"by the "
"XR_VARJO_marker_tracking extension)";
case XR_ERROR_MARKER_ID_INVALID_VARJO:
return "XR_ERROR_MARKER_ID_INVALID_VARJO: The specified marker ID "
"is not "
"valid. (Added by the XR_VARJO_marker_tracking extension)";
case XR_ERROR_MARKER_DETECTOR_PERMISSION_DENIED_ML:
return "XR_ERROR_MARKER_DETECTOR_PERMISSION_DENIED_ML: The "
"com.magicleap.permission.MARKER_TRACKING permission was "
"denied. "
"(Added by the XR_ML_marker_understanding extension)";
case XR_ERROR_MARKER_DETECTOR_LOCATE_FAILED_ML:
return "XR_ERROR_MARKER_DETECTOR_LOCATE_FAILED_ML: The specified "
"marker "
"could not be located spatially. (Added by the "
"XR_ML_marker_understanding extension)";
case XR_ERROR_MARKER_DETECTOR_INVALID_DATA_QUERY_ML:
return "XR_ERROR_MARKER_DETECTOR_INVALID_DATA_QUERY_ML: The marker "
"queried does not contain data of the requested type. "
"(Added by "
"the XR_ML_marker_understanding extension)";
case XR_ERROR_MARKER_DETECTOR_INVALID_CREATE_INFO_ML:
return "XR_ERROR_MARKER_DETECTOR_INVALID_CREATE_INFO_ML: "
"createInfo "
"contains mutually exclusive parameters, such as setting "
"XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_APRIL_TAG_ML with "
"XR_MARKER_TYPE_ARUCO_ML. (Added by the "
"XR_ML_marker_understanding extension)";
case XR_ERROR_MARKER_INVALID_ML:
return "XR_ERROR_MARKER_INVALID_ML: The marker id passed to the "
"function "
"was invalid. (Added by the XR_ML_marker_understanding "
"extension)";
case XR_ERROR_LOCALIZATION_MAP_INCOMPATIBLE_ML:
return "XR_ERROR_LOCALIZATION_MAP_INCOMPATIBLE_ML: The "
"localization map "
"being imported is not compatible with current OS or mode. "
"(Added "
"by the XR_ML_localization_map extension)";
case XR_ERROR_LOCALIZATION_MAP_UNAVAILABLE_ML:
return "XR_ERROR_LOCALIZATION_MAP_UNAVAILABLE_ML: The localization "
"map "
"requested is not available. (Added by the "
"XR_ML_localization_map "
"extension)";
case XR_ERROR_LOCALIZATION_MAP_FAIL_ML:
return "XR_ERROR_LOCALIZATION_MAP_FAIL_ML: The map localization "
"service "
"failed to fulfill the request, retry later. (Added by the "
"XR_ML_localization_map extension)";
case XR_ERROR_LOCALIZATION_MAP_IMPORT_EXPORT_PERMISSION_DENIED_ML:
return "XR_ERROR_LOCALIZATION_MAP_IMPORT_EXPORT_PERMISSION_DENIED_"
"ML: "
"The com.magicleap.permission.SPACE_IMPORT_EXPORT "
"permission was "
"denied. (Added by the XR_ML_localization_map extension)";
case XR_ERROR_LOCALIZATION_MAP_PERMISSION_DENIED_ML:
return "XR_ERROR_LOCALIZATION_MAP_PERMISSION_DENIED_ML: The "
"com.magicleap.permission.SPACE_MANAGER permission was "
"denied. "
"(Added by the XR_ML_localization_map extension)";
case XR_ERROR_LOCALIZATION_MAP_ALREADY_EXISTS_ML:
return "XR_ERROR_LOCALIZATION_MAP_ALREADY_EXISTS_ML: The map being "
"imported already exists in the system. (Added by the "
"XR_ML_localization_map extension)";
case XR_ERROR_LOCALIZATION_MAP_CANNOT_EXPORT_CLOUD_MAP_ML:
return "XR_ERROR_LOCALIZATION_MAP_CANNOT_EXPORT_CLOUD_MAP_ML: The "
"map "
"localization service cannot export cloud based maps. "
"(Added by "
"the XR_ML_localization_map extension)";
case XR_ERROR_SPATIAL_ANCHORS_PERMISSION_DENIED_ML:
return "XR_ERROR_SPATIAL_ANCHORS_PERMISSION_DENIED_ML: The "
"com.magicleap.permission.SPATIAL_ANCHOR permission was not "
"granted. (Added by the XR_ML_spatial_anchors extension)";
case XR_ERROR_SPATIAL_ANCHORS_NOT_LOCALIZED_ML:
return "XR_ERROR_SPATIAL_ANCHORS_NOT_LOCALIZED_ML: Operation "
"failed "
"because the system is not localized into a localization "
"map. "
"(Added by the XR_ML_spatial_anchors extension)";
case XR_ERROR_SPATIAL_ANCHORS_OUT_OF_MAP_BOUNDS_ML:
return "XR_ERROR_SPATIAL_ANCHORS_OUT_OF_MAP_BOUNDS_ML: Operation "
"failed "
"because it is performed outside of the localization map. "
"(Added "
"by the XR_ML_spatial_anchors extension)";
case XR_ERROR_SPATIAL_ANCHORS_SPACE_NOT_LOCATABLE_ML:
return "XR_ERROR_SPATIAL_ANCHORS_SPACE_NOT_LOCATABLE_ML: Operation "
"failed because the space referenced cannot be located. "
"(Added by "
"the XR_ML_spatial_anchors extension)";
case XR_ERROR_SPATIAL_ANCHORS_ANCHOR_NOT_FOUND_ML:
return "XR_ERROR_SPATIAL_ANCHORS_ANCHOR_NOT_FOUND_ML: The anchor "
"references was not found. (Added by the "
"XR_ML_spatial_anchors_storage extension)";
case XR_ERROR_SPATIAL_ANCHOR_NAME_NOT_FOUND_MSFT:
return "XR_ERROR_SPATIAL_ANCHOR_NAME_NOT_FOUND_MSFT: A spatial "
"anchor "
"was not found associated with the spatial anchor name "
"provided "
"(Added by the XR_MSFT_spatial_anchor_persistence "
"extension)";
case XR_ERROR_SPATIAL_ANCHOR_NAME_INVALID_MSFT:
return "XR_ERROR_SPATIAL_ANCHOR_NAME_INVALID_MSFT: The spatial "
"anchor "
"name provided was not valid (Added by the "
"XR_MSFT_spatial_anchor_persistence extension)";
case XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB:
return "XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB: Anchor import from "
"cloud "
"or export from device failed. (Added by the "
"XR_FB_spatial_entity_sharing extension)";
case XR_ERROR_SPACE_LOCALIZATION_FAILED_FB:
return "XR_ERROR_SPACE_LOCALIZATION_FAILED_FB: Anchors were "
"downloaded "
"from the cloud but failed to be imported/aligned on the "
"device. "
"(Added by the XR_FB_spatial_entity_sharing extension)";
case XR_ERROR_SPACE_NETWORK_TIMEOUT_FB:
return "XR_ERROR_SPACE_NETWORK_TIMEOUT_FB: Timeout occurred while "
"waiting for network request to complete. (Added by the "
"XR_FB_spatial_entity_sharing extension)";
case XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB:
return "XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB: The network "
"request "
"failed. (Added by the XR_FB_spatial_entity_sharing "
"extension)";
case XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB:
return "XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB: Cloud storage is "
"required for this operation but is currently disabled. "
"(Added by "
"the XR_FB_spatial_entity_sharing extension)";
case XR_ERROR_PASSTHROUGH_COLOR_LUT_BUFFER_SIZE_MISMATCH_META:
return "XR_ERROR_PASSTHROUGH_COLOR_LUT_BUFFER_SIZE_MISMATCH_META: "
"The "
"provided data buffer did not match the required size. "
"(Added by "
"the XR_META_passthrough_color_lut extension)";
case XR_ERROR_RENDER_MODEL_ID_INVALID_EXT:
return "XR_ERROR_RENDER_MODEL_ID_INVALID_EXT: The render model ID "
"is "
"invalid. (Added by the XR_EXT_render_model extension)";
case XR_ERROR_RENDER_MODEL_ASSET_UNAVAILABLE_EXT:
return "XR_ERROR_RENDER_MODEL_ASSET_UNAVAILABLE_EXT: The render "
"model "
"asset is unavailable. (Added by the XR_EXT_render_model "
"extension)";
case XR_ERROR_RENDER_MODEL_GLTF_EXTENSION_REQUIRED_EXT:
return "XR_ERROR_RENDER_MODEL_GLTF_EXTENSION_REQUIRED_EXT: A glTF "
"extension is required. (Added by the XR_EXT_render_model "
"extension)";
case XR_ERROR_NOT_INTERACTION_RENDER_MODEL_EXT:
return "XR_ERROR_NOT_INTERACTION_RENDER_MODEL_EXT: The provided "
"XrRenderModelEXT was not created from a XrRenderModelIdEXT "
"from "
"[XR_EXT_interaction_render_model] (Added by the "
"XR_EXT_interaction_render_model extension)";
case XR_ERROR_HINT_ALREADY_SET_QCOM:
return "XR_ERROR_HINT_ALREADY_SET_QCOM: Tracking optimization hint "
"is "
"already set for the domain. (Added by the "
"XR_QCOM_tracking_optimization_settings extension)";
case XR_ERROR_NOT_AN_ANCHOR_HTC:
return "XR_ERROR_NOT_AN_ANCHOR_HTC: The provided space is valid "
"but not "
"an anchor. (Added by the XR_HTC_anchor extension)";
case XR_ERROR_SPATIAL_ENTITY_ID_INVALID_BD:
return "XR_ERROR_SPATIAL_ENTITY_ID_INVALID_BD: The spatial entity "
"id is "
"invalid. (Added by the XR_BD_spatial_sensing extension)";
case XR_ERROR_SPATIAL_SENSING_SERVICE_UNAVAILABLE_BD:
return "XR_ERROR_SPATIAL_SENSING_SERVICE_UNAVAILABLE_BD: The "
"spatial "
"sensing service is unavailable. (Added by the "
"XR_BD_spatial_sensing extension)";
case XR_ERROR_ANCHOR_NOT_SUPPORTED_FOR_ENTITY_BD:
return "XR_ERROR_ANCHOR_NOT_SUPPORTED_FOR_ENTITY_BD: The spatial "
"entity "
"does not support anchor. (Added by the "
"XR_BD_spatial_sensing "
"extension)";
case XR_ERROR_SCENE_CAPTURE_FAILURE_BD:
return "XR_ERROR_SCENE_CAPTURE_FAILURE_BD: The scene capture is "
"failed, "
"for example exiting abnormally. (Added by the "
"XR_BD_spatial_scene extension)";
case XR_ERROR_SPACE_NOT_LOCATABLE_EXT:
return "XR_ERROR_SPACE_NOT_LOCATABLE_EXT: The space passed to the "
"function was not locatable. (Added by the "
"XR_EXT_plane_detection "
"extension)";
case XR_ERROR_PLANE_DETECTION_PERMISSION_DENIED_EXT:
return "XR_ERROR_PLANE_DETECTION_PERMISSION_DENIED_EXT: The "
"permission "
"for this resource was not granted. (Added by the "
"XR_EXT_plane_detection extension)";
case XR_ERROR_FUTURE_PENDING_EXT:
return "XR_ERROR_FUTURE_PENDING_EXT: Returned by completion "
"function to "
"indicate future is not ready. (Added by the XR_EXT_future "
"extension)";
case XR_ERROR_FUTURE_INVALID_EXT:
return "XR_ERROR_FUTURE_INVALID_EXT: Returned by completion "
"function to "
"indicate future is not valid. (Added by the XR_EXT_future "
"extension)";
case XR_ERROR_SYSTEM_NOTIFICATION_PERMISSION_DENIED_ML:
return "XR_ERROR_SYSTEM_NOTIFICATION_PERMISSION_DENIED_ML: The "
"com.magicleap.permission.SYSTEM_NOTIFICATION permission "
"was not "
"granted. (Added by the XR_ML_system_notifications "
"extension)";
case XR_ERROR_SYSTEM_NOTIFICATION_INCOMPATIBLE_SKU_ML:
return "XR_ERROR_SYSTEM_NOTIFICATION_INCOMPATIBLE_SKU_ML: "
"Incompatible "
"SKU detected. (Added by the XR_ML_system_notifications "
"extension)";
case XR_ERROR_WORLD_MESH_DETECTOR_PERMISSION_DENIED_ML:
return "XR_ERROR_WORLD_MESH_DETECTOR_PERMISSION_DENIED_ML: The "
"world "
"mesh detector permission was not granted. (Added by the "
"XR_ML_world_mesh_detection extension)";
case XR_ERROR_WORLD_MESH_DETECTOR_SPACE_NOT_LOCATABLE_ML:
return "XR_ERROR_WORLD_MESH_DETECTOR_SPACE_NOT_LOCATABLE_ML: At "
"the time "
"of the call the runtime was unable to locate the space and "
"cannot fulfill your request. (Added by the "
"XR_ML_world_mesh_detection extension)";
case XR_ERROR_COLOCATION_DISCOVERY_NETWORK_FAILED_META:
return "XR_ERROR_COLOCATION_DISCOVERY_NETWORK_FAILED_META: The "
"network "
"request failed. (Added by the XR_META_colocation_discovery "
"extension)";
case XR_ERROR_COLOCATION_DISCOVERY_NO_DISCOVERY_METHOD_META:
return "XR_ERROR_COLOCATION_DISCOVERY_NO_DISCOVERY_METHOD_META: "
"The "
"runtime does not have any methods available to perform "
"discovery. (Added by the XR_META_colocation_discovery "
"extension)";
case XR_ERROR_SPACE_GROUP_NOT_FOUND_META:
return "XR_ERROR_SPACE_GROUP_NOT_FOUND_META: The group UUID was "
"not "
"found within the runtime (Added by the "
"XR_META_spatial_entity_group_sharing extension)";
case XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT:
return "XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT: The specified "
"spatial capability is not supported by the runtime or the "
"system. (Added by the XR_EXT_spatial_entity extension)";
case XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT:
return "XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT: The specified "
"spatial "
"entity id is invalid or an entity with that id does not "
"exist in "
"the environment. (Added by the XR_EXT_spatial_entity "
"extension)";
case XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT:
return "XR_ERROR_SPATIAL_BUFFER_ID_INVALID_EXT: The specified "
"spatial "
"buffer id is invalid or does not exist in the spatial "
"snapshot "
"being used to query for the buffer data. (Added by the "
"XR_EXT_spatial_entity extension)";
case XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT:
return "XR_ERROR_SPATIAL_COMPONENT_UNSUPPORTED_FOR_CAPABILITY_EXT: "
"The "
"specified spatial component is not supported by the "
"runtime or "
"the system for the given capability. (Added by the "
"XR_EXT_spatial_entity extension)";
case XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT:
return "XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT: The "
"specified spatial capability configuration is invalid. "
"(Added by "
"the XR_EXT_spatial_entity extension)";
case XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT:
return "XR_ERROR_SPATIAL_COMPONENT_NOT_ENABLED_EXT: The specified "
"spatial component is not enabled for the spatial context. "
"(Added "
"by the XR_EXT_spatial_entity extension)";
case XR_ERROR_SPATIAL_PERSISTENCE_SCOPE_UNSUPPORTED_EXT:
return "XR_ERROR_SPATIAL_PERSISTENCE_SCOPE_UNSUPPORTED_EXT: The "
"specified spatial persistence scope is not supported by "
"the "
"runtime or the system. (Added by the "
"XR_EXT_spatial_persistence "
"extension)";
case XR_ERROR_SPATIAL_PERSISTENCE_SCOPE_INCOMPATIBLE_EXT:
return "XR_ERROR_SPATIAL_PERSISTENCE_SCOPE_INCOMPATIBLE_EXT: THe "
"scope "
"configured for the persistence context is incompatible for "
"the "
"current spatial entity. (Added by the "
"XR_EXT_spatial_persistence_operations extension)";
default:
return "";
}
}
template<class FmtCtx> auto format(XrResult r, FmtCtx &ctx) const
{
if (spec == 'd') {
return format_to(ctx.out(), "{}", static_cast<int32_t>(r));
}
std::string_view str = std::formatter<XrResult, char>::to_string(r);
if (!str.empty()) {
return format_to(ctx.out(), "{}", str);
}
return format_to(ctx.out(), "<0x{:x}>", static_cast<uint32_t>(r));
}
private:
char spec { 's' };
};
} // namespace std