// // Created by Admin on 2024/3/11. // #ifndef PICOXRRUNTIME_PICO_SPATIAL_SENSING_H #define PICOXRRUNTIME_PICO_SPATIAL_SENSING_H /** * XrStructureType : 1200389000 ~ 1200389999 */ #ifdef __cplusplus extern "C" { #endif #define XR_PICO_spatial_sensing 1 #define XR_PICO_spatial_sensing_SPEC_VERSION 1 #define XR_PICO_SPATIAL_SENSING_EXTENSION_NAME "XR_PICO_spatial_sensing" XR_DEFINE_ATOM(XrSpatialEntityIdPICO) XR_DEFINE_HANDLE(XrSenseDataSnapshotPICO) static const XrStructureType XR_TYPE_SYSTEM_SPATIAL_SENSING_PROPERTIES_PICO = (XrStructureType)1200389000; typedef struct XrSystemSpatialSensingPropertiesPICO { XrStructureType type; void* next; XrBool32 supportsSpatialSensing; } XrSystemSpatialSensingPropertiesPICO; typedef enum XrSpatialEntityComponentTypePICO { XR_SPATIAL_ENTITY_COMPONENT_TYPE_LOCATION_PICO = 0, XR_SPATIAL_ENTITY_COMPONENT_TYPE_SEMANTIC_PICO = 1, XR_SPATIAL_ENTITY_COMPONENT_TYPE_BOUNDING_BOX_2D_PICO = 2, XR_SPATIAL_ENTITY_COMPONENT_TYPE_POLYGON_PICO = 3, XR_SPATIAL_ENTITY_COMPONENT_TYPE_BOUNDING_BOX_3D_PICO = 4, XR_SPATIAL_ENTITY_COMPONENT_TYPE_TRIANGLE_MESH_PICO = 5, XR_SPATIAL_ENTITY_COMPONENT_TYPE_MAX_ENUM_PICO = 0x7FFFFFFF } XrSpatialEntityComponentTypePICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_COMPONENT_TYPES_PICO = (XrStructureType)1200389001; typedef struct XrSpatialEntityComponentTypesPICO { XrStructureType type; void* next; uint32_t componentTypeCapacityInput; uint32_t componentTypeCountOutput; XrSpatialEntityComponentTypePICO* componentTypes; } XrSpatialEntityComponentTypesPICO; typedef struct XrSpatialEntityComponentGetInfoBaseHeaderPICO { XrStructureType type; void* next; XrSpatialEntityIdPICO entity; XrSpatialEntityComponentTypePICO componentType; } XrSpatialEntityComponentGetInfoBaseHeaderPICO; typedef struct XrSpatialEntityComponentDataBaseHeaderPICO { XrStructureType type; void* next; } XrSpatialEntityComponentDataBaseHeaderPICO; // Location static const XrStructureType XR_TYPE_SPATIAL_ENTITY_LOCATION_GET_INFO_PICO = (XrStructureType)1200389002; typedef struct XrSpatialEntityLocationGetInfoPICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; XrSpatialEntityComponentTypePICO componentType; XrSpace baseSpace; XrTime time; } XrSpatialEntityLocationGetInfoPICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_LOCATION_DATA_PICO = (XrStructureType)1200389003; typedef struct XrSpatialEntityLocationDataPICO { XrStructureType type; void* next; XrSpaceLocationData location; } XrSpatialEntityLocationDataPICO; // Semantic static const XrStructureType XR_TYPE_SPATIAL_ENTITY_SEMANTIC_GET_INFO_PICO = (XrStructureType)1200389004; typedef struct XrSpatialEntitySemanticGetInfoPICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; XrSpatialEntityComponentTypePICO componentType; } XrSpatialEntitySemanticGetInfoPICO; // Semantic labels typedef enum XrSemanticLabelPICO { XR_SEMANTIC_LABEL_UNKNOWN_PICO = 0, XR_SEMANTIC_LABEL_FLOOR_PICO = 1, XR_SEMANTIC_LABEL_CEILING_PICO = 2, XR_SEMANTIC_LABEL_WALL_PICO = 3, XR_SEMANTIC_LABEL_DOOR_PICO = 4, XR_SEMANTIC_LABEL_WINDOW_PICO = 5, XR_SEMANTIC_LABEL_OPENING_PICO = 6, XR_SEMANTIC_LABEL_TABLE_PICO = 7, XR_SEMANTIC_LABEL_SOFA_PICO = 8, XR_SEMANTIC_LABEL_CHAIR_PICO = 9, XR_SEMANTIC_LABEL_HUMAN_PICO = 10, XR_SEMANTIC_LABEL_BEAM_PICO = 11, XR_SEMANTIC_LABEL_COLUMN_PICO = 12, XR_SEMANTIC_LABEL_CURTAIN_PICO = 13, XR_SEMANTIC_LABEL_CABINET_PICO = 14, XR_SEMANTIC_LABEL_BED_PICO = 15, XR_SEMANTIC_LABEL_PLANT_PICO = 16, XR_SEMANTIC_LABEL_SCREEN_PICO = 17, XR_SEMANTIC_LABEL_VIRTUAL_WALL_PICO = 18, XR_SEMANTIC_LABEL_REFRIGERATOR_PICO = 19, XR_SEMANTIC_LABEL_WASHING_MACHINE_PICO = 20, XR_SEMANTIC_LABEL_AIR_CONDITIONER_PICO = 21, XR_SEMANTIC_LABEL_LAMP_PICO = 22, XR_SEMANTIC_LABEL_WALL_ART_PICO = 23, XR_SEMANTIC_LABEL_MAX_ENUM_PICO = 0x7FFFFFFF } XrSemanticLabelPICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_SEMANTIC_DATA_PICO = (XrStructureType)1200389005; typedef struct XrSpatialEntitySemanticDataPICO { XrStructureType type; const void* next; uint32_t semanticCapacityInput; uint32_t semanticCountOutput; XrSemanticLabelPICO* semanticLabels; } XrSpatialEntitySemanticDataPICO; // Bounding box 2D static const XrStructureType XR_TYPE_SPATIAL_ENTITY_BOUNDING_BOX_2D_GET_INFO_PICO = (XrStructureType)1200389006; typedef struct XrSpatialEntityBoundingBox2DGetInfoPICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; XrSpatialEntityComponentTypePICO componentType; } XrSpatialEntityBoundingBox2DGetInfoPICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_BOUNDING_BOX_2D_DATA_PICO = (XrStructureType)1200389007; typedef struct XrSpatialEntityBoundingBox2DDataPICO { XrStructureType type; const void* next; XrRect2Df boundingBox2D; } XrSpatialEntityBoundingBox2DDataPICO; // Polygon static const XrStructureType XR_TYPE_SPATIAL_ENTITY_POLYGON_GET_INFO_PICO = (XrStructureType)1200389008; typedef struct XrSpatialEntityPolygonGetInfoPICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; XrSpatialEntityComponentTypePICO componentType; } XrSpatialEntityPolygonGetInfoPICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_POLYGON_DATA_PICO = (XrStructureType)1200389009; typedef struct XrSpatialEntityPolygonDataPICO { XrStructureType type; const void* next; uint32_t polygonCapacityInput; uint32_t polygonCountOutput; XrVector2f* polygonVertices; } XrSpatialEntityPolygonDataPICO; // Bounding box 3D static const XrStructureType XR_TYPE_SPATIAL_ENTITY_BOUNDING_BOX_3D_GET_INFO_PICO = (XrStructureType)1200389010; typedef struct XrSpatialEntityBoundingBox3DGetInfoPICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; XrSpatialEntityComponentTypePICO componentType; } XrSpatialEntityBoundingBox3DGetInfoPICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_BOUNDING_BOX_3D_DATA_PICO = (XrStructureType)1200389011; typedef struct XrSpatialEntityBoundingBox3DDataPICO { XrStructureType type; const void* next; XrBoxf boundingBox3D; } XrSpatialEntityBoundingBox3DDataPICO; // Triangle mesh static const XrStructureType XR_TYPE_SPATIAL_ENTITY_TRIANGLE_MESH_GET_INFO_PICO = (XrStructureType)1200389012; typedef struct XrSpatialEntityTriangleMeshGetInfoPICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; XrSpatialEntityComponentTypePICO componentType; } XrSpatialEntityTriangleMeshGetInfoPICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_TRIANGLE_MESH_DATA_PICO = (XrStructureType)1200389013; typedef struct XrSpatialEntityTriangleMeshDataPICO { XrStructureType type; const void* next; uint32_t vertexCapacityInput; uint32_t vertexCountOutput; XrVector3f* vertices; uint32_t indexCapacityInput; uint32_t indexCountOutput; uint16_t* indices; } XrSpatialEntityTriangleMeshDataPICO; typedef XrResult(XRAPI_PTR* PFN_xrGetSpatialEntityUuidPICO)( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityIdPICO entity, XrUuidEXT* uuid); typedef XrResult(XRAPI_PTR* PFN_xrEnumerateSpatialEntityComponentTypesPICO)( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityIdPICO entity, uint32_t componentTypeCapacityInput, uint32_t* componentTypeCountOutput, XrSpatialEntityComponentTypePICO* componentTypes); typedef XrResult(XRAPI_PTR* PFN_xrGetSpatialEntityComponentDataPICO)( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityComponentGetInfoBaseHeaderPICO* getInfo, XrSpatialEntityComponentDataBaseHeaderPICO* componentData); #ifndef XR_NO_PROTOTYPES #ifdef XR_EXTENSION_PROTOTYPES XRAPI_ATTR XrResult XRAPI_CALL xrGetSpatialEntityUuidPICO( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityIdPICO entity, XrUuidEXT* uuid); XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSpatialEntityComponentTypesPICO( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityIdPICO entity, uint32_t componentTypeCapacityInput, uint32_t* componentTypeCountOutput, XrSpatialEntityComponentTypePICO* componentTypes); XRAPI_ATTR XrResult XRAPI_CALL xrGetSpatialEntityComponentDataPICO( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityComponentGetInfoBaseHeaderPICO* getInfo, XrSpatialEntityComponentDataBaseHeaderPICO* componentData); #endif /* XR_EXTENSION_PROTOTYPES */ #endif /* !XR_NO_PROTOTYPES */ XR_DEFINE_HANDLE(XrSenseDataProviderPICO) typedef struct XrSenseDataProviderCreateInfoBaseHeaderPICO { XrStructureType type; const void* next; } XrSenseDataProviderCreateInfoBaseHeaderPICO; static const XrStructureType XR_TYPE_SENSE_DATA_PROVIDER_START_COMPLETION_PICO = (XrStructureType)1200389014; typedef struct XrSenseDataProviderStartCompletionPICO { XrStructureType type; const void* next; XrResult futureResult; } XrSenseDataProviderStartCompletionPICO; typedef enum XrSenseDataProviderStatePICO { XR_SENSE_DATA_PROVIDER_STATE_INITIALIZED_PICO = 0, XR_SENSE_DATA_PROVIDER_STATE_RUNNING_PICO = 1, XR_SENSE_DATA_PROVIDER_STATE_STOPPED_PICO = 2, XR_SENSE_DATA_PROVIDER_STATE_MAX_ENUM_PICO = 0x7FFFFFFF } XrSenseDataProviderStatePICO; static const XrStructureType XR_TYPE_EVENT_DATA_SENSE_DATA_PROVIDER_STATE_CHANGED_PICO = (XrStructureType)1200389015; typedef struct XrEventDataSenseDataProviderStateChangedPICO { XrStructureType type; const void* next; XrSenseDataProviderPICO provider; XrSenseDataProviderStatePICO newState; } XrEventDataSenseDataProviderStateChangedPICO; // UUID filter static const XrStructureType XR_TYPE_SENSE_DATA_FILTER_UUID_PICO = (XrStructureType)1200389016; typedef struct XrSenseDataFilterUuidPICO { XrStructureType type; const void* next; uint32_t uuidCount; XrUuidEXT* uuids; } XrSenseDataFilterUuidPICO; // Semantic filter static const XrStructureType XR_TYPE_SENSE_DATA_FILTER_SEMANTIC_PICO = (XrStructureType)1200389017; typedef struct XrSenseDataFilterSemanticPICO { XrStructureType type; const void* next; uint32_t semanticCount; XrSemanticLabelPICO* semantics; } XrSenseDataFilterSemanticPICO; typedef struct XrSenseDataFilterBaseHeaderPICO { XrStructureType type; const void* next; } XrSenseDataFilterBaseHeaderPICO; static const XrStructureType XR_TYPE_SENSE_DATA_QUERY_INFO_PICO = (XrStructureType)1200389018; typedef struct XrSenseDataQueryInfoPICO { XrStructureType type; const void* next; XrSenseDataFilterBaseHeaderPICO* filter; // extent in other feature extensions } XrSenseDataQueryInfoPICO; static const XrStructureType XR_TYPE_SENSE_DATA_QUERY_COMPLETION_PICO = (XrStructureType)1200389019; typedef struct XrSenseDataQueryCompletionPICO { XrStructureType type; const void* next; XrResult futureResult; XrSenseDataSnapshotPICO snapshot; } XrSenseDataQueryCompletionPICO; static const XrStructureType XR_TYPE_QUERIED_SENSE_DATA_GET_INFO_PICO = (XrStructureType)1200389020; typedef struct XrQueriedSenseDataGetInfoPICO { XrStructureType type; const void* next; XrSenseDataSnapshotPICO snapshot; } XrQueriedSenseDataGetInfoPICO; static const XrStructureType XR_TYPE_SPATIAL_ENTITY_STATE_PICO = (XrStructureType)1200389021; typedef struct XrSpatialEntityStatePICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; XrTime lastUpdateTime; XrUuidEXT uuid; } XrSpatialEntityStatePICO; static const XrStructureType XR_TYPE_QUERIED_SENSE_DATA_PICO = (XrStructureType)1200389022; typedef struct XrQueriedSenseDataPICO { XrStructureType type; const void* next; uint32_t spatialEntityCapacityInput; uint32_t spatialEntityCountOutput; XrSpatialEntityStatePICO* spatialEntities; } XrQueriedSenseDataPICO; static const XrStructureType XR_TYPE_EVENT_DATA_SENSE_DATA_UPDATED_PICO = (XrStructureType)1200389023; typedef struct XrEventDataSenseDataUpdatedPICO { XrStructureType type; const void* next; XrSenseDataProviderPICO provider; } XrEventDataSenseDataUpdatedPICO; static const XrStructureType XR_TYPE_SENSE_DATA_PROVIDER_START_INFO_PICO = (XrStructureType)1200389024; typedef struct XrSenseDataProviderStartInfoPICO { XrStructureType type; const void* next; XrSenseDataProviderPICO provider; // extent in other feature extensions } XrSenseDataProviderStartInfoPICO; typedef XrResult(XRAPI_PTR* PFN_xrCreateSenseDataProviderPICO)( XrSession session, XrSenseDataProviderCreateInfoBaseHeaderPICO* createInfo, XrSenseDataProviderPICO* provider); typedef XrResult(XRAPI_PTR* PFN_xrStartSenseDataProviderAsyncPICO)( XrSession session, XrSenseDataProviderStartInfoPICO* startInfo, XrFutureEXT* future); typedef XrResult(XRAPI_PTR* PFN_xrStartSenseDataProviderCompletePICO)( XrSession session, XrFutureEXT future, XrSenseDataProviderStartCompletionPICO* completion); typedef XrResult(XRAPI_PTR* PFN_xrGetSenseDataProviderStatePICO)( XrSenseDataProviderPICO provider, XrSenseDataProviderStatePICO* state); typedef XrResult(XRAPI_PTR* PFN_xrQuerySenseDataAsyncPICO)(XrSenseDataProviderPICO provider, XrSenseDataQueryInfoPICO* queryInfo, XrFutureEXT* future); typedef XrResult(XRAPI_PTR* PFN_xrQuerySenseDataCompletePICO)( XrSenseDataProviderPICO provider, XrFutureEXT future, XrSenseDataQueryCompletionPICO* completion); typedef XrResult(XRAPI_PTR* PFN_xrStopSenseDataProviderPICO)(XrSenseDataProviderPICO provider); typedef XrResult(XRAPI_PTR* PFN_xrDestroySenseDataProviderPICO)(XrSenseDataProviderPICO provider); typedef XrResult(XRAPI_PTR* PFN_xrDestroySenseDataSnapshotPICO)(XrSenseDataSnapshotPICO snapshot); typedef XrResult(XRAPI_PTR* PFN_xrGetQueriedSenseDataPICO)( XrSenseDataProviderPICO provider, XrQueriedSenseDataGetInfoPICO* getInfo, XrQueriedSenseDataPICO* queriedSenseData); #ifndef XR_NO_PROTOTYPES #ifdef XR_EXTENSION_PROTOTYPES XRAPI_ATTR XrResult XRAPI_CALL xrCreateSenseDataProviderPICO( XrSession session, XrSenseDataProviderCreateInfoBaseHeaderPICO* createInfo, XrSenseDataProviderPICO* provider); XRAPI_ATTR XrResult XRAPI_CALL xrStartSenseDataProviderAsyncPICO( XrSession session, XrSenseDataProviderStartInfoPICO* startInfo, XrFutureEXT* future); XRAPI_ATTR XrResult XRAPI_CALL xrStartSenseDataProviderCompletePICO( XrSession session, XrFutureEXT future, XrSenseDataProviderStartCompletionPICO* completion); XRAPI_ATTR XrResult XRAPI_CALL xrGetSenseDataProviderStatePICO(XrSenseDataProviderPICO provider, XrSenseDataProviderStatePICO* state); // Data retrieve XRAPI_ATTR XrResult XRAPI_CALL xrQuerySenseDataAsyncPICO(XrSenseDataProviderPICO provider, XrSenseDataQueryInfoPICO* queryInfo, XrFutureEXT* future); XRAPI_ATTR XrResult XRAPI_CALL xrQuerySenseDataCompletePICO(XrSenseDataProviderPICO provider, XrFutureEXT future, XrSenseDataQueryCompletionPICO* completion); XRAPI_ATTR XrResult XRAPI_CALL xrStopSenseDataProviderPICO(XrSenseDataProviderPICO provider); XRAPI_ATTR XrResult XRAPI_CALL xrDestroySenseDataProviderPICO(XrSenseDataProviderPICO provider); XRAPI_ATTR XrResult XRAPI_CALL xrDestroySenseDataSnapshotPICO(XrSenseDataSnapshotPICO snapshot); XRAPI_ATTR XrResult XRAPI_CALL xrGetQueriedSenseDataPICO(XrSenseDataProviderPICO provider, XrQueriedSenseDataGetInfoPICO* getInfo, XrQueriedSenseDataPICO* queriedSenseData); #endif /* XR_EXTENSION_PROTOTYPES */ #endif /* !XR_NO_PROTOTYPES */ XR_DEFINE_HANDLE(XrAnchorPICO) static const XrStructureType XR_TYPE_SPATIAL_ENTITY_ANCHOR_RETRIEVE_INFO_PICO = (XrStructureType)1200389025; typedef struct XrSpatialEntityAnchorRetrieveInfoPICO { XrStructureType type; const void* next; XrSpatialEntityIdPICO entity; } XrSpatialEntityAnchorRetrieveInfoPICO; static const XrStructureType XR_TYPE_ANCHOR_LOCATE_INFO_PICO = (XrStructureType)1200389026; typedef struct XrAnchorLocateInfoPICO { XrStructureType type; const void* next; XrSpace baseSpace; XrTime time; } XrAnchorLocateInfoPICO; static const XrResult XR_ERROR_SPATIAL_SENSING_SERVICE_UNAVAILABLE_PICO = (XrResult)-1200389027; typedef XrResult(XRAPI_PTR* PFN_xrRetrieveSpatialEntityAnchorPICO)( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityAnchorRetrieveInfoPICO* retrieveInfo, XrAnchorPICO* anchor); typedef XrResult(XRAPI_PTR* PFN_xrDestroyAnchorPICO)(XrAnchorPICO anchor); typedef XrResult(XRAPI_PTR* PFN_xrGetAnchorUuidPICO)(XrAnchorPICO anchor, XrUuidEXT* uuid); typedef XrResult(XRAPI_PTR* PFN_xrLocateAnchorPICO)(XrAnchorPICO anchor, XrAnchorLocateInfoPICO* locateInfo, XrSpaceLocation* location); #ifndef XR_NO_PROTOTYPES #ifdef XR_EXTENSION_PROTOTYPES XRAPI_ATTR XrResult XRAPI_CALL xrRetrieveSpatialEntityAnchorPICO( XrSenseDataSnapshotPICO snapshot, XrSpatialEntityAnchorRetrieveInfoPICO* retrieveInfo, XrAnchorPICO* anchor); XRAPI_ATTR XrResult XRAPI_CALL xrDestroyAnchorPICO(XrAnchorPICO anchor); XRAPI_ATTR XrResult XRAPI_CALL xrGetAnchorUuidPICO(XrAnchorPICO anchor, XrUuidEXT* uuid); XRAPI_ATTR XrResult XRAPI_CALL xrLocateAnchorPICO(XrAnchorPICO anchor, XrAnchorLocateInfoPICO* locateInfo, XrSpaceLocation* location); #endif /* XR_EXTENSION_PROTOTYPES */ #endif /* !XR_NO_PROTOTYPES */ #ifdef __cplusplus } #endif #endif // PICOXRRUNTIME_PICO_SPATIAL_SENSING_H