UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.76 kB
import{EventHandler as t}from"../../core/event-handler.js";import{Vec3 as s}from"../../core/math/vec3.js";import{Quat as i}from"../../core/math/quat.js";class r extends t{constructor(t,r,e=null){super(),this._position=new s,this._rotation=new i,this._uuid=null,this._uuidRequests=null,this._anchors=t,this._xrAnchor=r,this._uuid=e}destroy(){if(!this._xrAnchor)return;const t=this._xrAnchor;this._xrAnchor.delete(),this._xrAnchor=null,this.fire("destroy",t,this)}update(t){if(!this._xrAnchor)return;const s=t.getPose(this._xrAnchor.anchorSpace,this._anchors.manager._referenceSpace);if(s){if(this._position.equals(s.transform.position)&&this._rotation.equals(s.transform.orientation))return;this._position.copy(s.transform.position),this._rotation.copy(s.transform.orientation),this.fire("change")}}getPosition(){return this._position}getRotation(){return this._rotation}persist(t){this._anchors.persistence?this._uuid?null==t||t(null,this._uuid):this._uuidRequests?t&&this._uuidRequests.push(t):(this._uuidRequests=[],this._xrAnchor.requestPersistentHandle().then((s=>{this._uuid=s,this._anchors._indexByUuid.set(this._uuid,this),null==t||t(null,s);for(const t of this._uuidRequests)t(null,s);this._uuidRequests=null,this.fire("persist",s)})).catch((s=>{null==t||t(s,null);for(const t of this._uuidRequests)t(s,null);this._uuidRequests=null}))):null==t||t(new Error("Persistent Anchors are not supported"),null)}forget(t){this._uuid?this._anchors.forget(this._uuid,(s=>{this._uuid=null,null==t||t(s),this.fire("forget")})):null==t||t(new Error("Anchor is not persistent"))}get uuid(){return this._uuid}get persistent(){return!!this._uuid}}r.EVENT_DESTROY="destroy",r.EVENT_CHANGE="change",r.EVENT_PERSIST="persist",r.EVENT_FORGET="forget";export{r as XrAnchor};