// // Created by bytedance on 2024/3/26. // #ifndef PICOXRRUNTIME_PICO_SPATIAL_ANCHOR_H #define PICOXRRUNTIME_PICO_SPATIAL_ANCHOR_H #include "pico_spatial_sensing.h" /** * XrStructureType : 1200390000 ~ 1200390999 */ #ifdef __cplusplus extern "C" { #endif #define XR_PICO_spatial_anchor 1 #define XR_PICO_spatial_anchor_SPEC_VERSION 1 #define XR_PICO_SPATIAL_ANCHOR_EXTENSION_NAME "XR_PICO_spatial_anchor" static const XrResult XR_ERROR_SPACE_LOCATING_PICO = (XrResult)-1200390101; static const XrStructureType XR_TYPE_SYSTEM_SPATIAL_ANCHOR_PROPERTIES_PICO = (XrStructureType)1200390000; typedef struct XrSystemSpatialAnchorPropertiesPICO { XrStructureType type; void* next; XrBool32 supportsSpatialAnchor; } XrSystemSpatialAnchorPropertiesPICO; static const XrStructureType XR_TYPE_SENSE_DATA_PROVIDER_CREATE_INFO_SPATIAL_ANCHOR_PICO = (XrStructureType) 1200390001; typedef struct XrSenseDataProviderCreateInfoSpatialAnchorPICO{ XrStructureType type; //XR_TYPE_SENSE_DATA_PROVIDER_CREATE_INFO_SPATIAL_ANCHOR_PICO const void* next; } XrSenseDataProviderCreateInfoSpatialAnchorPICO; // Create spatial anchor static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_PICO = (XrStructureType) 1200390002; typedef struct XrSpatialAnchorCreateInfoPICO { XrStructureType type;//XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_PICO const void* next; XrSpace space; XrPosef pose; XrTime time; } XrSpatialAnchorCreateInfoPICO; typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorAsyncPICO)( XrSenseDataProviderPICO provider, XrSpatialAnchorCreateInfoPICO *info, XrFutureEXT *future); static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_CREATE_COMPLETION_PICO = (XrStructureType) 1200390003; typedef struct XrSpatialAnchorCreateCompletionPICO { XrStructureType type;//XR_TYPE_SPATIAL_ANCHOR_CREATE_COMPLETION_PICO const void* next; XrResult futureResult; XrAnchorPICO anchor; XrUuidEXT uuid; } XrSpatialAnchorCreateCompletionPICO; typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorCompletePICO)( XrSenseDataProviderPICO provider, XrFutureEXT future, XrSpatialAnchorCreateCompletionPICO* completion); typedef enum XrPersistenceLocationPICO { XR_PERSISTENCE_LOCATION_LOCAL_PICO = 0, //XR_PERSISTENCE_LOCATION_REMOTE_PICO = 1, XR_PERSISTENCE_LOCATION_MAX_ENUM_PICO = 0x7FFFFFFF } XrPersistenceLocationPICO; // Persist spatial anchor static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_PERSIST_INFO_PICO = (XrStructureType) 1200390004; typedef struct XrSpatialAnchorPersistInfoPICO { XrStructureType type;//XR_TYPE_SPATIAL_ANCHOR_PERSIST_INFO_PICO const void* next; XrPersistenceLocationPICO location; XrAnchorPICO anchor; } XrSpatialAnchorPersistInfoPICO; typedef XrResult (XRAPI_PTR *PFN_xrPersistSpatialAnchorAsyncPICO)( XrSenseDataProviderPICO provider, XrSpatialAnchorPersistInfoPICO *info, XrFutureEXT *future); static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_PERSIST_COMPLETION_PICO = (XrStructureType) 1200390005; typedef struct XrSpatialAnchorPersistCompletionPICO { XrStructureType type;//XR_TYPE_SPATIAL_ANCHOR_PERSIST_COMPLETION_PICO const void* next; XrResult futureResult; XrAnchorPICO anchor; XrUuidEXT uuid; }XrSpatialAnchorPersistCompletionPICO; typedef XrResult (XRAPI_PTR *PFN_xrPersistSpatialAnchorCompletePICO)( XrSenseDataProviderPICO provider, XrFutureEXT future, XrSpatialAnchorPersistCompletionPICO* completion); static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_UNPERSIST_INFO_PICO = (XrStructureType) 1200390006; typedef struct XrSpatialAnchorUnpersistInfoPICO { XrStructureType type;//XR_TYPE_SPATIAL_ANCHOR_UNPERSIST_INFO_PICO const void* next; XrPersistenceLocationPICO location; XrAnchorPICO anchor; } XrSpatialAnchorUnpersistInfoPICO; typedef XrResult (XRAPI_PTR *PFN_xrUnpersistSpatialAnchorAsyncPICO)( XrSenseDataProviderPICO provider, XrSpatialAnchorUnpersistInfoPICO *info, XrFutureEXT *future); static const XrStructureType XR_TYPE_SPATIAL_ANCHOR_UNPERSIST_COMPLETION_PICO = (XrStructureType) 1200390007; typedef struct XrSpatialAnchorUnpersistCompletionPICO { XrStructureType type;//XR_TYPE_SPATIAL_ANCHOR_UNPERSIST_COMPLETION_PICO const void* next; XrResult futureResult; XrAnchorPICO anchor; XrUuidEXT uuid; }XrSpatialAnchorUnpersistCompletionPICO; typedef XrResult (XRAPI_PTR *PFN_xrUnpersistSpatialAnchorCompletePICO)( XrSenseDataProviderPICO provider, XrFutureEXT future, XrSpatialAnchorUnpersistCompletionPICO *completion); #ifndef XR_NO_PROTOTYPES #ifdef XR_EXTENSION_PROTOTYPES XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorAsyncPICO( XrSenseDataProviderPICO provider, XrSpatialAnchorCreateInfoPICO *info, XrFutureEXT *future); XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorCompletePICO( XrSenseDataProviderPICO provider, XrFutureEXT future, XrSpatialAnchorCreateCompletionPICO* completion); XRAPI_ATTR XrResult XRAPI_CALL xrPersistSpatialAnchorAsyncPICO( XrSenseDataProviderPICO provider, XrSpatialAnchorPersistInfoPICO *info, XrFutureEXT *future); XRAPI_ATTR XrResult XRAPI_CALL xrPersistSpatialAnchorCompletePICO( XrSenseDataProviderPICO provider, XrFutureEXT future, XrSpatialAnchorPersistCompletionPICO* completion); XRAPI_ATTR XrResult XRAPI_CALL xrUnpersistSpatialAnchorAsyncPICO( XrSenseDataProviderPICO provider, XrSpatialAnchorUnpersistInfoPICO *info, XrFutureEXT *future); XRAPI_ATTR XrResult XRAPI_CALL xrUnpersistSpatialAnchorCompletePICO( XrSenseDataProviderPICO provider, XrFutureEXT future, XrSpatialAnchorUnpersistCompletionPICO *completion); #endif /* XR_EXTENSION_PROTOTYPES */ #endif /* !XR_NO_PROTOTYPES */ #ifdef __cplusplus } #endif #endif //PICOXRRUNTIME_PICO_SPATIAL_ANCHOR_H