Private
_availablePrivate
_callbacksMap of callbacks to XRAnchors so that we can call its callback once an anchor is updated with a pose for the first time.
Private
_checkingPrivate
_creationList of anchor creation requests.
Private
_indexIndex of XrAnchors, with XRAnchor (native handle) used as a key.
Private
_indexIndex of XrAnchors, with UUID (persistent string) used as a key.
Private
_listPrivate
_persistencePrivate
_supportedTrue if Anchors are available. This information is available only when session has started.
True if Anchors support persistence.
True if Anchors are supported.
Array of UUID strings of persistent anchors, or null if not available.
Private
_createPrivate
_onPrivate
XRAnchor that has been destroyed.
Anchor that has been destroyed.
Private
_onPrivate
_onCreate an anchor using position and rotation, or from hit test result.
Position for an anchor or a hit test result.
Optional
rotation: Quat | XrAnchorCreateCallbackRotation for an anchor or a callback if creating from a hit test result.
Optional
callback: XrAnchorCreateCallbackCallback to fire when anchor was created or failed to be created.
// create an anchor using a position and rotation
app.xr.anchors.create(position, rotation, function (err, anchor) {
if (!err) {
// new anchor has been created
}
});
// create an anchor from a hit test result
hitTestSource.on('result', (position, rotation, inputSource, hitTestResult) => {
app.xr.anchors.create(hitTestResult, function (err, anchor) {
if (!err) {
// new anchor has been created
}
});
});
Fire an event, all additional arguments are passed on to the event listener.
Name of event to fire.
Optional
arg1: anyFirst argument that is passed to the event handler.
Optional
arg2: anySecond argument that is passed to the event handler.
Optional
arg3: anyThird argument that is passed to the event handler.
Optional
arg4: anyFourth argument that is passed to the event handler.
Optional
arg5: anyFifth argument that is passed to the event handler.
Optional
arg6: anySixth argument that is passed to the event handler.
Optional
arg7: anySeventh argument that is passed to the event handler.
Optional
arg8: anyEighth argument that is passed to the event handler.
Self for chaining.
obj.fire('test', 'This is the message');
Forget an anchor by removing its UUID from underlying systems.
UUID string associated with persistent anchor.
Optional
callback: XrAnchorForgetCallbackCallback to fire when anchor persistent data was removed or error if failed.
// forget all available anchors
const uuids = app.xr.anchors.uuids;
for(let i = 0; i < uuids.length; i++) {
app.xr.anchors.forget(uuids[i]);
}
Test if there are any handlers bound to an event name.
The name of the event to test.
True if the object has handlers bound to the specified event name.
obj.on('test', function () { }); // bind an event to 'test'
obj.hasEvent('test'); // returns true
obj.hasEvent('hello'); // returns false
Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.
Optional
name: stringName of the event to unbind.
Optional
callback: HandleEventCallbackFunction to be unbound.
Optional
scope: objectScope that was used as the this when the event is fired.
Self for chaining.
const handler = function () {
};
obj.on('test', handler);
obj.off(); // Removes all events
obj.off('test'); // Removes all events called 'test'
obj.off('test', handler); // Removes all handler functions, called 'test'
obj.off('test', handler, this); // Removes all handler functions, called 'test' with scope this
Attach an event handler to an event.
Name of the event to bind the callback to.
Function that is called when event is fired. Note the callback is limited to 8 arguments.
Optional
scope: object = ...Object to use as 'this' when the event is fired, defaults to current this.
Can be used for removing event in the future.
obj.on('test', function (a, b) {
console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
const evt = obj.on('test', function (a, b) {
console.log(a + b);
});
// some time later
evt.off();
Attach an event handler to an event. This handler will be removed after being fired once.
Name of the event to bind the callback to.
Function that is called when event is fired. Note the callback is limited to 8 arguments.
Optional
scope: object = ...Object to use as 'this' when the event is fired, defaults to current this.
obj.once('test', function (a, b) {
console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
obj.fire('test', 1, 2); // not going to get handled
Restore anchor using persistent UUID.
UUID string associated with persistent anchor.
Optional
callback: XrAnchorCreateCallbackCallback to fire when anchor was created or failed to be created.
// restore an anchor using uuid string
app.xr.anchors.restore(uuid, function (err, anchor) {
if (!err) {
// new anchor has been created
}
});
// restore all available persistent anchors
const uuids = app.xr.anchors.uuids;
for(let i = 0; i < uuids.length; i++) {
app.xr.anchors.restore(uuids[i]);
}
Static
EVENT_app.xr.anchors.on('add', (anchor) => {
console.log('Anchor added');
});
Static
EVENT_Fired when anchors become available.
app.xr.anchors.on('available', () => {
console.log('Anchors are available');
});
Static
EVENT_app.xr.anchors.on('destroy', (anchor) => {
console.log('Anchor destroyed');
});
Static
EVENT_Fired when an anchor failed to be created. The handler is passed an Error object.
app.xr.anchors.on('error', (err) => {
console.error(err.message);
});
Static
EVENT_Fired when anchors become unavailable.
app.xr.anchors.on('unavailable', () => {
console.log('Anchors are unavailable');
});
Anchors provide an ability to specify a point in the world that needs to be updated to correctly reflect the evolving understanding of the world by the underlying AR system, such that the anchor remains aligned with the same place in the physical world. Anchors tend to persist better relative to the real world, especially during a longer session with lots of movement.