OpenXRSpatialQueryResultData
Данные spatial snapshot: OpenXRSpatialQueryResultData.
Контейнер native component data для QuerySnapshot, не tracker, игровая Entity или готовая геометрия. В массиве запроса первым должен идти OpenXRSpatialQueryResultData; индексы остальных компонентов относятся к тем же строкам. Проверяйте поддержку компонента, успешный query и state строки до чтения значений.
SetCapacity выделяет память, но не делает её данными устройства. GetCapacity у query-result показывает длину выделенного массива; она может быть ненулевой без единого запроса. При ошибке/незавершённом запросе не используйте прежнее содержимое. Финальные output counts между двумя проходами отдельно публично не доступны; изменение количества результатов в runtime здесь не проверено.
Buffer getters требуют тот же живой snapshot. Скопируйте нужные массивы/строки до FreeSpatialSnapshot или конца borrowed capability callback. Не освобождайте snapshot повторно; свои контейнеры держите живыми на время использования. Raw poses не являются готовыми GlobalTransform и не применяют WorldOrigin/reference frame/WorldScale автоматически.
Содержит runtime IDs и tracking states; ID не является RID или persistence UUID. Читайте тот же index во всех component lists и обрабатывайте Paused/Stopped без использования невалидной pose.
Рабочая интеграция. На Windows XR-off выполнены 11 проверок metadata/capacity/virtual dispatch без чтения незаполненной памяти. Реальный snapshot, buffer values, pose/UUID/marker decoding, шлем и export не проверены. Движок не менялся.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRSpatialQueryResultDataКонструктор
public OpenXRSpatialQueryResultData();Создаёт принадлежащий вызывающему RefCounted контейнер query data с пустыми буферами. Не выполняет QuerySnapshot и не получает данные устройства. Выделение через SetCapacity не заполняет строки. Удерживайте свои контейнеры до окончания native запроса; provider-owned ресурсы не освобождайте.
Методы3
GetCapacitylong
public long GetCapacity();Размер выделенного массива entity IDs как long, изначально 0. SetCapacity(4) даёт 4 без QuerySnapshot — это не количество подтверждённых записей. Читайте строки только после успешного запроса. Текущая реализация задаёт размер по первому count pass; финальные output counts отдельно публично не возвращаются, изменение количества между проходами не проверено.
longРазмер выделенного массива entity IDs как long, изначально 0. SetCapacity(4) даёт 4 без QuerySnapshot — это не количество подтверждённых записей. Читайте строки только после успешного запроса. Текущая реализация задаёт размер по первому count pass; финальные output counts отдельно публично не возвращаются, изменение количества между проходами не проверено.
GetEntityIdulong
public ulong GetEntityId(long index);Runtime ID строки результата как ulong. Нужен успешный QuerySnapshot и index в пределах заполненных результатов; это не game Entity, RID или UUID. Используйте этот же index для state и остальных component lists. При неверном index native логирует ошибку и возвращает null-ID 0; он не является валидным обнаруженным объектом.
| Имя | Тип | По умолчанию |
|---|---|---|
index | long | — |
indexНулевой index заполненной строки того же успешного snapshot query, не entity ID. Совпадает с index в OpenXRSpatialQueryResultData; одной выделенной capacity недостаточно.
ulongRuntime ID строки результата как ulong. Нужен успешный QuerySnapshot и index в пределах заполненных результатов; это не game Entity, RID или UUID. Используйте этот же index для state и остальных component lists. При неверном index native логирует ошибку и возвращает null-ID 0; он не является валидным обнаруженным объектом.
GetEntityStateOpenXRSpatialEntityTracker.EntityTrackingState
public OpenXRSpatialEntityTracker.EntityTrackingState GetEntityState(long index);Tracking state строки результата, соответствующей GetEntityId(index). Tracking разрешает чтение поддержанных component data; Paused/Stopped не считайте текущей валидной pose. Неверный index возвращает MAX_ENUM cast, который не является обычным EntityTrackingState. Не читайте после одного SetCapacity без успешного запроса.
| Имя | Тип | По умолчанию |
|---|---|---|
index | long | — |
indexНулевой index заполненной строки того же успешного snapshot query, не entity ID. Совпадает с index в OpenXRSpatialQueryResultData; одной выделенной capacity недостаточно.
OpenXRSpatialEntityTracker.EntityTrackingStateTracking state строки результата, соответствующей GetEntityId(index). Tracking разрешает чтение поддержанных component data; Paused/Stopped не считайте текущей валидной pose. Неверный index возвращает MAX_ENUM cast, который не является обычным EntityTrackingState. Не читайте после одного SetCapacity без успешного запроса.