WLT+ASA: Übersicht über unterstützende Software
Die IBinder
-Schnittstelle befindet sich im Mittelpunkt und wird hier von der SpacePinBinder-Klasse implementiert. Der SpacePinBinder ist ein Unity Monobehaviour und kann entweder über den Unity Inspector oder vom Skript aus konfiguriert werden.
Jeder IBinder
wird benannt, sodass ein einzelnes IBindingOracle
Bindungen für mehrere IBinder
verwalten kann.
Die IPublisher
-Schnittstelle verarbeitet die Veröffentlichung von Raumankern in der Cloud und ihren Abruf in späteren Sitzungen oder auf anderen Geräten. IPublisher
wird hier mit der PublisherASA-Klasse implementiert. Positionsdaten im aktuellen physischen Raum werden mithilfe von Azure Spatial Anchors erfasst und abgerufen.
Wenn ein Raumanker veröffentlicht wird, wird eine Cloudanker-ID abgerufen. Diese ID kann in späteren Sitzungen oder auf anderen Geräten verwendet werden, um die Position des Cloudankers im aktuellen Koordinatensystem zusammen mit allen darin gespeicherten Eigenschaften abzurufen. Das System fügt immer eine Eigenschaft hinzu, die die zugeordnete SpacePin-Eigenschaft des Cloudankers identifiziert.
Beachten Sie, dass der IPublisher
und die PublisherASA nichts über SpacePins wissen. IPublisher
hat nichts mit dem zu tun, was mit den Cloudankerdaten geschieht. Er bietet eine vereinfachte zu erwartende Schnittstelle zum Veröffentlichen und Abrufen von Cloudankern.
Wenn die ID eines Cloudankers bekannt ist, kann der Cloudanker anhand seiner ID abgerufen werden. Diese Methode ist der sicherste Weg zum Abrufen eines Cloudankers. Die Methode ist Read.
Es gibt jedoch interessante Szenarien, in denen die IDs für die Cloudanker innerhalb eines Bereichs einem Gerät nicht bekannt sind, aber wenn die Cloudanker abgerufen werden könnten, würden ihre räumlichen Daten und Eigenschaften zusammen genügend Informationen liefern, um sie nützlich zu machen.
Find durchsucht das Umfeld eines Geräts nach Cloudankern und gibt alle zurück, die identifiziert werden konnten. Dieser Prozess wird als ungefähre Standortbestimmung bezeichnet.
Die IBindingOracle-Schnittstelle bietet eine Möglichkeit zum Persistieren und Freigeben von Bindungen zwischen SpacePins und bestimmten Cloudankern. Insbesondere werden die Space-Pin-ID/Cloudanker-ID-Paare zusammen mit dem IBinder
-Namen persistiert.
Die Oracle-Schnittstelle ist äußerst einfach. Bei einem IBinder
kann entweder ein Put- oder Get-Vorgang für die Bindungen des IBinder
ausgeführt werden. „Put“ speichert sie, „Get“ ruft sie ab. Der Mechanismus zum Speichern und Abrufen bleibt der Implementierung der konkreten Klasse überlassen, die die IBindingOracle-Schnittstelle implementiert.
In diesem Beispiel wird möglicherweise das einfachste IBindingOracle in Form der SpacePinBinderFile-Klasse implementiert. Bei „Put“ werden die Bindungen von IBinder
in eine Textdatei geschrieben. Bei „Get“ werden sie aus der Textdatei (sofern verfügbar) gelesen und in den IBinder
eingespeist.
Die ILocalPeg-Schnittstelle ist eine Abstraktion eines lokalen Geräteankers. In einer perfekteren Welt würden die erforderlichen ILocalPegs intern von IPublisher
verwaltet werden. Lokale Geräteanker funktionieren jedoch viel besser, wenn sie erstellt werden, während sich das Gerät in der Nähe der Position des Ankers befindet. Nur der IPublisher
weiß, wo die lokalen Geräteanker platziert werden sollen, wenn sie benötigt werden, nicht zum optimalen Zeitpunkt der Erstellung.
SpacePinASA kennt den besten Zeitpunkt zum Erstellen des lokalen Ankers. Wenn die Bearbeitung des SpacePin endet und seine Position festgelegt ist, fordert SpacePinASA den IPublisher
auf, an der gewünschten Position einen opaken lokalen Peg zu erstellen. Der SpacePinBinder pullt dann den ILocalPeg aus SpacePinASA und übergibt ihn zum Erstellen eines Raumankers an den IPublisher
.