OpenXRAndroidDeviceAnchorPersistenceExtension

Inherits: OpenXRExtensionWrapper

Implementation for creating and handling persisted anchor trackers (from XR_ANDROID_device_anchor_persistence).

Description

Implementation for creating and handling persisted anchor trackers (from XR_ANDROID_device_anchor_persistence).

Depends on OpenXRAndroidTrackablesExtension.

Methods

OpenXRAndroidAnchorTracker

create_persisted_anchor_tracker ( StringName uuid )

StringName[]

get_all_persisted_anchors ( )

PersistState

get_anchor_tracker_persist_state ( OpenXRAndroidAnchorTracker anchor_tracker, bool update=false ) const

PersistState

get_anchor_tracker_persist_state_uuid ( StringName uuid, bool update=false )

OpenXRAndroidAnchorTracker[]

get_persisted_anchor_trackers ( ) const

bool

is_device_anchor_persistence_supported ( ) const

bool

persist_anchor_tracker ( OpenXRAndroidAnchorTracker anchor_tracker ) const

bool

restore_persisted_anchor_trackers ( )

bool

set_restore_persisted_anchors_cooldown ( int cooldown )

bool

unpersist_anchor_tracker ( OpenXRAndroidAnchorTracker anchor_tracker ) const

bool

unpersist_anchor_uuid ( StringName uuid )


Method Descriptions

OpenXRAndroidAnchorTracker create_persisted_anchor_tracker ( StringName uuid )

Create a OpenXRAndroidAnchorTracker from a persisted uuid.

Repeat calls to create_persisted_anchor_tracker with the same uuid, without unpersisting, will return the same OpenXRAndroidAnchorTracker instance.

uuid could have come from get_all_persisted_anchors, persist_anchor_tracker, or from a cache that an app may have stored in a previous session.


StringName[] get_all_persisted_anchors ( )

Retrieve an Array of persisted anchor uuids, as StringNames, that have been previously persisted with persist_anchor_tracker by the app.

Persisted anchors are returned even after restarting the app or rebooting the device, as long as the anchor was never unpersisted (see unpersist_anchor_tracker).

Persisted anchors from other apps are not returned.

See also get_persisted_anchor_trackers.


PersistState get_anchor_tracker_persist_state ( OpenXRAndroidAnchorTracker anchor_tracker, bool update=false ) const

Convenience function to turn this:

var persist_state := OpenXRAndroidAnchorTracker.PERSIST_STATE_NOT_REQUESTED
if anchor_tracker:
    persist_state = OpenXRAndroidDeviceAnchorPersistenceExtension.get_anchor_tracker_persist_state_uuid(anchor_tracker.get_persist_uuid(), update)
    # or: persist_state = anchor_tracker.get_persist_state(update)

Into:

var persist_state := OpenXRAndroidDeviceAnchorPersistenceExtension.get_anchor_tracker_persist_state(anchor_tracker, update)

See also OpenXRAndroidAnchorTracker.get_persist_state.


PersistState get_anchor_tracker_persist_state_uuid ( StringName uuid, bool update=false )

If a OpenXRAndroidAnchorTracker instance was already created for uuid (via create_persisted_anchor_tracker), then OpenXRAndroidAnchorTracker.get_persist_state is called.

Otherwise, the persist state is found from the uuid and update is ignored.


OpenXRAndroidAnchorTracker[] get_persisted_anchor_trackers ( ) const

Retrieve all OpenXRAndroidAnchorTrackers that have been created from persisted anchor trackers since the last time the app was restarted.

The number of anchor trackers returned by this function will always be less than, or equal to, the number of persisted anchor uuids returned by get_all_persisted_anchors.


bool is_device_anchor_persistence_supported ( ) const

Returns true if device anchor persistence is supported; otherwise false.


bool persist_anchor_tracker ( OpenXRAndroidAnchorTracker anchor_tracker ) const

Convenience function to turn this:

var persisted := anchor_tracker && anchor_tracker.persist()

Into:

var persisted := OpenXRAndroidDeviceAnchorPersistenceExtension.persist_anchor_tracker(anchor_tracker)

See also OpenXRAndroidAnchorTracker.persist.


bool restore_persisted_anchor_trackers ( )

Restore all available persisted anchor trackers.

Only persisted anchors with valid poses are restored. Persisted anchors with invalid poses may be restored in subsequent call(s) to this function.

Returns true when there are more persisted anchors to restore. Repeat calls in the next, or later, frame may restore more persisted anchors.

Returns false when all persisted anchors (could have been zero) have been restored. Repeat calls will do nothing until the app is restarted. Calling set_restore_persisted_anchors_cooldown will also return false.

This API is called automatically by default (see set_restore_persisted_anchors_cooldown).


bool set_restore_persisted_anchors_cooldown ( int cooldown )

Set how many frames to wait before automatically calling restore_persisted_anchor_trackers.

When cooldown is 0, restore_persisted_anchor_trackers is called every frame. Note that the XR runtime may not always have new data to retrieve.

When cooldown is less than zero, restore_persisted_anchor_trackers is no longer called automatically.

Returns true when the value was set.

Returns false when the value was not set because restore_persisted_anchor_trackers does not have any more persisted anchors to restore. Calling restore_persisted_anchor_trackers will also return false.

Default is 60.


bool unpersist_anchor_tracker ( OpenXRAndroidAnchorTracker anchor_tracker ) const

Convenience function to turn this:

var unpersisted := anchor_tracker && anchor_tracker.unpersist()

Into:

var unpersisted := OpenXRAndroidDeviceAnchorPersistenceExtension.unpersist_anchor_tracker(anchor_tracker)

See also OpenXRAndroidAnchorTracker.unpersist for information about unpersisting.


bool unpersist_anchor_uuid ( StringName uuid )

Unpersists a persisted uuid.

The OpenXRAndroidAnchorTracker created from uuid, if any, will automatically be updated.

See also OpenXRAndroidAnchorTracker.unpersist for information about unpersisting.