class XRPersistentAnchorSubsystem
(Niantic.Lightship.AR.XRSubsystems.XRPersistentAnchorSubsystem)
Overview
Base class for a persistent anchor subsystem.
class XRPersistentAnchorSubsystem: TrackingSubsystem< XRPersistentAnchor, XRPersistentAnchorSubsystem, XRPersistentAnchorSubsystemDescriptor, XRPersistentAnchorSubsystem.Provider > {
public:
class Provider;
// fields
bool IsMockProvider => provider.IsMockProvider;
// properties
XRPersistentAnchorConfiguration? CurrentConfiguration;
// events
event debugInfoProvided();
event OnConfigurationChanged();
// methods
XRPersistentAnchorSubsystem();
new void Start();
override TrackableChanges<XRPersistentAnchor> GetChanges(Allocator allocator);
bool TryAddAnchor(Pose pose, out XRPersistentAnchor anchor);
bool TryRemoveAnchor(TrackableId anchorId);
bool TryRestoreAnchor(
XRPersistentAnchorPayload anchorPayload,
out XRPersistentAnchor anchor
);
bool TryLocalize(
XRPersistentAnchorPayload anchorPayload,
out XRPersistentAnchor anchor
);
bool GetVpsSessionId(out string vpsSessionId);
protected:
// methods
override void OnStart();
override void OnStop();
};
Detailed Documentation
Base class for a persistent anchor subsystem.
An anchor is a pose in the physical environment that is tracked by an XR device. As the device refines its understanding of the environment, anchors will be updated, allowing you to keep virtual content connected to a real-world position and orientation.
This abstract class should be implemented by an XR provider and instantiated using the SubsystemManager to enumerate the available XRPersistentAnchorSubsystemDescriptor s.
Properties
CurrentConfiguration
XRPersistentAnchorConfiguration? CurrentConfiguration
Get or set configuration with <name>XRPersistentAnchorConfiguration</name>
.. note::
This api calls into native, so getting or setting the configuration will return a deep copy Updated configurations need to be set to take effect
Events
debugInfoProvided
event debugInfoProvided()
Called when debug info is available
Each invocation of this event contains a XRPersistentAnchorDebugInfo object that contains arrays of XRPersistentAnchorNetworkRequestStatus, XRPersistentAnchorLocalizationStatus, and XRPersistentAnchorFrameDiagnostics
OnConfigurationChanged
event OnConfigurationChanged()
Called when the subsystem's configuration changes
Methods
XRPersistentAnchorSubsystem
XRPersistentAnchorSubsystem()
Constructor. Do not invoke directly; use the SubsystemManager to enumerate the available XRPersistentAnchorSubsystemDescriptor s and call Create on the desired descriptor.
GetChanges
override TrackableChanges<XRPersistentAnchor> GetChanges(Allocator allocator)
Get the changes to anchors (added, updated, and removed) since the last call to GetChanges(Allocator).
Parameters:
allocator
- An allocator to use for the NativeArrays in TrackableChanges<T>.
Returns:
Changes since the last call to GetChanges.
TryAddAnchor
bool TryAddAnchor(Pose pose, out XRPersistentAnchor anchor)
Attempts to create a new anchor with the provide pose.
Parameters:
pose
- The pose, in session space, of the new anchor.
anchor
- The new anchor. Only valid if this method returns true.
Returns:
true if the new anchor was added, otherwise false.
TryRemoveAnchor
bool TryRemoveAnchor(TrackableId anchorId)
Attempts to remove an existing anchor with TrackableId anchorId.
Parameters:
anchorId
- The id of an existing anchor to remove.
Returns:
true if the anchor was removed, otherwise false.
TryRestoreAnchor
bool TryRestoreAnchor(
XRPersistentAnchorPayload anchorPayload,
out XRPersistentAnchor anchor
)
Tries to restore an anchor
Parameters:
anchorPayload
- The payload to restore the anchor with
anchor
- The restored anchor
Returns:
Whether or not the restoration was successful
GetVpsSessionId
bool GetVpsSessionId(out string vpsSessionId)
Get the vps session id, if any
Parameters:
vpsSessionId
- The vps session id as 32 character hexidecimal upper-case string.
Returns:
True if vps session id is present, false otherwise