October3d55/M/PICOOpen7991a2a23d57V5/Source/ThirdParty/openxr/pico_spatial_sensing.h

461 lines
18 KiB
C
Raw Normal View History

2025-03-10 09:43:27 +08:00
//
// 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