Поделиться через


WLT+ASA: обзор ПО для поддержки

IBinder — привязка SpacePins к Пространственным привязкам Azure

Интерфейс IBinder находится в центре. Здесь он реализуется классом SpacePinBinder. SpacePinBinder — это наследник класса Unity под названием MonoBehaviour, и его можно настроить либо из инспектора Unity, либо из сценария.

Каждый объект IBinderимеет имя, поэтому один IBindingOracle может управлять привязками для нескольких объектов IBinder.

IPublisher — чтение и запись пространственных привязок в облаке

Интерфейс IPublisher обрабатывает публикацию пространственных привязок в облаке, а затем извлекает их в последующих сеансах или на других устройствах. IPublisher реализуется здесь с помощью класса PublisherASA. Данные положений в текущем физическом пространстве записываются и извлекаются с помощью Пространственных привязок Azure.

При публикации пространственной привязки получается идентификатор привязки к облаку. Этот идентификатор можно использовать в последующих сеансах или на других устройствах для получения положения облачных привязок в текущей системе координат вместе со всеми хранящимися в ней свойствами. Система всегда добавляет свойство, идентифицирующее связанный с облачной привязкой объект SpacePin.

Следует отметить, что IPublisher и PublisherASA ничего не знает об объектах SpacePin. IPublisher не знает о том, что будет сделано с данными облачной привязки, и это для него не важно. Он предоставляет упрощенный ожидаемый интерфейс для публикации и получения облачных привязок.

Чтение и поиск

Если идентификатор облачной привязки известен, можно получить облачную привязку можно извлечь по ее идентификатору. Этот метод является наиболее надежным способом получения облачной привязки. Метод называется Read.

Однако существуют интересные сценарии, в которых идентификаторы облачных привязок в области устройству неизвестны, но если облачные привязки могут быть получены, их пространственные данные и свойства объединяются, чтобы предоставить достаточно информации, чтобы они были полезными.

Find выполняет поиск облачных привязок в области вокруг устройства и возвращает все, которые удалось опознать. Этот процесс называется грубым перемещением.

IBindingOracle — совместное использование идентификаторов облачных привязок

Интерфейс IBindingOracle предоставляет средства для сохранения и совместного использования привязок между объектами SpacePin и конкретными облачными привязками. В частности, он сохраняет пары "ПИН-код — идентификатор облачной привязки" вместе с именем IBinder.

Интерфейс очень прост. Ему предоставляется IBinder, и он может либо сохранить (Put) привязки IBinder, либо получить (Get) их. При использовании Put привязки помещаются в хранилище, а при использовании Get — извлекаются из хранилища. Механизм сохранения и извлечения зависит от конкретной реализации класса, реализующего интерфейс IBindingOracle.

В этом примере реализуется, возможно, простейший IBindingOracle в форме класса SpacePinBinderFile. При Put он записывает привязки IBinder в текстовый файл. При Get он считывает их из текстового файла (если он доступен) и передает их в IBinder.

iLocalPeg — большой двоичный объект, помечающий расположение в физическом пространстве

Интерфейс ILocalPeg является абстракцией локальной привязки устройства. В более идеальном мире требуемый ILocalPegs обрабатывался бы в IPublisher. Однако локальные привязки устройств гораздо лучше работают, если они создаются тогда, когда устройство находится рядом с привязкой. IPublisher знает только то, где следует размещать локальные привязки устройств, когда они необходимы, а не в оптимальное время их создания.

SpacePinASA знает, когда лучше создавать локальную привязку. После завершения работы со SpacePin и создания ее набора положений, SpacePinASA запрашивает IPublisher, чтобы создать непрозрачный локальный ориентир в нужном положении. Затем SpacePinBinder извлекает ILocalPeg из SpacePinASA и передает его в IPublisher, чтобы использовать при создании облачной пространственной привязки.

См. также