@needle-tools/engine 5.0.8-canary.eb08199 → 5.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{needle-engine.bundle-DOywNdEo.umd.cjs → needle-engine.bundle--J0Pgk3R.umd.cjs} +3 -3
- package/dist/{needle-engine.bundle-DTswFwCu.js → needle-engine.bundle-BCA42ir1.js} +2 -2
- package/dist/{needle-engine.bundle-Brrb7t-Z.min.js → needle-engine.bundle-CddS2Pmc.min.js} +1 -1
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/package.json +2 -2
package/dist/{needle-engine.bundle-DOywNdEo.umd.cjs → needle-engine.bundle--J0Pgk3R.umd.cjs}
RENAMED
|
@@ -148,7 +148,7 @@ void main(){
|
|
|
148
148
|
clip: rect(0, 0, 0, 0);
|
|
149
149
|
white-space: nowrap;
|
|
150
150
|
border: 0;
|
|
151
|
-
`,this.root.setAttribute("role","region"),this.root.setAttribute("aria-label","3D Needle Engine scene"),this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("role","status"),this.root.appendChild(this.liveRegion),this.enabled=!0}static _managers=new WeakMap;static get(e){return Qm(e)?this._managers.get(e.context):this._managers.get(e)}_enabled;set enabled(e){e!==this._enabled&&(this._enabled=e,e?($d._managers.set(this.context,this),(this.context.domElement.shadowRoot||this.context.domElement).prepend(this.root)):this.root.remove())}clear(){this.root.childNodes.forEach(e=>e.remove()),this.root.appendChild(this.liveRegion)}dispose(){this.root.remove(),$d._managers.delete(this.context)}root=document.createElement("div");liveRegion=document.createElement("div");treeElements=new WeakMap;updateElement(e,t){let i=this.treeElements.get(e);i||(i=document.createElement("div"),this.treeElements.set(e,i),this.root.appendChild(i),typeof t=="object"&&(t.role&&i.setAttribute("role",t.role),t.label&&i.setAttribute("aria-label",t.label),t.hidden!==void 0&&i.setAttribute("aria-hidden",String(t.hidden)),t.busy!==void 0&&i.setAttribute("aria-busy",String(t.busy))))}focus(e){const t=this.treeElements.get(e);t&&t.focus()}unfocus(e){const t=this.treeElements.get(e);t&&t.blur()}hover(e,t){const i=this.treeElements.get(e);this.liveRegion.textContent=t||i?.getAttribute("aria-label")||""}removeElement(e){this.treeElements.get(e)?.remove(),this.treeElements.delete(e)}set liveRegionMode(e){this.liveRegion.setAttribute("aria-live",e)}}let Yv,p_=null;function un(){return Yv}function Kv(s){if(s==null){console.warn("Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.");return}p_!==s&&(p_=s,Yv=new s)}const Zv=x("debugdefines");bo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');bo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');bo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');bo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');bo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.0.8";');bo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');bo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu May 07 2026
|
|
151
|
+
`,this.root.setAttribute("role","region"),this.root.setAttribute("aria-label","3D Needle Engine scene"),this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("role","status"),this.root.appendChild(this.liveRegion),this.enabled=!0}static _managers=new WeakMap;static get(e){return Qm(e)?this._managers.get(e.context):this._managers.get(e)}_enabled;set enabled(e){e!==this._enabled&&(this._enabled=e,e?($d._managers.set(this.context,this),(this.context.domElement.shadowRoot||this.context.domElement).prepend(this.root)):this.root.remove())}clear(){this.root.childNodes.forEach(e=>e.remove()),this.root.appendChild(this.liveRegion)}dispose(){this.root.remove(),$d._managers.delete(this.context)}root=document.createElement("div");liveRegion=document.createElement("div");treeElements=new WeakMap;updateElement(e,t){let i=this.treeElements.get(e);i||(i=document.createElement("div"),this.treeElements.set(e,i),this.root.appendChild(i),typeof t=="object"&&(t.role&&i.setAttribute("role",t.role),t.label&&i.setAttribute("aria-label",t.label),t.hidden!==void 0&&i.setAttribute("aria-hidden",String(t.hidden)),t.busy!==void 0&&i.setAttribute("aria-busy",String(t.busy))))}focus(e){const t=this.treeElements.get(e);t&&t.focus()}unfocus(e){const t=this.treeElements.get(e);t&&t.blur()}hover(e,t){const i=this.treeElements.get(e);this.liveRegion.textContent=t||i?.getAttribute("aria-label")||""}removeElement(e){this.treeElements.get(e)?.remove(),this.treeElements.delete(e)}set liveRegionMode(e){this.liveRegion.setAttribute("aria-live",e)}}let Yv,p_=null;function un(){return Yv}function Kv(s){if(s==null){console.warn("Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.");return}p_!==s&&(p_=s,Yv=new s)}const Zv=x("debugdefines");bo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');bo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');bo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');bo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');bo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.0.8";');bo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');bo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu May 07 2026 14:51:41 GMT+0000 (Coordinated Universal Time)";');bo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const ii="5.0.8",Ra="undefined",_c="Thu May 07 2026 14:51:41 GMT+0000 (Coordinated Universal Time)";Zv&&console.log(`Engine version: ${ii} (generator: ${Ra})
|
|
152
152
|
Project built at ${_c}`);const oo=NEEDLE_PUBLIC_KEY,Bn="needle_isActiveInHierarchy",qo="builtin_components",tc="needle_editor_guid";function bo(s){try{(0,eval)(s)}catch(e){Zv&&console.error(e)}}const Ym={experimentalSmartHierarchyUpdate:!1};function ic(s,e){try{e||s()}catch(t){return console.error(t),!1}return!0}const zp=x("debugnewscripts"),FC=x("debughierarchy"),Ce=[];function UC(){return Ce.length>0}function Wd(s){if(zp&&console.log("Register new components",s.new_scripts.length,[...s.new_scripts],s.alias?"element: "+s.alias:s.hash,s),s.new_scripts_pre_setup_callbacks.length>0){for(const e of s.new_scripts_pre_setup_callbacks)e&&e();s.new_scripts_pre_setup_callbacks.length=0}if(!(s.new_scripts.length<=0)){Ce.length=0,s.new_scripts.length>0&&Ce.push(...s.new_scripts),s.new_scripts.length=0;for(let e=0;e<Ce.length;e++)try{const t=Ce[e];if(t.isComponent!==!0){(A()||zp)&&console.error(`Registered script is not a Needle Engine component.
|
|
153
153
|
The script will be ignored. Please make sure your component extends "Behaviour" imported from "@needle-tools/engine"
|
|
154
154
|
`,t),Ce.splice(e,1),e--;continue}if(t.destroyed)continue;if(!t.gameObject){console.warn(`Component can not be initialized: no GameObject assigned.
|
|
@@ -886,7 +886,7 @@ Layout: `;for(const o of Object.keys(this._layout.components||{})){const r=this.
|
|
|
886
886
|
${o}: ${this._layout.components[o]?.type} [${l}] (${r.x.toPrecision(2)},${r.y.toPrecision(2)})`}}B.DrawLabel(t,n,.006)}onUpdateFrame(e){if(this._handJointPoses.clear(),this._hand_wristDotUp=void 0,!this.xr.referenceSpace||!this.inputSource.gamepad?.connected){this._isTracking=!1;return}const t=e.getPose(this.inputSource.targetRaySpace,this.xr.referenceSpace);this._isTracking=t!=null;let i=null,n=null,o=null,r=null;if(t){const d=t.transform;this._rayMatrix.fromArray(d.matrix).premultiply(xa),this._rayMatrix.decompose(this._rayPosition,this._rayQuaternion,F(1,1,1)),o=F(d.position),r=ei(d.orientation),this._rayPositionRaw.copy(o),this._rayRotationRaw.copy(r)}if(this.inputSource.gripSpace){const d=e.getPose(this.inputSource.gripSpace,this.xr.referenceSpace);if(d){const u=d.transform;if(i=F(u.position),n=ei(u.orientation),this._gripMatrix.fromArray(u.matrix).premultiply(xa),this._gripMatrix.decompose(this._gripPosition,this._gripQuaternion,F(1,1,1)),"linearVelocity"in d&&d.linearVelocity){const p=d.linearVelocity;this._linearVelocity.set(p.x,p.y,p.z)}}}this.xr.context.mainCamera?.parent&&(this._object.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._object),this._gripSpaceObject!==void 0&&this._gripSpaceObject?.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._gripSpaceObject),this._raySpaceObject!==void 0&&this._raySpaceObject?.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._raySpaceObject));const a=this.hand;if(a){let d=!1;const u=a.get("wrist"),p=u&&this.getHandJointPose(u,e);if(p){d=!0;const _=p.transform.position,g=p.transform.orientation;this._object.position.set(_.x,_.y,_.z),this._object.quaternion.set(g.x,g.y,g.z,g.w).multiply(Ii)}d||(this._object.position.copy(this._rayPosition),this._object.quaternion.copy(this._rayQuaternion).multiply(Ii));const m=a.get("middle-finger-metacarpal"),y=m&&this.getHandJointPose(m,e);y&&(this._gripMatrix.fromArray(y.transform.matrix).premultiply(xa),this._gripMatrix.decompose(this._gripPosition,this._gripQuaternion,F(1,1,1)),i=F().copy(y.transform.position),n=ei().copy(y.transform.orientation),n.multiply(fP),i.add(F(pP).applyQuaternion(n)))}else this.inputSource.gripSpace&&this.targetRayMode==="transient-pointer"&&i&&n?(this._object.position.copy(i),this._object.quaternion.copy(n).multiply(Ii)):o&&r&&(this._object.position.copy(o),this._object.quaternion.copy(r).multiply(Ii));is&&(o&&r&&(this._raySpaceObject?.position.copy(o),this._raySpaceObject?.quaternion.copy(r).multiply(Ii)),i&&n&&(this._gripSpaceObject?.position.copy(i),this._gripSpaceObject?.quaternion.copy(n).multiply(Ii)));const l=this.xr.context.mainCamera?.parent,h=l?pe(l):void 0;i&&n&&(this._gripWorldPosition.copy(i),l&&this._gripWorldPosition.applyMatrix4(l.matrixWorld),this._gripWorldQuaternion.copy(n),this._gripWorldQuaternion.multiply(Ii),h&&this._gripWorldQuaternion.premultiply(h)),this.updateRayWorldPosition(),this.updateRayWorldQuaternion()}onDisconnected(){this._connected=!1,is&&console.warn("Controller disconnected",this.index);for(const e of this._object.children)this.xr.context.scene.attach(e);this._object?.removeFromParent(),this._debugAxesHelper?.removeFromParent(),this._debugGripAxesHelper?.removeFromParent(),this._debugRayAxesHelper?.removeFromParent(),this._gripSpaceObject?.removeFromParent(),this._raySpaceObject?.removeFromParent(),this.unsubscribeEvents(),this._hitTestSource&&(this._hitTestSource.cancel(),this._hitTestSource=void 0)}getButton(e){if(!this._layout)return;switch(e){case"primary-button":if(this.isLeft)e="x-button";else if(this.isRight)e="a-button";else return;break;case"primary":return this.hand?this.getGesture("pinch"):this.toNeedleGamepadButton(0,e);case"xr-standard-trigger":if(this.inputSource.gamepad)return this.toNeedleGamepadButton(0,e);break;case"xr-standard-squeeze":if(this.inputSource.gamepad)return this.toNeedleGamepadButton(1,e);break;case"xr-standard-thumbstick":if(this.inputSource.gamepad)return this.toNeedleGamepadButton(3,e);break}if(this._buttonMap.has(e))return this.toNeedleGamepadButton(this._buttonMap.get(e),e);const t=this._layout?.components[e];if(t?.gamepadIndices)switch(t.type){case"button":case"squeeze":if(this.inputSource.gamepad){const i=t.gamepadIndices.button;return this._buttonMap.set(e,i),this.toNeedleGamepadButton(i,e)}break;default:console.warn("Unsupported component type",t.type);break}this._buttonMap.set(e,void 0)}getGesture(e){const t=this.states[e];if(!t)return null;this.states[e]=t;const i=this._needleGamepadButtons[e]||new $_(void 0,e);return i.pressed=t.pressed,i.value=t.value,i.isDown=t.isDown,i.isUp=t.isUp,this._needleGamepadButtons[e]=i,i}getPointerId(e){if((e==="primary"||e==="pinch")&&(e=0),typeof e!="number"){const t=this._buttonMap.get(e);if(t===void 0)return;e=t}return this.index*10+e}_needleGamepadButtons={};toNeedleGamepadButton(e,t){if(!this.inputSource.gamepad?.buttons)return;const i=this.inputSource.gamepad?.buttons[e],n=this.states[e],o=this._needleGamepadButtons[e]||new $_(e,t);return i&&(o.pressed=i.pressed,o.value=i.value,o.touched=i.touched),n&&(o.isDown=n.isDown,o.isUp=n.isUp),this._needleGamepadButtons[e]=o,o}getStick(e){if(!this._layout)return{x:0,y:0,z:0};if(this.isHand)return{x:0,y:0,z:0};e==="primary"&&this._layout.components["xr-standard-thumbstick"]&&(e="xr-standard-thumbstick");const t=this._layout?.components[e];if(t?.gamepadIndices)switch(t.type){case"thumbstick":case"touchpad":if(this.inputSource.gamepad){const i=t.gamepadIndices.xAxis,n=t.gamepadIndices.yAxis;let o=this.inputSource.gamepad.axes[i]||0,r=this.inputSource.gamepad.axes[n]||0;o*=-1,r*=-1;const a=t.gamepadIndices.button,l=this.inputSource.gamepad?.buttons[a]?.value||0;return{x:o,y:r,z:l}}}return{x:0,y:0,z:0}}_buttonMap=new Map;_motioncontroller;_layout;getMotionController;initialize(){if(this._hasSelectEvent=this.profiles.includes("generic-hand-select")||this.profiles.some(e=>e.startsWith("generic-trigger")),this._isMetaQuestTouchController=this.profiles.includes("meta-quest-touch-plus")||this.profiles.includes("oculus-touch-v3"),this._isMxInk=this.profiles.includes("logitech-mx-ink"),!this._layout){if(this.inputSource.targetRayMode==="transient-pointer")return;const e=le.fetchProfile(this.inputSource,dP,uP);this.getMotionController=e.then(t=>{if(!this.connected)return null;this._motioncontroller=new le.MotionController(this.inputSource,t.profile,t.assetPath||"");const n=t.profile.layouts[this.inputSource.handedness];if(this._layout=n,this._layout){if(!this._layout.gamepad?.length){this._layout.gamepad=[];for(const o in this._layout.components){const r=this._layout.components[o];this._layout.gamepad[r.gamepadIndices.button]=o}}this.profiles.length>=1&&this.profiles[0]==="htc-vive-focus-plus"&&this.inputSource.gamepad&&this.inputSource.gamepad.axes.length===4&&!this._layout.components["xr-standard-thumbstick"]&&(this._layout.components["xr-standard-thumbstick"]={type:"thumbstick",gamepadIndices:{xAxis:2,yAxis:3}})}return this._motioncontroller}).catch(t=>(this.inputSource&&console.warn("Couldn't initialize motion controller profile for ",this.inputSource,t),null))}}emitPointerDownEvent=!0;emitPointerUpEvent=!0;emitPointerMoveEvent=!0;pointerMoveDistanceThreshold=.03;pointerMoveAngleThreshold=.05;subscribeEvents(){this.xr.session.addEventListener("selectstart",this.onSelectStart),this.xr.session.addEventListener("selectend",this.onSelectEnd),this.xr.session.addEventListener("squeezestart",this.onSequeezeStart),this.xr.session.addEventListener("squeezeend",this.onSequeezeEnd)}unsubscribeEvents(){this.xr.session.removeEventListener("selectstart",this.onSelectStart),this.xr.session.removeEventListener("selectend",this.onSelectEnd),this.xr.session.removeEventListener("squeezestart",this.onSequeezeStart),this.xr.session.removeEventListener("squeezeend",this.onSequeezeEnd)}_selectButtonIndex=void 0;_squeezeButtonIndex=void 0;onSelectStart=e=>{if(!this.emitPointerDownEvent||this.inputSource!==e.inputSource)return;this.onUpdateFrame(e.frame),this._hasSelectEvent=!0;const t=this._layout?.selectComponentId,i=this._layout?.components[t]?.gamepadIndices?.button;i!==void 0&&(this._selectButtonIndex=i),!Wh&&(is&&B.DrawDirection(this.rayWorldPosition,F(0,.01,1).applyQuaternion(this.rayWorldQuaternion),16711680,10),this.emitPointerEvent(Pe.PointerDown,this._selectButtonIndex||0,"xr-standard-trigger",!0,e))};onSelectEnd=e=>{this.emitPointerUpEvent&&(Wh||this.inputSource===e.inputSource&&this.emitPointerEvent(Pe.PointerUp,this._selectButtonIndex||0,"xr-standard-trigger",!0,e))};onSequeezeStart=e=>{this.emitPointerDownEvent&&this.inputSource===e.inputSource&&(this._squeezeButtonIndex=this._layout?.components["xr-standard-squeeze"]?.gamepadIndices?.button,this._squeezeButtonIndex!==void 0&&(is&&B.DrawDirection(this.rayWorldPosition,F(0,.01,1).applyQuaternion(this.rayWorldQuaternion),255,10),this.emitPointerEvent(Pe.PointerDown,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,e)))};onSequeezeEnd=e=>{this.emitPointerUpEvent&&this.inputSource===e.inputSource&&this._squeezeButtonIndex!==void 0&&this.emitPointerEvent(Pe.PointerUp,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,e)};states={};updateInputEvents(){if(this.gamepad?.buttons){for(let e=0;e<this.gamepad.buttons.length;e++){const t=this.gamepad.buttons[e],i=this.states[e]||new V_;let n=null;this._isMxInk&&(e===4||e===5)?(t.value>0&&!i.pressed?(n="pointerdown",i.isDown=!0,i.isUp=!1):t.value===0&&i.pressed?(n="pointerup",i.isDown=!1,i.isUp=!0):i.pressed&&(n="pointermove",i.isDown=!1,i.isUp=!1),i.pressed=t.value>0,i.value=t.value):(t.pressed&&!i.pressed?(n="pointerdown",i.isDown=!0,i.isUp=!1):!t.pressed&&i.pressed?(n="pointerup",i.isDown=!1,i.isUp=!0):(i.isDown=!1,i.isUp=!1),i.pressed=t.pressed,i.value=t.value),this.states[e]=i;const o=e!==this._selectButtonIndex&&e!==this._squeezeButtonIndex;if(n!=null&&o){let r=this._layout?.gamepad[e];this._isMxInk&&e===4&&(r="stylus-touch"),this._isMxInk&&e===5&&(r="stylus-tip"),(is||Wh)&&console.log("Emitting pointer event",n,e,r,t.value,this.gamepad,this._layout),this.emitPointerEvent(n,e,r??"none",!1,null,t.value)}}if(this._isMetaQuestTouchController){const e=this.gamepad.buttons.length-1,t=this.states[e];if(t&&t.isDown){const i=this.context.menu;i.spatialMenuIsVisible?i.setSpatialMenuVisible(!1):this.context.menu.setSpatialMenuVisible(!0)}}}if(this.hand){const e=this.handObject;if(e){const t=e.joints["index-finger-tip"],i=e.joints["thumb-tip"];if(t&&i){const n=t.position.distanceTo(i.position);this._pinchPosition.lerpVectors(t.position,i.position,.5);const o=this.xr.context.mainCamera?.parent;if(o&&this._pinchPosition.applyMatrix4(o.matrixWorld),n!==0){const l=this.states.pinch||new V_,h=(.02+.01)*1.5;l.value=1-(n-.02)/h;const d=n<.02-.01,u=n>.02+.01;d&&!l.pressed?(Wh&&console.log("pinch start",n),l.isDown=!0,l.isUp=!1,l.pressed=!0):u&&l.pressed?(l.isDown=!1,l.isUp=!0,l.pressed=!1):(l.isDown=!1,l.isUp=!1),this.states.pinch=l}}}}}_didMoveLastFrame=!1;_lastPointerMovePosition=new c.Vector3;_lastPointerMoveQuaternion=new c.Quaternion;onUpdateMove(){if(!this.emitPointerMoveEvent)return;let e=!1;if(this._lastPointerMovePosition.distanceTo(this.gripWorldPosition)>this.pointerMoveDistanceThreshold*this.xr.rigScale&&(e=!0),e||this._lastPointerMoveQuaternion.angleTo(this.gripWorldQuaternion)>this.pointerMoveAngleThreshold&&(e=!0),e){this._didMoveLastFrame=!0,this._lastPointerMovePosition.copy(this.gripWorldPosition),this._lastPointerMoveQuaternion.copy(this.gripWorldQuaternion),is&&B.DrawLabel(this.rayWorldPosition.add(this.object.worldForward.multiplyScalar(.1)),"move",.01);let i=this.xr.context.input.getFirstPressedButtonForPointer(this.index);i===void 0&&(i=0);const n=this.gamepad?.buttons[i]?.value;this.emitPointerEvent("pointermove",i,"none",!1,null,n)}else this._didMoveLastFrame=!1}pointerInit;emitPointerEvent(e,t,i,n,o=null,r){if(!this.emitEvents){is&&e!==Pe.PointerMove&&console.warn("Pointer events are disabled for this controller",this.index,e,t);return}if(this.xr.mode==="immersive-vr"||this.xr.isPassThrough){this.pointerInit.origin=this,this.pointerInit.pointerId=this.getPointerId(t),this.pointerInit.pointerType=this.hand?"hand":"controller",this.pointerInit.button=t,this.pointerInit.buttonName=i,this.pointerInit.isPrimary=n,this.pointerInit.mode=this.inputSource.targetRayMode,this.pointerInit.ray=this.ray,this.pointerInit.device=this.object,this.pointerInit.pressure=r,this.pointerInit.clientX=this._rayPosition.x/this.xr.rigScale,this.pointerInit.clientY=this._rayPosition.y/this.xr.rigScale,this.pointerInit.clientZ=this._rayPosition.z/this.xr.rigScale;const a=U.Current;U.Current=this.xr.context,is&&e!=="pointermove"&&console.warn("Pointer event",e,t,i,{...this.pointerInit}),this.xr.context.input.createInputEvent(new as(e,o,this.pointerInit)),U.Current=a}}}class V_{isDown=!1;isUp=!1;pressed=!1;value=0}class $_{index;name;touched=!1;pressed=!1;value=0;isDown=!1;isUp=!1;constructor(e,t){this.index=e,this.name=t}}const rc=x("debugwebxr");class $f{controllerStates=[];userId;context;userStateEvtName;constructor(e,t){this.userId=e,this.context=t,this.userStateEvtName="xr-sync-user-state-"+e,this.context.connection.beginListen(this.userStateEvtName,this.onReceivedControllerState)}dispose(){this.context.connection.stopListen(this.userStateEvtName,this.onReceivedControllerState)}onReceivedControllerState=e=>{rc&&console.log(`XRSync: Received change for ${this.userId}: ${e.type} ${e.handedness}; tracked=${e.isTracking}`);let t=!1;for(let i=0;i<this.controllerStates.length;i++)if(this.controllerStates[i].index===e.index){this.controllerStates[i]=e,t=!0;break}t||this.controllerStates.push(e)};update(e){if(this.context.connection.isConnected!=!1){for(let t=this.controllerStates.length-1;t>=0;t--){const i=this.controllerStates[t];let n=!1;for(let o=0;o<e.controllers.length;o++)e.controllers[o].index===i.index&&(n=!0);n||(rc&&console.log(`XRSync: ${i.type} ${i.handedness} removed`,i.index),this.controllerStates.splice(t,1),this.sendControllerRemoved(i))}for(const t of e.controllers)this.updateControllerStates(t)}}onExitXR(e){for(const t of this.controllerStates)this.sendControllerRemoved(t);this.controllerStates.length=0}sendControllerRemoved(e){e.isTracking=!1,e.guid="",this.context.connection.send(this.userStateEvtName,e),this.context.connection.sendDeleteRemoteState(e.guid)}updateControllerStates(e){const t=this.controllerStates.find(i=>i.index===e.index);if(t){let i=!1;i||=t.isTracking!=e.isTracking,i&&(t.isTracking=e.isTracking,this.context.connection.send(this.userStateEvtName,t))}else{const i={guid:this.userId+"-"+e.index,isTracking:e.isTracking,handedness:e.side,index:e.index,type:e.hand?"hand":"controller"};this.controllerStates.push(i),this.context.connection.send(this.userStateEvtName,i),rc&&console.log(`XRSync: ${i.type} ${i.handedness} added`,i.index)}}}class N0{hasState(e){return e?this._states.has(e):!1}isTracking(e,t){if(!e)return;const i=this._states.get(e);return i?i.controllerStates.find(o=>o.handedness===t)?.isTracking||!1:void 0}getDeviceType(e,t){if(!e)return;const i=this._states.get(e);return i?i.controllerStates.find(o=>o.handedness===t)?.type||"unknown":void 0}context;constructor(e){this.context=e,this.context.connection.beginListen(K.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(K.LeftRoom,this.onLeftRoom),this.context.connection.beginListen(K.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.beginListen(K.UserLeftRoom,this.onOtherUserLeftRoom)}destroy(){this.context.connection.stopListen(K.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(K.LeftRoom,this.onLeftRoom),this.context.connection.stopListen(K.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.stopListen(K.UserLeftRoom,this.onOtherUserLeftRoom)}onJoinedRoom=()=>{if(this.context.connection.connectionId){this._states.has(this.context.connection.connectionId)||(rc&&console.log("XRSync: Local user joined room",this.context.connection.connectionId),this._states.set(this.context.connection.connectionId,new $f(this.context.connection.connectionId,this.context)));for(const e of this.context.connection.usersInRoom())this._states.has(e)||this._states.set(e,new $f(e,this.context))}};onLeftRoom=()=>{this.context.connection.connectionId&&(this._states.has(this.context.connection.connectionId)||(this._states.get(this.context.connection.connectionId)?.dispose(),this._states.delete(this.context.connection.connectionId)))};onOtherUserJoinedRoom=e=>{const t=e.userId;this._states.has(t)||(rc&&console.log("XRSync: Remote user joined room",t),this._states.set(t,new $f(t,this.context)))};onOtherUserLeftRoom=e=>{const t=e.userId;this._states.has(t)||(this._states.get(t)?.dispose(),this._states.delete(t))};_states=new Map;onUpdate(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.update(e)}onExitXR(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.onExitXR(e)}}class W_{_fadeToColorQuad;_fadeToColorMaterial;constructor(){this._fadeToColorMaterial=new c.MeshBasicMaterial({color:0,transparent:!0,depthTest:!1,fog:!1,side:c.DoubleSide}),this._fadeToColorQuad=new c.Mesh(new c.PlaneGeometry(10,10),this._fadeToColorMaterial)}dispose(){this._fadeToColorQuad.geometry.dispose(),this._fadeToColorMaterial.dispose()}update(e,t){const i=this._fadeToColorQuad,n=this._fadeToColorMaterial;i.parent!==e&&n.opacity>0?e.add(i):n.opacity===0&&i.removeFromParent(),i.layers.set(2),i.material=this._fadeToColorMaterial,i.position.z=-1,i.renderOrder=1/0;const o=this._requestedFadeValue;n.opacity=j.lerp(n.opacity,o,t/.03),Math.abs(n.opacity-o)<=.01&&this._transitionResolve&&(this._transitionResolve(),this._transitionResolve=null,this._transitionPromise=null,this._requestedFadeValue=0)}remove(){this._fadeToColorQuad.removeFromParent()}fadeTransition(){if(this._transitionPromise)return this._transitionPromise;this._requestedFadeValue=1;const e=new Promise(t=>{this._transitionResolve=t});return this._transitionPromise=e,e}_requestedFadeValue=0;_transitionPromise=null;_transitionResolve=null}class Ia{static _active=null;static get active(){return this._active}static _requestInFlight=!1;static async start(e,t){if(this._active)return console.error("Cannot start a new XR session while one is already active"),null;if(this._requestInFlight)return console.error("Cannot start a new XR session while a request is already in flight"),null;if("xr"in navigator&&navigator.xr){if(!t)return console.error("XRSessionInit must be provided"),null;this._requestInFlight=!0;const i=await navigator.xr.requestSession(e,t).catch(n=>{console.error("Failed to start temporary XR session:",n)});return i?(i.addEventListener("end",()=>{this._active=null}),this._requestInFlight?(this._requestInFlight=!1,this._active=new Ia(e,t,i),this._active):(i.end(),null)):(this._requestInFlight=!1,null)}return null}static async handoff(){return this._active?this._active.handoff():null}static async stop(){this._requestInFlight=!1,this._active&&(await this._active.end(),await vs(100)),this._active=null}_session;_mode;_init;get isAR(){return this._mode==="immersive-ar"}get isVR(){return this._mode==="immersive-vr"}_renderer;_camera;_scene;constructor(e,t,i){this._mode=e,this._init=t,this._session=i,this._session.addEventListener("end",this.onEnd),this._renderer=new c.WebGLRenderer({alpha:!0,antialias:!0}),this._renderer.outputColorSpace="srgb",this._renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),this._renderer.setSize(window.innerWidth,window.innerHeight,!0),exports.DeviceUtilities.isNeedleAppClip()&&window.requestAnimationFrame(()=>{const n=Math.min(2,window.devicePixelRatio),o=Math.floor(window.innerWidth*n),r=Math.floor(window.innerHeight*n);this._renderer.domElement.width=o,this._renderer.domElement.height=r}),this._renderer.setAnimationLoop(this.onFrame),this._renderer.xr.setSession(i),this._renderer.xr.enabled=!0,this._camera=new c.PerspectiveCamera,this._scene=new c.Scene,this._scene.fog=new c.Fog(4473924,10,250),this._scene.add(this._camera),this.setupScene()}end(){return this._session?this._session.end():Promise.resolve()}async handoff(){if(!this._session)throw new Error("Cannot handoff a session that has already ended");const e={session:this._session,mode:this._mode,init:this._init};return await this.onBeforeHandoff(),this.onEnd(),this._session=null,e}onEnd=()=>{this._session?.removeEventListener("end",this.onEnd),this._renderer.setAnimationLoop(null),this._renderer.dispose(),this._scene.clear()};_lastTime=0;_frames=0;onFrame=(e,t)=>{const i=e-this._lastTime;this.update(e,i),this._camera.parent!==this._scene&&this._scene.add(this._camera),this._renderer.render(this._scene,this._camera),this._lastTime=e,this._frames++};_roomFlyObjects=[];_logoObject=null;get _logoDistance(){return this.isAR?.3:5}get _logoScale(){return this.isAR?.04:1}update(e,t){const i=e*4e-4;for(let r=0;r<this._roomFlyObjects.length;r++){const a=this._roomFlyObjects[r];a.position.y+=Math.sin(i+r*.5)*.005,a.rotateY(.002)}const n=this._logoObject,o=this._renderer.xr.getCamera();if(n){const r=new c.Vector3;o.getWorldDirection(r);const a=o.position.clone().addScaledVector(r,this._logoDistance),l=this.isAR?.005:1e-5;n.position.lerp(a,this._frames<=2?1:t*l),n.lookAt(this._camera.position)}}async onBeforeHandoff(){await vs(1e3),this._scene.clear()}setupScene(){this._scene.background=new c.Color(0);let e=La;if(Wn()){const d=document.querySelector("needle-engine");if(d){const u=d.getAttribute("logo-src");u?.length&&(e=u,A()&&console.debug("[XR] Using custom loading logo from license:",e))}}const t=this._logoObject=new c.Mesh(new c.PlaneGeometry(1,1,1,1),new c.MeshBasicMaterial({transparent:!0,side:2}));t.scale.multiplyScalar(this._logoScale*window.devicePixelRatio),t.renderOrder=1e3,t.material.opacity=0,this._scene.add(t);const i=document.createElement("canvas"),n=i.getContext("2d"),o=new Image,r=d=>{if(!n)return;t.material.opacity=1;const u=1024;i.width=u,i.height=u,n.imageSmoothingQuality="high";const p=u*.19,m=o.width/o.height;{const w=i.height-p*1.5,R=w*m,O=(i.width-R)/2;n.drawImage(o,O,0,R,w)}const y=u*.12,_="Loading...";n.shadowBlur=0,n.fillStyle=this.isAR?"white":"rgba(255,255,255,0.4)",n.font=`${y}px Arial`,n.shadowBlur=u*.02,n.shadowColor="rgba(0,0,0,0.5)",n.shadowOffsetX=0,n.shadowOffsetY=0;const g=n.measureText(_);n.fillText(_,i.width/2-g.width/2,i.height-p/4),n.font=`${y}px Arial`,n.fillText(_,i.width/2-g.width/2,i.height-p/4);const v=new c.TextureLoader().load(i.toDataURL());v.generateMipmaps=!0,v.colorSpace="srgb",v.anisotropy=4;const b=i.width/i.height;t.scale.x=this._logoScale*b*window.devicePixelRatio,t.scale.y=this._logoScale*window.devicePixelRatio,t.material.map=v,t.material.needsUpdate=!0};o.onload=()=>r(),o.onerror=d=>{console.error("Failed to load temporary XR logo:",e,d),o.src=La},o.crossOrigin="anonymous",o.src=e;const a=new c.DirectionalLight(16777215,1);a.position.set(0,20,0),a.castShadow=!1,this._scene.add(a);const l=new c.DirectionalLight(16777215,1);l.position.set(0,-1,0),l.castShadow=!1,this._scene.add(l);const h=new c.PointLight(16777215,1,100,1);if(h.position.set(0,2,0),h.castShadow=!1,h.distance=200,this._scene.add(h),this.isAR===!1)for(let u=0;u<100;u++){const p=new c.MeshStandardMaterial({color:2236962,metalness:1,roughness:.8}),m=$a.Sphere,y=wo.createPrimitive(m,{material:p});y.position.x=j.random(-50,50),y.position.y=j.random(-2,50),y.position.z=j.random(-50,50),y.rotation.x=j.random(0,Math.PI*2),y.rotation.y=j.random(0,Math.PI*2),y.rotation.z=j.random(0,Math.PI*2),y.scale.multiplyScalar(.5+Math.random()*10);const _=y.position.distanceTo(this._camera.position)-y.scale.x;_<10&&(y.position.z+=5,y.position.multiplyScalar(1+1/_)),this._roomFlyObjects.push(y),this._scene.add(y)}}}var Sc;(s=>{const e=[];function t(){e?.length||A()&&console.warn("No USDZ exporters found – cannot export USDZ for QuickLook.");for(const o of e)o.exportAndOpen();return!0}s.exportAndOpen=t;function i(o){e.push(o)}s.registerExporter=i;function n(o){if(!e)return;const r=e.indexOf(o);r>=0&&e.splice(r,1)}s.unregisterExporter=n})(Sc||(Sc={}));const Ue=x("debugwebxr"),G_=x("stats");let Wf=0;function mP(s){let e=null;const t=s;return t.getAROverlayContainer?e=t.getAROverlayContainer():e=s,e}gP();async function gP(){let s="immersive-vr";try{if(exports.DeviceUtilities.isNeedleAppClip()?s="immersive-ar":await navigator.xr?.isSessionSupported("immersive-vr")||(s="immersive-ar"),!await navigator.xr?.isSessionSupported("immersive-ar")&&s==="immersive-ar")return}catch(e){console.debug("[NeedleXRSession:granted] Error while checking XR support:",e);return}if(x("debugasap")){let e=globalThis["needle:XRSession"];if(e instanceof Promise){delete globalThis["needle:XRSession"],ce.addContextCreatedCallback(async t=>{if(!e)return;ba(!0);const i=await e;if(i){const n=q.getDefaultSessionInit(s);q.setSession(s,i,n,t.context)}else console.error("[NeedleXRSession:granted] ASAP session was rejected");e=void 0});return}}if("xr"in navigator){if(/WebXRViewer\//i.test(navigator.userAgent)){console.warn("WebXRViewer does not support addEventListener");return}navigator.xr?.addEventListener("sessiongranted",async()=>{const e=sessionStorage.getItem("needle_xr_session_mode"),t=sessionStorage.getItem("needle_xr_session_init")??null,i=t?JSON.parse(t):null;let n=null;if(V0()&&(await Ia.start(e||s,i||q.getDefaultSessionInit(s)).catch(o=>console.warn("[NeedleXRSession:granted] TemporaryXRContext start failed:",o)),await bP(),n=await Ia.handoff()),n)q.setSession(n.mode,n.session,n.init,U.Current);else if(e&&t){console.log("[NeedleXRSession:granted] Restore last session");const o=JSON.parse(t);q.start(e,o).catch(r=>console.warn(r))}else q.start(s).catch(o=>console.warn("[NeedleXRSession:granted] failed:",o))},{once:!0})}}function yP(s,e){sessionStorage.setItem("needle_xr_session_mode",s),sessionStorage.setItem("needle_xr_session_init",JSON.stringify(e))}function _P(){sessionStorage.removeItem("needle_xr_session_mode"),sessionStorage.removeItem("needle_xr_session_init")}const pg=new Set;ce.registerCallback(ae.ContextCreationStart,async s=>{pg.add(s.context)});ce.registerCallback(ae.ContextCreated,async s=>{pg.delete(s.context);const e=s.context?.domElement.getAttribute("autostart")||null;vP(e)});function V0(){return pg.size>0}function bP(){return new Promise(s=>{const e=Date.now(),t=setInterval(()=>{(!V0()||Date.now()-e>6e4)&&(clearInterval(t),s())},100)})}exports.DeviceUtilities.isDesktop()&&A()&&window.addEventListener("keydown",s=>{(s.key==="x"||s.key==="Escape")&&q.active&&q.stop()});function vP(s){s&&s?.toLowerCase()==="ar"&&fn.registerWaitForInteraction(()=>{q.start("ar")})}const Gh=Symbol("initial-fov"),Gf=Symbol("initial-near");class q{static _sync=null;static getXRSync(e){return this._sync||(this._sync=new N0(e)),this._sync}static get currentSessionRequest(){return this._currentSessionRequestMode}static _currentSessionRequestMode=null;static get active(){return this._activeSession}static get activeMode(){return this._activeSession?.mode??null}static get xrSystem(){return"xr"in navigator?navigator.xr:void 0}static isXRSupported(){return Promise.all([this.isVRSupported(),this.isARSupported()]).then(e=>e.some(t=>t)).catch(()=>!1)}static isVRSupported(){return this.isSessionSupported("immersive-vr")}static isARSupported(){return this.isSessionSupported("immersive-ar")}static isSessionSupported(e){return this.xrSystem?.isSessionSupported(e).catch(t=>(Ue&&console.error(t),!1))??Promise.resolve(!1)}static _currentSessionRequest;static _activeSession;static onSessionRequestStart(e){this._sessionRequestStartListeners.push(e)}static offSessionRequestStart(e){const t=this._sessionRequestStartListeners.indexOf(e);t>=0&&this._sessionRequestStartListeners.splice(t,1)}static _sessionRequestStartListeners=[];static onSessionRequestEnd(e){this._sessionRequestEndListeners.push(e)}static offSessionRequestEnd(e){const t=this._sessionRequestEndListeners.indexOf(e);t>=0&&this._sessionRequestEndListeners.splice(t,1)}static _sessionRequestEndListeners=[];static onXRSessionStart(e){this._xrStartListeners.push(e)}static offXRSessionStart(e){const t=this._xrStartListeners.indexOf(e);t>=0&&this._xrStartListeners.splice(t,1)}static _xrStartListeners=[];static onXRSessionEnd(e){this._xrEndListeners.push(e)}static offXRSessionEnd(e){const t=this._xrEndListeners.indexOf(e);t>=0&&this._xrEndListeners.splice(t,1)}static _xrEndListeners=[];static onControllerAdded(e){this._controllerAddedListeners.push(e)}static offControllerAdded(e){const t=this._controllerAddedListeners.indexOf(e);t>=0&&this._controllerAddedListeners.splice(t,1)}static _controllerAddedListeners=[];static onControllerRemoved(e){this._controllerRemovedListeners.push(e)}static offControllerRemoved(e){const t=this._controllerRemovedListeners.indexOf(e);t>=0&&this._controllerRemovedListeners.splice(t,1)}static _controllerRemovedListeners=[];static offerSession(e,t,i){return"xr"in navigator&&navigator.xr&&"offerSession"in navigator.xr?(typeof navigator.xr.offerSession=="function"&&(console.log("WebXR offerSession is available - requesting mode: "+e),t=="default"&&(t=this.getDefaultSessionInit(e)),navigator.xr.offerSession(e,{...t}).then(n=>q.setSession(e,n,t,i)).catch(n=>{console.log("XRSession offer rejected (perhaps because another call to offerSession was made or a call to requestSession was made)")})),!0):!1}static getDefaultSessionInit(e){switch(e){case"immersive-ar":const t=["anchors","local-floor","layers","dom-overlay","hit-test","unbounded"];return exports.DeviceUtilities.isVisionOS()||t.push("hand-tracking"),{optionalFeatures:t};case"immersive-vr":const i=["local-floor","bounded-floor","high-fixed-foveation-level","layers"];return exports.DeviceUtilities.isVisionOS()||i.push("hand-tracking"),{optionalFeatures:i};default:return console.warn("No default session init for mode",e),{}}}static async start(e,t,i){if(t||(t={}),exports.DeviceUtilities.isiOS()){const a=await this.isARSupported().catch(()=>!1);if(exports.DeviceUtilities.isVisionOS()&&!a&&(e==="ar"||e==="immersive-ar")&&(e="quicklook"),e==="quicklook")return ni.sendEvent(U.Current,"xr",{action:"quicklook_export",source:"NeedleXRSession.start"}),Sc.exportAndOpen(),null;if(!a&&(e==="immersive-ar"||e==="ar")){this.invokeSessionRequestStart("immersive-ar",t);const l=new URL("https://appclip.apple.com/id?p=tools.needle.launch-app.Clip");l.searchParams.set("url",location.href);const h=l.toString();ni.sendEvent(U.Current,"xr",{action:"app_clip_launch",source:"NeedleXRSession.start",url:h});const d=window.top||window;try{console.debug("iOS device detected - opening Needle App Clip for AR experience",{mode:e,init:t,url:l}),d.location.href=h}catch(u){console.warn("Error navigating to AppClip "+h+`
|
|
887
887
|
`,u),window!==window.top?window.open(h,"_blank"):window.location.href=h}return setTimeout(()=>{this.invokeSessionRequestEnd("immersive-ar",t||{},null)},3e3),null}}if(e==="quicklook")return console.warn("QuickLook mode is only supported on iOS devices"),null;if(e=="ar"&&(e="immersive-ar"),A()&&x("debugxrpreroom"))return console.warn("Debug: Starting temporary XR session"),await Ia.start(e,t||q.getDefaultSessionInit(e)),null;if(this._currentSessionRequest)return console.warn("A XRSession is already being requested"),(Ue||A())&&fe("A XRSession is already being requested"),this._currentSessionRequest.then(()=>this._activeSession);if(this._activeSession)return console.error("A XRSession is already running"),this._activeSession;if(i||(i=U.Current),i||(i=ce.All[0]),!i)throw new Error("No Needle Engine Context found");switch(e){case"immersive-ar":{if(await this.xrSystem?.isSessionSupported("immersive-ar")!==!0)return console.error(e+" is not supported by this browser."),null;const l=this.getDefaultSessionInit(e),h=mP(i.domElement);h&&!exports.DeviceUtilities.isQuest()&&(l.domOverlay={root:h},l.optionalFeatures.push("dom-overlay")),t={...l,...t}}break;case"immersive-vr":{if(await this.xrSystem?.isSessionSupported("immersive-vr")!==!0)return console.error(e+" is not supported by this browser."),null;t={...this.getDefaultSessionInit(e),...t}}break;default:console.warn("No default session init for mode",e);break}t.optionalFeatures??=[],t.requiredFeatures??=[],await Ia.stop();const n=e=="immersive-ar"?i.scripts_immersive_ar:i.scripts_immersive_vr;Ue?console.log(`%cRequesting ${e} session`,"font-weight:bold;",t,n):console.log(`%cRequesting ${e} session`,"font-weight:bold;");for(const a of n)a.onBeforeXR&&a.activeAndEnabled&&!a.destroyed&&a.onBeforeXR(e,t);this.invokeSessionRequestStart(e,t),Ue&&Se("Requesting "+e+" session ("+Date.now()+")"),ni.sendEvent(U.Current,"xr",{action:"session_request",mode:e,features:(t.requiredFeatures??[]).concat(t.optionalFeatures??[]).join(","),source:"NeedleXRSession.start"}),this._currentSessionRequest=navigator?.xr?.requestSession(e,t),this._currentSessionRequestMode=e;const o=await this._currentSessionRequest?.catch(a=>{console.error(a,"Code: "+a?.code),a?.code===9&&fe("Couldn't start XR session. Make sure you allow the required permissions."),console.log("If the specified XR configuration is not supported (e.g. entering AR doesnt work) - make sure you access the website on a secure connection (HTTPS) and your device has the required permissions (e.g. camera access)"),location.protocol==="http:"&&fe("XR requires a secure connection (HTTPS)")});return this._currentSessionRequest=void 0,this._currentSessionRequestMode=null,this.invokeSessionRequestEnd(e,t,o),o?this.setSession(e,o,t,i):(console.warn("XR Session request was rejected"),null)}static invokeSessionRequestStart(e,t){for(const i of this._sessionRequestStartListeners)i({mode:e,init:t})}static invokeSessionRequestEnd(e,t,i){for(const n of this._sessionRequestEndListeners)n({mode:e,init:t,newSession:i||null})}static setSession(e,t,i,n){if(this._activeSession)return console.error("A XRSession is already running"),this._activeSession;const o=e=="immersive-ar"?n.scripts_immersive_ar:n.scripts_immersive_vr;return this._activeSession=new q(e,t,n,{scripts:o,controller_added:this._controllerAddedListeners,controller_removed:this._controllerRemovedListeners,init:i}),t.addEventListener("end",this.onEnd),Ue?console.log(`%cStarted ${e} session`,"font-weight:bold;",o):console.log(`%cStarted ${e} session`,"font-weight:bold;"),this._activeSession}static $_stop_request=Symbol();static stop(){const e=this._activeSession;e&&(e[this.$_stop_request]===void 0?(Ue&&console.log("[NeedleXRSession] Stopping XR Session... (new)"),e[this.$_stop_request]=setTimeout(()=>{e.end()})):Ue&&console.warn("[NeedleXRSession] XR Session stop already requested"))}static onEnd=()=>{Ue&&console.log("XR Session ended"),this._activeSession=null};context;get sync(){return q._sync}get running(){return!this._ended&&this.session!=null}session;mode;get interactionMode(){return this.session.interactionMode}get visibilityState(){return this.session.visibilityState}get isVisibleBlurred(){return this.session.visibilityState==="visible-blurred"}get isSystemKeyboardSupported(){return this.session.isSystemKeyboardSupported}get environmentBlendMode(){return this.session.environmentBlendMode}get frame(){return this.context.xrFrame}controllers=[];get leftController(){return this.controllers.find(e=>e.side==="left")}get rightController(){return this.controllers.find(e=>e.side==="right")}getController(e){return typeof e=="number"?this.controllers[e]||null:this.controllers.find(t=>t.side===e)||null}get isPassThrough(){return!!(this.environmentBlendMode!=="opaque"&&this.interactionMode==="world-space"||this.mode==="immersive-ar"&&this.environmentBlendMode!=="opaque"&&this.controllers.some(e=>e.inputSource.targetRayMode==="tracked-pointer")||A()&&exports.DeviceUtilities.isDesktop()&&this.mode==="immersive-ar")}get isAR(){return this.mode==="immersive-ar"}get isVR(){return this.mode==="immersive-vr"}get isScreenBasedAR(){return this.isAR&&!this.isPassThrough}get posePosition(){return this._transformPosition}get poseOrientation(){return this._transformOrientation}get referenceSpace(){return this.context.renderer.xr.getReferenceSpace()}get viewerPose(){return this._viewerPose}get isTrackingImages(){if(this.frame&&"getImageTrackingResults"in this.frame&&typeof this.frame.getImageTrackingResults=="function")try{const e=this.frame.getImageTrackingResults();for(const t of e){const i=t.trackingState;if(i==="tracked"||i==="emulated")return!0}}catch{return!1}return!1}get rig(){const e=this._rigs[0]??null;return e?.gameObject&&fr(e.gameObject)||e?.isActive===!1?(this.updateActiveXRRig(),this._rigs[0]??null):e}_rigScale=1;_lastRigScaleUpdate=-1;get rigScale(){return this._rigs[0]?(this._lastRigScaleUpdate!==this.context.time.frame&&(this._lastRigScaleUpdate=this.context.time.frame,this._rigScale=this._rigs[0].gameObject.worldScale.x),this._rigScale):1}addRig(e){this._rigs.indexOf(e)>=0||(e.priority===void 0&&(e.priority=0),this._rigs.push(e),this.updateActiveXRRig())}removeRig(e){const t=this._rigs.indexOf(e);t!==-1&&(this._rigs.splice(t,1),this.updateActiveXRRig())}setRigActive(e){const t=this._rigs.indexOf(e),i=this._rigs[0];this._rigs.splice(t,1),this._rigs.unshift(e),e.priority=i?.priority??0,this.updateActiveXRRig()}getUserOffsetInRig(){const e=this.context.mainCamera?.position;if(!e||!this.rig)return F(0,0,0);const t=F(e);return t.x*=-1,t.z*=-1,t.applyQuaternion(ei(this.rig.gameObject.quaternion)),t}updateActiveXRRig(){const e=this._rigs[0]??null;this._defaultRig.gameObject.parent!==this.context.scene&&this.context.scene.add(this._defaultRig.gameObject),this._defaultRig.gameObject.visible=!0,this._rigs.includes(this._defaultRig)||this._rigs.push(this._defaultRig);let t=this._rigs[0];t&&t.priority===void 0&&(t.priority=0);for(let i=1;i<this._rigs.length;i++){const n=this._rigs[i];if(n.isActive){if(fr(n.gameObject)){this._rigs.splice(i,1),i--;continue}(!t||t.isActive===!1||n.priority!==void 0&&n.priority>t.priority)&&(t=n)}}if(e!==t){const i=this._rigs.indexOf(t);i>=0&&this._rigs.splice(i,1),this._rigs.unshift(t)}Ue&&(e===t?console.log("Updated Active XR Rig:",t,"prev:",e):console.log("Updated Active XRRig:",t," (the same as before)"))}_rigs=[];_viewerHitTestSource=null;getHitTest(e){if(e)return this.getControllerHitTest(e);if(!this._viewerHitTestSource)return null;const t=this._viewerHitTestSource,i=this.frame.getHitTestResults(t);if(i.length>0){const n=i[0];return this.convertHitTestResult(n)}return null}getControllerHitTest(e){const t=e.getHitTestSource();if(!t)return null;const i=this.frame.getHitTestResultsForTransientInput(t);for(const n of i)if(n.inputSource===e.inputSource)for(const o of n.results)return this.convertHitTestResult(o);return null}convertHitTestResult(e){const t=this.context.renderer.xr.getReferenceSpace(),i=t&&e.getPose(t);if(i){const n=F(i.transform.position),o=ei(i.transform.orientation),r=this.context.mainCamera;if(r?.parent!==this._cameraRenderParent&&n.applyMatrix4(xa),r?.parent){n.applyMatrix4(r.parent.matrixWorld),o.multiply(Ii);const a=pe(r.parent);a.premultiply(Ii),o.premultiply(a)}return{hit:e,position:n,quaternion:o}}return null}convertSpace(e){const t=F(e.position);t.applyMatrix4(xa);const i=ei(e.orientation);return i.premultiply(Ii),{position:t,quaternion:i}}_defaultRig;_xr_scripts;_xr_update_scripts=[];_inactive_scripts=[];_scripts_in_xr=new Set;_controllerAdded;_controllerRemoved;_originalCameraWorldPosition;_originalCameraWorldRotation;_originalCameraWorldScale;_originalCameraParent;_mainCamera=null;constructor(e,t,i,n){yP(e,n.init),this.session=t,this.mode=e,this.context=i,(Ue||x("console"))&&ba(!0),this._xr_scripts=[...n.scripts],this._xr_update_scripts=this._xr_scripts.filter(o=>typeof o.onUpdateXR=="function"),this._controllerAdded=n.controller_added,this._controllerRemoved=n.controller_removed,Ss(this.onBefore,ge.LateUpdate),this.context.pre_render_callbacks.push(this.onBeforeRender),this.context.post_render_callbacks.push(this.onAfterRender),(n.init.optionalFeatures?.includes("hit-test")||n.init.requiredFeatures?.includes("hit-test"))&&t.requestReferenceSpace("viewer").then(o=>t.requestHitTestSource?.call(t,{space:o})?.then(r=>this._viewerHitTestSource=r).catch(r=>console.error(r))).catch(o=>console.error(o)),this.context.mainCamera&&(this._originalCameraWorldPosition=Y(this.context.mainCamera,new c.Vector3),this._originalCameraWorldRotation=pe(this.context.mainCamera,new c.Quaternion),this._originalCameraWorldScale=je(this.context.mainCamera,new c.Vector3),this._originalCameraParent=this.context.mainCamera.parent,this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera[Gh]=this.context.mainCamera.fov)),this._defaultRig=new hP,this.context.scene.add(this._defaultRig.gameObject),this.addRig(this._defaultRig);for(let o=0;o<t.inputSources.length;o++){const r=t.inputSources[o];if(!r.handedness){console.warn("Input source in xr session has no handedness - ignoring",o);continue}this.onInputSourceAdded(r)}this.session.addEventListener("end",this.onEnd),this.session.addEventListener("inputsourceschange",o=>{for(const r of o.removed)this.disconnectInputSource(r);for(const r of o.added)this.onInputSourceAdded(r)}),this.context.xr=this,this.context.renderer.xr.setSession(this.session).then(this.onRendererSessionSet).catch(o=>{A()&&o instanceof TypeError&&typeof XRWebGLBinding<"u"?console.error(`XRWebGLBinding failed (${o.message}).
|
|
888
888
|
See https://github.com/meta-quest/immersive-web-emulator/issues/80`):console.error("renderer.xr.setSession failed:",o)}),"controllerAutoUpdate"in this.context.renderer.xr?(console.debug("Disabling three.js controllerAutoUpdate"),this.context.renderer.xr.controllerAutoUpdate=!1):Ue&&console.warn("controllerAutoUpdate is not available in three.js - cannot disable it"),exports.DeviceUtilities.isNeedleAppClip()&&window.requestAnimationFrame(()=>{const o=this.context.renderer.domElement,r=window.devicePixelRatio||1,a=o.width,l=o.height,h=Math.floor(window.innerWidth*r),d=Math.floor(window.innerHeight*r);(Math.abs(a-h)>2||Math.abs(l-d)>2)&&(o.width=h,o.height=d,console.debug("Applied DPR scaling for Needle AppClip XR session",r,o.width,o.height))})}onRendererSessionSet=()=>{this.running&&(this.context.renderer.xr.enabled=!0,this.context.renderer.xr.updateCamera(this.context.mainCamera),this.context.mainCameraComponent?.applyClearFlags())};onInputSourceAdded=e=>{if(e.targetRayMode==="screen")return;let t=0;for(let n=0;n<this.session.inputSources.length;n++)if(this.session.inputSources[n]===e){t=n;break}if(this.controllers.find(n=>n.inputSource===e)){console.debug("Controller already exists for input source",t);return}else if(this._newControllers.find(n=>n.inputSource===e)){console.debug("Controller already registered for input source",t);return}const i=new fg(this,e,t);this._newControllers.push(i)};disconnectInputSource(e){const t=(o,r)=>{if(o.inputSource===e){Ue&&console.log("Disconnecting controller",o.index);const a=r.indexOf(o);a>=0&&r.splice(a,1),this.invokeControllerEvent(o,this._controllerRemoved,"removed");const l={xr:this,controller:o,change:"removed"};for(const h of this._xr_scripts)h.onXRControllerRemoved&&h.onXRControllerRemoved(l);o.onDisconnected()}},i=[...this.controllers];for(let o=i.length-1;o>=0;o--){const r=i[o];t(r,this.controllers)}const n=[...this._newControllers];for(let o=n.length-1;o>=0;o--){const r=n[o];t(r,this._newControllers)}}end(){this._ended||this.session.end().catch(e=>console.warn(e))}_ended=!1;_newControllers=[];onEnd=e=>{if(this._ended)return;this._ended=!0,console.debug("XR Session ended"),ni.sendEvent(U.Current,"xr",{action:"session_end",mode:this.mode,source:"NeedleXRSession.onEnd"}),_P(),this.onAfterRender(),this.revertCustomForward(),this._didStart=!1,this._previousCameraParent=null,this.requestedCameraNearPlane=null,vo(this.onBefore,ge.LateUpdate);const t=this.context.pre_render_callbacks.indexOf(this.onBeforeRender);t>=0&&this.context.pre_render_callbacks.splice(t,1);const i=this.context.post_render_callbacks.indexOf(this.onAfterRender);i>=0&&this.context.post_render_callbacks.splice(i,1),this.context.xr=null,this.context.renderer.xr.enabled=!1,this.context.pre_update_oneshot_callbacks.push(()=>{this.context.mainCameraComponent?.applyClearFlags(),this.context.mainCameraComponent?.applyClippingPlane()}),R0({session:this});for(const o of q._xrEndListeners)o({xr:this});const n=[...this.controllers];for(let o=0;o<n.length;o++)this.disconnectInputSource(n[o].inputSource);this.controllers.length=0,this._newControllers.length=0;for(const o of this._xr_scripts)this._scripts_in_xr.delete(o),o?.onLeaveXR?.({xr:this});this._scripts_in_xr.clear(),this.sync?.onExitXR(this),this.context.mainCamera&&(this._originalCameraParent?.add(this.context.mainCamera),this._originalCameraWorldPosition&&at(this.context.mainCamera,this._originalCameraWorldPosition),this._originalCameraWorldRotation&&dn(this.context.mainCamera,this._originalCameraWorldRotation),this._originalCameraWorldScale&&Ea(this.context.mainCamera,this._originalCameraWorldScale),this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera[Gh]&&(this.context.mainCamera.fov=this.context.mainCamera[Gh],this.context.mainCamera[Gh]=0),this.context.mainCamera[Gf]&&(this.context.mainCamera.near=this.context.mainCamera[Gf],this.context.mainCamera[Gf]=0))),this.context.requestSizeUpdate(),this._defaultRig.gameObject.removeFromParent(),ba(!1)};_didStart=!1;onBefore=e=>{const t=e.xrFrame;if(!t)return;if(this.context.xr=this,this.context.mainCameraComponent&&this.context.mainCameraComponent!==this._mainCamera&&(this._mainCamera=this.context.mainCameraComponent),this.rig?.isActive==!1&&(Ue&&console.warn("Latest rig is not active - trying to activate a different rig",this.rig),this.updateActiveXRRig()),this.rig){const n=this._mainCamera?.gameObject??this.context.mainCamera;n&&(n.parent===this._cameraRenderParent?this._cameraRenderParent.parent:n.parent)!==this.rig.gameObject&&this.rig.gameObject.add(n)}this.internalUpdateState(),this.applyCustomForward();const i={xr:this};if(this._didStart){if(this.context.new_scripts_xr.length>0){const n=[...this.context.new_scripts_xr];for(let o=0;o<n.length;o++){const r=this.context.new_scripts_xr[o];if(!r||r.destroyed||r.supportsXR?.(this.mode)==!1){this.context.new_scripts_xr.splice(o,1);continue}if(!r.activeAndEnabled){this.context.new_scripts_xr.splice(o,1),this.markInactive(r);continue}if(this.addScript(r)){this.invokeCallback_EnterXR(r);for(const a of this.controllers)this.invokeCallback_ControllerAdded(r,a)}}}}else{if(this._didStart=!0,this.mode==="immersive-vr"){const o=ri(this.context.scene.children);if(o){const r=o.getSize(F());if(r.length()>0){const a=this._defaultRig.gameObject;a.position.set(o.min.x+r.x*.5,o.min.y,o.max.z+r.z*.5+1.5);const l=o.getCenter(F());l.y=a.position.y,a.lookAt(l)}}}E0({session:this}),vr();for(const o of q._xrStartListeners)o(i);const n=[...this._xr_scripts];Ue&&console.log("NeedleXRSession start, handle scripts:",n);for(const o of n){if(o.destroyed){this._script_to_remove.push(o);continue}if(!o.activeAndEnabled){this.markInactive(o);continue}this.invokeCallback_EnterXR(o);for(const r of this.controllers)this.invokeCallback_ControllerAdded(o,r)}}this.syncCameraCullingMask();for(const n of this.controllers)n.onUpdate(t);if(this._newControllers.length>0){const n=[...this._newControllers];this._newControllers.length=0;for(const o of n){if(!o.connected){console.warn("New controller is not connected",o);continue}this.controllers.push(o);for(const r of this._xr_scripts){if(r.destroyed){this._script_to_remove.push(r);continue}r.activeAndEnabled!==!1&&this.invokeCallback_ControllerAdded(r,o)}}this.controllers.sort((o,r)=>o.index-r.index)}Ue&&this.context.time.frame%30===0&&this.controllers.length<=0&&this.session.inputSources.length>0&&(ba(!0),console.error("XRControllers are not added but inputSources are present"));for(let n=this._xr_scripts.length-1;n>=0;n--){const o=this._xr_scripts[n];if(o.destroyed===!0){this._script_to_remove.push(o);continue}if(o.activeAndEnabled===!1){this.markInactive(o);continue}}for(const n of this._xr_update_scripts)n.destroyed||n.activeAndEnabled===!1||n.onUpdateXR&&n.onUpdateXR(i);if(this.handleInactiveScripts(),this._script_to_remove.length>0){const n=[...new Set(this._script_to_remove)];this._script_to_remove.length=0;for(const o of n)!o.destroyed&&this.running&&o.onLeaveXR?.(i),this.removeScript(o)}this.sync?.onUpdate(this),this.onRenderDebug()};onRenderDebug(){if(Ue)for(const e of this.controllers)e.onRenderDebug();if((Ue||G_)&&this.rig&&(Wf++,Wf>=20)){const e=this.rig.gameObject.worldPosition,t=this.rig.gameObject.worldForward;e.add(t.multiplyScalar(1.5));const i=this.rig.gameObject.worldUp;e.add(i.multiplyScalar(2.5));let n="";if(n+=`${this.context.time.smoothedFps.toFixed(0)} FPS`,n+=`, calls: ${this.context.renderer.info.render.calls}, tris: ${this.context.renderer.info.render.triangles.toLocaleString()}`,Ue||G_)for(const o of this.controllers)n+=`
|
|
889
|
-
${o.hand?"hand":"ctrl"} ${o.inputSource.handedness}[${o.index}] con:${o.connected} tr:${o.isTracking} hts:${o.hasHitTestSource?"yes":"no"}`;Wf=0,B.DrawLabel(e,n,void 0,1/60*20)}}onBeforeRender=()=>{this.context.mainCamera&&(this.updateFade(this.context.mainCamera),this.requestedCameraNearPlane!==null&&this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera.near=this.requestedCameraNearPlane,this.requestedCameraNearPlane=null))};onAfterRender=()=>{if(this.onUpdateFade_PostRender(),exports.DeviceUtilities.isDesktop()||!this._renderOnceOnDevice){const e=this.context.renderer;if(e.xr.isPresenting&&this.context.mainCamera){this._renderOnceOnDevice=!0;const t=e.xr.enabled,i=e.getRenderTarget(),n=this.context.scene.background;e.xr.enabled=!1,e.setRenderTarget(null),this.isPassThrough&&(this.context.scene.background=null),this.context.composer?this.context.composer.render(this.context.time.deltaTime):e.render(this.context.scene,this.context.mainCamera),e.xr.enabled=t,e.setRenderTarget(i),this.context.scene.background=n}}};addScript(e){return this._xr_scripts.includes(e)?!1:(Ue&&console.log("Register new XRScript",e),this._xr_scripts.push(e),typeof e.onUpdateXR=="function"&&this._xr_update_scripts.push(e),!0)}markInactive(e){if(!(this._inactive_scripts.indexOf(e)>=0)){this.removeScript(e,!1),this._inactive_scripts.push(e);for(const t of this.controllers)this.invokeCallback_ControllerRemoved(e,t);this.invokeCallback_LeaveXR(e)}}handleInactiveScripts(){if(this._inactive_scripts.length>0)for(let e=this._inactive_scripts.length-1;e>=0;e--){const t=this._inactive_scripts[e];if(t.activeAndEnabled&&(this._inactive_scripts.splice(e,1),this.addScript(t))){this.invokeCallback_EnterXR(t);for(const i of this.controllers)this.invokeCallback_ControllerAdded(t,i)}}}_script_to_remove=[];removeScript(e,t=!0){Ue&&console.log("Remove XRScript",e);const i=this._xr_scripts.indexOf(e);i>=0&&this._xr_scripts.splice(i,1);const n=this._xr_update_scripts.indexOf(e);if(n>=0&&this._xr_update_scripts.splice(n,1),t){const o=this._inactive_scripts.indexOf(e);o>=0&&this._inactive_scripts.splice(o,1)}}invokeCallback_EnterXR(e){this._scripts_in_xr.add(e),e.onEnterXR&&e.onEnterXR({xr:this})}invokeCallback_ControllerAdded(e,t){e.onXRControllerAdded&&e.onXRControllerAdded({xr:this,controller:t,change:"added"})}invokeCallback_ControllerRemoved(e,t){e.onXRControllerRemoved&&e.onXRControllerRemoved({xr:this,controller:t,change:"removed"})}invokeCallback_LeaveXR(e){this._scripts_in_xr.delete(e)&&e.onLeaveXR&&!e.destroyed&&e.onLeaveXR({xr:this})}syncCameraCullingMask(){const e=this.context.xrCamera,t=this.context.mainCameraComponent?.cullingMask;if(e&&t!==void 0){for(const i of e.cameras)i.layers.mask=t;e.layers.mask=t}else if(e){for(const i of e.cameras)i.layers.enableAll();e.layers.enableAll()}}invokeControllerEvent(e,t,i){for(let n=t.length-1;n>=0;n--){const o=t[n];if(o)try{o({xr:this,controller:e,change:i})}catch(r){console.error(r)}}}_camera;_cameraRenderParent=new c.Object3D().rotateY(Math.PI);_previousCameraParent;_customforward=!0;originalCameraNearPlane;requestedCameraNearPlane=null;applyCustomForward(){if(this.context.mainCamera&&this._customforward){this._camera=this.context.mainCamera,this._camera.parent!==this._cameraRenderParent&&(this._previousCameraParent=this._camera.parent,this._previousCameraParent?.add(this._cameraRenderParent)),this._cameraRenderParent.name="XR Camera Render Parent",this._cameraRenderParent.add(this._camera);{let e=.02;const t=.001;if(this.rig){const i=je(this.rig.gameObject);e*=i.x}this._camera instanceof c.PerspectiveCamera&&Math.abs(this._camera.near-e)>t&&(this.isAR?this.originalCameraNearPlane=this._camera.near:this._camera.near=e,Ue&&console.debug(`Setting camera near plane to ${e} (was ${this.originalCameraNearPlane}) to account for XR rendering scale`))}}}revertCustomForward(){this._camera&&this._previousCameraParent&&this._previousCameraParent.add(this._camera),this._previousCameraParent=null,this._camera instanceof c.PerspectiveCamera&&this.originalCameraNearPlane!=null&&(this._camera.near=this.originalCameraNearPlane,this.originalCameraNearPlane=void 0)}_viewerPose;_transformOrientation=new c.Quaternion;_transformPosition=new c.Vector3;internalUpdateState(){const e=this.context.renderer.xr.getReferenceSpace();if(!e){this._viewerPose=void 0;return}if(this._viewerPose=this.frame.getViewerPose(e),this._viewerPose){const t=this._viewerPose.transform;this._transformPosition.set(t.position.x,t.position.y,t.position.z),this._transformOrientation.set(t.orientation.x,t.orientation.y,t.orientation.z,t.orientation.w)}}_transition;get transition(){return this._transition||(this._transition=new W_),this._transition}fadeTransition(){return this._transition||(this._transition=new W_),this._transition.fadeTransition()}updateFade(e){this._transition&&e instanceof c.PerspectiveCamera&&this._transition.update(e,this.context.time.deltaTime)}onUpdateFade_PostRender(){this._transition?.remove()}}const Hf=x("debugwebxr");class $0{static tryFindAvatarObjects(e,t,i){if(i.head&&i.leftHand&&i.rightHand)return;const n=e.name.toLocaleLowerCase();!i.head&&n.includes("head")&&(Hf&&console.log("FOUND AVATAR HEAD",e.name),i.head=new Z("",t,e)),n.includes("hand")&&(!i.leftHand&&n.includes("left")&&(Hf&&console.log("FOUND AVATAR LEFT HAND",e.name),i.leftHand=new Z("",t,e)),!i.rightHand&&n.includes("right")&&(Hf&&console.log("FOUND AVATAR RIGHT HAND",e.name),i.rightHand=new Z("",t,e)));for(let o=0;o<e.children.length;o++){if(i.head&&i.leftHand&&i.rightHand)return;const r=e.children[o];this.tryFindAvatarObjects(r,t,i)}}}const Mt=new c.Vector3,H_=new c.Vector3,q_=new c.Quaternion,wP=x("debuggizmos"),nn=8947848,qf=32;class B{constructor(){}static enabled=!0;static isGizmo(e){return e[nm]!==void 0}static setVisible(e){for(const t of Ti.timedObjectsBuffer)t.visible=e}static DrawLabel(e,t,i=.05,n=0,o,r,a){if(!B.enabled)return null;o||(o=nn);const l=q.active?.rigScale??1,h=Ti.getTextLabel(n,t,i*l,o,r);return a instanceof c.Object3D&&a.add(h),h.position.x=e.x,h.position.y=e.y,h.position.z=e.z,h}static DrawRay(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),Mt.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,rn(r.material,i)}static DrawDirection(e,t,i=nn,n=0,o=!0,r=1){if(!B.enabled)return;const a=Ti.getLine(n),l=a.geometry.getAttribute("position");l.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(Mt.set(0,0,-r),q_.set(t.x,t.y,t.z,t.w),Mt.applyQuaternion(q_)):(Mt.set(t.x,t.y,t.z),Mt.multiplyScalar(r)),l.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),l.needsUpdate=!0,a.material.depthTest=o,a.material.depthWrite=!1,rn(a.material,i)}static DrawLine(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),a.setXYZ(1,t.x,t.y,t.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,rn(r.material,i)}static DrawCircle(e,t,i,n=nn,o=0,r=!0){if(!B.enabled)return;const a=Ti.getCircle(o);a.position.set(e.x,e.y,e.z),a.scale.set(i,i,i),a.quaternion.setFromUnitVectors(this._up,Mt.set(t.x,t.y,t.z).normalize()),a.material.depthTest=r,a.material.depthWrite=!1,a.material.fog=!1,rn(a.material,n)}static DrawWireSphere(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getSphere(t,n,!0);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,rn(r.material,i)}static DrawSphere(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getSphere(t,n,!1);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,rn(r.material,i)}static DrawWireBox(e,t,i=nn,n=0,o=!0,r=void 0){if(!B.enabled)return;const a=Ti.getBox(n);a.position.set(e.x,e.y,e.z),a.scale.set(t.x,t.y,t.z),r?a.quaternion.copy(r):a.quaternion.identity(),a.material.depthTest=o,a.material.wireframe=!0,a.material.depthWrite=!1,a.material.fog=!1,rn(a.material,i)}static DrawWireBox3(e,t=nn,i=0,n=!0){if(!B.enabled)return;const o=Ti.getBox(i);o.position.copy(e.getCenter(Mt)),o.scale.copy(e.getSize(Mt)),o.material.depthTest=n,o.material.wireframe=!0,o.material.depthWrite=!1,o.material.fog=!1,rn(o.material,t)}static _up=new c.Vector3(0,1,0);static DrawArrow(e,t,i=nn,n=0,o=!0,r=!1){if(!B.enabled)return;const a=Ti.getArrowHead(n);a.position.set(t.x,t.y,t.z),a.quaternion.setFromUnitVectors(this._up.set(0,1,0),Mt.set(t.x,t.y,t.z).sub(H_.set(e.x,e.y,e.z)).normalize());const h=Mt.set(t.x,t.y,t.z).sub(H_.set(e.x,e.y,e.z)).length()*.1;a.scale.set(h,h,h),a.material.depthTest=o,a.material.wireframe=r,rn(a.material,i),this.DrawLine(e,t,i,n,o)}static DrawWireMesh(e){const t=Ti.getMesh(e.duration??0);"mesh"in e?(t.geometry=e.mesh.geometry,t.matrixWorld.copy(e.mesh.matrixWorld)):(t.geometry=e.geometry,t.matrixWorld.copy(e.matrix)),t.matrixAutoUpdate=!1,t.matrixWorldAutoUpdate=!1,t.material.depthTest=e.depthTest??!0,t.material.wireframe=!0,rn(t.material,e.color??nn)}}const xP=new c.BoxGeometry(1,1,1);function mg(s=null){const e=new c.Color(s??14540253),t=new c.EdgesGeometry(xP);return new c.LineSegments(t,new c.LineBasicMaterial({color:e}))}function rn(s,e){if(Array.isArray(s)){for(const i of s)rn(i,e);return}const t=e instanceof ie?e.a:1;s.color.set(e),s.opacity=t,s.transparent=t<1}const nm=Symbol("GizmoCache");class Ti{static familyName="needle-gizmos";static ensureFont(){let e=ne.__webpack_exports__default.FontLibrary.getFontFamily(this.familyName);e||(e=ne.__webpack_exports__default.FontLibrary.addFontFamily(this.familyName),e.addVariant("normal","normal","https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json","https://cdn.needle.tools/static/fonts/msdf/arial/arial.png")?.addEventListener("ready",()=>{ne.__webpack_exports__default.update()}))}static getTextLabel(e,t,i,n,o){this.ensureFont();let r=this.textLabelCache.pop(),a=1;o&&typeof o=="string"&&o?.length>=8&&o.startsWith("#")?(a=parseInt(o.substring(7),16)/255,o=o.substring(0,7),wP&&console.log(o,a)):typeof o=="object"&&o.a!==void 0&&(a=o.a);const l={boxSizing:"border-box",fontFamily:this.familyName,width:"auto",fontSize:i,color:n,lineHeight:1,backgroundColor:o??void 0,backgroundOpacity:a,textContent:t,borderRadius:.5*i,padding:.8*i,whiteSpace:"pre",offset:.05*i};if(r)r.set(l);else{r=new ne.__webpack_exports__Text(l);const h=this,d=r;d.setText=function(u){this.set({textContent:u}),h.tmuiNeedsUpdate=!0}}return this.tmuiNeedsUpdate=!0,this.registerTimedObject(U.Current,r,e,this.textLabelCache),r}static getBox(e){let t=this.boxesCache.pop();if(!t){const i=new c.BoxGeometry(1,1,1);t=new c.Mesh(i)}return this.registerTimedObject(U.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");i||(i=new c.BufferAttribute(new Float32Array(6),3),t.geometry.setAttribute("position",i))}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.linesCache),t}static getCircle(e){let t=this.circlesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");if(!i){i=new c.BufferAttribute(new Float32Array(qf*3),3),t.geometry.setAttribute("position",i);const n=F(0,1,0),o=F(0,0,1),r=F(o);r.cross(n).normalize();const a=F(r),l=Math.PI*2/(qf-1);for(let h=0;h<qf+1;h++){const d=l*h;n.copy(a).multiplyScalar(Math.cos(d)*1),r.copy(o).multiplyScalar(Math.sin(d)*1);const u=n.add(r);i.setXYZ(h,u.x,u.y,u.z)}}}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.circlesCache),t}static getSphere(e,t,i){let n=this.spheresCache.pop();return n||(n=new c.Mesh(new c.SphereGeometry(1,8,8))),n.scale.set(e,e,e),n.material.wireframe=i,this.registerTimedObject(U.Current,n,t,this.spheresCache),n}static getArrowHead(e){let t=this.arrowHeadsCache.pop();return t||(t=new c.Mesh(new c.CylinderGeometry(0,.5,1,8))),this.registerTimedObject(U.Current,t,e,this.arrowHeadsCache),t}static getMesh(e){let t=this.mesh.pop();return t||(t=new c.Mesh,t.material=new c.MeshBasicMaterial),this.registerTimedObject(U.Current,t,e,this.mesh),t}static linesCache=[];static circlesCache=[];static spheresCache=[];static boxesCache=[];static arrowHeadsCache=[];static mesh=[];static textLabelCache=[];static registerTimedObject(e,t,i,n){if(!e){console.error("No Needle Engine context available. Did you call a Gizmos function in global scope?");return}const o=this.contextBeforeRenderCallbacks.get(e),r=this.contextPostRenderCallbacks.get(e);if(o){if(e.pre_render_callbacks[e.pre_render_callbacks.length-1]!==o){const a=e.pre_render_callbacks.indexOf(o);a>=0&&e.pre_render_callbacks.splice(a,1),e.pre_render_callbacks.push(o)}}else{const a=()=>{this.onBeforeRender(e,this.timedObjectsBuffer)};this.contextBeforeRenderCallbacks.set(e,a),e.pre_render_callbacks.push(a)}if(r){if(e.post_render_callbacks[e.post_render_callbacks.length-1]!==r){const a=e.post_render_callbacks.indexOf(r);a>=0&&e.post_render_callbacks.splice(a,1),e.post_render_callbacks.push(r)}}else{const a=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,a),e.post_render_callbacks.push(a)}t.traverse(a=>{a.layers.disableAll(),a.layers.enable(2)}),t.renderOrder=999999,t[nm]=n,t.castShadow=!1,t.receiveShadow=!1,t.isGizmo=!0,this.timedObjectsBuffer.push(t),this.timesBuffer.push(U.Current.time.realtimeSinceStartup+i),e.scene.add(t)}static timedObjectsBuffer=new Array;static timesBuffer=new Array;static contextPostRenderCallbacks=new Map;static contextBeforeRenderCallbacks=new Map;static tmuiNeedsUpdate=!1;static onBeforeRender(e,t){this.tmuiNeedsUpdate&&(this.tmuiNeedsUpdate=!1,ne.__webpack_exports__default.update());for(let i=0;i<t.length;i++){const n=t[i];if(e.mainCamera&&n instanceof ne.__webpack_exports__default.MeshUIBaseElement){if(fr(n))continue;const o=e.isInVR,r=!1,a=!o;zc(n,e.mainCamera,r,a)}}}static onPostRender(e,t,i){const n=e.time.realtimeSinceStartup;for(let o=t.length-1;o>=0;o--){const r=t[o];n>=i[o]-1e-6&&(t.splice(o,1),i.splice(o,1),r.removeFromParent(),fr(r)!=!0&&r[nm].push(r))}}}const Vt=x("debugphysics"),SP=x("debugworker"),X_=new c.Layers;class xo{static AllLayers=4294967295;ray;cam;screenPoint;raycaster;results;targets;recursive=!0;minDistance;maxDistance;lineThreshold;layerMask;ignore;testObject;useAcceleratedRaycast;allowSlowRaycastFallback=!0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new c.Vector2),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setLayer(e){X_.set(e),this.layerMask=X_}setMask(e){this.layerMask||(this.layerMask=new c.Layers);const t=this.layerMask;t?t.mask=e:this.layerMask=e}}class gg{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}}class ja{static _raycasting=0;static get raycasting(){return this._raycasting>0}raycastPhysicsFast(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycast(e,t,{maxDistance:i,solid:n})??null}raycastPhysicsFastAndGetNormal(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycastAndGetNormal(e,t,{maxDistance:i,solid:n})??null}sphereOverlapPhysics(e,t){return this.context.physics.engine?.sphereOverlap(e,t)??null}context;engine;constructor(e){this.context=e}raycaster=new c.Raycaster;defaultRaycastOptions=new xo;targetBuffer=new Array(1);defaultThresholds={Mesh:{},Line:{threshold:-1},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=new Array;sphereMask=new c.Layers;sphere=new c.Sphere;sphereOverlap(e,t,i=!0,n=!1,o=null){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;const r=this.sphereMask;r.enableAll(),r.disable(2);for(const a of this.context.scene.children)this.intersectSphere(a,e,t,r,this.sphereResults,i,n,o);return this.sphereResults.sort((a,l)=>a.distance-l.distance)}raycastFromRay(e,t=null){const i=t??this.defaultRaycastOptions;i.ray=e;const n=this.raycast(i);return i===this.defaultRaycastOptions&&(i.ray=void 0),n}raycast(e=null){Vt&&performance.mark("raycast.start"),e||(e=this.defaultRaycastOptions);const t=e.screenPoint??this.context.input.mousePositionRC,i=e.raycaster??this.raycaster;if(i.near=e.minDistance??0,i.far=e.maxDistance??1/0,i.params=this.defaultThresholds,e.lineThreshold===void 0&&(e.lineThreshold=-1),i.params.Line={threshold:e.lineThreshold},e.ray)i.ray.copy(e.ray);else{const a=e.cam??this.context.mainCamera;if(!a)return Vt&&console.error("Can not perform raycast - no main camera found"),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];const l=this.context.xrCamera;this.context.isInXR&&l instanceof c.ArrayCamera&&l.cameras.length>0?i.setFromCamera(t,l.cameras[0]):i.setFromCamera(t,a)}let n=e.targets;n||(n=this.targetBuffer,n.length=1,n[0]=this.context.scene);let o=e.results;this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),o||(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=new Array),o=this.defaultRaycastOptions.results),e.layerMask!==void 0?e.layerMask instanceof c.Layers?i.layers.mask=e.layerMask.mask:i.layers.mask=e.layerMask:(i.layers.enableAll(),i.layers.disable(2)),Vt&&console.time("raycast"),o.length=0,ja._raycasting++,this.intersect(this.raycaster,n,o,e),o.sort((a,l)=>a.distance-l.distance);const r=e.ignore;return r!==void 0&&r.length>0&&(o=o.filter(a=>!r.includes(a.object))),ja._raycasting--,Vt&&(console.timeEnd("raycast"),console.warn("#"+this.context.time.frame+", hits:",o?.length?[...o]:"nothing"),performance.mark("raycast.end"),performance.measure("raycast","raycast.start","raycast.end")),o}intersect(e,t,i,n){for(const o of t){if(!o||o.visible===!1||B.isGizmo(o)||n.lineThreshold!==void 0&&n.lineThreshold<0&&o instanceof c.Line)continue;let r=!0;const a=o,l=a.geometry;if(o.raycastAllowed===!1&&(r=!1),r&&n.testObject){const h=n.testObject?.(o);if(h===!1)continue;h==="continue in children"&&(r=!1)}else r&&(l&&Q_(l)||(r=!1));if(r){const h=i.length,d=o.raycastPreference||"lod";let u=d!=="bounds";if(n.precise===!1&&(u=!1),l&&(u||=l.getAttribute("position")?.array?.length<64),a instanceof X.GroundedSkybox&&(u=!1),d==="lod"){const p=re.getRaycastMesh(o);p&&(a.geometry=p)}if(!u&&PP(a,e,i)||(n.useAcceleratedRaycast!==!1?Yd.runMeshBVHRaycast(e,a,i,this.context,n):e.intersectObject(a,!1,i)),a.geometry=l,Vt&&i.length!=h){const p=i[i.length-1];B.DrawWireSphere(p.point,.1,7798784,1,!1),B.DrawWireMesh({mesh:o,depthTest:!1,duration:.2,color:7798784})}}n.recursive!==!1&&this.intersect(e,o.children,i,n)}return i}tempBoundingBox=new c.Box3;intersectSphere(e,t,i,n,o,r,a,l){let h=e&&e.isMesh&&e.layers.test(n)&&!B.isGizmo(e);h&&=e.visible,h&&=!(e instanceof c.Line),h&&=!(e instanceof X.GroundedSkybox);const d=e,u=d.geometry;if(h&&l){const p=l(e);if(p===!1)return;p==="continue in children"&&(h=!1)}if(u&&Q_(u)||(h=!1),h){if(a){const p=this.sphere;p.center.copy(t),p.radius=i;const m=o.length;if(Yd.runMeshBVHRaycast(this.sphere,d,o,this.context,{}),m!=o.length&&!r)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){d.matrixWorldNeedsUpdate&&d.updateWorldMatrix(!1,!1);const p=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(d.matrixWorld),m=this.sphere;if(m.center.copy(t),m.radius=i,m.intersectsBox(p)){const y=Y(e),_=y.distanceTo(m.center),g=new gg(e,_,y);if(o.push(g),!r)return}}}if(e.children)for(const p of e.children){const m=o.length;if(this.intersectSphere(p,t,i,n,o,r,a,l),m!=o.length&&!r)return}}}function Q_(s){return!(s.index&&s.index.array.length<3)}const Fo=new c.Sphere,Hh=new c.Plane,CP=new c.Matrix3;function PP(s,e,t){const i=s._computeIntersections;if(!i)return!1;let n=s["_computeIntersections:Needle"];return n||(n=s["_computeIntersections:Needle"]=function(o,r,a){const l=this,h=l.geometry.boundingSphere;if(h){if(l instanceof X.GroundedSkybox){Hh.setFromNormalAndCoplanarPoint(F(0,1,0),F(0,-l.position.y,0)),Hh.applyMatrix4(l.matrixWorld,CP);const u=o.ray.intersectPlane(Hh,F());if(u){Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const m=F(u).sub(o.ray.origin).length(),y=Fo.radius*.5;m<y&&r.push({distance:m,point:u,object:l,normal:Hh.normal.clone()})}return}Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const d=o.ray.intersectSphere(Fo,F());if(d){const u=F(d).sub(o.ray.origin),p=u.length();if(p>Fo.radius){const m=u.clone().normalize();r.push({distance:p,point:d,object:l,normal:m})}}}}),s._computeIntersections=n,e.intersectObject(s,!1,t),s._computeIntersections=i,!0}var Yd;(s=>{let e=0;function t(b,w,R,O,M){if(!w.geometry||!w.geometry.hasAttribute("position"))return!1;const D=w.geometry;if(w?.isSkinnedMesh){const L=w,I=L.bvhNeedsUpdate;if(!L.staticGenerator)l(),r&&(L.staticGenerator=new r(w),L.staticGenerator.applyWorldTransforms=!1,L.staticGeometry=L.staticGenerator.generate(),D.boundsTree=a?.call(L.staticGeometry),L.staticGeometryLastUpdate=performance.now()+Math.random()*200,L.bvhNeedsUpdate=!0);else if(D.boundsTree&&(L.autoUpdateMeshBvhInterval!==void 0&&L.autoUpdateMeshBvhInterval>=0||I===!0)){const V=performance.now(),W=V-L.staticGeometryLastUpdate,k=L.autoUpdateMeshBvhInterval??100;(I||W>k)&&(Vt&&console.warn(`Physics: updating skinned mesh bvh for ${w.name} after ${W.toFixed(2)}ms`),L.bvhNeedsUpdate=!1,L.staticGeometryLastUpdate=V,L.staticGenerator?.generate(L.staticGeometry),D.boundsTree.refit())}}else if(!D.boundsTree){d||v();let L=!0;if((O.xr||D[y]===!1||D.getAttribute("position")?.isInterleavedBufferAttribute||D.index&&D.index?.isInterleavedBufferAttribute||e>10)&&(L=!1),L&&p){if(D[m]===void 0){let I=null;if(g.length>0){const V=g.shift();V&&!V.running&&(I=V)}if(!I&&_.length<3)try{SP&&console.warn("[GenerateMeshBVHWorker] Creating worker with import.meta.url:",typeof document>"u"?require("url").pathToFileURL(__filename).href:_a&&_a.tagName.toUpperCase()==="SCRIPT"&&_a.src||new URL("needle-engine.bundle-DOywNdEo.umd.cjs",document.baseURI).href),I=new p,_.push(I)}catch(V){V instanceof DOMException&&V.name==="SecurityError"?(console.warn("Failed to create MeshBVH worker, falling back to main thread generation. This can happen when running from file://, if the browser does not support workers or if the browser is blocking workers for other reasons."),console.debug(V),e+=10):(console.error("Failed to create MeshBVH worker. Please see below for more details:"),console.log(V)),e++}if(I!=null&&!I.running){const V=w.name;Vt&&console.log("<<<< worker start",V,I),D[m]="queued",performance.mark("bvh.create.start");const W=D.clone();try{I.generate(W).then(k=>{D[m]="done",D.boundsTree=k}).catch(k=>{D[m]="failed - "+k?.message,D[y]=!1,Vt&&console.error("Failed to generate mesh bvh on worker",k)}).finally(()=>{Vt&&console.log(">>>>> worker done",V,{hasBoundsTre:D.boundsTree!=null}),g.push(I),W.dispose(),performance.mark("bvh.create.end"),performance.measure("bvh.create (worker)","bvh.create.start","bvh.create.end")})}catch(k){console.error("Failed to generate mesh bvh on worker",k)}}else Vt&&console.warn("No worker available")}}else(!u||!L)&&(l(),o&&(performance.mark("bvh.create.start"),D.boundsTree=new o(D),performance.mark("bvh.create.end"),performance.measure("bvh.create","bvh.create.start","bvh.create.end")))}if(b instanceof c.Raycaster){const L=b,I=w.raycast;if(D.boundsTree)l(),n&&(w.acceleratedRaycast||(w.acceleratedRaycast=n.bind(w),Vt&&console.debug(`Physics: bind acceleratedRaycast fn to "${w.name}"`)),w.raycast=w.acceleratedRaycast);else if(Vt&&console.warn("No bounds tree found for mesh",w.name,{workerTask:D[m],hasAcceleratedRaycast:n!=null}),M.allowSlowRaycastFallback===!1&&(D.getAttribute("position")?.array?.length??0)>2e3)return Vt&&console.warn("Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false"),!1;const V=L.firstHitOnly;return L.firstHitOnly=!1,L.intersectObject(w,!1,R),L.firstHitOnly=V,w.raycast=I,!0}else if(b instanceof c.Sphere){const L=D.boundsTree;if(L){const I=b;if(h.copy(w.matrixWorld).invert(),I.applyMatrix4(h),L.intersectsSphere(I)){const W=Y(w),k=W.distanceTo(I.center),N=new gg(w,k,W);R.push(N)}}return!0}return!1}s.runMeshBVHRaycast=t;let i=!1,n=null,o=null,r=null,a=null;function l(){i||(i=!0,Promise.resolve().then(()=>require("./vendor-CEM38hLE.umd.cjs")).then(b=>b.index$1).then(b=>{n=b.acceleratedRaycast,o=b.MeshBVH,r=b.StaticGeometryGenerator,a=b.computeBoundsTree}).catch(b=>{(Vt||A())&&console.error("Failed to load BVH library...",b.message)}))}const h=new c.Matrix4;let d=!1,u=!1,p=null;const m=Symbol("Needle:MeshBVH-Worker"),y=Symbol("Needle:MeshBVH-CanUseWorker"),_=[],g=[];function v(){d=!0,u=!0,Promise.resolve().then(()=>jA).then(b=>{p=b.GenerateMeshBVHWorker}).catch(b=>{Vt||A()?console.warn("Failed to setup mesh bvh worker"):console.debug("Failed to setup mesh bvh worker",b)}).finally(()=>{u=!1})}})(Yd||(Yd={}));const Y_=Symbol("gltf-loader-internal-usage-tracker"),OP=x("debugusers");class Sa{get name(){return"NEEDLE_internal_usage_tracker"}static isLoading(e){return Sa._loadingProcesses>0}static _loadingProcesses=0;parser;_getDependency;_loadingId;_loadedObjects=new Set;constructor(e){this.parser=e,this._getDependency=this.parser.getDependency,this._loadingId=Date.now().toString()}beforeRoot(){Sa._loadingProcesses++;const e=this,t=this._getDependency;return this.parser.getDependency=function(i,n){const o=t.call(this,i,n);return o.then(r=>(r&&(e._loadedObjects.add(r),r[Y_]=e._loadingId),r)),o},null}afterRoot(e){Sa._loadingProcesses--,this.parser.getDependency=this._getDependency;for(const t of this._loadedObjects)delete t[Y_],t instanceof c.Object3D&&(t.parent||t instanceof c.Mesh&&setTimeout(()=>{OP&&console.warn("> GLTF LOADER: Mesh not used in scene!",t),t.material=null,t.geometry=null},1e3));return null}}class W0{constructor(){window.addEventListener("unhandledrejection",e=>{if(e.defaultPrevented)return;const t=e?.reason?.path;if(t){const i=t[0];i&&i.tagName==="IMG"&&(console.warn(`Could not load image:
|
|
889
|
+
${o.hand?"hand":"ctrl"} ${o.inputSource.handedness}[${o.index}] con:${o.connected} tr:${o.isTracking} hts:${o.hasHitTestSource?"yes":"no"}`;Wf=0,B.DrawLabel(e,n,void 0,1/60*20)}}onBeforeRender=()=>{this.context.mainCamera&&(this.updateFade(this.context.mainCamera),this.requestedCameraNearPlane!==null&&this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera.near=this.requestedCameraNearPlane,this.requestedCameraNearPlane=null))};onAfterRender=()=>{if(this.onUpdateFade_PostRender(),exports.DeviceUtilities.isDesktop()||!this._renderOnceOnDevice){const e=this.context.renderer;if(e.xr.isPresenting&&this.context.mainCamera){this._renderOnceOnDevice=!0;const t=e.xr.enabled,i=e.getRenderTarget(),n=this.context.scene.background;e.xr.enabled=!1,e.setRenderTarget(null),this.isPassThrough&&(this.context.scene.background=null),this.context.composer?this.context.composer.render(this.context.time.deltaTime):e.render(this.context.scene,this.context.mainCamera),e.xr.enabled=t,e.setRenderTarget(i),this.context.scene.background=n}}};addScript(e){return this._xr_scripts.includes(e)?!1:(Ue&&console.log("Register new XRScript",e),this._xr_scripts.push(e),typeof e.onUpdateXR=="function"&&this._xr_update_scripts.push(e),!0)}markInactive(e){if(!(this._inactive_scripts.indexOf(e)>=0)){this.removeScript(e,!1),this._inactive_scripts.push(e);for(const t of this.controllers)this.invokeCallback_ControllerRemoved(e,t);this.invokeCallback_LeaveXR(e)}}handleInactiveScripts(){if(this._inactive_scripts.length>0)for(let e=this._inactive_scripts.length-1;e>=0;e--){const t=this._inactive_scripts[e];if(t.activeAndEnabled&&(this._inactive_scripts.splice(e,1),this.addScript(t))){this.invokeCallback_EnterXR(t);for(const i of this.controllers)this.invokeCallback_ControllerAdded(t,i)}}}_script_to_remove=[];removeScript(e,t=!0){Ue&&console.log("Remove XRScript",e);const i=this._xr_scripts.indexOf(e);i>=0&&this._xr_scripts.splice(i,1);const n=this._xr_update_scripts.indexOf(e);if(n>=0&&this._xr_update_scripts.splice(n,1),t){const o=this._inactive_scripts.indexOf(e);o>=0&&this._inactive_scripts.splice(o,1)}}invokeCallback_EnterXR(e){this._scripts_in_xr.add(e),e.onEnterXR&&e.onEnterXR({xr:this})}invokeCallback_ControllerAdded(e,t){e.onXRControllerAdded&&e.onXRControllerAdded({xr:this,controller:t,change:"added"})}invokeCallback_ControllerRemoved(e,t){e.onXRControllerRemoved&&e.onXRControllerRemoved({xr:this,controller:t,change:"removed"})}invokeCallback_LeaveXR(e){this._scripts_in_xr.delete(e)&&e.onLeaveXR&&!e.destroyed&&e.onLeaveXR({xr:this})}syncCameraCullingMask(){const e=this.context.xrCamera,t=this.context.mainCameraComponent?.cullingMask;if(e&&t!==void 0){for(const i of e.cameras)i.layers.mask=t;e.layers.mask=t}else if(e){for(const i of e.cameras)i.layers.enableAll();e.layers.enableAll()}}invokeControllerEvent(e,t,i){for(let n=t.length-1;n>=0;n--){const o=t[n];if(o)try{o({xr:this,controller:e,change:i})}catch(r){console.error(r)}}}_camera;_cameraRenderParent=new c.Object3D().rotateY(Math.PI);_previousCameraParent;_customforward=!0;originalCameraNearPlane;requestedCameraNearPlane=null;applyCustomForward(){if(this.context.mainCamera&&this._customforward){this._camera=this.context.mainCamera,this._camera.parent!==this._cameraRenderParent&&(this._previousCameraParent=this._camera.parent,this._previousCameraParent?.add(this._cameraRenderParent)),this._cameraRenderParent.name="XR Camera Render Parent",this._cameraRenderParent.add(this._camera);{let e=.02;const t=.001;if(this.rig){const i=je(this.rig.gameObject);e*=i.x}this._camera instanceof c.PerspectiveCamera&&Math.abs(this._camera.near-e)>t&&(this.isAR?this.originalCameraNearPlane=this._camera.near:this._camera.near=e,Ue&&console.debug(`Setting camera near plane to ${e} (was ${this.originalCameraNearPlane}) to account for XR rendering scale`))}}}revertCustomForward(){this._camera&&this._previousCameraParent&&this._previousCameraParent.add(this._camera),this._previousCameraParent=null,this._camera instanceof c.PerspectiveCamera&&this.originalCameraNearPlane!=null&&(this._camera.near=this.originalCameraNearPlane,this.originalCameraNearPlane=void 0)}_viewerPose;_transformOrientation=new c.Quaternion;_transformPosition=new c.Vector3;internalUpdateState(){const e=this.context.renderer.xr.getReferenceSpace();if(!e){this._viewerPose=void 0;return}if(this._viewerPose=this.frame.getViewerPose(e),this._viewerPose){const t=this._viewerPose.transform;this._transformPosition.set(t.position.x,t.position.y,t.position.z),this._transformOrientation.set(t.orientation.x,t.orientation.y,t.orientation.z,t.orientation.w)}}_transition;get transition(){return this._transition||(this._transition=new W_),this._transition}fadeTransition(){return this._transition||(this._transition=new W_),this._transition.fadeTransition()}updateFade(e){this._transition&&e instanceof c.PerspectiveCamera&&this._transition.update(e,this.context.time.deltaTime)}onUpdateFade_PostRender(){this._transition?.remove()}}const Hf=x("debugwebxr");class $0{static tryFindAvatarObjects(e,t,i){if(i.head&&i.leftHand&&i.rightHand)return;const n=e.name.toLocaleLowerCase();!i.head&&n.includes("head")&&(Hf&&console.log("FOUND AVATAR HEAD",e.name),i.head=new Z("",t,e)),n.includes("hand")&&(!i.leftHand&&n.includes("left")&&(Hf&&console.log("FOUND AVATAR LEFT HAND",e.name),i.leftHand=new Z("",t,e)),!i.rightHand&&n.includes("right")&&(Hf&&console.log("FOUND AVATAR RIGHT HAND",e.name),i.rightHand=new Z("",t,e)));for(let o=0;o<e.children.length;o++){if(i.head&&i.leftHand&&i.rightHand)return;const r=e.children[o];this.tryFindAvatarObjects(r,t,i)}}}const Mt=new c.Vector3,H_=new c.Vector3,q_=new c.Quaternion,wP=x("debuggizmos"),nn=8947848,qf=32;class B{constructor(){}static enabled=!0;static isGizmo(e){return e[nm]!==void 0}static setVisible(e){for(const t of Ti.timedObjectsBuffer)t.visible=e}static DrawLabel(e,t,i=.05,n=0,o,r,a){if(!B.enabled)return null;o||(o=nn);const l=q.active?.rigScale??1,h=Ti.getTextLabel(n,t,i*l,o,r);return a instanceof c.Object3D&&a.add(h),h.position.x=e.x,h.position.y=e.y,h.position.z=e.z,h}static DrawRay(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),Mt.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,rn(r.material,i)}static DrawDirection(e,t,i=nn,n=0,o=!0,r=1){if(!B.enabled)return;const a=Ti.getLine(n),l=a.geometry.getAttribute("position");l.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(Mt.set(0,0,-r),q_.set(t.x,t.y,t.z,t.w),Mt.applyQuaternion(q_)):(Mt.set(t.x,t.y,t.z),Mt.multiplyScalar(r)),l.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),l.needsUpdate=!0,a.material.depthTest=o,a.material.depthWrite=!1,rn(a.material,i)}static DrawLine(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),a.setXYZ(1,t.x,t.y,t.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,rn(r.material,i)}static DrawCircle(e,t,i,n=nn,o=0,r=!0){if(!B.enabled)return;const a=Ti.getCircle(o);a.position.set(e.x,e.y,e.z),a.scale.set(i,i,i),a.quaternion.setFromUnitVectors(this._up,Mt.set(t.x,t.y,t.z).normalize()),a.material.depthTest=r,a.material.depthWrite=!1,a.material.fog=!1,rn(a.material,n)}static DrawWireSphere(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getSphere(t,n,!0);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,rn(r.material,i)}static DrawSphere(e,t,i=nn,n=0,o=!0){if(!B.enabled)return;const r=Ti.getSphere(t,n,!1);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,rn(r.material,i)}static DrawWireBox(e,t,i=nn,n=0,o=!0,r=void 0){if(!B.enabled)return;const a=Ti.getBox(n);a.position.set(e.x,e.y,e.z),a.scale.set(t.x,t.y,t.z),r?a.quaternion.copy(r):a.quaternion.identity(),a.material.depthTest=o,a.material.wireframe=!0,a.material.depthWrite=!1,a.material.fog=!1,rn(a.material,i)}static DrawWireBox3(e,t=nn,i=0,n=!0){if(!B.enabled)return;const o=Ti.getBox(i);o.position.copy(e.getCenter(Mt)),o.scale.copy(e.getSize(Mt)),o.material.depthTest=n,o.material.wireframe=!0,o.material.depthWrite=!1,o.material.fog=!1,rn(o.material,t)}static _up=new c.Vector3(0,1,0);static DrawArrow(e,t,i=nn,n=0,o=!0,r=!1){if(!B.enabled)return;const a=Ti.getArrowHead(n);a.position.set(t.x,t.y,t.z),a.quaternion.setFromUnitVectors(this._up.set(0,1,0),Mt.set(t.x,t.y,t.z).sub(H_.set(e.x,e.y,e.z)).normalize());const h=Mt.set(t.x,t.y,t.z).sub(H_.set(e.x,e.y,e.z)).length()*.1;a.scale.set(h,h,h),a.material.depthTest=o,a.material.wireframe=r,rn(a.material,i),this.DrawLine(e,t,i,n,o)}static DrawWireMesh(e){const t=Ti.getMesh(e.duration??0);"mesh"in e?(t.geometry=e.mesh.geometry,t.matrixWorld.copy(e.mesh.matrixWorld)):(t.geometry=e.geometry,t.matrixWorld.copy(e.matrix)),t.matrixAutoUpdate=!1,t.matrixWorldAutoUpdate=!1,t.material.depthTest=e.depthTest??!0,t.material.wireframe=!0,rn(t.material,e.color??nn)}}const xP=new c.BoxGeometry(1,1,1);function mg(s=null){const e=new c.Color(s??14540253),t=new c.EdgesGeometry(xP);return new c.LineSegments(t,new c.LineBasicMaterial({color:e}))}function rn(s,e){if(Array.isArray(s)){for(const i of s)rn(i,e);return}const t=e instanceof ie?e.a:1;s.color.set(e),s.opacity=t,s.transparent=t<1}const nm=Symbol("GizmoCache");class Ti{static familyName="needle-gizmos";static ensureFont(){let e=ne.__webpack_exports__default.FontLibrary.getFontFamily(this.familyName);e||(e=ne.__webpack_exports__default.FontLibrary.addFontFamily(this.familyName),e.addVariant("normal","normal","https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json","https://cdn.needle.tools/static/fonts/msdf/arial/arial.png")?.addEventListener("ready",()=>{ne.__webpack_exports__default.update()}))}static getTextLabel(e,t,i,n,o){this.ensureFont();let r=this.textLabelCache.pop(),a=1;o&&typeof o=="string"&&o?.length>=8&&o.startsWith("#")?(a=parseInt(o.substring(7),16)/255,o=o.substring(0,7),wP&&console.log(o,a)):typeof o=="object"&&o.a!==void 0&&(a=o.a);const l={boxSizing:"border-box",fontFamily:this.familyName,width:"auto",fontSize:i,color:n,lineHeight:1,backgroundColor:o??void 0,backgroundOpacity:a,textContent:t,borderRadius:.5*i,padding:.8*i,whiteSpace:"pre",offset:.05*i};if(r)r.set(l);else{r=new ne.__webpack_exports__Text(l);const h=this,d=r;d.setText=function(u){this.set({textContent:u}),h.tmuiNeedsUpdate=!0}}return this.tmuiNeedsUpdate=!0,this.registerTimedObject(U.Current,r,e,this.textLabelCache),r}static getBox(e){let t=this.boxesCache.pop();if(!t){const i=new c.BoxGeometry(1,1,1);t=new c.Mesh(i)}return this.registerTimedObject(U.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");i||(i=new c.BufferAttribute(new Float32Array(6),3),t.geometry.setAttribute("position",i))}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.linesCache),t}static getCircle(e){let t=this.circlesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");if(!i){i=new c.BufferAttribute(new Float32Array(qf*3),3),t.geometry.setAttribute("position",i);const n=F(0,1,0),o=F(0,0,1),r=F(o);r.cross(n).normalize();const a=F(r),l=Math.PI*2/(qf-1);for(let h=0;h<qf+1;h++){const d=l*h;n.copy(a).multiplyScalar(Math.cos(d)*1),r.copy(o).multiplyScalar(Math.sin(d)*1);const u=n.add(r);i.setXYZ(h,u.x,u.y,u.z)}}}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.circlesCache),t}static getSphere(e,t,i){let n=this.spheresCache.pop();return n||(n=new c.Mesh(new c.SphereGeometry(1,8,8))),n.scale.set(e,e,e),n.material.wireframe=i,this.registerTimedObject(U.Current,n,t,this.spheresCache),n}static getArrowHead(e){let t=this.arrowHeadsCache.pop();return t||(t=new c.Mesh(new c.CylinderGeometry(0,.5,1,8))),this.registerTimedObject(U.Current,t,e,this.arrowHeadsCache),t}static getMesh(e){let t=this.mesh.pop();return t||(t=new c.Mesh,t.material=new c.MeshBasicMaterial),this.registerTimedObject(U.Current,t,e,this.mesh),t}static linesCache=[];static circlesCache=[];static spheresCache=[];static boxesCache=[];static arrowHeadsCache=[];static mesh=[];static textLabelCache=[];static registerTimedObject(e,t,i,n){if(!e){console.error("No Needle Engine context available. Did you call a Gizmos function in global scope?");return}const o=this.contextBeforeRenderCallbacks.get(e),r=this.contextPostRenderCallbacks.get(e);if(o){if(e.pre_render_callbacks[e.pre_render_callbacks.length-1]!==o){const a=e.pre_render_callbacks.indexOf(o);a>=0&&e.pre_render_callbacks.splice(a,1),e.pre_render_callbacks.push(o)}}else{const a=()=>{this.onBeforeRender(e,this.timedObjectsBuffer)};this.contextBeforeRenderCallbacks.set(e,a),e.pre_render_callbacks.push(a)}if(r){if(e.post_render_callbacks[e.post_render_callbacks.length-1]!==r){const a=e.post_render_callbacks.indexOf(r);a>=0&&e.post_render_callbacks.splice(a,1),e.post_render_callbacks.push(r)}}else{const a=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,a),e.post_render_callbacks.push(a)}t.traverse(a=>{a.layers.disableAll(),a.layers.enable(2)}),t.renderOrder=999999,t[nm]=n,t.castShadow=!1,t.receiveShadow=!1,t.isGizmo=!0,this.timedObjectsBuffer.push(t),this.timesBuffer.push(U.Current.time.realtimeSinceStartup+i),e.scene.add(t)}static timedObjectsBuffer=new Array;static timesBuffer=new Array;static contextPostRenderCallbacks=new Map;static contextBeforeRenderCallbacks=new Map;static tmuiNeedsUpdate=!1;static onBeforeRender(e,t){this.tmuiNeedsUpdate&&(this.tmuiNeedsUpdate=!1,ne.__webpack_exports__default.update());for(let i=0;i<t.length;i++){const n=t[i];if(e.mainCamera&&n instanceof ne.__webpack_exports__default.MeshUIBaseElement){if(fr(n))continue;const o=e.isInVR,r=!1,a=!o;zc(n,e.mainCamera,r,a)}}}static onPostRender(e,t,i){const n=e.time.realtimeSinceStartup;for(let o=t.length-1;o>=0;o--){const r=t[o];n>=i[o]-1e-6&&(t.splice(o,1),i.splice(o,1),r.removeFromParent(),fr(r)!=!0&&r[nm].push(r))}}}const Vt=x("debugphysics"),SP=x("debugworker"),X_=new c.Layers;class xo{static AllLayers=4294967295;ray;cam;screenPoint;raycaster;results;targets;recursive=!0;minDistance;maxDistance;lineThreshold;layerMask;ignore;testObject;useAcceleratedRaycast;allowSlowRaycastFallback=!0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new c.Vector2),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setLayer(e){X_.set(e),this.layerMask=X_}setMask(e){this.layerMask||(this.layerMask=new c.Layers);const t=this.layerMask;t?t.mask=e:this.layerMask=e}}class gg{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}}class ja{static _raycasting=0;static get raycasting(){return this._raycasting>0}raycastPhysicsFast(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycast(e,t,{maxDistance:i,solid:n})??null}raycastPhysicsFastAndGetNormal(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycastAndGetNormal(e,t,{maxDistance:i,solid:n})??null}sphereOverlapPhysics(e,t){return this.context.physics.engine?.sphereOverlap(e,t)??null}context;engine;constructor(e){this.context=e}raycaster=new c.Raycaster;defaultRaycastOptions=new xo;targetBuffer=new Array(1);defaultThresholds={Mesh:{},Line:{threshold:-1},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=new Array;sphereMask=new c.Layers;sphere=new c.Sphere;sphereOverlap(e,t,i=!0,n=!1,o=null){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;const r=this.sphereMask;r.enableAll(),r.disable(2);for(const a of this.context.scene.children)this.intersectSphere(a,e,t,r,this.sphereResults,i,n,o);return this.sphereResults.sort((a,l)=>a.distance-l.distance)}raycastFromRay(e,t=null){const i=t??this.defaultRaycastOptions;i.ray=e;const n=this.raycast(i);return i===this.defaultRaycastOptions&&(i.ray=void 0),n}raycast(e=null){Vt&&performance.mark("raycast.start"),e||(e=this.defaultRaycastOptions);const t=e.screenPoint??this.context.input.mousePositionRC,i=e.raycaster??this.raycaster;if(i.near=e.minDistance??0,i.far=e.maxDistance??1/0,i.params=this.defaultThresholds,e.lineThreshold===void 0&&(e.lineThreshold=-1),i.params.Line={threshold:e.lineThreshold},e.ray)i.ray.copy(e.ray);else{const a=e.cam??this.context.mainCamera;if(!a)return Vt&&console.error("Can not perform raycast - no main camera found"),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];const l=this.context.xrCamera;this.context.isInXR&&l instanceof c.ArrayCamera&&l.cameras.length>0?i.setFromCamera(t,l.cameras[0]):i.setFromCamera(t,a)}let n=e.targets;n||(n=this.targetBuffer,n.length=1,n[0]=this.context.scene);let o=e.results;this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),o||(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=new Array),o=this.defaultRaycastOptions.results),e.layerMask!==void 0?e.layerMask instanceof c.Layers?i.layers.mask=e.layerMask.mask:i.layers.mask=e.layerMask:(i.layers.enableAll(),i.layers.disable(2)),Vt&&console.time("raycast"),o.length=0,ja._raycasting++,this.intersect(this.raycaster,n,o,e),o.sort((a,l)=>a.distance-l.distance);const r=e.ignore;return r!==void 0&&r.length>0&&(o=o.filter(a=>!r.includes(a.object))),ja._raycasting--,Vt&&(console.timeEnd("raycast"),console.warn("#"+this.context.time.frame+", hits:",o?.length?[...o]:"nothing"),performance.mark("raycast.end"),performance.measure("raycast","raycast.start","raycast.end")),o}intersect(e,t,i,n){for(const o of t){if(!o||o.visible===!1||B.isGizmo(o)||n.lineThreshold!==void 0&&n.lineThreshold<0&&o instanceof c.Line)continue;let r=!0;const a=o,l=a.geometry;if(o.raycastAllowed===!1&&(r=!1),r&&n.testObject){const h=n.testObject?.(o);if(h===!1)continue;h==="continue in children"&&(r=!1)}else r&&(l&&Q_(l)||(r=!1));if(r){const h=i.length,d=o.raycastPreference||"lod";let u=d!=="bounds";if(n.precise===!1&&(u=!1),l&&(u||=l.getAttribute("position")?.array?.length<64),a instanceof X.GroundedSkybox&&(u=!1),d==="lod"){const p=re.getRaycastMesh(o);p&&(a.geometry=p)}if(!u&&PP(a,e,i)||(n.useAcceleratedRaycast!==!1?Yd.runMeshBVHRaycast(e,a,i,this.context,n):e.intersectObject(a,!1,i)),a.geometry=l,Vt&&i.length!=h){const p=i[i.length-1];B.DrawWireSphere(p.point,.1,7798784,1,!1),B.DrawWireMesh({mesh:o,depthTest:!1,duration:.2,color:7798784})}}n.recursive!==!1&&this.intersect(e,o.children,i,n)}return i}tempBoundingBox=new c.Box3;intersectSphere(e,t,i,n,o,r,a,l){let h=e&&e.isMesh&&e.layers.test(n)&&!B.isGizmo(e);h&&=e.visible,h&&=!(e instanceof c.Line),h&&=!(e instanceof X.GroundedSkybox);const d=e,u=d.geometry;if(h&&l){const p=l(e);if(p===!1)return;p==="continue in children"&&(h=!1)}if(u&&Q_(u)||(h=!1),h){if(a){const p=this.sphere;p.center.copy(t),p.radius=i;const m=o.length;if(Yd.runMeshBVHRaycast(this.sphere,d,o,this.context,{}),m!=o.length&&!r)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){d.matrixWorldNeedsUpdate&&d.updateWorldMatrix(!1,!1);const p=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(d.matrixWorld),m=this.sphere;if(m.center.copy(t),m.radius=i,m.intersectsBox(p)){const y=Y(e),_=y.distanceTo(m.center),g=new gg(e,_,y);if(o.push(g),!r)return}}}if(e.children)for(const p of e.children){const m=o.length;if(this.intersectSphere(p,t,i,n,o,r,a,l),m!=o.length&&!r)return}}}function Q_(s){return!(s.index&&s.index.array.length<3)}const Fo=new c.Sphere,Hh=new c.Plane,CP=new c.Matrix3;function PP(s,e,t){const i=s._computeIntersections;if(!i)return!1;let n=s["_computeIntersections:Needle"];return n||(n=s["_computeIntersections:Needle"]=function(o,r,a){const l=this,h=l.geometry.boundingSphere;if(h){if(l instanceof X.GroundedSkybox){Hh.setFromNormalAndCoplanarPoint(F(0,1,0),F(0,-l.position.y,0)),Hh.applyMatrix4(l.matrixWorld,CP);const u=o.ray.intersectPlane(Hh,F());if(u){Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const m=F(u).sub(o.ray.origin).length(),y=Fo.radius*.5;m<y&&r.push({distance:m,point:u,object:l,normal:Hh.normal.clone()})}return}Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const d=o.ray.intersectSphere(Fo,F());if(d){const u=F(d).sub(o.ray.origin),p=u.length();if(p>Fo.radius){const m=u.clone().normalize();r.push({distance:p,point:d,object:l,normal:m})}}}}),s._computeIntersections=n,e.intersectObject(s,!1,t),s._computeIntersections=i,!0}var Yd;(s=>{let e=0;function t(b,w,R,O,M){if(!w.geometry||!w.geometry.hasAttribute("position"))return!1;const D=w.geometry;if(w?.isSkinnedMesh){const L=w,I=L.bvhNeedsUpdate;if(!L.staticGenerator)l(),r&&(L.staticGenerator=new r(w),L.staticGenerator.applyWorldTransforms=!1,L.staticGeometry=L.staticGenerator.generate(),D.boundsTree=a?.call(L.staticGeometry),L.staticGeometryLastUpdate=performance.now()+Math.random()*200,L.bvhNeedsUpdate=!0);else if(D.boundsTree&&(L.autoUpdateMeshBvhInterval!==void 0&&L.autoUpdateMeshBvhInterval>=0||I===!0)){const V=performance.now(),W=V-L.staticGeometryLastUpdate,k=L.autoUpdateMeshBvhInterval??100;(I||W>k)&&(Vt&&console.warn(`Physics: updating skinned mesh bvh for ${w.name} after ${W.toFixed(2)}ms`),L.bvhNeedsUpdate=!1,L.staticGeometryLastUpdate=V,L.staticGenerator?.generate(L.staticGeometry),D.boundsTree.refit())}}else if(!D.boundsTree){d||v();let L=!0;if((O.xr||D[y]===!1||D.getAttribute("position")?.isInterleavedBufferAttribute||D.index&&D.index?.isInterleavedBufferAttribute||e>10)&&(L=!1),L&&p){if(D[m]===void 0){let I=null;if(g.length>0){const V=g.shift();V&&!V.running&&(I=V)}if(!I&&_.length<3)try{SP&&console.warn("[GenerateMeshBVHWorker] Creating worker with import.meta.url:",typeof document>"u"?require("url").pathToFileURL(__filename).href:_a&&_a.tagName.toUpperCase()==="SCRIPT"&&_a.src||new URL("needle-engine.bundle--J0Pgk3R.umd.cjs",document.baseURI).href),I=new p,_.push(I)}catch(V){V instanceof DOMException&&V.name==="SecurityError"?(console.warn("Failed to create MeshBVH worker, falling back to main thread generation. This can happen when running from file://, if the browser does not support workers or if the browser is blocking workers for other reasons."),console.debug(V),e+=10):(console.error("Failed to create MeshBVH worker. Please see below for more details:"),console.log(V)),e++}if(I!=null&&!I.running){const V=w.name;Vt&&console.log("<<<< worker start",V,I),D[m]="queued",performance.mark("bvh.create.start");const W=D.clone();try{I.generate(W).then(k=>{D[m]="done",D.boundsTree=k}).catch(k=>{D[m]="failed - "+k?.message,D[y]=!1,Vt&&console.error("Failed to generate mesh bvh on worker",k)}).finally(()=>{Vt&&console.log(">>>>> worker done",V,{hasBoundsTre:D.boundsTree!=null}),g.push(I),W.dispose(),performance.mark("bvh.create.end"),performance.measure("bvh.create (worker)","bvh.create.start","bvh.create.end")})}catch(k){console.error("Failed to generate mesh bvh on worker",k)}}else Vt&&console.warn("No worker available")}}else(!u||!L)&&(l(),o&&(performance.mark("bvh.create.start"),D.boundsTree=new o(D),performance.mark("bvh.create.end"),performance.measure("bvh.create","bvh.create.start","bvh.create.end")))}if(b instanceof c.Raycaster){const L=b,I=w.raycast;if(D.boundsTree)l(),n&&(w.acceleratedRaycast||(w.acceleratedRaycast=n.bind(w),Vt&&console.debug(`Physics: bind acceleratedRaycast fn to "${w.name}"`)),w.raycast=w.acceleratedRaycast);else if(Vt&&console.warn("No bounds tree found for mesh",w.name,{workerTask:D[m],hasAcceleratedRaycast:n!=null}),M.allowSlowRaycastFallback===!1&&(D.getAttribute("position")?.array?.length??0)>2e3)return Vt&&console.warn("Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false"),!1;const V=L.firstHitOnly;return L.firstHitOnly=!1,L.intersectObject(w,!1,R),L.firstHitOnly=V,w.raycast=I,!0}else if(b instanceof c.Sphere){const L=D.boundsTree;if(L){const I=b;if(h.copy(w.matrixWorld).invert(),I.applyMatrix4(h),L.intersectsSphere(I)){const W=Y(w),k=W.distanceTo(I.center),N=new gg(w,k,W);R.push(N)}}return!0}return!1}s.runMeshBVHRaycast=t;let i=!1,n=null,o=null,r=null,a=null;function l(){i||(i=!0,Promise.resolve().then(()=>require("./vendor-CEM38hLE.umd.cjs")).then(b=>b.index$1).then(b=>{n=b.acceleratedRaycast,o=b.MeshBVH,r=b.StaticGeometryGenerator,a=b.computeBoundsTree}).catch(b=>{(Vt||A())&&console.error("Failed to load BVH library...",b.message)}))}const h=new c.Matrix4;let d=!1,u=!1,p=null;const m=Symbol("Needle:MeshBVH-Worker"),y=Symbol("Needle:MeshBVH-CanUseWorker"),_=[],g=[];function v(){d=!0,u=!0,Promise.resolve().then(()=>jA).then(b=>{p=b.GenerateMeshBVHWorker}).catch(b=>{Vt||A()?console.warn("Failed to setup mesh bvh worker"):console.debug("Failed to setup mesh bvh worker",b)}).finally(()=>{u=!1})}})(Yd||(Yd={}));const Y_=Symbol("gltf-loader-internal-usage-tracker"),OP=x("debugusers");class Sa{get name(){return"NEEDLE_internal_usage_tracker"}static isLoading(e){return Sa._loadingProcesses>0}static _loadingProcesses=0;parser;_getDependency;_loadingId;_loadedObjects=new Set;constructor(e){this.parser=e,this._getDependency=this.parser.getDependency,this._loadingId=Date.now().toString()}beforeRoot(){Sa._loadingProcesses++;const e=this,t=this._getDependency;return this.parser.getDependency=function(i,n){const o=t.call(this,i,n);return o.then(r=>(r&&(e._loadedObjects.add(r),r[Y_]=e._loadingId),r)),o},null}afterRoot(e){Sa._loadingProcesses--,this.parser.getDependency=this._getDependency;for(const t of this._loadedObjects)delete t[Y_],t instanceof c.Object3D&&(t.parent||t instanceof c.Mesh&&setTimeout(()=>{OP&&console.warn("> GLTF LOADER: Mesh not used in scene!",t),t.material=null,t.geometry=null},1e3));return null}}class W0{constructor(){window.addEventListener("unhandledrejection",e=>{if(e.defaultPrevented)return;const t=e?.reason?.path;if(t){const i=t[0];i&&i.tagName==="IMG"&&(console.warn(`Could not load image:
|
|
890
890
|
`+i.src),e.preventDefault())}})}}const Ou=x("trackresources");function G0(){return Ou==="dispose"}let xr=!0;Ou===0&&(xr=!1);function MP(s){xr=s}function H0(){return xr}const q0=Symbol("disposable");function X0(s,e){s&&(s[q0]=e,or&&console.warn("Set disposable",e,s))}const Q0=Symbol("disposed");function kP(s){return s[Q0]===!0}function we(s){if(s){if(s[q0]===!1){or&&console.warn("Object is marked as not disposable",s);return}if(typeof s=="object"&&(s[Q0]=!0),s instanceof c.Scene)we(s.environment),we(s.background),we(s.customDepthMaterial),we(s.customDistanceMaterial);else if(s instanceof c.SkinnedMesh)we(s.geometry),we(s.material),we(s.skeleton),we(s.bindMatrix),we(s.bindMatrixInverse),we(s.customDepthMaterial),we(s.customDistanceMaterial),s.visible=!1;else if(s instanceof c.Mesh)we(s.geometry),we(s.material),we(s.customDepthMaterial),we(s.customDistanceMaterial),s.visible=!1;else if(s instanceof c.Object3D)s.visible=!1;else if(s instanceof c.BufferGeometry){Xr(s);for(const e of Object.keys(s.attributes)){const t=s.attributes[e];we(t)}}else if(s instanceof c.BufferAttribute||s instanceof c.InterleavedBufferAttribute)or&&console.warn("BufferAttribute dispose not supported",s.count);else if(s instanceof Array)for(const e of s)e instanceof c.Material&&we(e);else if(s instanceof c.Material){Xr(s);for(const t of Object.keys(s)){const i=s[t];i instanceof c.Texture&&we(i)}const e=s.uniforms;if(e)for(const t of Object.keys(e)){const i=e[t];i instanceof c.Texture?we(i):i instanceof c.Uniform$1&&we(i.value)}}else s instanceof c.Texture?(Xr(s),Xr(s.source),s.source?.data instanceof ImageBitmap&&Xr(s.source.data)):s instanceof c.Skeleton?(Xr(s.boneTexture),s.boneTexture=null):s instanceof c.Bone||!(s instanceof c.Object3D)&&or&&console.warn("Unknown object type",s)}}function Xr(s){s&&((or||G0()||Ou)&&console.warn("🧨 FREE",s),s instanceof ImageBitmap||"dispose"in s&&typeof s.dispose=="function"&&s.dispose())}function EP(s){}const RP=new Set;function yg(s,e,t=null,i){if(i||(i=RP,i.clear()),!s)return i;const n=s[Cc];if(n)for(const o of n)i.has(o)||t?.call(null,o)!==!1&&(i.add(o),e&&yg(o,!0,t,i));return i}function TP(s){return s[Nl]}const or=x("debugresourceusers")||x("debugmemory"),Cc=Symbol("needle-resource-users"),Nl=Symbol("needle-resource-users-count");function Bt(s,e){mu(s,e,function(t,i){xr&&!ja.raycasting&&(Kd(Cc,this,t,!1),Kd(Cc,this,i,!0))})}xr&&(Bt(c.Mesh.prototype,"material"),Bt(c.Mesh.prototype,"geometry"),Bt(c.Material.prototype,"map"),Bt(c.Material.prototype,"bumpMap"),Bt(c.Material.prototype,"alphaMap"),Bt(c.Material.prototype,"normalMap"),Bt(c.Material.prototype,"displacementMap"),Bt(c.Material.prototype,"roughnessMap"),Bt(c.Material.prototype,"metalnessMap"),Bt(c.Material.prototype,"emissiveMap"),Bt(c.Material.prototype,"specularMap"),Bt(c.Material.prototype,"envMap"),Bt(c.Material.prototype,"lightMap"),Bt(c.Material.prototype,"aoMap"),Bt(c.Material.prototype,"gradientMap"));function AP(s){if(xr===!1)return;const e=s[Cc];if(e)for(const t of e)Kd(Cc,t,s,!1)}xr&&mu(c.Material.prototype,"dispose",function(){AP(this)});let sm=0;function Kd(s,e,t,i){if(sm>0)return;if(Array.isArray(t)){for(const o of t)Kd(s,e,o,i);return}if(!t)return;let n=t[s];if(n||(n=new Set),i){if(e&&!n.has(e)){n.add(e);let o=t[Nl]||0;o+=1,t[Nl]=o,or&&console.warn(`🟢 Added user of "${t.type}"`,e,t,o,"users:",n)}}else if(e&&n.has(e)){n.delete(e);let o=t[Nl]||0;o>0&&(o-=1,t[Nl]=o),or&&console.warn(`🔴 Removed user of "${t.type}"`,e,t,o,"users:",n),o<=0&&(Sa.isLoading(t)||(Ou&&console.warn(`🔴 Removed all user of "${t.type}"`,t),G0()&&we(t)))}t[s]=n}try{mu(c.WebGLRenderer.prototype,"render",function(){sm++},function(){sm--})}catch(s){console.warn("Could not wrap WebGLRenderer.render",s)}const Pc=Symbol("NEEDLE_NEED_UPDATE_INSTANCE"),Y0=Symbol("isUsingInstancing"),K0=Symbol("instancingRenderer"),Vl=Symbol("instancingAutoUpdateBounds");class Vi{static isUsingInstancing(e){return e[Y0]===!0}static getRenderer(e){return e[K0]||null}setAutoUpdateBounds(e,t){const i=Vi.getRenderer(e);i&&(i[Vl]=t)}static markDirty(e,t=!0){if(e&&(this.isUsingInstancing(e)&&(e[Pc]=!0,e.matrixWorldNeedsUpdate=!0),t))for(const i of e.children)Vi.markDirty(i,!0)}}const xd=x("debuggetcomponent"),rr=x("debuginstantiate");class gn{idProvider;parent;keepWorldPosition;position;rotation;scale;visible;context;components;clone(){const e=new gn;return e.idProvider=this.idProvider,e.parent=this.parent,e.keepWorldPosition=this.keepWorldPosition,e.position=Array.isArray(this.position)?[...this.position]:this.position?.clone(),e.rotation=Array.isArray(this.rotation)?[...this.rotation]:this.rotation?.clone(),e.scale=Array.isArray(this.scale)?[...this.scale]:this.scale?.clone(),e.visible=this.visible,e.context=this.context,e.components=this.components,e}cloneAssign(e){this.idProvider=e.idProvider,this.parent=e.parent,this.keepWorldPosition=e.keepWorldPosition,this.position=Array.isArray(e.position)?[...e.position]:e.position?.clone(),this.rotation=Array.isArray(e.rotation)?[...e.rotation]:e.rotation?.clone(),this.scale=Array.isArray(e.scale)?[...e.scale]:e.scale?.clone(),this.visible=e.visible,this.context=e.context,this.components=e.components}}function Ha(s){return s.visible}function ac(s,e){return typeof e=="number"&&(e=e>.5),s.visible=e,s.visible}function Z0(s){return s[Bn]||Mu(s)}function J0(s,e){s[Y0]=e}function Mu(s){return Vi.isUsingInstancing(s)}function _g(s,e){return ka(s,e,!0,!0)}const ew=Symbol("isDestroyed");function fr(s){return s[ew]}function tw(s,e){s[ew]=e}const om=Symbol("isDontDestroy");function na(s,e=!0){s[om]=e}const Sd=[],Cd=[];function bi(s,e=!0,t=!1){Sd.length=0,Cd.length=0,rm(s,e,!0);for(const i of Sd)i.gameObject=null,i.context=null;for(const i of Cd)tw(i,!0),t&&we(i);Cd.length=0,Sd.length=0}function rm(s,e=!0,t=!0){if(s==null)return;const i=s;if(i.isComponent){if(i[om])return;Sd.push(i);const r=i.gameObject;i.__internalDisable?.(),i.__internalDestroy?.(),i.gameObject=r;return}if(s[om])return;const n=s;xd&&console.log(n),Cd.push(n);const o=n.userData?.components;if(o!=null&&Array.isArray(o)){let r=o.length;for(let a=0;a<o.length;a++){const l=o[a];rm(l,e,!1),o.length<r&&(r=o.length,a--)}}if(e&&n.children)for(const r of n.children)rm(r,e,!1);t&&n.removeFromParent()}function pr(s,e,t=!0){return iw(s,e,t)}function*ku(s,e,t=!1,i=999,n=0){if(s?.userData.components&&!(n>i)){for(const o of s.userData.components)e&&o?.isComponent===!0&&o instanceof e?yield o:yield o;if(t===!0)for(const o of s.children)yield*ku(o,e,!0,i,n+1)}}function iw(s,e,t,i=0){if(s){if(s.isObject3D,i>1e3){console.warn("Failed to iterate components: too many levels");return}if(s.userData?.components)for(let n=0;n<s.userData.components.length;n++){const o=s.userData.components[n];if(o?.isComponent===!0){const r=e(o);if(r!==void 0)return r}}if(t&&s.children){const n=i+1;for(let o=0;o<s.children.length;o++){const r=s.children[o];if(!r)continue;const a=iw(r,e,t,n);if(a!==void 0)return a}}}}function po(s,e){if("isAssetReference"in s)return s.instantiate(e??void 0);let t=null;e!=null&&(e.x!==void 0?(t=new gn,t.position=e):t=e);let i=U.Current;t?.context&&(i=t.context),xd&&i.alias&&console.log("context",i.alias),t&&!t.idProvider&&(t.idProvider=new xt(Date.now()));const n=[],o={},r={},a=nw(i,s,t,n,o,r);a&&(IP(a,o),LP(r,o)),xd&&(Nd(s,!0),Nd(a,!0));const l={};if(t?.components!==!1){for(const h in n){const d=n[h],u=d.guid;t&&t.idProvider&&(d.guid=t.idProvider.generateUUID(),l[u]=d.guid,xd&&console.log(d.name,d.guid)),Pu(d,i),d.__internalNewInstanceCreated&&d.__internalNewInstanceCreated()}for(const h in n){const d=n[h];d.resolveGuids&&d.resolveGuids(l),d.enabled!==!1&&(d.enabled=!0)}Wd(i)}return a}function nw(s,e,t,i,n,o){if(!e||e[pi])return null;const r=e.userData;e.userData={};const a=e.children;e.children=[];const l=e.clone(!1);if(Su(l),e.userData=r,e.children=a,n[e.uuid]={original:e,clone:l},rr&&console.log("ADD",e,l),e.type==="SkinnedMesh"&&(o[e.uuid]={original:e,clone:l}),t?.visible!==void 0&&(l.visible=t.visible),t?.idProvider){l.uuid=t.idProvider.generateUUID();const d=l;d&&(d.guid=l.uuid)}e.animations&&e.animations.length>0&&(l.animations=[...e.animations]);const h=e.parent;if(h&&h.add(l),t?.position)if(Array.isArray(t.position)){const d=new c.Vector3;d.fromArray(t.position),l.worldPosition=d}else l.worldPosition=t.position;else l.position.copy(e.position);if(t?.rotation){if(t.rotation instanceof c.Quaternion)l.worldQuaternion=t.rotation;else if(t.rotation instanceof c.Euler)l.worldQuaternion=ei().setFromEuler(t.rotation);else if(Array.isArray(t.rotation)){const d=new c.Euler;d.fromArray(t.rotation),l.worldQuaternion=ei().setFromEuler(d)}}else l.quaternion.copy(e.quaternion);if(t?.scale)if(Array.isArray(t.scale)){const d=new c.Vector3;d.fromArray(t.scale),t.scale=d}else l.scale.copy(t.scale);else l.scale.copy(e.scale);if(t?.parent&&t.parent!=="scene"){let d=null;if(typeof t.parent=="string"?d=ka(t.parent,s.scene,!0):d=t.parent,d){const u=t.keepWorldPosition===!0?d.attach:d.add;u?u.call(d,l):console.error("Invalid parent object",d,"received when instantiating:",e)}else console.warn("could not find parent:",t.parent)}for(const[d,u]of Object.entries(e.userData))d!=="components"&&(l.userData[d]=u);if(e.userData?.components){const d=e.userData.components,u=[];l.userData.components=u;for(let p=0;p<d.length;p++){const m=d[p],y=new m.constructor;DP(m,y),m[tc]!==void 0&&(y[tc]=m[tc]),u.push(y),y.gameObject=l,i.push(y),n[m.guid]={original:m,clone:y},xu.dispatchComponentLifecycleEvent("component-added",y)}}t&&(t.position=void 0,t.rotation=void 0,t.scale=void 0,t.parent=void 0,t.visible=void 0);for(const d in e.children){const u=e.children[d],p=nw(s,u,t,i,n,o);p&&(n[p.uuid]={original:u,clone:p},l.add(p))}return l}function DP(s,e,t){Ta(e,s,void 0,{})}function LP(s,e){for(const t in s){const i=s[t],n=i.original,o=n.skeleton,r=i.clone;if(!o){console.warn("Skinned mesh has no skeleton?",i);continue}const a=o.bones,l=r.skeleton.clone();r.skeleton=l,r.bindMatrix.clone().copy(n.bindMatrix),r.bindMatrixInverse.copy(n.bindMatrixInverse);const h=[];l.bones=h;for(let d=0;d<a.length;d++){const u=a[d],m=e[u.uuid].clone;h.push(m)}}for(const t in s){const i=s[t].clone;i.skeleton.update(),i.bind(i.skeleton,i.bindMatrix),i.updateMatrixWorld(!0)}}function IP(s,e){for(const t in e){const n=e[t].clone;if(n?.isObject3D&&n?.userData?.components)for(let o=0;o<n.userData.components.length;o++){const r=n.userData.components[o],a=Object.entries(r);for(const[l,h]of a)if(Array.isArray(h)){const d=[];r[l]=d;for(let u=0;u<h.length;u++){const p=h[u];if(typeof p!="object"){d.push(p);continue}const m=K_(r,l,p,e);m!==void 0?(rr&&console.log("Found new instance for",l,p,"->",m),d.push(m)):(rr&&console.warn("Could not find new instance for",l,p),d.push(p))}}else if(typeof h=="object"){const d=K_(r,l,h,e);d!==void 0?r[l]=d:rr&&console.warn("Could not find new instance for",l,h)}}}}function K_(s,e,t,i){if(t!=null)if(t.isComponent===!0){const n=t.gameObject;if(n){const o=n.uuid,r=i[o]?.clone;if(!r){rr&&console.log("reference did not change",e,s,t);return}const a=n.userData.components.indexOf(t);if(a>=0&&r.isObject3D)return rr&&console.log(e,o),r.userData.components[a];console.warn("could not find component",e,t)}}else if(t.isObject3D===!0){if(e==="gameObject")return;const n=t;if(n){const o=n.uuid,r=i[o]?.clone;if(r)return rr&&console.log(e,"old",t,"new",r),r}}else{if(t.isVector4||t.isVector3||t.isVector2||t.isQuaternion||t.isEuler)return t.clone();if(t.isColor===!0)return t.clone();if(t.isEventList===!0)return t.__internalOnInstantiate(i)}}ce.registerCallback(ae.ContextCreated,s=>{const e=s.context;lw(e),ow(e)});const Zd=x("debugcomponents"),Z_="eff8ba80-635d-11ec-90d6-0242ac120003";class xt{get seed(){return this._seed}set seed(e){this._seed=e}_originalSeed;_seed;constructor(e){typeof e=="string"&&(e=xt.hash(e)),this._originalSeed=e,this._seed=e}reset(){this._seed=this._originalSeed}generateUUID(e){if(typeof e=="string")return le.v5(e,Z_);const t=this._seed;return this._seed-=1,le.v5(t.toString(),Z_)}initialize(e){typeof e=="string"?this._seed=xt.hash(e):this._seed=e}static createFromString(e){return new xt(this.hash(e))}static hash(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}}var sw=(s=>(s.NewInstanceCreated="new-instance-created",s.InstanceDestroyed="instance-destroyed",s))(sw||{});class jP{guid;dontSave;constructor(e){this.guid=e}}function Qc(s,e,t=!0,i){if(!s)return;const n=s;if(bi(s,t),!e){console.warn("Can not send destroy: No networking connection provided",s.guid);return}if(!e.isConnected){A()&&console.debug("Can not send destroy: not connected",s.guid);return}let o=s.guid;if(!o&&n.uuid&&(o=n.uuid),!o){console.warn("Can not send destroy: failed to find guid",s);return}bg(o,e,i)}function bg(s,e,t){const i=new jP(s);t?.saveInRoom===!1&&(i.dontSave=!0),e.send("instance-destroyed",i,ln.Queued)}function ow(s){s.connection.beginListen("instance-destroyed",e=>{Zd&&console.log("[Remote] Destroyed",s.scene,e);const t=_g(e.guid,s.scene);t&&bi(t)})}class BP{filename;hash;size;constructor(e,t,i){this.filename=e,this.hash=t,this.size=i}}class rw{guid;originalGuid;seed;visible;hostData;dontSave;parent;position;rotation;scale;preventCreation=void 0;deleteStateOnDisconnect;constructor(e,t){this.originalGuid=e,this.guid=t}}function vg(s,e,t,i){const n=s;if(!n.guid)return console.warn("Can not instantiate: No guid",n),null;if(e.context||(e.context=U.Current),!e.context)return console.error("Missing network instantiate options / reference to network connection in sync instantiate"),null;const o=e?{...e}:null,{instance:r,seed:a}=FP(n,e);if(r){const l=r;if(l.guid){Zd&&console.log("[Local] new instance","gameobject:",r?.guid);const h=new rw(n.guid,l.guid);h.seed=a,e.deleteOnDisconnect===!0&&(h.deleteStateOnDisconnect=!0),o&&(o.position&&(Array.isArray(o.position)?h.position={x:o.position[0],y:o.position[1],z:o.position[2]}:h.position={x:o.position.x,y:o.position.y,z:o.position.z}),o.rotation&&(o.rotation instanceof c.Euler?o.rotation=new c.Quaternion().setFromEuler(o.rotation):o.rotation instanceof Array&&(o.rotation=new c.Quaternion().fromArray(o.rotation)),h.rotation={x:o.rotation.x,y:o.rotation.y,z:o.rotation.z,w:o.rotation.w}),o.scale&&(Array.isArray(o.scale)?h.scale={x:o.scale[0],y:o.scale[1],z:o.scale[2]}:h.scale={x:o.scale.x,y:o.scale.y,z:o.scale.z})),h.position||(h.position={x:l.position.x,y:l.position.y,z:l.position.z}),h.rotation||(h.rotation={x:l.quaternion.x,y:l.quaternion.y,z:l.quaternion.z,w:l.quaternion.w}),h.scale||(h.scale={x:l.scale.x,y:l.scale.y,z:l.scale.z}),h.visible=n.visible,o?.parent&&(typeof o.parent=="string"?h.parent=o.parent:o.parent?.guid?h.parent=o.parent.guid:o.parent instanceof c.Scene?h.parent="scene":console.warn("Unsupported parent type in sync instantiate options: "+o.parent?.name)),h.hostData=t,i===!1&&(h.dontSave=!0),!e?.context?.connection&&A()&&console.debug("Object will be instantiated but it will not be synced: not connected",n.guid),e.context.connection.isInRoom&&sa.push(new WeakRef(l)),e?.context?.connection.send("new-instance-created",h)}else console.warn("Missing guid, can not send new instance event",l)}return r}function aw(){return Math.random()*9999999}const sa=new Array;function lw(s){const e=s.connection.beginListen("new-instance-created",async i=>{const n=await UP(i.originalGuid,s.scene);if(i.preventCreation===!0)return;if(!n){console.warn("could not find object that was instantiated: "+i.guid);return}const o=new gn;i.position&&(o.position=new c.Vector3(i.position.x,i.position.y,i.position.z)),i.rotation&&(o.rotation=new c.Quaternion(i.rotation.x,i.rotation.y,i.rotation.z,i.rotation.w)),i.scale&&(o.scale=new c.Vector3(i.scale.x,i.scale.y,i.scale.z)),o.parent=i.parent,i.seed&&(o.idProvider=new xt(i.seed)),o.visible=i.visible,o.context=s,Zd&&s.alias&&console.log("[Remote] instantiate in: "+s.alias);const r=po(n,o);sa.push(new WeakRef(r)),r&&(i.parent==="scene"&&s.scene.add(r),Zd&&console.log("[Remote] new instance","gameobject:",r?.guid,n))}),t=s.connection.beginListen("left-room",()=>{sa.length>0&&console.debug(`Left networking room, cleaning up ${sa.length} instantiated objects`);for(const i of sa){const n=i.deref();n&&n.destroy()}sa.length=0});return()=>{s.connection.stopListen("new-instance-created",e),s.connection.stopListen("left-room",t)}}function FP(s,e){const t=aw(),i=e??new gn;i.idProvider=new xt(t);const n=po(s,i);return{seed:t,instance:n}}const cw={};function hw(s,e){cw[s]=e}async function UP(s,e){const t=cw[s];if(t!=null){const i=await t(s);if(i)return i}return dw(s,e)}function dw(s,e){if(e===null||!s)return null;if(e.guid===s)return e;if(e.children)for(const t of e.children){const i=dw(s,t);if(i)return i}return null}class zP{_context;get context(){return this._context??U.Current}get isStateMachineBehaviour(){return!0}}class $l{name;nameHash;normalizedTime;length;speed;action;hasTransitions;constructor(e,t,i,n){this.name=e.name,this.nameHash=e.hash,this.normalizedTime=t,this.length=i,this.speed=n,this.action=e.motion.action||null,this.hasTransitions=e.transitions?.length>0||!1}}function uw(s,e){return{name:"Empty",isLooping:!1,guid:e?.generateUUID()??c.MathUtils.generateUUID(),index:-1,clip:new c.AnimationClip(s,0,[])}}var eo=(s=>(s[s.If=1]="If",s[s.IfNot=2]="IfNot",s[s.Greater=3]="Greater",s[s.Less=4]="Less",s[s.Equals=6]="Equals",s[s.NotEqual=7]="NotEqual",s))(eo||{}),wg=(s=>(s[s.Float=1]="Float",s[s.Int=3]="Int",s[s.Bool=4]="Bool",s[s.Trigger=9]="Trigger",s))(wg||{});const Ke=x("debuganimatorcontroller"),qh=x("debugrootmotion");class $i{static createFromClips(e,t={looping:!1,autoTransition:!0,transitionDuration:0}){const i=[];for(let r=0;r<e.length;r++){const a=e[r],l=[];if(t.autoTransition!==!1){const d=t.transitionDuration??0,u=d/a.duration;let p=r;(t.autoTransition===void 0||t.autoTransition===!0)&&(p=(r+1)%e.length),l.push({exitTime:1-u,offset:0,duration:d,hasExitTime:!0,destinationState:p,conditions:[]})}const h={name:a.name,hash:r,motion:{name:a.name,clip:a,isLooping:t?.looping??!1},transitions:l,behaviours:[]};i.push(h)}const n={name:"AnimatorController",guid:new xt(Date.now()).generateUUID(),parameters:[],layers:[{name:"Base Layer",stateMachine:{defaultState:0,states:i}}]};return new $i(n)}play(e,t=-1,i=Number.NEGATIVE_INFINITY,n=0){if(t<0)t=0;else if(t>=this.model.layers.length){console.warn("invalid layer");return}const r=this.model.layers[t].stateMachine;for(const a of r.states)if(a.name===e||a.hash===e){Ke&&console.log("transition to ",a),this.transitionTo(a,n,i);return}console.warn("Could not find "+e+" to play")}reset(){this.setStartTransition()}setBool(e,t){const i=typeof e=="string"?"name":"hash";return this.model?.parameters?.filter(n=>n[i]===e).forEach(n=>n.value=t)}getBool(e){const t=typeof e=="string"?"name":"hash";return this.model?.parameters?.find(i=>i[t]===e)?.value??!1}setFloat(e,t){const i=typeof e=="string"?"name":"hash",n=this.model?.parameters?.filter(o=>o[i]===e);return n.forEach(o=>o.value=t),n?.length>0}getFloat(e){const t=typeof e=="string"?"name":"hash";return this.model?.parameters?.find(i=>i[t]===e)?.value??0}setInteger(e,t){const i=typeof e=="string"?"name":"hash";return this.model?.parameters?.filter(n=>n[i]===e).forEach(n=>n.value=t)}getInteger(e){const t=typeof e=="string"?"name":"hash";return this.model?.parameters?.find(i=>i[t]===e)?.value??0}setTrigger(e){Ke&&console.log("SET TRIGGER",e);const t=typeof e=="string"?"name":"hash";return this.model?.parameters?.filter(i=>i[t]===e).forEach(i=>i.value=!0)}resetTrigger(e){const t=typeof e=="string"?"name":"hash";return this.model?.parameters?.filter(i=>i[t]===e).forEach(i=>i.value=!1)}getTrigger(e){const t=typeof e=="string"?"name":"hash";return this.model?.parameters?.find(i=>i[t]===e)?.value??!1}isInTransition(){return this._activeStates.length>1}setSpeed(e){this._speed=e}_speed=1;FindState(e){return this.findState(e)}findState(e){if(!e)return null;if(Array.isArray(this.model.layers)){for(const t of this.model.layers)for(const i of t.stateMachine.states)if(i.name===e||i.hash==e)return i}return null}getCurrentStateInfo(){if(!this._activeState)return null;const e=this._activeState.motion.action;if(!e)return null;const t=this._activeState.motion.clip.duration,i=t<=0?0:Math.abs(e.time/t);return new $l(this._activeState,i,t,this._speed)}get currentAction(){if(!this._activeState)return null;const e=this._activeState.motion.action;return e||null}normalizedStartOffset=0;animator;model;get context(){return this.animator?.context}get mixer(){return this._mixer}dispose(){if(this._mixer.stopAllAction(),this.animator){this._mixer.uncacheRoot(this.animator.gameObject);for(const e of this._activeStates)e.motion.clip&&this.mixer.uncacheAction(e.motion.clip,this.animator.gameObject)}this.context?.animations.unregisterAnimationMixer(this._mixer)}bind(e){e?this.animator!==e&&(this._mixer&&(this._mixer.stopAllAction(),this.context?.animations.unregisterAnimationMixer(this._mixer)),this.animator=e,this._mixer=new c.AnimationMixer(this.animator.gameObject),this.context?.animations.registerAnimationMixer(this._mixer),this.createActions(this.animator)):console.error("AnimatorController.bind: animator is null")}clone(){if(typeof this.model=="string")return console.warn("AnimatorController has not been resolved, can not create model from string",this.model),null;Ke&&console.warn("AnimatorController clone()",this.model);const e=Uc(this.model,(i,n,o)=>o==null?!0:!(o.type==="Object3D"||o.isObject3D===!0||Av(o)||o.tracks!==void 0||o instanceof $i));return console.assert(e!==this.model),new $i(e)}update(e){if(!this.animator)return;this.evaluateTransitions(),this.updateActiveStates(e);const t=this.animator.context.time.deltaTime;this.animator.applyRootMotion&&this.rootMotionHandler?.onBeforeUpdate(e),this._mixer.update(t),this.animator.applyRootMotion&&this.rootMotionHandler?.onAfterUpdate(e)}_mixer;_activeState;get activeState(){return this._activeState}constructor(e){this.model=e,Ke&&console.log(this)}_activeStates=[];updateActiveStates(e){for(let t=0;t<this._activeStates.length;t++){const i=this._activeStates[t],n=i.motion;if(!n.action)this._activeStates.splice(t,1),t--;else{const o=n.action;o.weight=e,o.getEffectiveWeight()<=0&&!o.isRunning()&&(Ke&&console.debug("REMOVE",i.name,o.getEffectiveWeight(),o.isRunning(),o.isScheduled()),this._activeStates.splice(t,1),t--)}}}setStartTransition(){this.model.layers.length>1&&(Ke||A())&&console.warn("Multiple layers are not supported yet "+this.animator?.name);for(const e of this.model.layers){const t=e.stateMachine;t.defaultState===void 0&&(Ke&&console.warn("AnimatorController default state is undefined, will assign state 0 as default",e),t.defaultState=0);const i=t.states[t.defaultState];this.transitionTo(i,0,this.normalizedStartOffset);break}}evaluateTransitions(){let e=!1;if(!this._activeState){if(this.setStartTransition(),!this._activeState)return;e=!0}const t=this._activeState,i=t.motion.action;for(const o of t.transitions){if(!o.hasExitTime&&o.conditions.length<=0)continue;let r=!0;for(const a of o.conditions)if(!this.evaluateCondition(a)){r=!1;break}if(r)if(i){const a=t.motion.clip.duration,l=a<=0?1:Math.abs(i.time/a);let h=o.exitTime;i.timeScale<0&&(h=1-h);let d=!1;if(o.hasExitTime?i.timeScale>0?d=l>=o.exitTime:i.timeScale<0&&(d=1-l>=o.exitTime):d=!0,d){for(const u of o.conditions){const p=this.model.parameters.find(m=>m.name===u.parameter);p?.type===wg.Trigger&&p.value&&(p.value=!1)}if(i.clampWhenFinished=!0,Ke){const u=this.getState(o.destinationState,0);console.log(`Transition to ${o.destinationState} / ${u?.name}`,o,`
|
|
891
891
|
Timescale: `+i.timeScale,`
|
|
892
892
|
Normalized time: `+l.toFixed(3),`
|
|
@@ -1728,4 +1728,4 @@ Needle Engine: Begin loading `+i+`
|
|
|
1728
1728
|
Needle Engine: finished loading `+i+`
|
|
1729
1729
|
`,t,`Aborted? ${u.signal.aborted}`),u.signal.aborted){console.log("Loading finished but aborted...");return}if(this._loadId!==i){console.log("Load id changed during loading process");return}this._loadingProgress01=1,r&&y&&this._loadingView?.onLoadingUpdate(1,"creating scene"),this._didFullyLoad=!0,this.classList.remove("loading"),this.classList.add("loading-finished"),this.dispatchEvent(new CustomEvent("loadfinished",{detail:{context:this._context,src:n,loadedFiles:a}}))}applyAttributes(){const e=this.getOrCreateContext();if(e.renderer){const o=k0(this.toneMapping);o!==void 0&&(e.renderer.toneMapping=o);const r=this.getAttribute("tone-mapping-exposure");if(r!=null){const a=parseFloat(r);isNaN(a)||(e.renderer.toneMappingExposure=a)}}const t=this.getAttribute("background-blurriness");if(t!=null){const o=parseFloat(t);isNaN(o)||(e.scene.backgroundBlurriness=o)}const i=this.getAttribute("environment-intensity");if(i!=null){const o=parseFloat(i);isNaN(o)||(e.scene.environmentIntensity=o)}const n=this.getAttribute("background-color");if(e.renderer)if(typeof n=="string"&&n.length>0){const o=ie.fromColorRepresentation(n);be&&console.debug("<needle-engine> background-color changed, str:",n,"→",o),e.renderer.setClearColor(o,o.alpha),e.scene.background=null}else this.getAttribute("background-image")&&this.setAttribute("background-image",this.getAttribute("background-image"))}onXRSessionStarted=()=>{const e=this.getOrCreateContext(),t=e.xrSessionMode;t==="immersive-ar"?this.onEnterAR(e.xrSession):t==="immersive-vr"&&this.onEnterVR(e.xrSession),e.xrSession?.addEventListener("end",()=>{this.dispatchEvent(new CustomEvent("xr-session-ended",{detail:{session:e.xrSession,context:this._context,sessionMode:t}})),t==="immersive-ar"?this.onExitAR(e.xrSession):t==="immersive-vr"&&this.onExitVR(e.xrSession)})};onReady=()=>this._loadingView?.onLoadingFinished();onError=()=>this._loadingView?.setMessage("Loading failed!");getSourceFiles(){const e=this.getAttribute("src");if(!e)return[];let t;Array.isArray(e)?t=e:e.startsWith("[")&&e.endsWith("]")?t=JSON.parse(e):e.includes(",")?t=e.split(","):t=[e];for(let i=t.length-1;i>=0;i--){const n=t[i];(n==="null"||n==="undefined"||n?.length<=0)&&t.splice(i,1)}return t}checkIfSourceHasChanged(e,t){if(e?.length!==t?.length||e==null&&t!==null||e!==null&&t==null)return!0;if(e!==null&&t!==null){for(let i=0;i<e?.length;i++)if(e[i]!==t[i])return!0}return!1}_previouslyRegisteredMap=new Map;ensureLoadStartIsRegistered(){const e=this.getAttribute("loadstart");e&&this.registerEventFromAttribute("loadstart",e)}registerEventFromAttribute(e,t){const i=this._previouslyRegisteredMap.get(e);if(i&&(this._previouslyRegisteredMap.delete(e),this.removeEventListener(e,i)),typeof t=="string"&&t.length>0)try{const n=(0,eval)(t);typeof n=="function"&&(this._previouslyRegisteredMap.set(e,n),this.addEventListener(e,o=>n?.call(globalThis,this.getOrCreateContext(),o)))}catch(n){console.error("Error registering event "+e+'="'+t+`" failed with the following error:
|
|
1730
1730
|
`,n)}}setPublicKey(){oo&&oo.length>0&&this.setAttribute("public-key",oo)}setVersion(){ii.length>0&&this.setAttribute("version",ii)}getAROverlayContainer(){return this._overlay_ar.createOverlayContainer(this)}getVROverlayContainer(){for(let e=0;e<this.children.length;e++){const t=this.children[e];if(t.classList.contains("vr"))return t}return null}onEnterAR(e){const t=this.getOrCreateContext();this.onSetupAR();const i=this.getAROverlayContainer();this._overlay_ar.onBegin(t,i,e),this.dispatchEvent(new CustomEvent("enter-ar",{detail:{session:e,context:t,htmlContainer:this._overlay_ar?.ARContainer}}))}onExitAR(e){const t=this.getOrCreateContext();this._overlay_ar.onEnd(t),this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-ar",{detail:{session:e,context:t,htmlContainer:this._overlay_ar?.ARContainer}}))}onEnterVR(e){const t=this.getOrCreateContext();this.onSetupVR(),this.dispatchEvent(new CustomEvent("enter-vr",{detail:{session:e,context:t}}))}onExitVR(e){const t=this.getOrCreateContext();this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-vr",{detail:{session:e,context:t}}))}onSetupAR(){this.classList.add(jl),this.classList.remove(Bl);const e=this.getAROverlayContainer();be&&console.warn("onSetupAR:",e),e&&(e.classList.add(jl),e.classList.remove(Bl)),this.foreachHtmlElement(t=>this.setupElementsForMode(t,Yx))}onSetupVR(){this.classList.remove(jl),this.classList.remove(Bl),this.foreachHtmlElement(e=>this.setupElementsForMode(e,Kx))}onSetupDesktop(){this.classList.remove(jl),this.classList.add(Bl);const e=this.getAROverlayContainer();e&&(e.classList.remove(jl),e.classList.add(Bl)),this.foreachHtmlElement(t=>this.setupElementsForMode(t,Zx))}setupElementsForMode(e,t,i=null){if(e===this._context?.renderer?.domElement||e.id==="VRButton"||e.id==="ARButton")return;if(e.classList.contains(t))e.style.visibility="visible",e.style.display==="none"&&(e.style.display="block");else for(const o of vA)e.classList.contains(o)&&(e.style.visibility="hidden",e.style.display="none")}foreachHtmlElement(e){for(let t=0;t<this.children.length;t++){const i=this.children[t];i.style&&e(i)}}onBeforeBeginLoading(){const e=this.getAttribute("dracoDecoderPath");e&&(be&&console.log("using custom draco decoder path",e),Ub(e));const t=this.getAttribute("dracoDecoderType");t&&(be&&console.log("using custom draco decoder type",t),zb(t));const i=this.getAttribute("ktx2DecoderPath");i&&(be&&console.log("using custom ktx2 decoder path",i),Nb(i))}setAttribute(e,t){super.setAttribute(e,typeof t=="string"?t:String(t))}getAttribute(e){return super.getAttribute(e)}addEventListener(e,t,i){return super.addEventListener(e,t,i)}}function xA(s){if(s.startsWith("blob:"))return"blob";const e=s.split("/");let t=e[e.length-1];const i=t.indexOf("?");i>0&&(t=t.substring(0,i));const n=t.indexOf("=");n>0&&(t=t.substring(n));const o=t.split(".").pop(),a=o?["glb","gltf","usdz","usd","fbx","obj","mtl"].indexOf(o.toLowerCase()):-1;if(o&&a>=0&&(t=t.substring(0,t.length-o.length-1)),t=decodeURIComponent(t),t.length>3){let l="",h=!1;const d=["(",")","[","]","{","}",":",";",",",".","!","?"];for(let u=0;u<t.length;u++){let p=t[u];(p==="_"||p==="-")&&(p=" "),!(p===" "&&l.length<=0||d.includes(p)||(l.length===0&&(p=p.toUpperCase()),h&&p===" "))&&(h&&(p=p.toUpperCase()),h=!1,l+=p,p===" "&&(h=!0))}return A()&&t!==l&&console.debug('Generated display name: "'+t+'" → "'+l+'"'),l.trim()}return t}function SA(s){yu(e=>{const t=s.getAttribute("loading-blur");if(t!==null&&t!=="0"&&e.domElement===s){const i=e.lodsManager.manager?.awaitLoading({frames:5,signal:AbortSignal.timeout(1e4),maxPromisesPerObject:1}).catch(r=>{});let n="20px";t.endsWith("px")&&(n=t);const o=170;if(e.scene.background===null){const r=s,a=e.renderer.domElement,l=a.style.filter,h=a.style.overflow;a.style.filter+=`blur(${n})`,r.style.overflow="hidden",i?.then(()=>{const d=a.animate([{filter:"blur(0px)"}],{duration:o,easing:"ease-in"});d.onfinish=()=>{a.style.filter=l,r.style.overflow=h}})}else{const r=document.createElement("div");e.domElement.prepend(r),r.style.cssText="position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 10; pointer-events: none",r.style.backdropFilter=`blur(${n})`,i?.then(()=>{const a=r.animate([{backdropFilter:"blur(0px)",opacity:0}],{duration:o,easing:"ease-in"});a.onfinish=()=>{r.remove()}})}}},{once:!0})}const CA=Object.freeze(Object.defineProperty({__proto__:null,NeedleEngineWebComponent:Xy},Symbol.toStringTag,{value:"Module"}));function PA(){typeof window>"u"||(window.customElements.get("needle-engine")||window.customElements.define("needle-engine",Xy),window.customElements.get("needle-button")||window.customElements.define("needle-button",Qx),window.customElements.get("needle-logo-element")||window.customElements.define("needle-logo-element",wu),window.customElements.get("needle-menu")||window.customElements.define("needle-menu",xc))}let cv=!1;function OA(){cv||(cv=!0,PA(),vk(),_w(),u0(),$P(),Mw(),M0(),kM(),mA(),K1(),gA(),iA(),cA(),setTimeout(tO,1e3),WO(),NO(),aM(),KO(),iC())}const Ee=x("debugphysics"),Ep=x("debugcolliderplacement"),Rp=x("debugcollisions"),MA=x("showcolliders"),pd=x("debugraycasts"),Kt=Symbol("needle component"),gt=Symbol("physics body"),hv=Symbol("rigidbody");globalThis.NEEDLE_USE_RAPIER=globalThis.NEEDLE_USE_RAPIER!==void 0?globalThis.NEEDLE_USE_RAPIER:!0;Ee&&console.log("Use Rapier",!0,globalThis.NEEDLE_USE_RAPIER);ce.registerCallback(ae.ContextCreationStart,s=>{Ee&&console.log("Register rapier physics backend"),s.context.physics.engine=new Ma(s.context)});class Ma{debugRenderColliders=!1;debugRenderRaycasts=!1;removeBody(e){if(Ee&&console.log("REMOVE BODY",e?.name,e[gt]),!e)return;this.validate();const t=e[gt];if(e[gt]=null,t&&this.world){const i=this.objects.findIndex(n=>n===e);if(i>=0){const n=this.bodies[i];if(this.bodies.splice(i,1),this.objects.splice(i,1),n instanceof T.RAPIER_PHYSICS.MODULE.Collider){const o=n;this.world?.removeCollider(o,!0);const r=o.parent();r&&r.numColliders()<=0&&(r[Kt]||this.world?.removeRigidBody(r))}else n instanceof T.RAPIER_PHYSICS.MODULE.RigidBody&&(n.numColliders()<=0?this.world?.removeRigidBody(n):A()&&(n.did_log_removing||setTimeout(()=>{n.numColliders()>0&&(n.did_log_removing=!0,console.warn("RapierPhysics: removing rigidbody with colliders from the physics world is not possible right now, please remove the colliders first"))},1)))}}}setColliderEnabled(e,t){const i=e[gt];return i?(i.setEnabled(t),Ee&&console.log("SET COLLIDER ENABLED",e.name,t),!0):!1}updateBody(e,t,i){if(this.validate(),!!this.enabled&&!(e.destroyed||!e.gameObject)&&!(!t&&!i))if(e.isCollider===!0)console.warn("TODO: implement updating collider position");else{const n=e,o=n[gt];o&&this.syncPhysicsBody(n.gameObject,o,t,i)}}updateProperties(e){if(this.validate(),e.isCollider){const t=e,i=t[gt];i&&(this.internalUpdateColliderProperties(t,i),t.sharedMaterial&&this.updatePhysicsMaterial(t))}else{const t=e,i=this.internal_getRigidbody(t);i&&this.internalUpdateRigidbodyProperties(t,i)}}addForce(e,t,i){this.validate();const n=this.internal_getRigidbody(e);n?n.addForce(t,i):this._isInitialized&&console.warn("Physics Body doesn't exist: can not apply force (does your object with the Rigidbody have a collider?)")}addImpulse(e,t,i){this.validate();const n=this.internal_getRigidbody(e);n?n.applyImpulse(t,i):this._isInitialized&&console.warn("Physics Body doesn't exist: can not apply impulse (does your object with the Rigidbody have a collider?)")}getLinearVelocity(e){this.validate();const t=this.internal_getRigidbody(e);return t?t.linvel():null}getAngularVelocity(e){this.validate();const t=this.internal_getRigidbody(e);return t?t.angvel():null}resetForces(e,t){this.validate(),this.internal_getRigidbody(e)?.resetForces(t)}resetTorques(e,t){this.validate(),this.internal_getRigidbody(e)?.resetTorques(t)}applyImpulse(e,t,i){this.validate();const n=this.internal_getRigidbody(e);n?n.applyImpulse(t,i):this._isInitialized&&console.warn("Rigidbody doesn't exist: can not apply impulse (does your object with the Rigidbody have a collider?)")}wakeup(e){this.validate();const t=this.internal_getRigidbody(e);t?t.wakeUp():this._isInitialized&&console.warn("Rigidbody doesn't exist: can not wake up (does your object with the Rigidbody have a collider?)")}isSleeping(e){return this.validate(),this.internal_getRigidbody(e)?.isSleeping()}setAngularVelocity(e,t,i){this.validate();const n=this.internal_getRigidbody(e);n?n.setAngvel(t,i):this._isInitialized&&console.warn("Rigidbody doesn't exist: can not set angular velocity (does your object with the Rigidbody have a collider?)")}setLinearVelocity(e,t,i){this.validate();const n=this.internal_getRigidbody(e);n?n.setLinvel(t,i):this._isInitialized&&console.warn("Rigidbody doesn't exist: can not set linear velocity (does your object with the Rigidbody have a collider?)")}context;_initializePromise;_isInitialized=!1;constructor(e){this.context=e}get isInitialized(){return this._isInitialized}async initialize(){return this._initializePromise||(this._initializePromise=this.internalInitialization()),this._initializePromise}async internalInitialization(){return x("__nophysics")?(console.warn("Physics are disabled"),!1):(Ee&&console.log("Initialize rapier physics engine"),this._hasCreatedWorld?(console.error("Invalid call to create physics world: world is already created"),!0):(this._hasCreatedWorld=!0,T.RAPIER_PHYSICS.MAYBEMODULE==null&&(Ee&&console.trace("Loading rapier physics engine"),await(await T.RAPIER_PHYSICS.load()).init()),Ee&&console.log("Physics engine initialized, creating world..."),this._world=new T.RAPIER_PHYSICS.MODULE.World(this._gravity),this.rapierRay=new T.RAPIER_PHYSICS.MODULE.Ray({x:0,y:0,z:0},{x:0,y:0,z:1}),this.enabled=!0,this._isInitialized=!0,Ee&&console.log("Physics world created"),!0))}validate(){this._isInitialized||Ee&&(this._lastWarnTime=this._lastWarnTime??0,Date.now()-this._lastWarnTime>1e3&&(this._lastWarnTime=Date.now(),console.warn("Physics engine is not initialized")))}rapierRay;raycastVectorsBuffer=new _i(()=>new c.Vector3,10);raycast(e,t,i){if(!this._isInitialized)return console.log("Physics engine is not initialized"),null;let n=i?.maxDistance,o=i?.solid;n===void 0&&(n=1/0),o===void 0&&(o=!0);const r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;(this.debugRenderRaycasts||pd)&&B.DrawRay(r.origin,r.dir,255,1);const a=this.world?.castRay(r,n,o,i?.queryFilterFlags,i?.filterGroups,void 0,void 0,l=>{const h=l[Kt];return i?.filterPredicate?i.filterPredicate(h):i?.useIgnoreRaycastLayer!==!1?!h?.gameObject.layers.isEnabled(2):!0});if(a){const l=r.pointAt(a.timeOfImpact),h=this.raycastVectorsBuffer.get();return h.set(l.x,l.y,l.z),{point:h,collider:a.collider[Kt]}}return null}raycastAndGetNormal(e,t,i){if(!this._isInitialized)return null;let n=i?.maxDistance,o=i?.solid;n===void 0&&(n=1/0),o===void 0&&(o=!0);const r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;(this.debugRenderRaycasts||pd)&&B.DrawRay(r.origin,r.dir,255,1);const a=this.world?.castRayAndGetNormal(r,n,o,i?.queryFilterFlags,i?.filterGroups,void 0,void 0,l=>{const h=l[Kt];return i?.filterPredicate?i.filterPredicate(h):i?.useIgnoreRaycastLayer!==!1?!h?.gameObject.layers.isEnabled(2):!0});if(a){const l=r.pointAt(a.timeOfImpact),h=a.normal,d=this.raycastVectorsBuffer.get(),u=this.raycastVectorsBuffer.get();return d.set(l.x,l.y,l.z),u.set(h.x,h.y,h.z),{point:d,normal:u,collider:a.collider[Kt]}}return null}getPhysicsRay(e,t,i){const n=this.context?.mainCamera;if(t===void 0){const a=this.context?.input.getPointerPosition(0);if(a)t=a;else return null}if(t.z===void 0){if(!n)return console.error("Can not perform raycast from 2d point - no main camera found"),null;const a=this.raycastVectorsBuffer.get();a.x=t.x,a.y=t.y,a.z=0,(a.x>1||a.y>1||a.y<-1||a.x<-1)&&(Ee&&console.warn("Converting screenspace to raycast space",a),this.context?.input.convertScreenspaceToRaycastSpace(a)),a.unproject(n),t=a}const o=t;e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z;const r=this.raycastVectorsBuffer.get();if(i)r.set(i.x,i.y,i.z);else{if(!n)return console.error("Can not perform raycast - no camera found"),null;r.set(e.origin.x,e.origin.y,e.origin.z);const a=Y(n);r.sub(a)}return r.normalize(),e.dir.x=r.x,e.dir.y=r.y,e.dir.z=r.z,e}rapierSphere=null;rapierBox=null;rapierColliderArray=[];rapierIdentityRotation={x:0,y:0,z:0,w:1};rapierForwardVector={x:0,y:0,z:1};sphereOverlap(e,t){return this.rapierSphere??=new T.RAPIER_PHYSICS.MODULE.Ball(t),this.rapierSphere.radius=t,(this.debugRenderRaycasts||pd)&&B.DrawWireSphere(e,t,3359999,1),this.shapeOverlap(e,this.rapierIdentityRotation,this.rapierSphere)}boxOverlap(e,t,i=null){return i===null&&(i=this.rapierIdentityRotation),this.rapierBox??=new T.RAPIER_PHYSICS.MODULE.Cuboid(1,1,1),this.rapierBox.halfExtents.x=t.x*.5,this.rapierBox.halfExtents.y=t.y*.5,this.rapierBox.halfExtents.z=t.z*.5,(this.debugRenderRaycasts||pd)&&B.DrawWireBox(e,t,3359999,1,!0,i),this.shapeOverlap(e,i,this.rapierBox)}shapeOverlap(e,t,i){return this.rapierColliderArray.length=0,this._isInitialized?this.world?(this.world.intersectionsWithShape(e,t,i,n=>{const o=n[Kt],r=new Qv(o.gameObject,o);return this.rapierColliderArray.push(r),!0},void 0,void 0,void 0,void 0,n=>n.isSensor()?!1:n[Kt].gameObject.layers.isEnabled(2)==!1),this.rapierColliderArray):this.rapierColliderArray:this.rapierColliderArray}enabled=!1;get world(){return this._world}_tempPosition=new c.Vector3;_tempQuaternion=new c.Quaternion;_tempScale=new c.Vector3;_tempMatrix=new c.Matrix4;static _didLoadPhysicsEngine=!1;_isUpdatingPhysicsWorld=!1;get isUpdating(){return this._isUpdatingPhysicsWorld}_world;_hasCreatedWorld=!1;eventQueue;collisionHandler;objects=[];bodies=[];_meshCache=new Map;_gravity={x:0,y:-9.81,z:0};get gravity(){return this.world?.gravity??this._gravity}set gravity(e){this.world?this.world.gravity=e:this._gravity=e}clearCaches(){this._meshCache.clear(),this.eventQueue?.raw&&this.eventQueue?.free(),this.world?.bodies&&this.world?.free()}async addBoxCollider(e,t){if(this._isInitialized||await this.initialize(),!e.activeAndEnabled)return;if(!this.enabled){Ee&&console.warn("Physics are disabled");return}const i=e.gameObject,n=je(i,this._tempPosition).multiply(t);n.multiplyScalar(.5),n.x<0&&(n.x=Math.abs(n.x)),n.y<0&&(n.y=Math.abs(n.y)),n.z<0&&(n.z=Math.abs(n.z));const o=1e-7;n.x<o&&(n.x=o),n.y<o&&(n.y=o),n.z<o&&(n.z=o);const r=T.RAPIER_PHYSICS.MODULE.ColliderDesc.cuboid(n.x,n.y,n.z);this.createCollider(e,r)}async addSphereCollider(e){if(this._isInitialized||await this.initialize(),!e.activeAndEnabled)return;if(!this.enabled){Ee&&console.warn("Physics are disabled");return}const t=T.RAPIER_PHYSICS.MODULE.ColliderDesc.ball(.5);this.createCollider(e,t),this.updateProperties(e)}async addCapsuleCollider(e,t,i){if(this._isInitialized||await this.initialize(),!e.activeAndEnabled)return;if(!this.enabled){Ee&&console.warn("Physics are disabled");return}const o=e.gameObject.worldScale;o.x=Math.abs(o.x),o.y=Math.abs(o.y);const r=i*o.x;t=Math.max(t,r);const a=j.clamp(t*.5*o.y-i*o.x,0,Number.MAX_SAFE_INTEGER),l=T.RAPIER_PHYSICS.MODULE.ColliderDesc.capsule(a,r);this.createCollider(e,l)}async addMeshCollider(e,t,i,n){let o=t.geometry;if(!o){Ee&&console.warn("Missing mesh geometry",t.name);return}o.index?.array?.length||(console.warn(`Your MeshCollider is missing vertices or indices in the assined mesh "${t.name}". Consider providing an indexed geometry.`),o=X.mergeVertices(o));let r=null;const a=o.getAttribute("position");if(a instanceof c.InterleavedBufferAttribute){const u=a.count;r=new Float32Array(u*3);for(let p=0;p<u;p++){const m=a.getX(p),y=a.getY(p),_=a.getZ(p);r[p*3]=m,r[p*3+1]=y,r[p*3+2]=_}}else r=a.array;if(await this.initialize(),!this.enabled){Ee&&console.warn("Physics are disabled");return}if(!e.activeAndEnabled)return;const l=o.index?.array,h=e.gameObject.worldScale.clone();if(n&&h.multiply(n),Math.abs(h.x-1)>1e-4||Math.abs(h.y-1)>1e-4||Math.abs(h.z-1)>1e-4){const u=`${o.uuid}_${h.x}_${h.y}_${h.z}_${i}`;if(this._meshCache.has(u))Ee&&console.warn("Use cached mesh collider"),r=this._meshCache.get(u);else{(Ee||A())&&console.debug(`[Performance] Your MeshCollider "${e.name}" is scaled: consider applying the scale to the collider mesh instead (${h.x}, ${h.y}, ${h.z})`);const p=new Float32Array(r.length);for(let m=0;m<r.length;m+=3)p[m]=r[m]*h.x,p[m+1]=r[m+1]*h.y,p[m+2]=r[m+2]*h.z;r=p,this._meshCache.set(u,p)}}const d=i?T.RAPIER_PHYSICS.MODULE.ColliderDesc.convexHull(r):T.RAPIER_PHYSICS.MODULE.ColliderDesc.trimesh(r,l);d&&this.createCollider(e,d)}updatePhysicsMaterial(e){if(!e)return;const t=e.sharedMaterial,i=e[gt];if(i&&t){if(t.bounciness!==void 0&&i.setRestitution(t.bounciness),t.bounceCombine!==void 0)switch(t.bounceCombine){case st.Average:i.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Average);break;case st.Maximum:i.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Max);break;case st.Minimum:i.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Min);break;case st.Multiply:i.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Multiply);break}if(t.dynamicFriction!==void 0&&i.setFriction(t.dynamicFriction),t.frictionCombine!==void 0)switch(t.frictionCombine){case st.Average:i.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Average);break;case st.Maximum:i.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Max);break;case st.Minimum:i.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Min);break;case st.Multiply:i.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Multiply);break}}}getBody(e){return e?e[gt]:null}getComponent(e){return e?e[Kt]:null}createCollider(e,t){if(!this.world)throw new Error("Physics world not initialized");const i=this._tempMatrix;let n;e.attachedRigidbody?n=this.getRigidbody(e,this._tempMatrix):(Ee&&console.log("Create collider without rigidbody",e.name),i.makeRotationFromQuaternion(pe(e.gameObject)),i.setPosition(Y(e.gameObject))),i.decompose(this._tempPosition,this._tempQuaternion,this._tempScale),this.tryApplyCenter(e,this._tempPosition),t.setTranslation(this._tempPosition.x,this._tempPosition.y,this._tempPosition.z),t.setRotation(this._tempQuaternion),t.setSensor(e.isTrigger);const o=e.sharedMaterial;if(o){if(o.bounciness!==void 0&&t.setRestitution(o.bounciness),o.bounceCombine!==void 0)switch(o.bounceCombine){case st.Average:t.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Average);break;case st.Maximum:t.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Max);break;case st.Minimum:t.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Min);break;case st.Multiply:t.setRestitutionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Multiply);break}if(o.dynamicFriction!==void 0&&t.setFriction(o.dynamicFriction),o.frictionCombine!==void 0)switch(o.frictionCombine){case st.Average:t.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Average);break;case st.Maximum:t.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Max);break;case st.Minimum:t.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Min);break;case st.Multiply:t.setFrictionCombineRule(T.RAPIER_PHYSICS.MODULE.CoefficientCombineRule.Multiply);break}}e.attachedRigidbody?.autoMass===!1&&(t.setDensity(1e-6),t.setMass(1e-6));try{const r=this.world.createCollider(t,n);return r[Kt]=e,e[gt]=r,r.setActiveEvents(T.RAPIER_PHYSICS.MODULE.ActiveEvents.COLLISION_EVENTS),r.setActiveCollisionTypes(T.RAPIER_PHYSICS.MODULE.ActiveCollisionTypes.ALL),this.objects.push(e),this.bodies.push(r),this.updateColliderCollisionGroups(e),Ee&&console.log("Created collider",e.name,r),r}catch(r){return console.error('Error creating collider "'+e.name+`"
|
|
1731
|
-
Error:`,r),null}}updateColliderCollisionGroups(e){const t=e[gt],i=e.membership;let n=0;if(i==null)n=65535;else for(let a=0;a<i.length;a++){const l=i[a];l>31?console.error(`Rapier only supports 32 layers, layer ${l} is not supported`):n|=1<<Math.floor(l)}const o=e.filter;let r=0;if(o==null)r=65535;else for(let a=0;a<o.length;a++){const l=o[a];l>31?console.error(`Rapier only supports 32 layers, layer ${l} is not supported`):r|=1<<Math.floor(l)}t.setCollisionGroups(n<<16|r)}getRigidbody(e,t){if(!this.world)throw new Error("Physics world not initialized");let i=null;if(e.attachedRigidbody){const n=e.attachedRigidbody;if(i=n[gt],!i){const o=n.isKinematic&&!Ep;Ee&&console.log("Create rigidbody",o);const r=o?T.RAPIER_PHYSICS.MODULE.RigidBodyDesc.kinematicPositionBased():T.RAPIER_PHYSICS.MODULE.RigidBodyDesc.dynamic(),a=Y(e.attachedRigidbody.gameObject);r.setTranslation(a.x,a.y,a.z),r.setRotation(pe(e.attachedRigidbody.gameObject)),r.centerOfMass=new T.RAPIER_PHYSICS.MODULE.Vector3(n.centerOfMass.x,n.centerOfMass.y,n.centerOfMass.z),i=this.world.createRigidBody(r),this.bodies.push(i),this.objects.push(n)}i[Kt]=n,n[gt]=i,this.internalUpdateRigidbodyProperties(n,i),this.getRigidbodyRelativeMatrix(e.gameObject,n.gameObject,t),e[hv]=i}else{const n=T.RAPIER_PHYSICS.MODULE.RigidBodyDesc.kinematicPositionBased(),o=Y(e.gameObject);n.setTranslation(o.x,o.y,o.z),n.setRotation(pe(e.gameObject)),i=this.world.createRigidBody(n),t.identity(),i[Kt]=null}return i}internal_getRigidbody(e){return e.isCollider===!0?e[hv]:e[gt]}internalUpdateColliderProperties(e,t){const i=t.shape;let n=!1;switch(i.type){case T.RAPIER_PHYSICS.MODULE.ShapeType.Ball:{const p=i,m=e,y=e.gameObject,_=je(y,this._tempPosition),g=Math.abs(m.radius*_.x);n=p.radius!==g,p.radius=g,n&&t.setShape(p);break}case T.RAPIER_PHYSICS.MODULE.ShapeType.Cuboid:const o=i,r=e,a=e.gameObject,l=je(a,this._tempPosition),h=Math.abs(r.size.x*.5*l.x),d=Math.abs(r.size.y*.5*l.y),u=Math.abs(r.size.z*.5*l.z);n=o.halfExtents.x!==h||o.halfExtents.y!==d||o.halfExtents.z!==u,o.halfExtents.x=h,o.halfExtents.y=d,o.halfExtents.z=u,n&&t.setShape(o);break}if(n){const o=e.attachedRigidbody;o?.autoMass&&this.getBody(o)?.recomputeMassPropertiesFromColliders()}this.updateColliderCollisionGroups(e),e.isTrigger!==t.isSensor()&&t.setSensor(e.isTrigger)}internalUpdateRigidbodyProperties(e,t){if(t.enableCcd(e.collisionDetectionMode!==Tu.Discrete),t.setLinearDamping(e.drag),t.setAngularDamping(e.angularDrag),t.setGravityScale(e.useGravity?e.gravityScale:0,!0),e.dominanceGroup<=127&&e.dominanceGroup>=-127?t.setDominanceGroup(Math.floor(e.dominanceGroup)):t.setDominanceGroup(0),e.autoMass){t.setAdditionalMass(0,!1);for(let i=0;i<t.numColliders();i++)t.collider(i).setDensity(1);t.recomputeMassPropertiesFromColliders()}else{t.setAdditionalMass(e.mass,!1);for(let i=0;i<t.numColliders();i++)t.collider(i).setDensity(1e-7);t.recomputeMassPropertiesFromColliders()}t.setEnabledRotations(!e.lockRotationX,!e.lockRotationY,!e.lockRotationZ,!1),t.setEnabledTranslations(!e.lockPositionX,!e.lockPositionY,!e.lockPositionZ,!1),e.isKinematic?t.setBodyType(T.RAPIER_PHYSICS.MODULE.RigidBodyType.KinematicPositionBased,!1):t.setBodyType(T.RAPIER_PHYSICS.MODULE.RigidBodyType.Dynamic,!1)}lines;disabledLines;step(e){if(this.world&&this.enabled){if(this._isUpdatingPhysicsWorld=!0,this.eventQueue||(this.eventQueue=new T.RAPIER_PHYSICS.MODULE.EventQueue(!1)),e===void 0||e<=0){this._isUpdatingPhysicsWorld=!1;return}else if(e!==void 0){const t=j.lerp(this.world.timestep,e,.8);this.world.timestep=t}try{this.world.step(this.eventQueue)}catch(t){console.warn("Error running physics step",{timestep:this.world.timestep},t)}this._isUpdatingPhysicsWorld=!1}}postStep(){this.world&&this.enabled&&(this._isUpdatingPhysicsWorld=!0,this.syncObjects(),this._isUpdatingPhysicsWorld=!1,this.eventQueue&&!this.collisionHandler&&(this.collisionHandler=new kA(this.world,this.eventQueue)),this.collisionHandler&&(this.collisionHandler.handleCollisionEvents(),this.collisionHandler.update()),this.updateDebugRendering(this.world))}updateDebugRendering(e){if(Ee||Ep||MA||this.debugRenderColliders===!0){if(!this.lines){const n=new c.LineBasicMaterial({color:7855479,fog:!1}),o=new c.BufferGeometry;this.lines=new c.LineSegments(o,n),this.lines.layers.disableAll(),this.lines.layers.enable(2)}if(!this.disabledLines){const n=new c.LineBasicMaterial({color:14514039,fog:!1}),o=new c.BufferGeometry;this.disabledLines=new c.LineSegments(o,n),this.disabledLines.layers.disableAll(),this.disabledLines.layers.enable(2)}this.lines.parent!==this.context?.scene&&this.context?.scene.add(this.lines),this.disabledLines.parent!==this.context?.scene&&this.context?.scene.add(this.disabledLines);const t=e.debugRender(void 0,n=>n.isEnabled());this.lines.geometry.setAttribute("position",new c.BufferAttribute(t.vertices,3)),this.lines.geometry.setAttribute("color",new c.BufferAttribute(t.colors,4));const i=e.debugRender(void 0,n=>!n.isEnabled());this.disabledLines.geometry.setAttribute("position",new c.BufferAttribute(i.vertices,3)),this.disabledLines.geometry.setAttribute("color",new c.BufferAttribute(i.colors,4)),this.disabledLines.visible=i.vertices.length>0,(this.context.time.frame%30===0||this.lines.geometry.boundingSphere?.radius===0)&&(this.lines.geometry.computeBoundingSphere(),this.disabledLines.geometry.computeBoundingSphere())}else this.lines&&this.context?.scene.remove(this.lines),this.disabledLines&&this.context?.scene.remove(this.disabledLines)}syncObjects(){if(!Ep)for(let e=0;e<this.bodies.length;e++){const t=this.objects[e],i=this.bodies[e],n=t;if(n?.isCollider===!0&&!n.attachedRigidbody){const l=i.parent();l?this.syncPhysicsBody(t.gameObject,l,!0,!0):this.syncPhysicsBody(t.gameObject,i,!0,!0);continue}const o=i.translation(),r=i.rotation();if(Number.isNaN(o.x)||Number.isNaN(r.x)){!n.__COLLIDER_NAN&&A()&&(console.warn("Collider has NaN values",n.name,n.gameObject,i),n.__COLLIDER_NAN=!0);continue}const a=t.center;if(a&&a.isVector3){this._tempQuaternion.set(r.x,r.y,r.z,r.w);const l=this._tempPosition.copy(a).applyQuaternion(this._tempQuaternion),h=je(t.gameObject);l.multiply(h),o.x-=l.x,o.y-=l.y,o.z-=l.z}ur(t.gameObject,o.x,o.y,o.z),Nm(t.gameObject,r.x,r.y,r.z,r.w)}}syncPhysicsBody(e,t,i,n){if(t instanceof T.RAPIER_PHYSICS.MODULE.RigidBody){const o=Y(e,this._tempPosition),r=pe(e,this._tempQuaternion);switch(t.bodyType()){case T.RAPIER_PHYSICS.MODULE.RigidBodyType.Fixed:case T.RAPIER_PHYSICS.MODULE.RigidBodyType.KinematicPositionBased:case T.RAPIER_PHYSICS.MODULE.RigidBodyType.KinematicVelocityBased:i&&t.setNextKinematicTranslation(o),n&&t.setNextKinematicRotation(r);break;default:i&&t.setTranslation(o,!1),n&&t.setRotation(r,!1);break}}else if(t instanceof T.RAPIER_PHYSICS.MODULE.Collider){e.matrixWorldNeedsUpdate&&e.updateWorldMatrix(!0,!1),e.matrixWorld.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const o=this._tempPosition,r=this._tempQuaternion,a=t[Kt];if(this.tryApplyCenter(a,o),i){const l=t.translation();(l.x!==o.x||l.y!==o.y||l.z!==o.z)&&t.setTranslation(o)}if(n){const l=t.rotation();(l.x!==r.x||l.y!==r.y||l.z!==r.z||l.w!==r.w)&&t.setRotation(r)}}}_tempCenterPos=new c.Vector3;_tempCenterVec=new c.Vector3;_tempCenterQuaternion=new c.Quaternion;tryApplyCenter(e,t){const i=e.center;i&&e.gameObject&&(i.x!==0||i.y!==0||i.z!==0)&&(this._tempCenterPos.x=i.x,this._tempCenterPos.y=i.y,this._tempCenterPos.z=i.z,je(e.gameObject,this._tempCenterVec),this._tempCenterPos.multiply(this._tempCenterVec),e.attachedRigidbody?this._tempCenterPos.applyQuaternion(e.gameObject.quaternion):(pe(e.gameObject,this._tempCenterQuaternion),this._tempCenterPos.applyQuaternion(this._tempCenterQuaternion)),t.x+=this._tempCenterPos.x,t.y+=this._tempCenterPos.y,t.z+=this._tempCenterPos.z)}static _matricesBuffer=[];getRigidbodyRelativeMatrix(e,t,i,n){if(n===void 0&&(n=Ma._matricesBuffer,n.length=0),e===t){const o=je(e,this._tempPosition);i.makeScale(o.x,o.y,o.z);for(let r=n.length-1;r>=0;r--)i.multiply(n[r]);return i}return n.push(e.matrix),e.parent&&this.getRigidbodyRelativeMatrix(e.parent,t,i,n),i}static centerConnectionPos={x:0,y:0,z:0};static centerConnectionRot={x:0,y:0,z:0,w:1};addFixedJoint(e,t){if(!this.world){console.error("Physics world not initialized");return}const i=e[gt],n=t[gt];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const o=T.RAPIER_PHYSICS.MODULE.JointData.fixed(Ma.centerConnectionPos,Ma.centerConnectionRot,this._tempPosition,this._tempQuaternion),r=this.world.createImpulseJoint(o,i,n,!0);Ee&&console.log("ADD FIXED JOINT",r)}addHingeJoint(e,t,i,n){if(!this.world){console.error("Physics world not initialized");return}const o=e[gt],r=t[gt];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const a=T.RAPIER_PHYSICS.MODULE.JointData.revolute(i,this._tempPosition,n),l=this.world.createImpulseJoint(a,o,r,!0);Ee&&console.log("ADD HINGE JOINT",l)}calculateJointRelativeMatrices(e,t,i){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);const n=e.matrixWorld,o=t.matrixWorld;n.elements[0]=1,n.elements[5]=1,n.elements[10]=1,o.elements[0]=1,o.elements[5]=1,o.elements[10]=1,i.copy(o).premultiply(n.invert()).invert()}}class kA{world;eventQueue;constructor(e,t){this.world=e,this.eventQueue=t}activeCollisions=[];activeCollisionsStay=[];activeTriggers=[];handleCollisionEvents(){this.eventQueue&&this.world&&this.eventQueue.drainCollisionEvents((e,t,i)=>{const n=this.world.getCollider(e),o=this.world.getCollider(t);if(!n||!o)return;const r=n[Kt],a=o[Kt];Rp&&console.log("EVT",r.name,a.name,i,n,o),r&&a&&(i?(this.onCollisionStarted(r,n,a,o),this.onCollisionStarted(a,o,r,n)):(this.onCollisionEnded(r,a),this.onCollisionEnded(a,r)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,i,n){let o=null;if(e.isTrigger||i.isTrigger)pr(e.gameObject,r=>{r.onTriggerEnter&&!r.destroyed&&r.onTriggerEnter(i),this.activeTriggers.push({collider:e,component:r,otherCollider:i})});else{const r=e.gameObject;this.world.contactPair(t,n,(a,l)=>{pr(r,h=>{if(h.destroyed)return;const d=h.onCollisionEnter||h.onCollisionStay||h.onCollisionExit;if(d||Rp){if(!o){const u=[],p=a.normal();i instanceof Co&&i.convex&&(p.x=-p.x,p.y=-p.y,p.z=-p.z);for(let m=0;m<a.numSolverContacts();m++){const y=a.solverContactPoint(m),_=a.contactImpulse(m);if(y){const g=a.contactDist(m),v=a.solverContactFriction(m),b=a.solverContactTangentVelocity(m),w=new qv(y,g,p,_,v,b);u.push(w),Rp&&B.DrawDirection(y,p,16711680,3,!0)}}o=new Xv(r,i,u)}if(d){const u={collider:e,component:h,collision:o};this.activeCollisions.push(u),h.onCollisionStay&&this.activeCollisionsStay.push(u),h.onCollisionEnter?.call(h,o)}}})})}}onHandleCollisionStay(){for(const e of this.activeCollisionsStay){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onCollisionStay){if(e.collision.collider.destroyed)continue;const i=e.collision;t.onCollisionStay(i)}}for(const e of this.activeTriggers){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onTriggerStay){const i=e.otherCollider;if(i.destroyed)continue;t.onTriggerStay(i)}}}onCollisionEnded(e,t){if(!(e.destroyed||t.destroyed)){for(let i=0;i<this.activeCollisions.length;i++){const n=this.activeCollisions[i],o=n.collider;if(o.destroyed||n.collision.collider.destroyed){this.activeCollisions.splice(i,1),i--;continue}if(o===e&&n.collision.collider===t){const r=n.component;if(this.activeCollisions.splice(i,1),i--,r.activeAndEnabled&&r.onCollisionExit){const a=n.collision;r.onCollisionExit(a)}}}for(let i=0;i<this.activeCollisionsStay.length;i++){const n=this.activeCollisionsStay[i],o=n.collider;if(o.destroyed||n.collision.collider.destroyed){this.activeCollisionsStay.splice(i,1),i--;continue}if(o===e&&n.collision.collider===t){const r=n.component;if(this.activeCollisionsStay.splice(i,1),i--,r.activeAndEnabled&&r.onCollisionExit){const a=n.collision;r.onCollisionExit(a)}}}for(let i=0;i<this.activeTriggers.length;i++){const n=this.activeTriggers[i],o=n.collider;if(o.destroyed||n.otherCollider.destroyed){this.activeTriggers.splice(i,1),i--;continue}if(o===e&&n.otherCollider===t){const r=n.component;if(this.activeTriggers.splice(i,1),i--,r.activeAndEnabled&&r.onTriggerExit){const a=n.otherCollider;r.onTriggerExit(a)}}}}}}let Am=0;function dv(s){s?Am++:Am--}function EA(){return Am>0}const RA={binary:!0,animations:!0};async function TA(s){if(!s.context)throw new Error("No context provided to exportAsGLTF");s.scene||(s.scene=s.context.scene);const e={...RA,...s},{context:t}=e,i=new X.GLTFExporter;i.register(a=>new Xw(a)),i.register(a=>new _k(a)),i.register(a=>new Yw(a)),Wg(i,e.context);const n={binary:e.binary,animations:DA(t,e.scene,[])},o=new AA;console.debug("Exporting GLTF",n),o.onBeforeExport(e),dv(!0);const r=await i.parseAsync(e.scene,n).catch(a=>(console.error(a),null));if(dv(!1),o.onAfterExport(e),!r)throw new Error("Failed to export GLTF");if(e.downloadAs!=null){let a=null;if(r instanceof ArrayBuffer?a=new Blob([r],{type:"application/octet-stream"}):console.error("Can not download GLTF as a blob",r),a){const l=URL.createObjectURL(a),h=document.createElement("a");h.href=l;let d=e.downloadAs;!d.endsWith(".glb")&&!d.endsWith(".gltf")&&(d+=e.binary?".glb":".gltf"),h.download=d,h.click()}}return r}const uv=Symbol("needle:weight");class AA{_undo=[];onBeforeExport(e){e.context.animations.mixers.forEach(t=>{const i=qn.tryGetActionsFromMixer(t);if(i)for(let n=0;n<i.length;n++){const o=i[n];o[uv]=o.weight,o.weight=0,this._undo.push(()=>{o.weight=o[uv]})}t.update(0)}),e.context.scene.traverse(t=>{if(!mm(t)){const i=t.parent;i&&(t.removeFromParent(),this._undo.push(()=>i.add(t)))}})}onAfterExport(e){this._undo.forEach(t=>t()),this._undo.length=0}}function DA(s,e,t){s.animations.mixers.forEach(n=>{const o=qn.tryGetActionsFromMixer(n);if(o)for(let r=0;r<o.length;r++){const l=o[r].getClip();t.push(l)}}),Array.isArray(e)||(e=[e]);for(const n of e)qn.tryGetAnimationClipsFromObjectHierarchy(n,t);const i=new Set(t);return Array.from(i)}const Fl=x("debugavatar");class Qy{root;head;leftHand;rigthHand;get isValid(){return this.head!==null&&this.head!==void 0}constructor(e,t,i,n){this.root=e,this.head=t,this.leftHand=i,this.rigthHand=n,this.root?.traverse(o=>o.layers.set(2))}}class Jx{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof t=="string"){if(i=await this.loadAvatar(e,t),!i){const o=new gn;i=S.instantiate(ka(t,e.scene),o)}}else i=t;if(!i)return null;const n=this.findAvatar(i);return n.isValid?(Fl&&console.log("[Custom Avatar] valid config",t,Fl?n:""),n):(console.warn("[Custom Avatar] config isn't valid",t,Fl?n:""),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t=="string","Avatar id must not be null"),t.length<=0||!t)return null;if(Fl&&console.log("[Custom Avatar] "+t+", loading..."),t.endsWith(".glb")||(t+=".glb"),this.avatarRegistryUrl===null){const n=await fetch("./"+t);let o=null;if(n.ok){const a=await n.blob();a&&(o=await a.arrayBuffer())}return o?(await un().parseSync(e,o,null,0))?.scene??null:null}const i=new X.GLTFLoader;return hy(i,e),new Promise((n,o)=>{const r=this.avatarRegistryUrl+"/"+t;i.load(r,async a=>{await un().createBuiltinComponents(e,r,a,null,void 0),n(a.scene)},a=>{Fl&&console.log("[Custom Avatar] "+a.loaded/a.total*100+"% loaded of "+a.total/1024+"kB")},a=>{console.error("[Custom Avatar] Error when loading: "+a),n(null)})})}cacheModel(e,t){}findAvatar(e){const t=e;let i=t;i.children.length==1&&(i=e.children[0]);let n=this.findAvatarPart(i,["head"]);const o=this.findAvatarPart(i,["left","hand"]),r=this.findAvatarPart(i,["right","hand"]);if(!n){n=t;const l=new c.Vector3;new c.Box3().setFromObject(n).getSize(l);const h=Math.max(l.x,l.y,l.z);console.warn("[Custom Avatar] Normalizing head scale, it's too big: "+h+" meters! Should be < 0.3m"),h>.3&&n.scale.multiplyScalar(1/h*.3)}return new Qy(t,n,o,r)}findAvatarPart(e,t){const i=e.name.toLowerCase();let n=!0;for(const o of t){if(!n)break;i.indexOf(o)===-1&&(n=!1)}if(n)return e;if(e.children)for(const o of e.children){const r=this.findAvatarPart(o,t);if(r)return r}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}}class eS{get extensionName(){return"DocumentExtension"}onAfterBuildDocument(e){}}class tS{}const LA=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:ue,ActionCollection:dx,ActionModel:Jt,AlignmentConstraint:th,Animation:Tt,AnimationCurve:gh,AnimationExtension:qu,AnimationTrackHandler:Rc,Animator:lt,AnimatorController:$i,Antialiasing:_h,Attractor:ll,AudioExtension:kr,AudioListener:ps,AudioSource:vi,AudioTrackHandler:ms,Avatar:go,AvatarBlink_Simple:Pr,AvatarEyeLook_Rotation:Lg,AvatarLoader:Jx,AvatarMarker:Oe,AvatarModel:Qy,Avatar_Brain_LookAt:Ac,Avatar_MouthShapes:nh,Avatar_MustacheShake:Ag,Avatar_POI:cr,AxesHelper:Xa,BaseUIComponent:Gi,BasicIKConstraint:jg,BehaviorExtension:dy,BehaviorModel:St,BloomEffect:cf,BoxCollider:Nu,BoxGizmo:Ar,BoxHelperComponent:bt,Button:Ls,CallInfo:ds,Camera:si,CameraTargetReachedEvent:Ec,Canvas:Ua,CanvasGroup:yo,CapsuleCollider:ws,ChangeMaterialOnClick:ny,ChangeTransformOnClick:Er,CharacterController:Or,CharacterControllerInput:Ps,ChromaticAberration:bh,ClickThrough:vf,ColorAdjustments:Ro,ColorBySpeedModule:al,ColorOverLifetimeModule:rf,ContactShadows:sh,ControlTrackHandler:ju,CursorFollow:$r,CustomBranding:Tr,Deletable:zg,DeleteBox:co,DepthOfField:vn,DeviceFlag:Vu,DocumentExtension:eS,DragControls:Zo,DropListener:Ms,Duplicatable:Xg,EffectWrapper:jc,EmissionModule:Ts,EmphasizeOnClick:Za,EnvironmentScene:Bu,EventList:J,EventListEvent:Ru,EventSystem:Gt,EventTrigger:Gu,FieldWithDefault:Hw,FixedJoint:Py,Fog:nl,GltfExport:Jg,GltfExportBox:Kg,Gradient:Lr,Graphic:fh,GraphicRaycaster:Au,GridHelper:sl,GridLayoutGroup:yy,GroundProjectedEnv:Yn,GroupActionModel:Jo,HideOnStart:ji,HingeJoint:mh,HorizontalLayoutGroup:gy,get HoverAnimation(){return exports.HoverAnimation},Image:ul,InheritVelocityModule:Ry,InputField:Ny,InstanceHandle:hr,InstancingHandler:_r,Interactable:Ug,Keyframe:oi,LODGroup:nf,LODModel:ol,Light:Ot,LimitVelocityOverLifetimeModule:nt,LogStats:Fg,LookAt:Vy,LookAtConstraint:Cr,MainModule:Lt,MarkerTrackHandler:Iu,MaskableGraphic:ph,MeshCollider:Co,MeshRenderer:ah,MinMaxCurve:H,MinMaxGradient:Ir,NeedleMenu:Jn,NestedGltf:rl,Networking:ky,NoiseModule:me,ObjectRaycaster:Wi,OffsetConstraint:Dr,OpenURL:fl,OrbitControls:he,Outline:il,Padding:Rr,ParticleBurst:cu,ParticleSubEmitter:Ty,ParticleSystem:Ic,ParticleSystemRenderer:Yi,PhysicsExtension:uy,PixelationEffect:vh,PlayAnimationOnClick:Dc,PlayAudioOnClick:mo,PlayableDirector:Ba,PlayerColor:za,PointerEventData:Kc,PostProcessingHandler:Na,PreliminaryAction:Ja,PreliminaryTrigger:ch,RawImage:yf,Rect:yx,RectTransform:mn,ReflectionProbe:ls,RegisteredAnimationInfo:ao,RemoteSkybox:Fu,Renderer:Ht,RendererLightmap:Gg,Rigidbody:$e,RotationBySpeedModule:Qi,RotationOverLifetimeModule:bn,SceneSwitcher:We,ScreenCapture:To,ScreenSpaceAmbientOcclusion:As,ScreenSpaceAmbientOcclusionN8:wn,ScrollFollow:Is,SeeThrough:Ds,SetActiveOnClick:sy,ShadowCatcher:Ch,ShapeModule:Ey,SharpeningEffect:xh,SignalAsset:Lu,SignalReceiver:Jc,SignalReceiverEvent:Zc,SignalTrackHandler:Tc,Size:gx,SizeBySpeedModule:di,SizeOverLifetimeModule:jr,SkinnedMeshRenderer:Hg,SmoothFollow:uf,SpatialGrabRaycaster:mr,SpatialHtml:kh,SpatialTrigger:ff,SpatialTriggerReceiver:Hn,SpectatorCamera:pf,SphereCollider:Qa,SplineContainer:Nr,SplineData:Xn,SplineWalker:Zi,Sprite:ks,SpriteData:Oa,SpriteRenderer:ci,SpriteSheet:Fa,SubEmitterSystem:hu,SyncedCamera:By,SyncedRoom:xn,SyncedTransform:pn,TapGestureTrigger:ry,TeleportTarget:Zu,TestRunner:Fy,TestSimulateUserData:Uy,Text:Dt,TextBuilder:py,TextExtension:ef,TextureSheetAnimationModule:It,TiltShiftEffect:ts,ToneMappingEffect:_o,TrailModule:Le,TransformData:Ae,TransformGizmo:Vr,TriggerBuilder:Rt,TriggerModel:ho,UIRaycastUtils:Sg,UIRootComponent:dh,USDZExporter:Gn,USDZText:ga,USDZUIExtension:by,UsageMarker:oh,VariantAction:iy,VelocityOverLifetimeModule:Fe,VerticalLayoutGroup:my,VideoPlayer:tt,get ViewBox(){return exports.ViewBox},Vignette:Ur,VisibilityAction:hh,Voip:So,Volume:zr,VolumeParameter:z,VolumeProfile:af,WebARCameraBackground:Rh,WebARSessionRoot:zi,WebXR:Ju,WebXRImageTracking:Th,WebXRImageTrackingModel:Bs,WebXRPlaneTracking:Fs,WebXRTrackedImage:Va,XRControllerFollow:js,XRControllerModel:xs,XRControllerMovement:xi,XRFlag:Bi,XRRig:Sf,XRState:Wt,__Ignore:tS},Symbol.toStringTag,{value:"Module"}));exports.SplineUtils=void 0;(s=>{function e(t,i=!1,n=.75){const o=new Nr,r=1-j.clamp(n,0,1);return t.forEach((a,l)=>{const h=new c.Vector3;l<t.length-1?h.subVectors(t[l+1],a).normalize().multiplyScalar(r):i&&t.length>1&&h.subVectors(t[0],a).normalize().multiplyScalar(r);const d=new Xn;d.position.copy(a),d.tangentIn.copy(h),d.tangentOut.copy(h),o.addKnot(d)}),o.closed=i,o}s.createFromPoints=e})(exports.SplineUtils||(exports.SplineUtils={}));class IA extends le.WorkerBase{constructor(){super(new Worker(new URL("/generateMeshBVH.worker-DiCnZlf3.js",typeof document>"u"?require("url").pathToFileURL(__filename).href:_a&&_a.tagName.toUpperCase()==="SCRIPT"&&_a.src||new URL("needle-engine.bundle-DOywNdEo.umd.cjs",document.baseURI).href),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(e,t,i={}){return new Promise((n,o)=>{if(t.getAttribute("position").isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");e.onerror=h=>{o(new Error(`[GenerateMeshBVHWorker] ${h.message||"Could not load worker."}`))},e.onmessage=h=>{const{data:d}=h;if(d.error)o(new Error(d.error)),e.onmessage=null;else if(d.serialized){const{serialized:u,position:p}=d,m=le.MeshBVH.deserialize(u,t,{setIndex:!1}),y=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=p,u.index)if(t.index)t.index.array=u.index;else{const _=new c.BufferAttribute(u.index,1,!1);t.setIndex(_)}y.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new c.Box3)),i.onProgress&&i.onProgress(d.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(d.progress)};const r=t.index?t.index.array:null,a=t.attributes.position.array,l=[a];r&&l.push(r),e.postMessage({index:r,position:a,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...t.groups]}},l.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const jA=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:IA},Symbol.toStringTag,{value:"Module"}));exports.$componentName=Hv;exports.$physicsKey=BC;exports.ActionBuilder=ue;exports.ActionCollection=dx;exports.ActionModel=Jt;exports.Addressables=c0;exports.AlignmentConstraint=th;exports.AmbientMode=wa;exports.Animation=Tt;exports.AnimationCurve=gh;exports.AnimationExtension=qu;exports.AnimationTrackHandler=Rc;exports.AnimationUtils=qn;exports.Animator=lt;exports.AnimatorConditionMode=eo;exports.AnimatorController=$i;exports.AnimatorControllerParameterType=wg;exports.AnimatorStateInfo=$l;exports.Antialiasing=_h;exports.Application=fn;exports.AssetDatabase=W0;exports.AssetReference=Z;exports.Attractor=ll;exports.AudioClip=lm;exports.AudioExtension=kr;exports.AudioListener=ps;exports.AudioSource=vi;exports.AudioTrackHandler=ms;exports.Avatar=go;exports.AvatarBlink_Simple=Pr;exports.AvatarEyeLook_Rotation=Lg;exports.AvatarLoader=Jx;exports.AvatarMarker=Oe;exports.AvatarModel=Qy;exports.Avatar_Brain_LookAt=Ac;exports.Avatar_MouthShapes=nh;exports.Avatar_MustacheShake=Ag;exports.Avatar_POI=cr;exports.Axes=pa;exports.AxesHelper=Xa;exports.BUILD_TIME=_c;exports.BaseUIComponent=Gi;exports.BasicIKConstraint=jg;exports.BehaviorExtension=dy;exports.BehaviorModel=St;exports.BloomEffect=cf;exports.BoxCollider=Nu;exports.BoxGizmo=Ar;exports.BoxHelperComponent=bt;exports.Button=Ls;exports.ButtonsFactory=Ui;exports.CallDirection=Rw;exports.CallInfo=ds;exports.Camera=si;exports.CameraTargetReachedEvent=Ec;exports.Canvas=Ua;exports.CanvasGroup=yo;exports.CapsuleCollider=ws;exports.ChangeMaterialOnClick=ny;exports.ChangeTransformOnClick=Er;exports.CharacterController=Or;exports.CharacterControllerInput=Ps;exports.ChromaticAberration=bh;exports.CircularBuffer=_i;exports.ClearFlags=lr;exports.ClickThrough=vf;exports.ClipExtrapolation=kn;exports.Collider=Xi;exports.Collision=Xv;exports.CollisionDetectionMode=Tu;exports.ColorAdjustments=Ro;exports.ColorBySpeedModule=al;exports.ColorOverLifetimeModule=rf;exports.Component=qP;exports.Component$1=E;exports.ComponentLifecycleEvents=xu;exports.Components=LA;exports.ConnectionEvents=b0;exports.ContactPoint=qv;exports.ContactShadows=sh;exports.Context=U;exports.ContextArgs=lP;exports.ContextEvent=ae;exports.ContextRegistry=ce;exports.ControlTrackHandler=ju;exports.CursorFollow=$r;exports.CustomBranding=Tr;exports.CustomShader=ve;exports.DefaultReflectionMode=Qd;exports.Deletable=zg;exports.DeleteBox=co;exports.DepthOfField=vn;exports.DeviceFlag=Vu;exports.DocumentExtension=eS;exports.DragControls=Zo;exports.DragMode=Ng;exports.DropListener=Ms;exports.Duplicatable=Xg;exports.EffectWrapper=jc;exports.EmissionModule=Ts;exports.EmphasizeOnClick=Za;exports.EngineLoadingView=Bc;exports.EnvironmentScene=Bu;exports.EventList=J;exports.EventListEvent=Ru;exports.EventSystem=Gt;exports.EventTrigger=Gu;exports.FieldWithDefault=Hw;exports.FileReference=nr;exports.FileReferenceSerializer=d0;exports.FileSpawnModel=IM;exports.File_Event=Fw;exports.FixedJoint=Py;exports.Fog=nl;exports.FrameEvent=ge;exports.GENERATOR=Ra;exports.GameObject=S;exports.Gizmos=B;exports.GltfExport=Jg;exports.GltfExportBox=Kg;exports.Gradient=Lr;exports.Graphic=fh;exports.GraphicRaycaster=Au;exports.Graphics=fo;exports.GridHelper=sl;exports.GridLayoutGroup=yy;exports.GroundProjectedEnv=Yn;exports.GroupActionModel=Jo;exports.HideFlags=gu;exports.HideOnStart=ji;exports.HingeJoint=mh;exports.HorizontalLayoutGroup=gy;exports.HostData=BP;exports.Image=ul;exports.ImageReference=ir;exports.ImageReferenceSerializer=h0;exports.InheritVelocityModule=Ry;exports.Input=p0;exports.InputEventQueue=ti;exports.InputEvents=Pe;exports.InputField=Ny;exports.InstanceHandle=hr;exports.InstancingHandler=_r;exports.InstancingUtil=Vi;exports.InstantiateEvent=sw;exports.InstantiateIdProvider=xt;exports.InstantiateOptions=gn;exports.Interactable=Ug;exports.JoinedRoomResponse=O1;exports.KeyEventArgs=_1;exports.Keyframe=oi;exports.LODGroup=nf;exports.LODModel=ol;exports.LeftRoomResponse=M1;exports.Light=Ot;exports.LightData=P0;exports.LimitVelocityOverLifetimeModule=nt;exports.LoadingElementOptions=bA;exports.LogStats=Fg;exports.LogType=gi;exports.LookAt=Vy;exports.LookAtConstraint=Cr;exports.MODULES=T;exports.MainModule=Lt;exports.MarkerTrackHandler=Iu;exports.MarkerType=Pg;exports.MaskableGraphic=ph;exports.MaterialPropertyBlock=bs;exports.Mathf=j;exports.MeshCollider=Co;exports.MeshRenderer=ah;exports.MinMaxCurve=H;exports.MinMaxGradient=Ir;exports.NEEDLE_ENGINE_FEATURE_FLAGS=Ym;exports.NEKeyboardEvent=Ul;exports.NEPointerEvent=as;exports.NeedleButtonElement=Qx;exports.NeedleEngineWebComponent=Xy;exports.NeedleMenu=Jn;exports.NeedlePatchesKey=yd;exports.NeedleXRController=fg;exports.NeedleXRSession=q;exports.NeedleXRSync=N0;exports.NeedleXRUtils=$0;exports.NestedGltf=rl;exports.NetworkConnection=w0;exports.NetworkedStreamEvents=zn;exports.NetworkedStreams=ih;exports.Networking=ky;exports.NewInstanceModel=rw;exports.NoiseModule=me;exports.ObjectRaycaster=Wi;exports.ObjectUtils=wo;exports.OffsetConstraint=Dr;exports.OneEuroFilter=md;exports.OneEuroFilterXYZ=Um;exports.OpenURL=fl;exports.OrbitControls=he;exports.Outline=il;exports.OwnershipEvent=v0;exports.OwnershipModel=ag;exports.PUBLIC_KEY=oo;exports.Padding=Rr;exports.ParticleBurst=cu;exports.ParticleSubEmitter=Ty;exports.ParticleSystem=Ic;exports.ParticleSystemBaseBehaviour=Eo;exports.ParticleSystemRenderer=Yi;exports.ParticleSystemShapeType=lu;exports.PeerHandle=gs;exports.PeerNetworking=_0;exports.Physics=ja;exports.PhysicsExtension=uy;exports.PhysicsMaterialCombine=st;exports.PixelationEffect=vh;exports.PlayAnimationOnClick=Dc;exports.PlayAudioOnClick=mo;exports.PlayableDirector=Ba;exports.PlayerColor=za;exports.PlayerState=Ni;exports.PlayerStateEvent=px;exports.PlayerSync=ly;exports.PlayerView=x0;exports.PlayerViewManager=S0;exports.PointerEventData=Kc;exports.PointerType=_u;exports.PostProcessingEffect=Xe;exports.PostProcessingEffectOrder=et;exports.PostProcessingHandler=Na;exports.PreliminaryAction=Ja;exports.PreliminaryTrigger=ch;exports.PrimitiveType=$a;exports.Progress=oe;exports.PromiseAllWithErrors=Bm;exports.PromiseErrorResult=Dp;exports.RGBAColor=ie;exports.RapierPhysics=Ma;exports.RawImage=yf;exports.RaycastOptions=xo;exports.Rect=yx;exports.RectTransform=mn;exports.ReflectionProbe=ls;exports.RegisteredAnimationInfo=ao;exports.RemoteSkybox=Fu;exports.RenderTexture=Fn;exports.RenderTextureSerializer=gw;exports.Renderer=Ht;exports.RendererData=C0;exports.RendererLightmap=Gg;exports.Rigidbody=$e;exports.RigidbodyConstraints=Ve;exports.RoomEvents=K;exports.RotationBySpeedModule=Qi;exports.RotationOverLifetimeModule=bn;exports.SceneLightSettings=nu;exports.SceneSwitcher=We;exports.ScreenCapture=To;exports.ScreenSpaceAmbientOcclusion=As;exports.ScreenSpaceAmbientOcclusionN8=wn;exports.ScrollFollow=Is;exports.SeeThrough=Ds;exports.SendQueue=ln;exports.SerializationContext=ig;exports.SetActiveOnClick=sy;exports.ShadowCatcher=Ch;exports.ShapeModule=Ey;exports.ShapeOverlapResult=Qv;exports.SharpeningEffect=xh;exports.SignalAsset=Lu;exports.SignalReceiver=Jc;exports.SignalReceiverEvent=Zc;exports.SignalTrackHandler=Tc;exports.Size=gx;exports.SizeBySpeedModule=di;exports.SizeOverLifetimeModule=jr;exports.SkinnedMeshRenderer=Hg;exports.SmoothFollow=uf;exports.SpatialGrabRaycaster=mr;exports.SpatialHtml=kh;exports.SpatialTrigger=ff;exports.SpatialTriggerReceiver=Hn;exports.SpectatorCamera=pf;exports.SphereCollider=Qa;exports.SphereIntersection=gg;exports.SplineContainer=Nr;exports.SplineData=Xn;exports.SplineWalker=Zi;exports.Sprite=ks;exports.SpriteData=Oa;exports.SpriteRenderer=ci;exports.SpriteSheet=Fa;exports.StateMachineBehaviour=zP;exports.StreamEndedEvent=Rg;exports.StreamReceivedEvent=Ew;exports.SubEmitterSystem=hu;exports.SyncedCamera=By;exports.SyncedRoom=xn;exports.SyncedTransform=pn;exports.TapGestureTrigger=ry;exports.TeleportTarget=Zu;exports.TestRunner=Fy;exports.TestSimulateUserData=Uy;exports.Text=Dt;exports.TextBuilder=py;exports.TextExtension=ef;exports.TextureSheetAnimationModule=It;exports.TiltShiftEffect=ts;exports.Time=O0;exports.ToneMappingEffect=_o;exports.TrackHandler=qa;exports.TrackType=fi;exports.TrailModule=Le;exports.TransformData=Ae;exports.TransformGizmo=Vr;exports.TriggerBuilder=Rt;exports.TriggerModel=ho;exports.TypeStore=P;exports.UIRaycastUtils=Sg;exports.UIRootComponent=dh;exports.USDDocument=ey;exports.USDObject=qe;exports.USDWriter=ix;exports.USDZExporter=nx;exports.USDZExporter$1=Gn;exports.USDZText=ga;exports.USDZUIExtension=by;exports.UriSerializer=yw;exports.UsageMarker=oh;exports.UserJoinedOrLeftRoomModel=k1;exports.VERSION=ii;exports.VariantAction=iy;exports.VelocityOverLifetimeModule=Fe;exports.VerticalLayoutGroup=my;exports.VideoPlayer=tt;exports.ViewDevice=_s;exports.Vignette=Ur;exports.VisibilityAction=hh;exports.Voip=So;exports.Volume=zr;exports.VolumeParameter=z;exports.VolumeProfile=af;exports.WaitForFrames=p1;exports.WaitForPromise=f0;exports.WaitForSeconds=ng;exports.Watch=ys;exports.WebARCameraBackground=Rh;exports.WebARSessionRoot=zi;exports.WebXR=Ju;exports.WebXRButtonFactory=uo;exports.WebXRImageTracking=Th;exports.WebXRImageTrackingModel=Bs;exports.WebXRPlaneTracking=Fs;exports.WebXRTrackedImage=Va;exports.XRControllerFollow=js;exports.XRControllerModel=xs;exports.XRControllerMovement=xi;exports.XRFlag=Bi;exports.XRRig=Sf;exports.XRState=Wt;exports.XRStateFlag=In;exports.__Ignore=tS;exports.__internalNotifyObjectDestroyed=EP;exports.activeInHierarchyFieldName=Bn;exports.addAttributeChangeCallback=Im;exports.addComponent=hn;exports.addCustomExtensionPlugin=ok;exports.addNewComponent=sr;exports.addPatch=mu;exports.apply=Su;exports.applyHMRChanges=HP;exports.applyPrototypeExtensions=j0;exports.beginListenDestroy=ow;exports.beginListenInstantiate=lw;exports.binaryIdentifierCasts=sg;exports.build_scene_functions=aP;exports.builtinComponentKeyName=qo;exports.calculateProgress01=qy;exports.clearMessages=RS;exports.compareAssociation=o0;exports.copyTexture=Dv;exports.createMotion=uw;exports.debugNet=Yt;exports.debugOwner=zl;exports.decompressGpuTexture=ax;exports.deepClone=Uc;exports.delay=vs;exports.delayForFrames=uu;exports.deserializeObject=qd;exports.destroy=bi;exports.destroyComponentInstance=F0;exports.determineMimeTypeFromExtension=Uw;exports.disposeObjectResources=we;exports.disposeStream=Nn;exports.editorGuidKeyName=tc;exports.enableSpatialConsole=ba;exports.exportAsGLTF=TA;exports.findByGuid=_g;exports.findObjectOfType=Ga;exports.findObjectsOfType=z0;exports.findResourceUsers=yg;exports.fitCamera=ww;exports.fitObjectIntoVolume=Iv;exports.foreachComponent=pr;exports.foreachComponentEnumerator=ku;exports.forward=QS;exports.generateQRCode=T0;exports.generateSeed=aw;exports.getBoundingBox=ri;exports.getCameraController=Pv;exports.getComponent=wr;exports.getComponentInChildren=Xc;exports.getComponentInParent=wc;exports.getComponents=qc;exports.getComponentsInChildren=Wa;exports.getComponentsInParent=Cu;exports.getFormattedDate=Zw;exports.getIconElement=wt;exports.getIconTexture=tm;exports.getLoader=un;exports.getOrAddComponent=Hc;exports.getParam=x;exports.getParentHierarchyPath=ZS;exports.getPath=lS;exports.getPeerOptions=x1;exports.getPeerjsInstance=y0;exports.getResourceUserCount=TP;exports.getTempColor=Ev;exports.getTempQuaternion=ei;exports.getTempVector=F;exports.getUrlParams=Fc;exports.getVisibleInCustomShadowRendering=Lv;exports.getWorldDirection=Rv;exports.getWorldEuler=Vm;exports.getWorldPosition=Y;exports.getWorldQuaternion=pe;exports.getWorldRotation=pu;exports.getWorldScale=je;exports.hasCommercialLicense=Wn;exports.hasIndieLicense=$c;exports.hasPointerEventComponent=eu;exports.hasProLicense=$n;exports.hideDebugConsole=Uv;exports.imageToCanvas=lx;exports.initAddressableSerializers=u0;exports.initBuiltinSerializers=_w;exports.initEngine=OA;exports.initVolumeParameterSerializer=Mw;exports.instantiate=po;exports.invokeLoadedImportPluginHooks=Gw;exports.invokeXRSessionEnd=R0;exports.invokeXRSessionStart=E0;exports.isActiveInHierarchy=Z0;exports.isActiveSelf=Ha;exports.isAndroidDevice=pS;exports.isAnimationAction=Av;exports.isComponent=Qm;exports.isDebugMode=sS;exports.isDesktop=hS;exports.isDestroyed=fr;exports.isDevEnvironment=A;exports.isDisposed=kP;exports.isExporting=EA;exports.isGLTFModel=Gv;exports.isHostedOnGlitch=fv;exports.isHotReloadEnabled=am;exports.isHotReloading=WP;exports.isIPad=uS;exports.isIconElement=A0;exports.isLocalNetwork=yi;exports.isMacOS=gS;exports.isMobileDevice=dS;exports.isMozillaXR=mS;exports.isQuest=bS;exports.isResourceTrackingEnabled=H0;exports.isSafari=_S;exports.isUsingInstancing=Mu;exports.isiOS=yS;exports.isiPad=fS;exports.loadAsset=dA;exports.loadPMREM=Eg;exports.loadSync=Hy;exports.logHierarchy=Nd;exports.lookAtInverse=NS;exports.lookAtObject=zc;exports.lookAtScreenPoint=VS;exports.makeId=rS;exports.makeIdFromRandomWords=gv;exports.makeNameSafe=wi;exports.markAsInstancedRendered=J0;exports.microphonePermissionsGranted=vS;exports.nameof=nS;exports.nameofFactory=pv;exports.offXRSessionEnd=U1;exports.offXRSessionStart=F1;exports.onAfterRender=HC;exports.onBeforeRender=GC;exports.onClear=$C;exports.onDestroy=WC;exports.onInitialized=Zm;exports.onStart=yu;exports.onUpdate=i0;exports.onXRSessionEnd=cg;exports.onXRSessionStart=vu;exports.parseSync=qx;exports.placeOnSurface=jv;exports.postprocessFBXMaterials=Gm;exports.prefix=_O;exports.pushState=mv;exports.randomNumber=aS;exports.registerBinaryType=og;exports.registerComponent=Pu;exports.registerComponentExtension=$g;exports.registerCustomEffectType=Ki;exports.registerExportExtensions=Wg;exports.registerExtensions=ou;exports.registerHotReloadType=fw;exports.registerLoader=Kv;exports.registerPrefabProvider=hw;exports.registerPrototypeExtensions=dg;exports.registerType=qm;exports.relativePathPrefix=_v;exports.removeAttributeChangeCallback=jm;exports.removeComponent=ug;exports.removeCustomImportExtensionType=rk;exports.removePatch=LC;exports.resolveUrl=Qn;exports.sanitizeString=yv;exports.saveImage=Wx;exports.screenshot=GT;exports.screenshot2=Gy;exports.sendDestroyed=bg;exports.serializable=f;exports.serializeObject=a0;exports.serializeable=Be;exports.setActive=ac;exports.setAllowBalloonMessages=xv;exports.setAllowOverlayMessages=OS;exports.setAutoFitEnabled=Ud;exports.setCameraController=jp;exports.setDestroyed=tw;exports.setDevEnvironment=IS;exports.setDisposable=X0;exports.setDontDestroy=na;exports.setOrAddParamsToUrl=Ap;exports.setParam=oS;exports.setParamWithoutReload=yc;exports.setPeerOptions=S1;exports.setResourceTrackingEnabled=MP;exports.setState=Dm;exports.setVisibleInCustomShadowRendering=Wm;exports.setWorldEuler=$m;exports.setWorldPosition=at;exports.setWorldPositionXYZ=ur;exports.setWorldQuaternion=dn;exports.setWorldQuaternionXYZW=Nm;exports.setWorldRotation=Tv;exports.setWorldRotationXYZ=Nc;exports.setWorldScale=Ea;exports.showBalloonError=Vc;exports.showBalloonMessage=Se;exports.showBalloonWarning=fe;exports.showDebugConsole=Hm;exports.slerp=Mv;exports.syncDestroy=Qc;exports.syncField=kg;exports.syncInstantiate=vg;exports.textureToCanvas=JS;exports.toSourceId=bv;exports.tryCastBinary=m0;exports.tryDetermineMimetypeFromBinary=Nw;exports.tryDetermineMimetypeFromURL=zw;exports.tryFindObject=ka;exports.tryGetGuid=g0;exports.unregisterHotReloadType=pw;exports.unwatchWrite=Lm;exports.useForAutoFit=Ov;exports.validate=Ct;exports.watchWrite=fu;
|
|
1731
|
+
Error:`,r),null}}updateColliderCollisionGroups(e){const t=e[gt],i=e.membership;let n=0;if(i==null)n=65535;else for(let a=0;a<i.length;a++){const l=i[a];l>31?console.error(`Rapier only supports 32 layers, layer ${l} is not supported`):n|=1<<Math.floor(l)}const o=e.filter;let r=0;if(o==null)r=65535;else for(let a=0;a<o.length;a++){const l=o[a];l>31?console.error(`Rapier only supports 32 layers, layer ${l} is not supported`):r|=1<<Math.floor(l)}t.setCollisionGroups(n<<16|r)}getRigidbody(e,t){if(!this.world)throw new Error("Physics world not initialized");let i=null;if(e.attachedRigidbody){const n=e.attachedRigidbody;if(i=n[gt],!i){const o=n.isKinematic&&!Ep;Ee&&console.log("Create rigidbody",o);const r=o?T.RAPIER_PHYSICS.MODULE.RigidBodyDesc.kinematicPositionBased():T.RAPIER_PHYSICS.MODULE.RigidBodyDesc.dynamic(),a=Y(e.attachedRigidbody.gameObject);r.setTranslation(a.x,a.y,a.z),r.setRotation(pe(e.attachedRigidbody.gameObject)),r.centerOfMass=new T.RAPIER_PHYSICS.MODULE.Vector3(n.centerOfMass.x,n.centerOfMass.y,n.centerOfMass.z),i=this.world.createRigidBody(r),this.bodies.push(i),this.objects.push(n)}i[Kt]=n,n[gt]=i,this.internalUpdateRigidbodyProperties(n,i),this.getRigidbodyRelativeMatrix(e.gameObject,n.gameObject,t),e[hv]=i}else{const n=T.RAPIER_PHYSICS.MODULE.RigidBodyDesc.kinematicPositionBased(),o=Y(e.gameObject);n.setTranslation(o.x,o.y,o.z),n.setRotation(pe(e.gameObject)),i=this.world.createRigidBody(n),t.identity(),i[Kt]=null}return i}internal_getRigidbody(e){return e.isCollider===!0?e[hv]:e[gt]}internalUpdateColliderProperties(e,t){const i=t.shape;let n=!1;switch(i.type){case T.RAPIER_PHYSICS.MODULE.ShapeType.Ball:{const p=i,m=e,y=e.gameObject,_=je(y,this._tempPosition),g=Math.abs(m.radius*_.x);n=p.radius!==g,p.radius=g,n&&t.setShape(p);break}case T.RAPIER_PHYSICS.MODULE.ShapeType.Cuboid:const o=i,r=e,a=e.gameObject,l=je(a,this._tempPosition),h=Math.abs(r.size.x*.5*l.x),d=Math.abs(r.size.y*.5*l.y),u=Math.abs(r.size.z*.5*l.z);n=o.halfExtents.x!==h||o.halfExtents.y!==d||o.halfExtents.z!==u,o.halfExtents.x=h,o.halfExtents.y=d,o.halfExtents.z=u,n&&t.setShape(o);break}if(n){const o=e.attachedRigidbody;o?.autoMass&&this.getBody(o)?.recomputeMassPropertiesFromColliders()}this.updateColliderCollisionGroups(e),e.isTrigger!==t.isSensor()&&t.setSensor(e.isTrigger)}internalUpdateRigidbodyProperties(e,t){if(t.enableCcd(e.collisionDetectionMode!==Tu.Discrete),t.setLinearDamping(e.drag),t.setAngularDamping(e.angularDrag),t.setGravityScale(e.useGravity?e.gravityScale:0,!0),e.dominanceGroup<=127&&e.dominanceGroup>=-127?t.setDominanceGroup(Math.floor(e.dominanceGroup)):t.setDominanceGroup(0),e.autoMass){t.setAdditionalMass(0,!1);for(let i=0;i<t.numColliders();i++)t.collider(i).setDensity(1);t.recomputeMassPropertiesFromColliders()}else{t.setAdditionalMass(e.mass,!1);for(let i=0;i<t.numColliders();i++)t.collider(i).setDensity(1e-7);t.recomputeMassPropertiesFromColliders()}t.setEnabledRotations(!e.lockRotationX,!e.lockRotationY,!e.lockRotationZ,!1),t.setEnabledTranslations(!e.lockPositionX,!e.lockPositionY,!e.lockPositionZ,!1),e.isKinematic?t.setBodyType(T.RAPIER_PHYSICS.MODULE.RigidBodyType.KinematicPositionBased,!1):t.setBodyType(T.RAPIER_PHYSICS.MODULE.RigidBodyType.Dynamic,!1)}lines;disabledLines;step(e){if(this.world&&this.enabled){if(this._isUpdatingPhysicsWorld=!0,this.eventQueue||(this.eventQueue=new T.RAPIER_PHYSICS.MODULE.EventQueue(!1)),e===void 0||e<=0){this._isUpdatingPhysicsWorld=!1;return}else if(e!==void 0){const t=j.lerp(this.world.timestep,e,.8);this.world.timestep=t}try{this.world.step(this.eventQueue)}catch(t){console.warn("Error running physics step",{timestep:this.world.timestep},t)}this._isUpdatingPhysicsWorld=!1}}postStep(){this.world&&this.enabled&&(this._isUpdatingPhysicsWorld=!0,this.syncObjects(),this._isUpdatingPhysicsWorld=!1,this.eventQueue&&!this.collisionHandler&&(this.collisionHandler=new kA(this.world,this.eventQueue)),this.collisionHandler&&(this.collisionHandler.handleCollisionEvents(),this.collisionHandler.update()),this.updateDebugRendering(this.world))}updateDebugRendering(e){if(Ee||Ep||MA||this.debugRenderColliders===!0){if(!this.lines){const n=new c.LineBasicMaterial({color:7855479,fog:!1}),o=new c.BufferGeometry;this.lines=new c.LineSegments(o,n),this.lines.layers.disableAll(),this.lines.layers.enable(2)}if(!this.disabledLines){const n=new c.LineBasicMaterial({color:14514039,fog:!1}),o=new c.BufferGeometry;this.disabledLines=new c.LineSegments(o,n),this.disabledLines.layers.disableAll(),this.disabledLines.layers.enable(2)}this.lines.parent!==this.context?.scene&&this.context?.scene.add(this.lines),this.disabledLines.parent!==this.context?.scene&&this.context?.scene.add(this.disabledLines);const t=e.debugRender(void 0,n=>n.isEnabled());this.lines.geometry.setAttribute("position",new c.BufferAttribute(t.vertices,3)),this.lines.geometry.setAttribute("color",new c.BufferAttribute(t.colors,4));const i=e.debugRender(void 0,n=>!n.isEnabled());this.disabledLines.geometry.setAttribute("position",new c.BufferAttribute(i.vertices,3)),this.disabledLines.geometry.setAttribute("color",new c.BufferAttribute(i.colors,4)),this.disabledLines.visible=i.vertices.length>0,(this.context.time.frame%30===0||this.lines.geometry.boundingSphere?.radius===0)&&(this.lines.geometry.computeBoundingSphere(),this.disabledLines.geometry.computeBoundingSphere())}else this.lines&&this.context?.scene.remove(this.lines),this.disabledLines&&this.context?.scene.remove(this.disabledLines)}syncObjects(){if(!Ep)for(let e=0;e<this.bodies.length;e++){const t=this.objects[e],i=this.bodies[e],n=t;if(n?.isCollider===!0&&!n.attachedRigidbody){const l=i.parent();l?this.syncPhysicsBody(t.gameObject,l,!0,!0):this.syncPhysicsBody(t.gameObject,i,!0,!0);continue}const o=i.translation(),r=i.rotation();if(Number.isNaN(o.x)||Number.isNaN(r.x)){!n.__COLLIDER_NAN&&A()&&(console.warn("Collider has NaN values",n.name,n.gameObject,i),n.__COLLIDER_NAN=!0);continue}const a=t.center;if(a&&a.isVector3){this._tempQuaternion.set(r.x,r.y,r.z,r.w);const l=this._tempPosition.copy(a).applyQuaternion(this._tempQuaternion),h=je(t.gameObject);l.multiply(h),o.x-=l.x,o.y-=l.y,o.z-=l.z}ur(t.gameObject,o.x,o.y,o.z),Nm(t.gameObject,r.x,r.y,r.z,r.w)}}syncPhysicsBody(e,t,i,n){if(t instanceof T.RAPIER_PHYSICS.MODULE.RigidBody){const o=Y(e,this._tempPosition),r=pe(e,this._tempQuaternion);switch(t.bodyType()){case T.RAPIER_PHYSICS.MODULE.RigidBodyType.Fixed:case T.RAPIER_PHYSICS.MODULE.RigidBodyType.KinematicPositionBased:case T.RAPIER_PHYSICS.MODULE.RigidBodyType.KinematicVelocityBased:i&&t.setNextKinematicTranslation(o),n&&t.setNextKinematicRotation(r);break;default:i&&t.setTranslation(o,!1),n&&t.setRotation(r,!1);break}}else if(t instanceof T.RAPIER_PHYSICS.MODULE.Collider){e.matrixWorldNeedsUpdate&&e.updateWorldMatrix(!0,!1),e.matrixWorld.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const o=this._tempPosition,r=this._tempQuaternion,a=t[Kt];if(this.tryApplyCenter(a,o),i){const l=t.translation();(l.x!==o.x||l.y!==o.y||l.z!==o.z)&&t.setTranslation(o)}if(n){const l=t.rotation();(l.x!==r.x||l.y!==r.y||l.z!==r.z||l.w!==r.w)&&t.setRotation(r)}}}_tempCenterPos=new c.Vector3;_tempCenterVec=new c.Vector3;_tempCenterQuaternion=new c.Quaternion;tryApplyCenter(e,t){const i=e.center;i&&e.gameObject&&(i.x!==0||i.y!==0||i.z!==0)&&(this._tempCenterPos.x=i.x,this._tempCenterPos.y=i.y,this._tempCenterPos.z=i.z,je(e.gameObject,this._tempCenterVec),this._tempCenterPos.multiply(this._tempCenterVec),e.attachedRigidbody?this._tempCenterPos.applyQuaternion(e.gameObject.quaternion):(pe(e.gameObject,this._tempCenterQuaternion),this._tempCenterPos.applyQuaternion(this._tempCenterQuaternion)),t.x+=this._tempCenterPos.x,t.y+=this._tempCenterPos.y,t.z+=this._tempCenterPos.z)}static _matricesBuffer=[];getRigidbodyRelativeMatrix(e,t,i,n){if(n===void 0&&(n=Ma._matricesBuffer,n.length=0),e===t){const o=je(e,this._tempPosition);i.makeScale(o.x,o.y,o.z);for(let r=n.length-1;r>=0;r--)i.multiply(n[r]);return i}return n.push(e.matrix),e.parent&&this.getRigidbodyRelativeMatrix(e.parent,t,i,n),i}static centerConnectionPos={x:0,y:0,z:0};static centerConnectionRot={x:0,y:0,z:0,w:1};addFixedJoint(e,t){if(!this.world){console.error("Physics world not initialized");return}const i=e[gt],n=t[gt];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const o=T.RAPIER_PHYSICS.MODULE.JointData.fixed(Ma.centerConnectionPos,Ma.centerConnectionRot,this._tempPosition,this._tempQuaternion),r=this.world.createImpulseJoint(o,i,n,!0);Ee&&console.log("ADD FIXED JOINT",r)}addHingeJoint(e,t,i,n){if(!this.world){console.error("Physics world not initialized");return}const o=e[gt],r=t[gt];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const a=T.RAPIER_PHYSICS.MODULE.JointData.revolute(i,this._tempPosition,n),l=this.world.createImpulseJoint(a,o,r,!0);Ee&&console.log("ADD HINGE JOINT",l)}calculateJointRelativeMatrices(e,t,i){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);const n=e.matrixWorld,o=t.matrixWorld;n.elements[0]=1,n.elements[5]=1,n.elements[10]=1,o.elements[0]=1,o.elements[5]=1,o.elements[10]=1,i.copy(o).premultiply(n.invert()).invert()}}class kA{world;eventQueue;constructor(e,t){this.world=e,this.eventQueue=t}activeCollisions=[];activeCollisionsStay=[];activeTriggers=[];handleCollisionEvents(){this.eventQueue&&this.world&&this.eventQueue.drainCollisionEvents((e,t,i)=>{const n=this.world.getCollider(e),o=this.world.getCollider(t);if(!n||!o)return;const r=n[Kt],a=o[Kt];Rp&&console.log("EVT",r.name,a.name,i,n,o),r&&a&&(i?(this.onCollisionStarted(r,n,a,o),this.onCollisionStarted(a,o,r,n)):(this.onCollisionEnded(r,a),this.onCollisionEnded(a,r)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,i,n){let o=null;if(e.isTrigger||i.isTrigger)pr(e.gameObject,r=>{r.onTriggerEnter&&!r.destroyed&&r.onTriggerEnter(i),this.activeTriggers.push({collider:e,component:r,otherCollider:i})});else{const r=e.gameObject;this.world.contactPair(t,n,(a,l)=>{pr(r,h=>{if(h.destroyed)return;const d=h.onCollisionEnter||h.onCollisionStay||h.onCollisionExit;if(d||Rp){if(!o){const u=[],p=a.normal();i instanceof Co&&i.convex&&(p.x=-p.x,p.y=-p.y,p.z=-p.z);for(let m=0;m<a.numSolverContacts();m++){const y=a.solverContactPoint(m),_=a.contactImpulse(m);if(y){const g=a.contactDist(m),v=a.solverContactFriction(m),b=a.solverContactTangentVelocity(m),w=new qv(y,g,p,_,v,b);u.push(w),Rp&&B.DrawDirection(y,p,16711680,3,!0)}}o=new Xv(r,i,u)}if(d){const u={collider:e,component:h,collision:o};this.activeCollisions.push(u),h.onCollisionStay&&this.activeCollisionsStay.push(u),h.onCollisionEnter?.call(h,o)}}})})}}onHandleCollisionStay(){for(const e of this.activeCollisionsStay){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onCollisionStay){if(e.collision.collider.destroyed)continue;const i=e.collision;t.onCollisionStay(i)}}for(const e of this.activeTriggers){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onTriggerStay){const i=e.otherCollider;if(i.destroyed)continue;t.onTriggerStay(i)}}}onCollisionEnded(e,t){if(!(e.destroyed||t.destroyed)){for(let i=0;i<this.activeCollisions.length;i++){const n=this.activeCollisions[i],o=n.collider;if(o.destroyed||n.collision.collider.destroyed){this.activeCollisions.splice(i,1),i--;continue}if(o===e&&n.collision.collider===t){const r=n.component;if(this.activeCollisions.splice(i,1),i--,r.activeAndEnabled&&r.onCollisionExit){const a=n.collision;r.onCollisionExit(a)}}}for(let i=0;i<this.activeCollisionsStay.length;i++){const n=this.activeCollisionsStay[i],o=n.collider;if(o.destroyed||n.collision.collider.destroyed){this.activeCollisionsStay.splice(i,1),i--;continue}if(o===e&&n.collision.collider===t){const r=n.component;if(this.activeCollisionsStay.splice(i,1),i--,r.activeAndEnabled&&r.onCollisionExit){const a=n.collision;r.onCollisionExit(a)}}}for(let i=0;i<this.activeTriggers.length;i++){const n=this.activeTriggers[i],o=n.collider;if(o.destroyed||n.otherCollider.destroyed){this.activeTriggers.splice(i,1),i--;continue}if(o===e&&n.otherCollider===t){const r=n.component;if(this.activeTriggers.splice(i,1),i--,r.activeAndEnabled&&r.onTriggerExit){const a=n.otherCollider;r.onTriggerExit(a)}}}}}}let Am=0;function dv(s){s?Am++:Am--}function EA(){return Am>0}const RA={binary:!0,animations:!0};async function TA(s){if(!s.context)throw new Error("No context provided to exportAsGLTF");s.scene||(s.scene=s.context.scene);const e={...RA,...s},{context:t}=e,i=new X.GLTFExporter;i.register(a=>new Xw(a)),i.register(a=>new _k(a)),i.register(a=>new Yw(a)),Wg(i,e.context);const n={binary:e.binary,animations:DA(t,e.scene,[])},o=new AA;console.debug("Exporting GLTF",n),o.onBeforeExport(e),dv(!0);const r=await i.parseAsync(e.scene,n).catch(a=>(console.error(a),null));if(dv(!1),o.onAfterExport(e),!r)throw new Error("Failed to export GLTF");if(e.downloadAs!=null){let a=null;if(r instanceof ArrayBuffer?a=new Blob([r],{type:"application/octet-stream"}):console.error("Can not download GLTF as a blob",r),a){const l=URL.createObjectURL(a),h=document.createElement("a");h.href=l;let d=e.downloadAs;!d.endsWith(".glb")&&!d.endsWith(".gltf")&&(d+=e.binary?".glb":".gltf"),h.download=d,h.click()}}return r}const uv=Symbol("needle:weight");class AA{_undo=[];onBeforeExport(e){e.context.animations.mixers.forEach(t=>{const i=qn.tryGetActionsFromMixer(t);if(i)for(let n=0;n<i.length;n++){const o=i[n];o[uv]=o.weight,o.weight=0,this._undo.push(()=>{o.weight=o[uv]})}t.update(0)}),e.context.scene.traverse(t=>{if(!mm(t)){const i=t.parent;i&&(t.removeFromParent(),this._undo.push(()=>i.add(t)))}})}onAfterExport(e){this._undo.forEach(t=>t()),this._undo.length=0}}function DA(s,e,t){s.animations.mixers.forEach(n=>{const o=qn.tryGetActionsFromMixer(n);if(o)for(let r=0;r<o.length;r++){const l=o[r].getClip();t.push(l)}}),Array.isArray(e)||(e=[e]);for(const n of e)qn.tryGetAnimationClipsFromObjectHierarchy(n,t);const i=new Set(t);return Array.from(i)}const Fl=x("debugavatar");class Qy{root;head;leftHand;rigthHand;get isValid(){return this.head!==null&&this.head!==void 0}constructor(e,t,i,n){this.root=e,this.head=t,this.leftHand=i,this.rigthHand=n,this.root?.traverse(o=>o.layers.set(2))}}class Jx{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof t=="string"){if(i=await this.loadAvatar(e,t),!i){const o=new gn;i=S.instantiate(ka(t,e.scene),o)}}else i=t;if(!i)return null;const n=this.findAvatar(i);return n.isValid?(Fl&&console.log("[Custom Avatar] valid config",t,Fl?n:""),n):(console.warn("[Custom Avatar] config isn't valid",t,Fl?n:""),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t=="string","Avatar id must not be null"),t.length<=0||!t)return null;if(Fl&&console.log("[Custom Avatar] "+t+", loading..."),t.endsWith(".glb")||(t+=".glb"),this.avatarRegistryUrl===null){const n=await fetch("./"+t);let o=null;if(n.ok){const a=await n.blob();a&&(o=await a.arrayBuffer())}return o?(await un().parseSync(e,o,null,0))?.scene??null:null}const i=new X.GLTFLoader;return hy(i,e),new Promise((n,o)=>{const r=this.avatarRegistryUrl+"/"+t;i.load(r,async a=>{await un().createBuiltinComponents(e,r,a,null,void 0),n(a.scene)},a=>{Fl&&console.log("[Custom Avatar] "+a.loaded/a.total*100+"% loaded of "+a.total/1024+"kB")},a=>{console.error("[Custom Avatar] Error when loading: "+a),n(null)})})}cacheModel(e,t){}findAvatar(e){const t=e;let i=t;i.children.length==1&&(i=e.children[0]);let n=this.findAvatarPart(i,["head"]);const o=this.findAvatarPart(i,["left","hand"]),r=this.findAvatarPart(i,["right","hand"]);if(!n){n=t;const l=new c.Vector3;new c.Box3().setFromObject(n).getSize(l);const h=Math.max(l.x,l.y,l.z);console.warn("[Custom Avatar] Normalizing head scale, it's too big: "+h+" meters! Should be < 0.3m"),h>.3&&n.scale.multiplyScalar(1/h*.3)}return new Qy(t,n,o,r)}findAvatarPart(e,t){const i=e.name.toLowerCase();let n=!0;for(const o of t){if(!n)break;i.indexOf(o)===-1&&(n=!1)}if(n)return e;if(e.children)for(const o of e.children){const r=this.findAvatarPart(o,t);if(r)return r}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}}class eS{get extensionName(){return"DocumentExtension"}onAfterBuildDocument(e){}}class tS{}const LA=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:ue,ActionCollection:dx,ActionModel:Jt,AlignmentConstraint:th,Animation:Tt,AnimationCurve:gh,AnimationExtension:qu,AnimationTrackHandler:Rc,Animator:lt,AnimatorController:$i,Antialiasing:_h,Attractor:ll,AudioExtension:kr,AudioListener:ps,AudioSource:vi,AudioTrackHandler:ms,Avatar:go,AvatarBlink_Simple:Pr,AvatarEyeLook_Rotation:Lg,AvatarLoader:Jx,AvatarMarker:Oe,AvatarModel:Qy,Avatar_Brain_LookAt:Ac,Avatar_MouthShapes:nh,Avatar_MustacheShake:Ag,Avatar_POI:cr,AxesHelper:Xa,BaseUIComponent:Gi,BasicIKConstraint:jg,BehaviorExtension:dy,BehaviorModel:St,BloomEffect:cf,BoxCollider:Nu,BoxGizmo:Ar,BoxHelperComponent:bt,Button:Ls,CallInfo:ds,Camera:si,CameraTargetReachedEvent:Ec,Canvas:Ua,CanvasGroup:yo,CapsuleCollider:ws,ChangeMaterialOnClick:ny,ChangeTransformOnClick:Er,CharacterController:Or,CharacterControllerInput:Ps,ChromaticAberration:bh,ClickThrough:vf,ColorAdjustments:Ro,ColorBySpeedModule:al,ColorOverLifetimeModule:rf,ContactShadows:sh,ControlTrackHandler:ju,CursorFollow:$r,CustomBranding:Tr,Deletable:zg,DeleteBox:co,DepthOfField:vn,DeviceFlag:Vu,DocumentExtension:eS,DragControls:Zo,DropListener:Ms,Duplicatable:Xg,EffectWrapper:jc,EmissionModule:Ts,EmphasizeOnClick:Za,EnvironmentScene:Bu,EventList:J,EventListEvent:Ru,EventSystem:Gt,EventTrigger:Gu,FieldWithDefault:Hw,FixedJoint:Py,Fog:nl,GltfExport:Jg,GltfExportBox:Kg,Gradient:Lr,Graphic:fh,GraphicRaycaster:Au,GridHelper:sl,GridLayoutGroup:yy,GroundProjectedEnv:Yn,GroupActionModel:Jo,HideOnStart:ji,HingeJoint:mh,HorizontalLayoutGroup:gy,get HoverAnimation(){return exports.HoverAnimation},Image:ul,InheritVelocityModule:Ry,InputField:Ny,InstanceHandle:hr,InstancingHandler:_r,Interactable:Ug,Keyframe:oi,LODGroup:nf,LODModel:ol,Light:Ot,LimitVelocityOverLifetimeModule:nt,LogStats:Fg,LookAt:Vy,LookAtConstraint:Cr,MainModule:Lt,MarkerTrackHandler:Iu,MaskableGraphic:ph,MeshCollider:Co,MeshRenderer:ah,MinMaxCurve:H,MinMaxGradient:Ir,NeedleMenu:Jn,NestedGltf:rl,Networking:ky,NoiseModule:me,ObjectRaycaster:Wi,OffsetConstraint:Dr,OpenURL:fl,OrbitControls:he,Outline:il,Padding:Rr,ParticleBurst:cu,ParticleSubEmitter:Ty,ParticleSystem:Ic,ParticleSystemRenderer:Yi,PhysicsExtension:uy,PixelationEffect:vh,PlayAnimationOnClick:Dc,PlayAudioOnClick:mo,PlayableDirector:Ba,PlayerColor:za,PointerEventData:Kc,PostProcessingHandler:Na,PreliminaryAction:Ja,PreliminaryTrigger:ch,RawImage:yf,Rect:yx,RectTransform:mn,ReflectionProbe:ls,RegisteredAnimationInfo:ao,RemoteSkybox:Fu,Renderer:Ht,RendererLightmap:Gg,Rigidbody:$e,RotationBySpeedModule:Qi,RotationOverLifetimeModule:bn,SceneSwitcher:We,ScreenCapture:To,ScreenSpaceAmbientOcclusion:As,ScreenSpaceAmbientOcclusionN8:wn,ScrollFollow:Is,SeeThrough:Ds,SetActiveOnClick:sy,ShadowCatcher:Ch,ShapeModule:Ey,SharpeningEffect:xh,SignalAsset:Lu,SignalReceiver:Jc,SignalReceiverEvent:Zc,SignalTrackHandler:Tc,Size:gx,SizeBySpeedModule:di,SizeOverLifetimeModule:jr,SkinnedMeshRenderer:Hg,SmoothFollow:uf,SpatialGrabRaycaster:mr,SpatialHtml:kh,SpatialTrigger:ff,SpatialTriggerReceiver:Hn,SpectatorCamera:pf,SphereCollider:Qa,SplineContainer:Nr,SplineData:Xn,SplineWalker:Zi,Sprite:ks,SpriteData:Oa,SpriteRenderer:ci,SpriteSheet:Fa,SubEmitterSystem:hu,SyncedCamera:By,SyncedRoom:xn,SyncedTransform:pn,TapGestureTrigger:ry,TeleportTarget:Zu,TestRunner:Fy,TestSimulateUserData:Uy,Text:Dt,TextBuilder:py,TextExtension:ef,TextureSheetAnimationModule:It,TiltShiftEffect:ts,ToneMappingEffect:_o,TrailModule:Le,TransformData:Ae,TransformGizmo:Vr,TriggerBuilder:Rt,TriggerModel:ho,UIRaycastUtils:Sg,UIRootComponent:dh,USDZExporter:Gn,USDZText:ga,USDZUIExtension:by,UsageMarker:oh,VariantAction:iy,VelocityOverLifetimeModule:Fe,VerticalLayoutGroup:my,VideoPlayer:tt,get ViewBox(){return exports.ViewBox},Vignette:Ur,VisibilityAction:hh,Voip:So,Volume:zr,VolumeParameter:z,VolumeProfile:af,WebARCameraBackground:Rh,WebARSessionRoot:zi,WebXR:Ju,WebXRImageTracking:Th,WebXRImageTrackingModel:Bs,WebXRPlaneTracking:Fs,WebXRTrackedImage:Va,XRControllerFollow:js,XRControllerModel:xs,XRControllerMovement:xi,XRFlag:Bi,XRRig:Sf,XRState:Wt,__Ignore:tS},Symbol.toStringTag,{value:"Module"}));exports.SplineUtils=void 0;(s=>{function e(t,i=!1,n=.75){const o=new Nr,r=1-j.clamp(n,0,1);return t.forEach((a,l)=>{const h=new c.Vector3;l<t.length-1?h.subVectors(t[l+1],a).normalize().multiplyScalar(r):i&&t.length>1&&h.subVectors(t[0],a).normalize().multiplyScalar(r);const d=new Xn;d.position.copy(a),d.tangentIn.copy(h),d.tangentOut.copy(h),o.addKnot(d)}),o.closed=i,o}s.createFromPoints=e})(exports.SplineUtils||(exports.SplineUtils={}));class IA extends le.WorkerBase{constructor(){super(new Worker(new URL("/generateMeshBVH.worker-DiCnZlf3.js",typeof document>"u"?require("url").pathToFileURL(__filename).href:_a&&_a.tagName.toUpperCase()==="SCRIPT"&&_a.src||new URL("needle-engine.bundle--J0Pgk3R.umd.cjs",document.baseURI).href),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(e,t,i={}){return new Promise((n,o)=>{if(t.getAttribute("position").isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");e.onerror=h=>{o(new Error(`[GenerateMeshBVHWorker] ${h.message||"Could not load worker."}`))},e.onmessage=h=>{const{data:d}=h;if(d.error)o(new Error(d.error)),e.onmessage=null;else if(d.serialized){const{serialized:u,position:p}=d,m=le.MeshBVH.deserialize(u,t,{setIndex:!1}),y=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=p,u.index)if(t.index)t.index.array=u.index;else{const _=new c.BufferAttribute(u.index,1,!1);t.setIndex(_)}y.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new c.Box3)),i.onProgress&&i.onProgress(d.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(d.progress)};const r=t.index?t.index.array:null,a=t.attributes.position.array,l=[a];r&&l.push(r),e.postMessage({index:r,position:a,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...t.groups]}},l.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const jA=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:IA},Symbol.toStringTag,{value:"Module"}));exports.$componentName=Hv;exports.$physicsKey=BC;exports.ActionBuilder=ue;exports.ActionCollection=dx;exports.ActionModel=Jt;exports.Addressables=c0;exports.AlignmentConstraint=th;exports.AmbientMode=wa;exports.Animation=Tt;exports.AnimationCurve=gh;exports.AnimationExtension=qu;exports.AnimationTrackHandler=Rc;exports.AnimationUtils=qn;exports.Animator=lt;exports.AnimatorConditionMode=eo;exports.AnimatorController=$i;exports.AnimatorControllerParameterType=wg;exports.AnimatorStateInfo=$l;exports.Antialiasing=_h;exports.Application=fn;exports.AssetDatabase=W0;exports.AssetReference=Z;exports.Attractor=ll;exports.AudioClip=lm;exports.AudioExtension=kr;exports.AudioListener=ps;exports.AudioSource=vi;exports.AudioTrackHandler=ms;exports.Avatar=go;exports.AvatarBlink_Simple=Pr;exports.AvatarEyeLook_Rotation=Lg;exports.AvatarLoader=Jx;exports.AvatarMarker=Oe;exports.AvatarModel=Qy;exports.Avatar_Brain_LookAt=Ac;exports.Avatar_MouthShapes=nh;exports.Avatar_MustacheShake=Ag;exports.Avatar_POI=cr;exports.Axes=pa;exports.AxesHelper=Xa;exports.BUILD_TIME=_c;exports.BaseUIComponent=Gi;exports.BasicIKConstraint=jg;exports.BehaviorExtension=dy;exports.BehaviorModel=St;exports.BloomEffect=cf;exports.BoxCollider=Nu;exports.BoxGizmo=Ar;exports.BoxHelperComponent=bt;exports.Button=Ls;exports.ButtonsFactory=Ui;exports.CallDirection=Rw;exports.CallInfo=ds;exports.Camera=si;exports.CameraTargetReachedEvent=Ec;exports.Canvas=Ua;exports.CanvasGroup=yo;exports.CapsuleCollider=ws;exports.ChangeMaterialOnClick=ny;exports.ChangeTransformOnClick=Er;exports.CharacterController=Or;exports.CharacterControllerInput=Ps;exports.ChromaticAberration=bh;exports.CircularBuffer=_i;exports.ClearFlags=lr;exports.ClickThrough=vf;exports.ClipExtrapolation=kn;exports.Collider=Xi;exports.Collision=Xv;exports.CollisionDetectionMode=Tu;exports.ColorAdjustments=Ro;exports.ColorBySpeedModule=al;exports.ColorOverLifetimeModule=rf;exports.Component=qP;exports.Component$1=E;exports.ComponentLifecycleEvents=xu;exports.Components=LA;exports.ConnectionEvents=b0;exports.ContactPoint=qv;exports.ContactShadows=sh;exports.Context=U;exports.ContextArgs=lP;exports.ContextEvent=ae;exports.ContextRegistry=ce;exports.ControlTrackHandler=ju;exports.CursorFollow=$r;exports.CustomBranding=Tr;exports.CustomShader=ve;exports.DefaultReflectionMode=Qd;exports.Deletable=zg;exports.DeleteBox=co;exports.DepthOfField=vn;exports.DeviceFlag=Vu;exports.DocumentExtension=eS;exports.DragControls=Zo;exports.DragMode=Ng;exports.DropListener=Ms;exports.Duplicatable=Xg;exports.EffectWrapper=jc;exports.EmissionModule=Ts;exports.EmphasizeOnClick=Za;exports.EngineLoadingView=Bc;exports.EnvironmentScene=Bu;exports.EventList=J;exports.EventListEvent=Ru;exports.EventSystem=Gt;exports.EventTrigger=Gu;exports.FieldWithDefault=Hw;exports.FileReference=nr;exports.FileReferenceSerializer=d0;exports.FileSpawnModel=IM;exports.File_Event=Fw;exports.FixedJoint=Py;exports.Fog=nl;exports.FrameEvent=ge;exports.GENERATOR=Ra;exports.GameObject=S;exports.Gizmos=B;exports.GltfExport=Jg;exports.GltfExportBox=Kg;exports.Gradient=Lr;exports.Graphic=fh;exports.GraphicRaycaster=Au;exports.Graphics=fo;exports.GridHelper=sl;exports.GridLayoutGroup=yy;exports.GroundProjectedEnv=Yn;exports.GroupActionModel=Jo;exports.HideFlags=gu;exports.HideOnStart=ji;exports.HingeJoint=mh;exports.HorizontalLayoutGroup=gy;exports.HostData=BP;exports.Image=ul;exports.ImageReference=ir;exports.ImageReferenceSerializer=h0;exports.InheritVelocityModule=Ry;exports.Input=p0;exports.InputEventQueue=ti;exports.InputEvents=Pe;exports.InputField=Ny;exports.InstanceHandle=hr;exports.InstancingHandler=_r;exports.InstancingUtil=Vi;exports.InstantiateEvent=sw;exports.InstantiateIdProvider=xt;exports.InstantiateOptions=gn;exports.Interactable=Ug;exports.JoinedRoomResponse=O1;exports.KeyEventArgs=_1;exports.Keyframe=oi;exports.LODGroup=nf;exports.LODModel=ol;exports.LeftRoomResponse=M1;exports.Light=Ot;exports.LightData=P0;exports.LimitVelocityOverLifetimeModule=nt;exports.LoadingElementOptions=bA;exports.LogStats=Fg;exports.LogType=gi;exports.LookAt=Vy;exports.LookAtConstraint=Cr;exports.MODULES=T;exports.MainModule=Lt;exports.MarkerTrackHandler=Iu;exports.MarkerType=Pg;exports.MaskableGraphic=ph;exports.MaterialPropertyBlock=bs;exports.Mathf=j;exports.MeshCollider=Co;exports.MeshRenderer=ah;exports.MinMaxCurve=H;exports.MinMaxGradient=Ir;exports.NEEDLE_ENGINE_FEATURE_FLAGS=Ym;exports.NEKeyboardEvent=Ul;exports.NEPointerEvent=as;exports.NeedleButtonElement=Qx;exports.NeedleEngineWebComponent=Xy;exports.NeedleMenu=Jn;exports.NeedlePatchesKey=yd;exports.NeedleXRController=fg;exports.NeedleXRSession=q;exports.NeedleXRSync=N0;exports.NeedleXRUtils=$0;exports.NestedGltf=rl;exports.NetworkConnection=w0;exports.NetworkedStreamEvents=zn;exports.NetworkedStreams=ih;exports.Networking=ky;exports.NewInstanceModel=rw;exports.NoiseModule=me;exports.ObjectRaycaster=Wi;exports.ObjectUtils=wo;exports.OffsetConstraint=Dr;exports.OneEuroFilter=md;exports.OneEuroFilterXYZ=Um;exports.OpenURL=fl;exports.OrbitControls=he;exports.Outline=il;exports.OwnershipEvent=v0;exports.OwnershipModel=ag;exports.PUBLIC_KEY=oo;exports.Padding=Rr;exports.ParticleBurst=cu;exports.ParticleSubEmitter=Ty;exports.ParticleSystem=Ic;exports.ParticleSystemBaseBehaviour=Eo;exports.ParticleSystemRenderer=Yi;exports.ParticleSystemShapeType=lu;exports.PeerHandle=gs;exports.PeerNetworking=_0;exports.Physics=ja;exports.PhysicsExtension=uy;exports.PhysicsMaterialCombine=st;exports.PixelationEffect=vh;exports.PlayAnimationOnClick=Dc;exports.PlayAudioOnClick=mo;exports.PlayableDirector=Ba;exports.PlayerColor=za;exports.PlayerState=Ni;exports.PlayerStateEvent=px;exports.PlayerSync=ly;exports.PlayerView=x0;exports.PlayerViewManager=S0;exports.PointerEventData=Kc;exports.PointerType=_u;exports.PostProcessingEffect=Xe;exports.PostProcessingEffectOrder=et;exports.PostProcessingHandler=Na;exports.PreliminaryAction=Ja;exports.PreliminaryTrigger=ch;exports.PrimitiveType=$a;exports.Progress=oe;exports.PromiseAllWithErrors=Bm;exports.PromiseErrorResult=Dp;exports.RGBAColor=ie;exports.RapierPhysics=Ma;exports.RawImage=yf;exports.RaycastOptions=xo;exports.Rect=yx;exports.RectTransform=mn;exports.ReflectionProbe=ls;exports.RegisteredAnimationInfo=ao;exports.RemoteSkybox=Fu;exports.RenderTexture=Fn;exports.RenderTextureSerializer=gw;exports.Renderer=Ht;exports.RendererData=C0;exports.RendererLightmap=Gg;exports.Rigidbody=$e;exports.RigidbodyConstraints=Ve;exports.RoomEvents=K;exports.RotationBySpeedModule=Qi;exports.RotationOverLifetimeModule=bn;exports.SceneLightSettings=nu;exports.SceneSwitcher=We;exports.ScreenCapture=To;exports.ScreenSpaceAmbientOcclusion=As;exports.ScreenSpaceAmbientOcclusionN8=wn;exports.ScrollFollow=Is;exports.SeeThrough=Ds;exports.SendQueue=ln;exports.SerializationContext=ig;exports.SetActiveOnClick=sy;exports.ShadowCatcher=Ch;exports.ShapeModule=Ey;exports.ShapeOverlapResult=Qv;exports.SharpeningEffect=xh;exports.SignalAsset=Lu;exports.SignalReceiver=Jc;exports.SignalReceiverEvent=Zc;exports.SignalTrackHandler=Tc;exports.Size=gx;exports.SizeBySpeedModule=di;exports.SizeOverLifetimeModule=jr;exports.SkinnedMeshRenderer=Hg;exports.SmoothFollow=uf;exports.SpatialGrabRaycaster=mr;exports.SpatialHtml=kh;exports.SpatialTrigger=ff;exports.SpatialTriggerReceiver=Hn;exports.SpectatorCamera=pf;exports.SphereCollider=Qa;exports.SphereIntersection=gg;exports.SplineContainer=Nr;exports.SplineData=Xn;exports.SplineWalker=Zi;exports.Sprite=ks;exports.SpriteData=Oa;exports.SpriteRenderer=ci;exports.SpriteSheet=Fa;exports.StateMachineBehaviour=zP;exports.StreamEndedEvent=Rg;exports.StreamReceivedEvent=Ew;exports.SubEmitterSystem=hu;exports.SyncedCamera=By;exports.SyncedRoom=xn;exports.SyncedTransform=pn;exports.TapGestureTrigger=ry;exports.TeleportTarget=Zu;exports.TestRunner=Fy;exports.TestSimulateUserData=Uy;exports.Text=Dt;exports.TextBuilder=py;exports.TextExtension=ef;exports.TextureSheetAnimationModule=It;exports.TiltShiftEffect=ts;exports.Time=O0;exports.ToneMappingEffect=_o;exports.TrackHandler=qa;exports.TrackType=fi;exports.TrailModule=Le;exports.TransformData=Ae;exports.TransformGizmo=Vr;exports.TriggerBuilder=Rt;exports.TriggerModel=ho;exports.TypeStore=P;exports.UIRaycastUtils=Sg;exports.UIRootComponent=dh;exports.USDDocument=ey;exports.USDObject=qe;exports.USDWriter=ix;exports.USDZExporter=nx;exports.USDZExporter$1=Gn;exports.USDZText=ga;exports.USDZUIExtension=by;exports.UriSerializer=yw;exports.UsageMarker=oh;exports.UserJoinedOrLeftRoomModel=k1;exports.VERSION=ii;exports.VariantAction=iy;exports.VelocityOverLifetimeModule=Fe;exports.VerticalLayoutGroup=my;exports.VideoPlayer=tt;exports.ViewDevice=_s;exports.Vignette=Ur;exports.VisibilityAction=hh;exports.Voip=So;exports.Volume=zr;exports.VolumeParameter=z;exports.VolumeProfile=af;exports.WaitForFrames=p1;exports.WaitForPromise=f0;exports.WaitForSeconds=ng;exports.Watch=ys;exports.WebARCameraBackground=Rh;exports.WebARSessionRoot=zi;exports.WebXR=Ju;exports.WebXRButtonFactory=uo;exports.WebXRImageTracking=Th;exports.WebXRImageTrackingModel=Bs;exports.WebXRPlaneTracking=Fs;exports.WebXRTrackedImage=Va;exports.XRControllerFollow=js;exports.XRControllerModel=xs;exports.XRControllerMovement=xi;exports.XRFlag=Bi;exports.XRRig=Sf;exports.XRState=Wt;exports.XRStateFlag=In;exports.__Ignore=tS;exports.__internalNotifyObjectDestroyed=EP;exports.activeInHierarchyFieldName=Bn;exports.addAttributeChangeCallback=Im;exports.addComponent=hn;exports.addCustomExtensionPlugin=ok;exports.addNewComponent=sr;exports.addPatch=mu;exports.apply=Su;exports.applyHMRChanges=HP;exports.applyPrototypeExtensions=j0;exports.beginListenDestroy=ow;exports.beginListenInstantiate=lw;exports.binaryIdentifierCasts=sg;exports.build_scene_functions=aP;exports.builtinComponentKeyName=qo;exports.calculateProgress01=qy;exports.clearMessages=RS;exports.compareAssociation=o0;exports.copyTexture=Dv;exports.createMotion=uw;exports.debugNet=Yt;exports.debugOwner=zl;exports.decompressGpuTexture=ax;exports.deepClone=Uc;exports.delay=vs;exports.delayForFrames=uu;exports.deserializeObject=qd;exports.destroy=bi;exports.destroyComponentInstance=F0;exports.determineMimeTypeFromExtension=Uw;exports.disposeObjectResources=we;exports.disposeStream=Nn;exports.editorGuidKeyName=tc;exports.enableSpatialConsole=ba;exports.exportAsGLTF=TA;exports.findByGuid=_g;exports.findObjectOfType=Ga;exports.findObjectsOfType=z0;exports.findResourceUsers=yg;exports.fitCamera=ww;exports.fitObjectIntoVolume=Iv;exports.foreachComponent=pr;exports.foreachComponentEnumerator=ku;exports.forward=QS;exports.generateQRCode=T0;exports.generateSeed=aw;exports.getBoundingBox=ri;exports.getCameraController=Pv;exports.getComponent=wr;exports.getComponentInChildren=Xc;exports.getComponentInParent=wc;exports.getComponents=qc;exports.getComponentsInChildren=Wa;exports.getComponentsInParent=Cu;exports.getFormattedDate=Zw;exports.getIconElement=wt;exports.getIconTexture=tm;exports.getLoader=un;exports.getOrAddComponent=Hc;exports.getParam=x;exports.getParentHierarchyPath=ZS;exports.getPath=lS;exports.getPeerOptions=x1;exports.getPeerjsInstance=y0;exports.getResourceUserCount=TP;exports.getTempColor=Ev;exports.getTempQuaternion=ei;exports.getTempVector=F;exports.getUrlParams=Fc;exports.getVisibleInCustomShadowRendering=Lv;exports.getWorldDirection=Rv;exports.getWorldEuler=Vm;exports.getWorldPosition=Y;exports.getWorldQuaternion=pe;exports.getWorldRotation=pu;exports.getWorldScale=je;exports.hasCommercialLicense=Wn;exports.hasIndieLicense=$c;exports.hasPointerEventComponent=eu;exports.hasProLicense=$n;exports.hideDebugConsole=Uv;exports.imageToCanvas=lx;exports.initAddressableSerializers=u0;exports.initBuiltinSerializers=_w;exports.initEngine=OA;exports.initVolumeParameterSerializer=Mw;exports.instantiate=po;exports.invokeLoadedImportPluginHooks=Gw;exports.invokeXRSessionEnd=R0;exports.invokeXRSessionStart=E0;exports.isActiveInHierarchy=Z0;exports.isActiveSelf=Ha;exports.isAndroidDevice=pS;exports.isAnimationAction=Av;exports.isComponent=Qm;exports.isDebugMode=sS;exports.isDesktop=hS;exports.isDestroyed=fr;exports.isDevEnvironment=A;exports.isDisposed=kP;exports.isExporting=EA;exports.isGLTFModel=Gv;exports.isHostedOnGlitch=fv;exports.isHotReloadEnabled=am;exports.isHotReloading=WP;exports.isIPad=uS;exports.isIconElement=A0;exports.isLocalNetwork=yi;exports.isMacOS=gS;exports.isMobileDevice=dS;exports.isMozillaXR=mS;exports.isQuest=bS;exports.isResourceTrackingEnabled=H0;exports.isSafari=_S;exports.isUsingInstancing=Mu;exports.isiOS=yS;exports.isiPad=fS;exports.loadAsset=dA;exports.loadPMREM=Eg;exports.loadSync=Hy;exports.logHierarchy=Nd;exports.lookAtInverse=NS;exports.lookAtObject=zc;exports.lookAtScreenPoint=VS;exports.makeId=rS;exports.makeIdFromRandomWords=gv;exports.makeNameSafe=wi;exports.markAsInstancedRendered=J0;exports.microphonePermissionsGranted=vS;exports.nameof=nS;exports.nameofFactory=pv;exports.offXRSessionEnd=U1;exports.offXRSessionStart=F1;exports.onAfterRender=HC;exports.onBeforeRender=GC;exports.onClear=$C;exports.onDestroy=WC;exports.onInitialized=Zm;exports.onStart=yu;exports.onUpdate=i0;exports.onXRSessionEnd=cg;exports.onXRSessionStart=vu;exports.parseSync=qx;exports.placeOnSurface=jv;exports.postprocessFBXMaterials=Gm;exports.prefix=_O;exports.pushState=mv;exports.randomNumber=aS;exports.registerBinaryType=og;exports.registerComponent=Pu;exports.registerComponentExtension=$g;exports.registerCustomEffectType=Ki;exports.registerExportExtensions=Wg;exports.registerExtensions=ou;exports.registerHotReloadType=fw;exports.registerLoader=Kv;exports.registerPrefabProvider=hw;exports.registerPrototypeExtensions=dg;exports.registerType=qm;exports.relativePathPrefix=_v;exports.removeAttributeChangeCallback=jm;exports.removeComponent=ug;exports.removeCustomImportExtensionType=rk;exports.removePatch=LC;exports.resolveUrl=Qn;exports.sanitizeString=yv;exports.saveImage=Wx;exports.screenshot=GT;exports.screenshot2=Gy;exports.sendDestroyed=bg;exports.serializable=f;exports.serializeObject=a0;exports.serializeable=Be;exports.setActive=ac;exports.setAllowBalloonMessages=xv;exports.setAllowOverlayMessages=OS;exports.setAutoFitEnabled=Ud;exports.setCameraController=jp;exports.setDestroyed=tw;exports.setDevEnvironment=IS;exports.setDisposable=X0;exports.setDontDestroy=na;exports.setOrAddParamsToUrl=Ap;exports.setParam=oS;exports.setParamWithoutReload=yc;exports.setPeerOptions=S1;exports.setResourceTrackingEnabled=MP;exports.setState=Dm;exports.setVisibleInCustomShadowRendering=Wm;exports.setWorldEuler=$m;exports.setWorldPosition=at;exports.setWorldPositionXYZ=ur;exports.setWorldQuaternion=dn;exports.setWorldQuaternionXYZW=Nm;exports.setWorldRotation=Tv;exports.setWorldRotationXYZ=Nc;exports.setWorldScale=Ea;exports.showBalloonError=Vc;exports.showBalloonMessage=Se;exports.showBalloonWarning=fe;exports.showDebugConsole=Hm;exports.slerp=Mv;exports.syncDestroy=Qc;exports.syncField=kg;exports.syncInstantiate=vg;exports.textureToCanvas=JS;exports.toSourceId=bv;exports.tryCastBinary=m0;exports.tryDetermineMimetypeFromBinary=Nw;exports.tryDetermineMimetypeFromURL=zw;exports.tryFindObject=ka;exports.tryGetGuid=g0;exports.unregisterHotReloadType=pw;exports.unwatchWrite=Lm;exports.useForAutoFit=Ov;exports.validate=Ct;exports.watchWrite=fu;
|
|
@@ -2435,9 +2435,9 @@ Lo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUIL
|
|
|
2435
2435
|
Lo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');
|
|
2436
2436
|
Lo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.0.8";');
|
|
2437
2437
|
Lo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
|
|
2438
|
-
Lo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu May 07 2026
|
|
2438
|
+
Lo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu May 07 2026 14:51:41 GMT+0000 (Coordinated Universal Time)";');
|
|
2439
2439
|
Lo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "' + NEEDLE_PUBLIC_KEY + '";');
|
|
2440
|
-
const Pi = "5.0.8", Lc = "undefined", Yd = "Thu May 07 2026
|
|
2440
|
+
const Pi = "5.0.8", Lc = "undefined", Yd = "Thu May 07 2026 14:51:41 GMT+0000 (Coordinated Universal Time)";
|
|
2441
2441
|
C0 && console.log(`Engine version: ${Pi} (generator: ${Lc})
|
|
2442
2442
|
Project built at ${Yd}`);
|
|
2443
2443
|
const _r = NEEDLE_PUBLIC_KEY, Cs = "needle_isActiveInHierarchy", pa = "builtin_components", yd = "needle_editor_guid";
|
|
@@ -148,7 +148,7 @@ void main(){
|
|
|
148
148
|
clip: rect(0, 0, 0, 0);
|
|
149
149
|
white-space: nowrap;
|
|
150
150
|
border: 0;
|
|
151
|
-
`,this.root.setAttribute("role","region"),this.root.setAttribute("aria-label","3D Needle Engine scene"),this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("role","status"),this.root.appendChild(this.liveRegion),this.enabled=!0}static _managers=new WeakMap;static get(e){return Mg(e)?this._managers.get(e.context):this._managers.get(e)}_enabled;set enabled(e){e!==this._enabled&&(this._enabled=e,e?(Em._managers.set(this.context,this),(this.context.domElement.shadowRoot||this.context.domElement).prepend(this.root)):this.root.remove())}clear(){this.root.childNodes.forEach(e=>e.remove()),this.root.appendChild(this.liveRegion)}dispose(){this.root.remove(),Em._managers.delete(this.context)}root=document.createElement("div");liveRegion=document.createElement("div");treeElements=new WeakMap;updateElement(e,t){let i=this.treeElements.get(e);i||(i=document.createElement("div"),this.treeElements.set(e,i),this.root.appendChild(i),typeof t=="object"&&(t.role&&i.setAttribute("role",t.role),t.label&&i.setAttribute("aria-label",t.label),t.hidden!==void 0&&i.setAttribute("aria-hidden",String(t.hidden)),t.busy!==void 0&&i.setAttribute("aria-busy",String(t.busy))))}focus(e){const t=this.treeElements.get(e);t&&t.focus()}unfocus(e){const t=this.treeElements.get(e);t&&t.blur()}hover(e,t){const i=this.treeElements.get(e);this.liveRegion.textContent=t||i?.getAttribute("aria-label")||""}removeElement(e){this.treeElements.get(e)?.remove(),this.treeElements.delete(e)}set liveRegionMode(e){this.liveRegion.setAttribute("aria-live",e)}}let sv,rv=null;function kn(){return sv}function av(o){if(o==null){console.warn("Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.");return}rv!==o&&(rv=o,sv=new o)}const lv=w("debugdefines");ks('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),ks('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),ks('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),ks('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),ks('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.0.8";'),ks('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),ks('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu May 07 2026
|
|
151
|
+
`,this.root.setAttribute("role","region"),this.root.setAttribute("aria-label","3D Needle Engine scene"),this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("role","status"),this.root.appendChild(this.liveRegion),this.enabled=!0}static _managers=new WeakMap;static get(e){return Mg(e)?this._managers.get(e.context):this._managers.get(e)}_enabled;set enabled(e){e!==this._enabled&&(this._enabled=e,e?(Em._managers.set(this.context,this),(this.context.domElement.shadowRoot||this.context.domElement).prepend(this.root)):this.root.remove())}clear(){this.root.childNodes.forEach(e=>e.remove()),this.root.appendChild(this.liveRegion)}dispose(){this.root.remove(),Em._managers.delete(this.context)}root=document.createElement("div");liveRegion=document.createElement("div");treeElements=new WeakMap;updateElement(e,t){let i=this.treeElements.get(e);i||(i=document.createElement("div"),this.treeElements.set(e,i),this.root.appendChild(i),typeof t=="object"&&(t.role&&i.setAttribute("role",t.role),t.label&&i.setAttribute("aria-label",t.label),t.hidden!==void 0&&i.setAttribute("aria-hidden",String(t.hidden)),t.busy!==void 0&&i.setAttribute("aria-busy",String(t.busy))))}focus(e){const t=this.treeElements.get(e);t&&t.focus()}unfocus(e){const t=this.treeElements.get(e);t&&t.blur()}hover(e,t){const i=this.treeElements.get(e);this.liveRegion.textContent=t||i?.getAttribute("aria-label")||""}removeElement(e){this.treeElements.get(e)?.remove(),this.treeElements.delete(e)}set liveRegionMode(e){this.liveRegion.setAttribute("aria-live",e)}}let sv,rv=null;function kn(){return sv}function av(o){if(o==null){console.warn("Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.");return}rv!==o&&(rv=o,sv=new o)}const lv=w("debugdefines");ks('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),ks('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),ks('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),ks('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),ks('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.0.8";'),ks('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),ks('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu May 07 2026 14:51:41 GMT+0000 (Coordinated Universal Time)";'),ks('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const mi="5.0.8",Ha="undefined",Sc="Thu May 07 2026 14:51:41 GMT+0000 (Coordinated Universal Time)";lv&&console.log(`Engine version: ${mi} (generator: ${Ha})
|
|
152
152
|
Project built at ${Sc}`);const Os=NEEDLE_PUBLIC_KEY,Jn="needle_isActiveInHierarchy",Tr="builtin_components",Cc="needle_editor_guid";function ks(o){try{(0,eval)(o)}catch(e){lv&&console.error(e)}}const Rg={experimentalSmartHierarchyUpdate:!1};function Pc(o,e){try{e||o()}catch(t){return console.error(t),!1}return!0}const Tg=w("debugnewscripts"),Gk=w("debughierarchy"),Ae=[];function qk(){return Ae.length>0}function nu(o){if(Tg&&console.log("Register new components",o.new_scripts.length,[...o.new_scripts],o.alias?"element: "+o.alias:o.hash,o),o.new_scripts_pre_setup_callbacks.length>0){for(const e of o.new_scripts_pre_setup_callbacks)e&&e();o.new_scripts_pre_setup_callbacks.length=0}if(!(o.new_scripts.length<=0)){Ae.length=0,o.new_scripts.length>0&&Ae.push(...o.new_scripts),o.new_scripts.length=0;for(let e=0;e<Ae.length;e++)try{const t=Ae[e];if(t.isComponent!==!0){(A()||Tg)&&console.error(`Registered script is not a Needle Engine component.
|
|
153
153
|
The script will be ignored. Please make sure your component extends "Behaviour" imported from "@needle-tools/engine"
|
|
154
154
|
`,t),Ae.splice(e,1),e--;continue}if(t.destroyed)continue;if(!t.gameObject){console.warn(`Component can not be initialized: no GameObject assigned.
|
package/dist/needle-engine.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { initEngine as i, GameObject as r, onClear as a, onDestroy as s, onInitialized as l, onAfterRender as d, onBeforeRender as c, onUpdate as m, onStart as p, TypeStore as g, loadAsset as u, NeedleXRSession as S, Context as C, VERSION as y, Component as E, Components as R } from "./needle-engine.bundle-
|
|
2
|
-
import { $componentName as T, $physicsKey as b, ActionBuilder as M, ActionCollection as I, ActionModel as D, Addressables as O, AlignmentConstraint as x, AmbientMode as k, Animation as L, AnimationCurve as N, AnimationExtension as B, AnimationTrackHandler as F, AnimationUtils as w, Animator as U, AnimatorConditionMode as G, AnimatorController as W, AnimatorControllerParameterType as H, AnimatorStateInfo as X, Antialiasing as z, Application as V, AssetDatabase as _, AssetReference as j, Attractor as Z, AudioClip as K, AudioExtension as Q, AudioListener as $, AudioSource as Y, AudioTrackHandler as J, Avatar as q, AvatarBlink_Simple as ee, AvatarEyeLook_Rotation as te, AvatarLoader as oe, AvatarMarker as re, AvatarModel as ne, Avatar_Brain_LookAt as ie, Avatar_MouthShapes as ae, Avatar_MustacheShake as se, Avatar_POI as le, Axes as de, AxesHelper as ce, BUILD_TIME as me, BaseUIComponent as pe, BasicIKConstraint as ge, BehaviorExtension as ue, BehaviorModel as Se, Component$1 as Ce, BlobStorage as ye, BloomEffect as Ee, BoxCollider as Re, BoxGizmo as he, BoxHelperComponent as fe, Button as ve, ButtonsFactory as Pe, CallDirection as Ae, CallInfo as Te, Camera as be, CameraTargetReachedEvent as Me, Canvas as Ie, CanvasGroup as De, CapsuleCollider as Oe, ChangeMaterialOnClick as xe, ChangeTransformOnClick as ke, CharacterController as Le, CharacterControllerInput as Ne, ChromaticAberration as Be, CircularBuffer as Fe, ClearFlags as we, ClickThrough as Ue, ClipExtrapolation as Ge, Collider as We, Collision as He, CollisionDetectionMode as Xe, ColorAdjustments as ze, ColorBySpeedModule as Ve, ColorOverLifetimeModule as _e, Component$1 as je, ComponentLifecycleEvents as Ze, ConnectionEvents as Ke, ContactPoint as Qe, ContactShadows as $e, ContextArgs as Ye, ContextEvent as Je, ContextRegistry as qe, ControlTrackHandler as et, CursorFollow as tt, CustomBranding as ot, CustomShader as rt, DefaultReflectionMode as nt, Deletable as it, DeleteBox as at, DepthOfField as st, DeviceFlag as lt, DeviceUtilities as dt, DocumentExtension as ct, DragControls as mt, DragMode as pt, DropListener as gt, Duplicatable as ut, EffectWrapper as St, EmissionModule as Ct, EmphasizeOnClick as yt, EngineLoadingView as Et, EnvironmentScene as Rt, EventList as ht, EventListEvent as ft, EventSystem as vt, EventTrigger as Pt, FieldWithDefault as At, FileReference as Tt, FileReferenceSerializer as bt, FileSpawnModel as Mt, File_Event as It, FixedJoint as Dt, Fog as Ot, FrameEvent as xt, GENERATOR as kt, Gizmos as Lt, GltfExport as Nt, GltfExportBox as Bt, Gradient as Ft, Graphic as wt, GraphicRaycaster as Ut, Graphics as Gt, GridHelper as Wt, GridLayoutGroup as Ht, GroundProjectedEnv as Xt, GroupActionModel as zt, HideFlags as Vt, HideOnStart as _t, HingeJoint as jt, HorizontalLayoutGroup as Zt, HostData as Kt, HoverAnimation as Qt, Image as $t, ImageReference as Yt, ImageReferenceSerializer as Jt, InheritVelocityModule as qt, Input as eo, InputEventQueue as to, InputEvents as oo, InputField as ro, InstanceHandle as no, InstancingHandler as io, InstancingUtil as ao, InstantiateEvent as so, InstantiateIdProvider as lo, InstantiateOptions as co, Interactable as mo, InternalScreenshotUtils as po, JoinedRoomResponse as go, KeyEventArgs as uo, Keyframe as So, LODGroup as Co, LODModel as yo, LeftRoomResponse as Eo, Light as Ro, LightData as ho, LimitVelocityOverLifetimeModule as fo, LoadingElementOptions as vo, LogStats as Po, LogType as Ao, LookAt as To, LookAtConstraint as bo, MainModule as Mo, MarkerTrackHandler as Io, MarkerType as Do, MaskableGraphic as Oo, MaterialPropertyBlock as xo, MaterialX as ko, Mathf as Lo, MeshCollider as No, MeshRenderer as Bo, MinMaxCurve as Fo, MinMaxGradient as wo, NEEDLE_ENGINE_FEATURE_FLAGS as Uo, MODULES as Go, NEKeyboardEvent as Wo, NEPointerEvent as Ho, NeedleButtonElement as Xo, ContextRegistry as zo, NeedleEngineModelLoader as Vo, NeedleEngineWebComponent as _o, NeedleMenu as jo, NeedlePatchesKey as Zo, USDZExporter as Ko, NeedleXRController as Qo, NeedleXRSync as $o, NeedleXRUtils as Yo, NestedGltf as Jo, NetworkConnection as qo, NetworkedStreamEvents as er, NetworkedStreams as tr, Networking as or, NewInstanceModel as rr, NoiseModule as nr, ObjectRaycaster as ir, ObjectUtils as ar, OffsetConstraint as sr, OneEuroFilter as lr, OneEuroFilterXYZ as dr, OpenURL as cr, OrbitControls as mr, Outline as pr, OwnershipEvent as gr, OwnershipModel as ur, PUBLIC_KEY as Sr, Padding as Cr, ParticleBurst as yr, ParticleSubEmitter as Er, ParticleSystem as Rr, ParticleSystemBaseBehaviour as hr, ParticleSystemRenderer as fr, ParticleSystemShapeType as vr, PeerHandle as Pr, PeerNetworking as Ar, Physics as Tr, PhysicsExtension as br, PhysicsMaterialCombine as Mr, PixelationEffect as Ir, PlayAnimationOnClick as Dr, PlayAudioOnClick as Or, PlayableDirector as xr, PlayerColor as kr, PlayerState as Lr, PlayerStateEvent as Nr, PlayerSync as Br, PlayerView as Fr, PlayerViewManager as wr, PointerEventData as Ur, PointerType as Gr, PostProcessingEffect as Wr, PostProcessingEffectOrder as Hr, PostProcessingHandler as Xr, Volume as zr, PreliminaryAction as Vr, PreliminaryTrigger as _r, PreviewHelper as jr, PrimitiveType as Zr, Progress as Kr, PromiseAllWithErrors as Qr, PromiseErrorResult as $r, RGBAColor as Yr, RapierPhysics as Jr, RawImage as qr, RaycastOptions as en, Rect as tn, RectTransform as on, ReflectionProbe as rn, RegisteredAnimationInfo as nn, RemoteSkybox as an, RenderTexture as sn, RenderTextureSerializer as ln, Renderer as dn, RendererData as cn, RendererLightmap as mn, Rigidbody as pn, RigidbodyConstraints as gn, RoomEvents as un, RotationBySpeedModule as Sn, RotationOverLifetimeModule as Cn, SceneLightSettings as yn, SceneSwitcher as En, ScreenCapture as Rn, ScreenSpaceAmbientOcclusion as hn, ScreenSpaceAmbientOcclusionN8 as fn, ScrollFollow as vn, SeeThrough as Pn, SendQueue as An, SerializationContext as Tn, SetActiveOnClick as bn, ShadowCatcher as Mn, ShapeModule as In, ShapeOverlapResult as Dn, SharpeningEffect as On, SignalAsset as xn, SignalReceiver as kn, SignalReceiverEvent as Ln, SignalTrackHandler as Nn, Size as Bn, SizeBySpeedModule as Fn, SizeOverLifetimeModule as wn, SkinnedMeshRenderer as Un, SmoothFollow as Gn, SpatialGrabRaycaster as Wn, SpatialHtml as Hn, SpatialTrigger as Xn, SpatialTriggerReceiver as zn, SpectatorCamera as Vn, SphereCollider as _n, SphereIntersection as jn, SplineContainer as Zn, SplineData as Kn, SplineUtils as Qn, SplineWalker as $n, Sprite as Yn, SpriteData as Jn, SpriteRenderer as qn, SpriteSheet as ei, StateMachineBehaviour as ti, StreamEndedEvent as oi, StreamReceivedEvent as ri, SubEmitterSystem as ni, SyncedCamera as ii, SyncedRoom as ai, SyncedTransform as si, TapGestureTrigger as li, TeleportTarget as di, TestRunner as ci, TestSimulateUserData as mi, Text as pi, TextBuilder as gi, TextExtension as ui, TextureSheetAnimationModule as Si, TiltShiftEffect as Ci, Time as yi, ToneMappingEffect as Ei, TrackHandler as Ri, TrackType as hi, TrailModule as fi, TransformData as vi, TransformGizmo as Pi, TriggerBuilder as Ai, TriggerModel as Ti, UIRaycastUtils as bi, UIRootComponent as Mi, USDDocument as Ii, USDObject as Di, USDWriter as Oi, USDZExporter$1 as xi, USDZText as ki, USDZUIExtension as Li, UriSerializer as Ni, UsageMarker as Bi, UserJoinedOrLeftRoomModel as Fi, VariantAction as wi, VelocityOverLifetimeModule as Ui, VerticalLayoutGroup as Gi, VideoPlayer as Wi, ViewBox as Hi, ViewDevice as Xi, Vignette as zi, VisibilityAction as Vi, Voip as _i, Volume as ji, VolumeParameter as Zi, VolumeProfile as Ki, WaitForFrames as Qi, WaitForPromise as $i, WaitForSeconds as Yi, Watch as Ji, WebARCameraBackground as qi, WebARSessionRoot as ea, WebXR as ta, WebXRButtonFactory as oa, WebXRImageTracking as ra, WebXRImageTrackingModel as na, WebXRPlaneTracking as ia, WebXRTrackedImage as aa, XRControllerFollow as sa, XRControllerModel as la, XRControllerMovement as da, XRFlag as ca, XRRig as ma, XRState as pa, XRStateFlag as ga, __Ignore as ua, __internalNotifyObjectDestroyed as Sa, activeInHierarchyFieldName as Ca, addAttributeChangeCallback as ya, addComponent as Ea, addCustomExtensionPlugin as Ra, addNewComponent as ha, addPatch as fa, apply as va, applyHMRChanges as Pa, applyPrototypeExtensions as Aa, beginListenDestroy as Ta, beginListenInstantiate as ba, binaryIdentifierCasts as Ma, build_scene_functions as Ia, builtinComponentKeyName as Da, calculateProgress01 as Oa, clearMessages as xa, clearMessages as ka, colorSerializer as La, compareAssociation as Na, componentSerializer as Ba, copyTexture as Fa, createMotion as wa, debugNet as Ua, debugOwner as Ga, decompressGpuTexture as Wa, deepClone as Ha, delay as Xa, delayForFrames as za, deserializeObject as Va, destroy as _a, destroyComponentInstance as ja, determineMimeTypeFromExtension as Za, disposeObjectResources as Ka, disposeStream as Qa, editorGuidKeyName as $a, enableSpatialConsole as Ya, eventListSerializer as Ja, exportAsGLTF as qa, findByGuid as es, findObjectOfType as ts, findObjectsOfType as os, findResourceUsers as rs, fitCamera as ns, fitObjectIntoVolume as is, foreachComponent as as, foreachComponentEnumerator as ss, forward as ls, generateQRCode as ds, generateSeed as cs, getBoundingBox as ms, getCameraController as ps, getComponent as gs, getComponentInChildren as us, getComponentInParent as Ss, getComponents as Cs, getComponentsInChildren as ys, getComponentsInParent as Es, getFormattedDate as Rs, getIconElement as hs, getIconTexture as fs, getLoader as vs, getOrAddComponent as Ps, getParam as As, getParentHierarchyPath as Ts, getPath as bs, getPeerOptions as Ms, getPeerjsInstance as Is, getResourceUserCount as Ds, getTempColor as Os, getTempQuaternion as xs, getTempVector as ks, getUrlParams as Ls, getVisibleInCustomShadowRendering as Ns, getWorldDirection as Bs, getWorldEuler as Fs, getWorldPosition as ws, getWorldQuaternion as Us, getWorldRotation as Gs, getWorldScale as Ws, hasCommercialLicense as Hs, hasIndieLicense as Xs, hasPointerEventComponent as zs, hasProLicense as Vs, hideDebugConsole as _s, imageToCanvas as js, initAddressableSerializers as Zs, initBuiltinSerializers as Ks, initVolumeParameterSerializer as Qs, instantiate as $s, invokeLoadedImportPluginHooks as Ys, invokeXRSessionEnd as Js, invokeXRSessionStart as qs, isActiveInHierarchy as el, isActiveSelf as tl, isAndroidDevice as ol, isAnimationAction as rl, isComponent as nl, isDebugMode as il, isDesktop as al, isDestroyed as sl, isDevEnvironment as ll, isDisposed as dl, isExporting as cl, isGLTFModel as ml, isHostedOnGlitch as pl, isHotReloadEnabled as gl, isHotReloading as ul, isIPad as Sl, isIconElement as Cl, isLocalNetwork as yl, isMacOS as El, isMobileDevice as Rl, isMozillaXR as hl, isQuest as fl, isResourceTrackingEnabled as vl, isSafari as Pl, isUsingInstancing as Al, isiOS as Tl, isiPad as bl, loadPMREM as Ml, loadSync as Il, logHierarchy as Dl, lookAtInverse as Ol, lookAtObject as xl, lookAtScreenPoint as kl, makeId as Ll, makeIdFromRandomWords as Nl, makeNameSafe as Bl, markAsInstancedRendered as Fl, microphonePermissionsGranted as wl, nameof as Ul, nameofFactory as Gl, objectSerializer as Wl, offXRSessionEnd as Hl, offXRSessionStart as Xl, onXRSessionEnd as zl, onXRSessionStart as Vl, parseSync as _l, placeOnSurface as jl, postprocessFBXMaterials as Zl, prefix as Kl, pushState as Ql, randomNumber as $l, registerBinaryType as Yl, registerComponent as Jl, registerComponentExtension as ql, registerCustomEffectType as ed, registerExportExtensions as td, registerExtensions as od, registerHotReloadType as rd, registerLoader as nd, registerPrefabProvider as id, registerPrototypeExtensions as ad, registerType as sd, relativePathPrefix as ld, removeAttributeChangeCallback as dd, removeComponent as cd, removeCustomImportExtensionType as md, removePatch as pd, resolveUrl as gd, sanitizeString as ud, saveImage as Sd, screenshot as Cd, screenshot2 as yd, sendDestroyed as Ed, serializable as Rd, serializeObject as hd, serializeable as fd, setActive as vd, setAllowBalloonMessages as Pd, setAllowOverlayMessages as Ad, setAutoFitEnabled as Td, setCameraController as bd, setDestroyed as Md, setDevEnvironment as Id, setDisposable as Dd, setDontDestroy as Od, setOrAddParamsToUrl as xd, setParam as kd, setParamWithoutReload as Ld, setPeerOptions as Nd, setResourceTrackingEnabled as Bd, setState as Fd, setVisibleInCustomShadowRendering as wd, setWorldEuler as Ud, setWorldPosition as Gd, setWorldPositionXYZ as Wd, setWorldQuaternion as Hd, setWorldQuaternionXYZW as Xd, setWorldRotation as zd, setWorldRotationXYZ as Vd, setWorldScale as _d, showBalloonError as jd, showBalloonMessage as Zd, showBalloonWarning as Kd, showDebugConsole as Qd, slerp as $d, syncDestroy as Yd, syncField as Jd, syncInstantiate as qd, textureToCanvas as ec, toSourceId as tc, tryCastBinary as oc, tryDetermineMimetypeFromBinary as rc, tryDetermineMimetypeFromURL as nc, tryFindObject as ic, tryGetGuid as ac, unregisterHotReloadType as sc, unwatchWrite as lc, useForAutoFit as dc, validate as cc, watchWrite as mc } from "./needle-engine.bundle-DTswFwCu.js";
|
|
1
|
+
import { initEngine as i, GameObject as r, onClear as a, onDestroy as s, onInitialized as l, onAfterRender as d, onBeforeRender as c, onUpdate as m, onStart as p, TypeStore as g, loadAsset as u, NeedleXRSession as S, Context as C, VERSION as y, Component as E, Components as R } from "./needle-engine.bundle-BCA42ir1.js";
|
|
2
|
+
import { $componentName as T, $physicsKey as b, ActionBuilder as M, ActionCollection as I, ActionModel as D, Addressables as O, AlignmentConstraint as x, AmbientMode as k, Animation as L, AnimationCurve as N, AnimationExtension as B, AnimationTrackHandler as F, AnimationUtils as w, Animator as U, AnimatorConditionMode as G, AnimatorController as W, AnimatorControllerParameterType as H, AnimatorStateInfo as X, Antialiasing as z, Application as V, AssetDatabase as _, AssetReference as j, Attractor as Z, AudioClip as K, AudioExtension as Q, AudioListener as $, AudioSource as Y, AudioTrackHandler as J, Avatar as q, AvatarBlink_Simple as ee, AvatarEyeLook_Rotation as te, AvatarLoader as oe, AvatarMarker as re, AvatarModel as ne, Avatar_Brain_LookAt as ie, Avatar_MouthShapes as ae, Avatar_MustacheShake as se, Avatar_POI as le, Axes as de, AxesHelper as ce, BUILD_TIME as me, BaseUIComponent as pe, BasicIKConstraint as ge, BehaviorExtension as ue, BehaviorModel as Se, Component$1 as Ce, BlobStorage as ye, BloomEffect as Ee, BoxCollider as Re, BoxGizmo as he, BoxHelperComponent as fe, Button as ve, ButtonsFactory as Pe, CallDirection as Ae, CallInfo as Te, Camera as be, CameraTargetReachedEvent as Me, Canvas as Ie, CanvasGroup as De, CapsuleCollider as Oe, ChangeMaterialOnClick as xe, ChangeTransformOnClick as ke, CharacterController as Le, CharacterControllerInput as Ne, ChromaticAberration as Be, CircularBuffer as Fe, ClearFlags as we, ClickThrough as Ue, ClipExtrapolation as Ge, Collider as We, Collision as He, CollisionDetectionMode as Xe, ColorAdjustments as ze, ColorBySpeedModule as Ve, ColorOverLifetimeModule as _e, Component$1 as je, ComponentLifecycleEvents as Ze, ConnectionEvents as Ke, ContactPoint as Qe, ContactShadows as $e, ContextArgs as Ye, ContextEvent as Je, ContextRegistry as qe, ControlTrackHandler as et, CursorFollow as tt, CustomBranding as ot, CustomShader as rt, DefaultReflectionMode as nt, Deletable as it, DeleteBox as at, DepthOfField as st, DeviceFlag as lt, DeviceUtilities as dt, DocumentExtension as ct, DragControls as mt, DragMode as pt, DropListener as gt, Duplicatable as ut, EffectWrapper as St, EmissionModule as Ct, EmphasizeOnClick as yt, EngineLoadingView as Et, EnvironmentScene as Rt, EventList as ht, EventListEvent as ft, EventSystem as vt, EventTrigger as Pt, FieldWithDefault as At, FileReference as Tt, FileReferenceSerializer as bt, FileSpawnModel as Mt, File_Event as It, FixedJoint as Dt, Fog as Ot, FrameEvent as xt, GENERATOR as kt, Gizmos as Lt, GltfExport as Nt, GltfExportBox as Bt, Gradient as Ft, Graphic as wt, GraphicRaycaster as Ut, Graphics as Gt, GridHelper as Wt, GridLayoutGroup as Ht, GroundProjectedEnv as Xt, GroupActionModel as zt, HideFlags as Vt, HideOnStart as _t, HingeJoint as jt, HorizontalLayoutGroup as Zt, HostData as Kt, HoverAnimation as Qt, Image as $t, ImageReference as Yt, ImageReferenceSerializer as Jt, InheritVelocityModule as qt, Input as eo, InputEventQueue as to, InputEvents as oo, InputField as ro, InstanceHandle as no, InstancingHandler as io, InstancingUtil as ao, InstantiateEvent as so, InstantiateIdProvider as lo, InstantiateOptions as co, Interactable as mo, InternalScreenshotUtils as po, JoinedRoomResponse as go, KeyEventArgs as uo, Keyframe as So, LODGroup as Co, LODModel as yo, LeftRoomResponse as Eo, Light as Ro, LightData as ho, LimitVelocityOverLifetimeModule as fo, LoadingElementOptions as vo, LogStats as Po, LogType as Ao, LookAt as To, LookAtConstraint as bo, MainModule as Mo, MarkerTrackHandler as Io, MarkerType as Do, MaskableGraphic as Oo, MaterialPropertyBlock as xo, MaterialX as ko, Mathf as Lo, MeshCollider as No, MeshRenderer as Bo, MinMaxCurve as Fo, MinMaxGradient as wo, NEEDLE_ENGINE_FEATURE_FLAGS as Uo, MODULES as Go, NEKeyboardEvent as Wo, NEPointerEvent as Ho, NeedleButtonElement as Xo, ContextRegistry as zo, NeedleEngineModelLoader as Vo, NeedleEngineWebComponent as _o, NeedleMenu as jo, NeedlePatchesKey as Zo, USDZExporter as Ko, NeedleXRController as Qo, NeedleXRSync as $o, NeedleXRUtils as Yo, NestedGltf as Jo, NetworkConnection as qo, NetworkedStreamEvents as er, NetworkedStreams as tr, Networking as or, NewInstanceModel as rr, NoiseModule as nr, ObjectRaycaster as ir, ObjectUtils as ar, OffsetConstraint as sr, OneEuroFilter as lr, OneEuroFilterXYZ as dr, OpenURL as cr, OrbitControls as mr, Outline as pr, OwnershipEvent as gr, OwnershipModel as ur, PUBLIC_KEY as Sr, Padding as Cr, ParticleBurst as yr, ParticleSubEmitter as Er, ParticleSystem as Rr, ParticleSystemBaseBehaviour as hr, ParticleSystemRenderer as fr, ParticleSystemShapeType as vr, PeerHandle as Pr, PeerNetworking as Ar, Physics as Tr, PhysicsExtension as br, PhysicsMaterialCombine as Mr, PixelationEffect as Ir, PlayAnimationOnClick as Dr, PlayAudioOnClick as Or, PlayableDirector as xr, PlayerColor as kr, PlayerState as Lr, PlayerStateEvent as Nr, PlayerSync as Br, PlayerView as Fr, PlayerViewManager as wr, PointerEventData as Ur, PointerType as Gr, PostProcessingEffect as Wr, PostProcessingEffectOrder as Hr, PostProcessingHandler as Xr, Volume as zr, PreliminaryAction as Vr, PreliminaryTrigger as _r, PreviewHelper as jr, PrimitiveType as Zr, Progress as Kr, PromiseAllWithErrors as Qr, PromiseErrorResult as $r, RGBAColor as Yr, RapierPhysics as Jr, RawImage as qr, RaycastOptions as en, Rect as tn, RectTransform as on, ReflectionProbe as rn, RegisteredAnimationInfo as nn, RemoteSkybox as an, RenderTexture as sn, RenderTextureSerializer as ln, Renderer as dn, RendererData as cn, RendererLightmap as mn, Rigidbody as pn, RigidbodyConstraints as gn, RoomEvents as un, RotationBySpeedModule as Sn, RotationOverLifetimeModule as Cn, SceneLightSettings as yn, SceneSwitcher as En, ScreenCapture as Rn, ScreenSpaceAmbientOcclusion as hn, ScreenSpaceAmbientOcclusionN8 as fn, ScrollFollow as vn, SeeThrough as Pn, SendQueue as An, SerializationContext as Tn, SetActiveOnClick as bn, ShadowCatcher as Mn, ShapeModule as In, ShapeOverlapResult as Dn, SharpeningEffect as On, SignalAsset as xn, SignalReceiver as kn, SignalReceiverEvent as Ln, SignalTrackHandler as Nn, Size as Bn, SizeBySpeedModule as Fn, SizeOverLifetimeModule as wn, SkinnedMeshRenderer as Un, SmoothFollow as Gn, SpatialGrabRaycaster as Wn, SpatialHtml as Hn, SpatialTrigger as Xn, SpatialTriggerReceiver as zn, SpectatorCamera as Vn, SphereCollider as _n, SphereIntersection as jn, SplineContainer as Zn, SplineData as Kn, SplineUtils as Qn, SplineWalker as $n, Sprite as Yn, SpriteData as Jn, SpriteRenderer as qn, SpriteSheet as ei, StateMachineBehaviour as ti, StreamEndedEvent as oi, StreamReceivedEvent as ri, SubEmitterSystem as ni, SyncedCamera as ii, SyncedRoom as ai, SyncedTransform as si, TapGestureTrigger as li, TeleportTarget as di, TestRunner as ci, TestSimulateUserData as mi, Text as pi, TextBuilder as gi, TextExtension as ui, TextureSheetAnimationModule as Si, TiltShiftEffect as Ci, Time as yi, ToneMappingEffect as Ei, TrackHandler as Ri, TrackType as hi, TrailModule as fi, TransformData as vi, TransformGizmo as Pi, TriggerBuilder as Ai, TriggerModel as Ti, UIRaycastUtils as bi, UIRootComponent as Mi, USDDocument as Ii, USDObject as Di, USDWriter as Oi, USDZExporter$1 as xi, USDZText as ki, USDZUIExtension as Li, UriSerializer as Ni, UsageMarker as Bi, UserJoinedOrLeftRoomModel as Fi, VariantAction as wi, VelocityOverLifetimeModule as Ui, VerticalLayoutGroup as Gi, VideoPlayer as Wi, ViewBox as Hi, ViewDevice as Xi, Vignette as zi, VisibilityAction as Vi, Voip as _i, Volume as ji, VolumeParameter as Zi, VolumeProfile as Ki, WaitForFrames as Qi, WaitForPromise as $i, WaitForSeconds as Yi, Watch as Ji, WebARCameraBackground as qi, WebARSessionRoot as ea, WebXR as ta, WebXRButtonFactory as oa, WebXRImageTracking as ra, WebXRImageTrackingModel as na, WebXRPlaneTracking as ia, WebXRTrackedImage as aa, XRControllerFollow as sa, XRControllerModel as la, XRControllerMovement as da, XRFlag as ca, XRRig as ma, XRState as pa, XRStateFlag as ga, __Ignore as ua, __internalNotifyObjectDestroyed as Sa, activeInHierarchyFieldName as Ca, addAttributeChangeCallback as ya, addComponent as Ea, addCustomExtensionPlugin as Ra, addNewComponent as ha, addPatch as fa, apply as va, applyHMRChanges as Pa, applyPrototypeExtensions as Aa, beginListenDestroy as Ta, beginListenInstantiate as ba, binaryIdentifierCasts as Ma, build_scene_functions as Ia, builtinComponentKeyName as Da, calculateProgress01 as Oa, clearMessages as xa, clearMessages as ka, colorSerializer as La, compareAssociation as Na, componentSerializer as Ba, copyTexture as Fa, createMotion as wa, debugNet as Ua, debugOwner as Ga, decompressGpuTexture as Wa, deepClone as Ha, delay as Xa, delayForFrames as za, deserializeObject as Va, destroy as _a, destroyComponentInstance as ja, determineMimeTypeFromExtension as Za, disposeObjectResources as Ka, disposeStream as Qa, editorGuidKeyName as $a, enableSpatialConsole as Ya, eventListSerializer as Ja, exportAsGLTF as qa, findByGuid as es, findObjectOfType as ts, findObjectsOfType as os, findResourceUsers as rs, fitCamera as ns, fitObjectIntoVolume as is, foreachComponent as as, foreachComponentEnumerator as ss, forward as ls, generateQRCode as ds, generateSeed as cs, getBoundingBox as ms, getCameraController as ps, getComponent as gs, getComponentInChildren as us, getComponentInParent as Ss, getComponents as Cs, getComponentsInChildren as ys, getComponentsInParent as Es, getFormattedDate as Rs, getIconElement as hs, getIconTexture as fs, getLoader as vs, getOrAddComponent as Ps, getParam as As, getParentHierarchyPath as Ts, getPath as bs, getPeerOptions as Ms, getPeerjsInstance as Is, getResourceUserCount as Ds, getTempColor as Os, getTempQuaternion as xs, getTempVector as ks, getUrlParams as Ls, getVisibleInCustomShadowRendering as Ns, getWorldDirection as Bs, getWorldEuler as Fs, getWorldPosition as ws, getWorldQuaternion as Us, getWorldRotation as Gs, getWorldScale as Ws, hasCommercialLicense as Hs, hasIndieLicense as Xs, hasPointerEventComponent as zs, hasProLicense as Vs, hideDebugConsole as _s, imageToCanvas as js, initAddressableSerializers as Zs, initBuiltinSerializers as Ks, initVolumeParameterSerializer as Qs, instantiate as $s, invokeLoadedImportPluginHooks as Ys, invokeXRSessionEnd as Js, invokeXRSessionStart as qs, isActiveInHierarchy as el, isActiveSelf as tl, isAndroidDevice as ol, isAnimationAction as rl, isComponent as nl, isDebugMode as il, isDesktop as al, isDestroyed as sl, isDevEnvironment as ll, isDisposed as dl, isExporting as cl, isGLTFModel as ml, isHostedOnGlitch as pl, isHotReloadEnabled as gl, isHotReloading as ul, isIPad as Sl, isIconElement as Cl, isLocalNetwork as yl, isMacOS as El, isMobileDevice as Rl, isMozillaXR as hl, isQuest as fl, isResourceTrackingEnabled as vl, isSafari as Pl, isUsingInstancing as Al, isiOS as Tl, isiPad as bl, loadPMREM as Ml, loadSync as Il, logHierarchy as Dl, lookAtInverse as Ol, lookAtObject as xl, lookAtScreenPoint as kl, makeId as Ll, makeIdFromRandomWords as Nl, makeNameSafe as Bl, markAsInstancedRendered as Fl, microphonePermissionsGranted as wl, nameof as Ul, nameofFactory as Gl, objectSerializer as Wl, offXRSessionEnd as Hl, offXRSessionStart as Xl, onXRSessionEnd as zl, onXRSessionStart as Vl, parseSync as _l, placeOnSurface as jl, postprocessFBXMaterials as Zl, prefix as Kl, pushState as Ql, randomNumber as $l, registerBinaryType as Yl, registerComponent as Jl, registerComponentExtension as ql, registerCustomEffectType as ed, registerExportExtensions as td, registerExtensions as od, registerHotReloadType as rd, registerLoader as nd, registerPrefabProvider as id, registerPrototypeExtensions as ad, registerType as sd, relativePathPrefix as ld, removeAttributeChangeCallback as dd, removeComponent as cd, removeCustomImportExtensionType as md, removePatch as pd, resolveUrl as gd, sanitizeString as ud, saveImage as Sd, screenshot as Cd, screenshot2 as yd, sendDestroyed as Ed, serializable as Rd, serializeObject as hd, serializeable as fd, setActive as vd, setAllowBalloonMessages as Pd, setAllowOverlayMessages as Ad, setAutoFitEnabled as Td, setCameraController as bd, setDestroyed as Md, setDevEnvironment as Id, setDisposable as Dd, setDontDestroy as Od, setOrAddParamsToUrl as xd, setParam as kd, setParamWithoutReload as Ld, setPeerOptions as Nd, setResourceTrackingEnabled as Bd, setState as Fd, setVisibleInCustomShadowRendering as wd, setWorldEuler as Ud, setWorldPosition as Gd, setWorldPositionXYZ as Wd, setWorldQuaternion as Hd, setWorldQuaternionXYZW as Xd, setWorldRotation as zd, setWorldRotationXYZ as Vd, setWorldScale as _d, showBalloonError as jd, showBalloonMessage as Zd, showBalloonWarning as Kd, showDebugConsole as Qd, slerp as $d, syncDestroy as Yd, syncField as Jd, syncInstantiate as qd, textureToCanvas as ec, toSourceId as tc, tryCastBinary as oc, tryDetermineMimetypeFromBinary as rc, tryDetermineMimetypeFromURL as nc, tryFindObject as ic, tryGetGuid as ac, unregisterHotReloadType as sc, unwatchWrite as lc, useForAutoFit as dc, validate as cc, watchWrite as mc } from "./needle-engine.bundle-BCA42ir1.js";
|
|
3
3
|
import { THREE as h } from "./three.js";
|
|
4
4
|
import { NEEDLE_progressive as gc } from "./gltf-progressive-Cl167Vjx.js";
|
|
5
5
|
i();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{initEngine as y,GameObject as s,onClear as o,onDestroy as r,onInitialized as n,onAfterRender as i,onBeforeRender as l,onUpdate as d,onStart as c,TypeStore as m,loadAsset as p,NeedleXRSession as g,Context as u,VERSION as S,Component as E,Components as R}from"./needle-engine.bundle-Brrb7t-Z.min.js";import{$componentName as h,$physicsKey as v,ActionBuilder as f,ActionCollection as P,ActionModel as A,Addressables as T,AlignmentConstraint as b,AmbientMode as M,Animation as I,AnimationCurve as D,AnimationExtension as O,AnimationTrackHandler as x,AnimationUtils as k,Animator as L,AnimatorConditionMode as B,AnimatorController as F,AnimatorControllerParameterType as N,AnimatorStateInfo as w,Antialiasing as W,Application as G,AssetDatabase as U,AssetReference as H,Attractor as X,AudioClip as z,AudioExtension as V,AudioListener as _,AudioSource as j,AudioTrackHandler as K,Avatar as Q,AvatarBlink_Simple as Z,AvatarEyeLook_Rotation as Y,AvatarLoader as J,AvatarMarker as $,AvatarModel as q,Avatar_Brain_LookAt as ee,Avatar_MouthShapes as ae,Avatar_MustacheShake as se,Avatar_POI as te,Axes as oe,AxesHelper as re,BUILD_TIME as ne,BaseUIComponent as ie,BasicIKConstraint as le,BehaviorExtension as de,BehaviorModel as ce,Component$1 as me,BlobStorage as pe,BloomEffect as ge,BoxCollider as ue,BoxGizmo as Se,BoxHelperComponent as Ce,Button as ye,ButtonsFactory as Ee,CallDirection as Re,CallInfo as he,Camera as ve,CameraTargetReachedEvent as fe,Canvas as Pe,CanvasGroup as Ae,CapsuleCollider as Te,ChangeMaterialOnClick as be,ChangeTransformOnClick as Me,CharacterController as Ie,CharacterControllerInput as De,ChromaticAberration as Oe,CircularBuffer as xe,ClearFlags as ke,ClickThrough as Le,ClipExtrapolation as Be,Collider as Fe,Collision as Ne,CollisionDetectionMode as we,ColorAdjustments as We,ColorBySpeedModule as Ge,ColorOverLifetimeModule as Ue,Component$1 as He,ComponentLifecycleEvents as Xe,ConnectionEvents as ze,ContactPoint as Ve,ContactShadows as _e,ContextArgs as je,ContextEvent as Ke,ContextRegistry as Qe,ControlTrackHandler as Ze,CursorFollow as Ye,CustomBranding as Je,CustomShader as $e,DefaultReflectionMode as qe,Deletable as ea,DeleteBox as aa,DepthOfField as sa,DeviceFlag as ta,DeviceUtilities as oa,DocumentExtension as ra,DragControls as na,DragMode as ia,DropListener as la,Duplicatable as da,EffectWrapper as ca,EmissionModule as ma,EmphasizeOnClick as pa,EngineLoadingView as ga,EnvironmentScene as ua,EventList as Sa,EventListEvent as Ca,EventSystem as ya,EventTrigger as Ea,FieldWithDefault as Ra,FileReference as ha,FileReferenceSerializer as va,FileSpawnModel as fa,File_Event as Pa,FixedJoint as Aa,Fog as Ta,FrameEvent as ba,GENERATOR as Ma,Gizmos as Ia,GltfExport as Da,GltfExportBox as Oa,Gradient as xa,Graphic as ka,GraphicRaycaster as La,Graphics as Ba,GridHelper as Fa,GridLayoutGroup as Na,GroundProjectedEnv as wa,GroupActionModel as Wa,HideFlags as Ga,HideOnStart as Ua,HingeJoint as Ha,HorizontalLayoutGroup as Xa,HostData as za,HoverAnimation as Va,Image as _a,ImageReference as ja,ImageReferenceSerializer as Ka,InheritVelocityModule as Qa,Input as Za,InputEventQueue as Ya,InputEvents as Ja,InputField as $a,InstanceHandle as qa,InstancingHandler as es,InstancingUtil as as,InstantiateEvent as ss,InstantiateIdProvider as ts,InstantiateOptions as os,Interactable as rs,InternalScreenshotUtils as ns,JoinedRoomResponse as is,KeyEventArgs as ls,Keyframe as ds,LODGroup as cs,LODModel as ms,LeftRoomResponse as ps,Light as gs,LightData as us,LimitVelocityOverLifetimeModule as Ss,LoadingElementOptions as Cs,LogStats as ys,LogType as Es,LookAt as Rs,LookAtConstraint as hs,MainModule as vs,MarkerTrackHandler as fs,MarkerType as Ps,MaskableGraphic as As,MaterialPropertyBlock as Ts,MaterialX as bs,Mathf as Ms,MeshCollider as Is,MeshRenderer as Ds,MinMaxCurve as Os,MinMaxGradient as xs,NEEDLE_ENGINE_FEATURE_FLAGS as ks,MODULES as Ls,NEKeyboardEvent as Bs,NEPointerEvent as Fs,NeedleButtonElement as Ns,ContextRegistry as ws,NeedleEngineModelLoader as Ws,NeedleEngineWebComponent as Gs,NeedleMenu as Us,NeedlePatchesKey as Hs,USDZExporter as Xs,NeedleXRController as zs,NeedleXRSync as Vs,NeedleXRUtils as _s,NestedGltf as js,NetworkConnection as Ks,NetworkedStreamEvents as Qs,NetworkedStreams as Zs,Networking as Ys,NewInstanceModel as Js,NoiseModule as $s,ObjectRaycaster as qs,ObjectUtils as et,OffsetConstraint as at,OneEuroFilter as st,OneEuroFilterXYZ as tt,OpenURL as ot,OrbitControls as rt,Outline as nt,OwnershipEvent as it,OwnershipModel as lt,PUBLIC_KEY as dt,Padding as ct,ParticleBurst as mt,ParticleSubEmitter as pt,ParticleSystem as gt,ParticleSystemBaseBehaviour as ut,ParticleSystemRenderer as St,ParticleSystemShapeType as Ct,PeerHandle as yt,PeerNetworking as Et,Physics as Rt,PhysicsExtension as ht,PhysicsMaterialCombine as vt,PixelationEffect as ft,PlayAnimationOnClick as Pt,PlayAudioOnClick as At,PlayableDirector as Tt,PlayerColor as bt,PlayerState as Mt,PlayerStateEvent as It,PlayerSync as Dt,PlayerView as Ot,PlayerViewManager as xt,PointerEventData as kt,PointerType as Lt,PostProcessingEffect as Bt,PostProcessingEffectOrder as Ft,PostProcessingHandler as Nt,Volume as wt,PreliminaryAction as Wt,PreliminaryTrigger as Gt,PreviewHelper as Ut,PrimitiveType as Ht,Progress as Xt,PromiseAllWithErrors as zt,PromiseErrorResult as Vt,RGBAColor as _t,RapierPhysics as jt,RawImage as Kt,RaycastOptions as Qt,Rect as Zt,RectTransform as Yt,ReflectionProbe as Jt,RegisteredAnimationInfo as $t,RemoteSkybox as qt,RenderTexture as eo,RenderTextureSerializer as ao,Renderer as so,RendererData as to,RendererLightmap as oo,Rigidbody as ro,RigidbodyConstraints as no,RoomEvents as io,RotationBySpeedModule as lo,RotationOverLifetimeModule as co,SceneLightSettings as mo,SceneSwitcher as po,ScreenCapture as go,ScreenSpaceAmbientOcclusion as uo,ScreenSpaceAmbientOcclusionN8 as So,ScrollFollow as Co,SeeThrough as yo,SendQueue as Eo,SerializationContext as Ro,SetActiveOnClick as ho,ShadowCatcher as vo,ShapeModule as fo,ShapeOverlapResult as Po,SharpeningEffect as Ao,SignalAsset as To,SignalReceiver as bo,SignalReceiverEvent as Mo,SignalTrackHandler as Io,Size as Do,SizeBySpeedModule as Oo,SizeOverLifetimeModule as xo,SkinnedMeshRenderer as ko,SmoothFollow as Lo,SpatialGrabRaycaster as Bo,SpatialHtml as Fo,SpatialTrigger as No,SpatialTriggerReceiver as wo,SpectatorCamera as Wo,SphereCollider as Go,SphereIntersection as Uo,SplineContainer as Ho,SplineData as Xo,SplineUtils as zo,SplineWalker as Vo,Sprite as _o,SpriteData as jo,SpriteRenderer as Ko,SpriteSheet as Qo,StateMachineBehaviour as Zo,StreamEndedEvent as Yo,StreamReceivedEvent as Jo,SubEmitterSystem as $o,SyncedCamera as qo,SyncedRoom as er,SyncedTransform as ar,TapGestureTrigger as sr,TeleportTarget as tr,TestRunner as or,TestSimulateUserData as rr,Text as nr,TextBuilder as ir,TextExtension as lr,TextureSheetAnimationModule as dr,TiltShiftEffect as cr,Time as mr,ToneMappingEffect as pr,TrackHandler as gr,TrackType as ur,TrailModule as Sr,TransformData as Cr,TransformGizmo as yr,TriggerBuilder as Er,TriggerModel as Rr,UIRaycastUtils as hr,UIRootComponent as vr,USDDocument as fr,USDObject as Pr,USDWriter as Ar,USDZExporter$1 as Tr,USDZText as br,USDZUIExtension as Mr,UriSerializer as Ir,UsageMarker as Dr,UserJoinedOrLeftRoomModel as Or,VariantAction as xr,VelocityOverLifetimeModule as kr,VerticalLayoutGroup as Lr,VideoPlayer as Br,ViewBox as Fr,ViewDevice as Nr,Vignette as wr,VisibilityAction as Wr,Voip as Gr,Volume as Ur,VolumeParameter as Hr,VolumeProfile as Xr,WaitForFrames as zr,WaitForPromise as Vr,WaitForSeconds as _r,Watch as jr,WebARCameraBackground as Kr,WebARSessionRoot as Qr,WebXR as Zr,WebXRButtonFactory as Yr,WebXRImageTracking as Jr,WebXRImageTrackingModel as $r,WebXRPlaneTracking as qr,WebXRTrackedImage as en,XRControllerFollow as an,XRControllerModel as sn,XRControllerMovement as tn,XRFlag as on,XRRig as rn,XRState as nn,XRStateFlag as ln,__Ignore as dn,__internalNotifyObjectDestroyed as cn,activeInHierarchyFieldName as mn,addAttributeChangeCallback as pn,addComponent as gn,addCustomExtensionPlugin as un,addNewComponent as Sn,addPatch as Cn,apply as yn,applyHMRChanges as En,applyPrototypeExtensions as Rn,beginListenDestroy as hn,beginListenInstantiate as vn,binaryIdentifierCasts as fn,build_scene_functions as Pn,builtinComponentKeyName as An,calculateProgress01 as Tn,clearMessages as bn,clearMessages as Mn,colorSerializer as In,compareAssociation as Dn,componentSerializer as On,copyTexture as xn,createMotion as kn,debugNet as Ln,debugOwner as Bn,decompressGpuTexture as Fn,deepClone as Nn,delay as wn,delayForFrames as Wn,deserializeObject as Gn,destroy as Un,destroyComponentInstance as Hn,determineMimeTypeFromExtension as Xn,disposeObjectResources as zn,disposeStream as Vn,editorGuidKeyName as _n,enableSpatialConsole as jn,eventListSerializer as Kn,exportAsGLTF as Qn,findByGuid as Zn,findObjectOfType as Yn,findObjectsOfType as Jn,findResourceUsers as $n,fitCamera as qn,fitObjectIntoVolume as ei,foreachComponent as ai,foreachComponentEnumerator as si,forward as ti,generateQRCode as oi,generateSeed as ri,getBoundingBox as ni,getCameraController as ii,getComponent as li,getComponentInChildren as di,getComponentInParent as ci,getComponents as mi,getComponentsInChildren as pi,getComponentsInParent as gi,getFormattedDate as ui,getIconElement as Si,getIconTexture as Ci,getLoader as yi,getOrAddComponent as Ei,getParam as Ri,getParentHierarchyPath as hi,getPath as vi,getPeerOptions as fi,getPeerjsInstance as Pi,getResourceUserCount as Ai,getTempColor as Ti,getTempQuaternion as bi,getTempVector as Mi,getUrlParams as Ii,getVisibleInCustomShadowRendering as Di,getWorldDirection as Oi,getWorldEuler as xi,getWorldPosition as ki,getWorldQuaternion as Li,getWorldRotation as Bi,getWorldScale as Fi,hasCommercialLicense as Ni,hasIndieLicense as wi,hasPointerEventComponent as Wi,hasProLicense as Gi,hideDebugConsole as Ui,imageToCanvas as Hi,initAddressableSerializers as Xi,initBuiltinSerializers as zi,initVolumeParameterSerializer as Vi,instantiate as _i,invokeLoadedImportPluginHooks as ji,invokeXRSessionEnd as Ki,invokeXRSessionStart as Qi,isActiveInHierarchy as Zi,isActiveSelf as Yi,isAndroidDevice as Ji,isAnimationAction as $i,isComponent as qi,isDebugMode as el,isDesktop as al,isDestroyed as sl,isDevEnvironment as tl,isDisposed as ol,isExporting as rl,isGLTFModel as nl,isHostedOnGlitch as il,isHotReloadEnabled as ll,isHotReloading as dl,isIPad as cl,isIconElement as ml,isLocalNetwork as pl,isMacOS as gl,isMobileDevice as ul,isMozillaXR as Sl,isQuest as Cl,isResourceTrackingEnabled as yl,isSafari as El,isUsingInstancing as Rl,isiOS as hl,isiPad as vl,loadPMREM as fl,loadSync as Pl,logHierarchy as Al,lookAtInverse as Tl,lookAtObject as bl,lookAtScreenPoint as Ml,makeId as Il,makeIdFromRandomWords as Dl,makeNameSafe as Ol,markAsInstancedRendered as xl,microphonePermissionsGranted as kl,nameof as Ll,nameofFactory as Bl,objectSerializer as Fl,offXRSessionEnd as Nl,offXRSessionStart as wl,onXRSessionEnd as Wl,onXRSessionStart as Gl,parseSync as Ul,placeOnSurface as Hl,postprocessFBXMaterials as Xl,prefix as zl,pushState as Vl,randomNumber as _l,registerBinaryType as jl,registerComponent as Kl,registerComponentExtension as Ql,registerCustomEffectType as Zl,registerExportExtensions as Yl,registerExtensions as Jl,registerHotReloadType as $l,registerLoader as ql,registerPrefabProvider as ed,registerPrototypeExtensions as ad,registerType as sd,relativePathPrefix as td,removeAttributeChangeCallback as od,removeComponent as rd,removeCustomImportExtensionType as nd,removePatch as id,resolveUrl as ld,sanitizeString as dd,saveImage as cd,screenshot as md,screenshot2 as pd,sendDestroyed as gd,serializable as ud,serializeObject as Sd,serializeable as Cd,setActive as yd,setAllowBalloonMessages as Ed,setAllowOverlayMessages as Rd,setAutoFitEnabled as hd,setCameraController as vd,setDestroyed as fd,setDevEnvironment as Pd,setDisposable as Ad,setDontDestroy as Td,setOrAddParamsToUrl as bd,setParam as Md,setParamWithoutReload as Id,setPeerOptions as Dd,setResourceTrackingEnabled as Od,setState as xd,setVisibleInCustomShadowRendering as kd,setWorldEuler as Ld,setWorldPosition as Bd,setWorldPositionXYZ as Fd,setWorldQuaternion as Nd,setWorldQuaternionXYZW as wd,setWorldRotation as Wd,setWorldRotationXYZ as Gd,setWorldScale as Ud,showBalloonError as Hd,showBalloonMessage as Xd,showBalloonWarning as zd,showDebugConsole as Vd,slerp as _d,syncDestroy as jd,syncField as Kd,syncInstantiate as Qd,textureToCanvas as Zd,toSourceId as Yd,tryCastBinary as Jd,tryDetermineMimetypeFromBinary as $d,tryDetermineMimetypeFromURL as qd,tryFindObject as ec,tryGetGuid as ac,unregisterHotReloadType as sc,unwatchWrite as tc,useForAutoFit as oc,validate as rc,watchWrite as nc}from"./needle-engine.bundle-Brrb7t-Z.min.js";import{THREE as ic}from"./three.min.js";import{NEEDLE_progressive as lc}from"./gltf-progressive-BryRjllq.min.js";y();const a={VERSION:S,Context:u,NeedleXRSession:g,assets:{loadFromURL:p},types:m,onStart:c,onUpdate:d,onBeforeRender:l,onAfterRender:i,onInitializedContext:n,onDestroyContext:r,onClearContext:o};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function C(e){for(const t in e)a[t]=e[t]}C(E),C(R);for(const e of Object.getOwnPropertyNames(s))switch(e){case"prototype":case"constructor":case"length":case"name":continue;default:a[e]=s[e];break}if(!globalThis.Needle)globalThis.Needle=a;else for(const e in a)globalThis.Needle[e]=a[e];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=ic;export{h as $componentName,v as $physicsKey,f as ActionBuilder,P as ActionCollection,A as ActionModel,T as Addressables,b as AlignmentConstraint,M as AmbientMode,I as Animation,D as AnimationCurve,O as AnimationExtension,x as AnimationTrackHandler,k as AnimationUtils,L as Animator,B as AnimatorConditionMode,F as AnimatorController,N as AnimatorControllerParameterType,w as AnimatorStateInfo,W as Antialiasing,G as Application,U as AssetDatabase,H as AssetReference,X as Attractor,z as AudioClip,V as AudioExtension,_ as AudioListener,j as AudioSource,K as AudioTrackHandler,Q as Avatar,Z as AvatarBlink_Simple,Y as AvatarEyeLook_Rotation,J as AvatarLoader,$ as AvatarMarker,q as AvatarModel,ee as Avatar_Brain_LookAt,ae as Avatar_MouthShapes,se as Avatar_MustacheShake,te as Avatar_POI,oe as Axes,re as AxesHelper,ne as BUILD_TIME,ie as BaseUIComponent,le as BasicIKConstraint,de as BehaviorExtension,ce as BehaviorModel,me as Behaviour,pe as BlobStorage,ge as BloomEffect,ue as BoxCollider,Se as BoxGizmo,Ce as BoxHelperComponent,ye as Button,Ee as ButtonsFactory,Re as CallDirection,he as CallInfo,ve as Camera,fe as CameraTargetReachedEvent,Pe as Canvas,Ae as CanvasGroup,Te as CapsuleCollider,be as ChangeMaterialOnClick,Me as ChangeTransformOnClick,Ie as CharacterController,De as CharacterControllerInput,Oe as ChromaticAberration,xe as CircularBuffer,ke as ClearFlags,Le as ClickThrough,Be as ClipExtrapolation,Fe as Collider,Ne as Collision,we as CollisionDetectionMode,We as ColorAdjustments,Ge as ColorBySpeedModule,Ue as ColorOverLifetimeModule,He as Component,Xe as ComponentLifecycleEvents,ze as ConnectionEvents,Ve as ContactPoint,_e as ContactShadows,u as Context,je as ContextArgs,Ke as ContextEvent,Qe as ContextRegistry,Ze as ControlTrackHandler,Ye as CursorFollow,Je as CustomBranding,$e as CustomShader,qe as DefaultReflectionMode,ea as Deletable,aa as DeleteBox,sa as DepthOfField,ta as DeviceFlag,oa as DeviceUtilities,ra as DocumentExtension,na as DragControls,ia as DragMode,la as DropListener,da as Duplicatable,ca as EffectWrapper,ma as EmissionModule,pa as EmphasizeOnClick,ga as EngineLoadingView,ua as EnvironmentScene,Sa as EventList,Ca as EventListEvent,ya as EventSystem,Ea as EventTrigger,Ra as FieldWithDefault,ha as FileReference,va as FileReferenceSerializer,fa as FileSpawnModel,Pa as File_Event,Aa as FixedJoint,Ta as Fog,ba as FrameEvent,Ma as GENERATOR,s as GameObject,Ia as Gizmos,Da as GltfExport,Oa as GltfExportBox,xa as Gradient,ka as Graphic,La as GraphicRaycaster,Ba as Graphics,Fa as GridHelper,Na as GridLayoutGroup,wa as GroundProjectedEnv,Wa as GroupActionModel,Ga as HideFlags,Ua as HideOnStart,Ha as HingeJoint,Xa as HorizontalLayoutGroup,za as HostData,Va as HoverAnimation,_a as Image,ja as ImageReference,Ka as ImageReferenceSerializer,Qa as InheritVelocityModule,Za as Input,Ya as InputEventQueue,Ja as InputEvents,$a as InputField,qa as InstanceHandle,es as InstancingHandler,as as InstancingUtil,ss as InstantiateEvent,ts as InstantiateIdProvider,os as InstantiateOptions,rs as Interactable,ns as InternalScreenshotUtils,is as JoinedRoomResponse,ls as KeyEventArgs,ds as Keyframe,cs as LODGroup,ms as LODModel,ps as LeftRoomResponse,gs as Light,us as LightData,Ss as LimitVelocityOverLifetimeModule,Cs as LoadingElementOptions,ys as LogStats,Es as LogType,Rs as LookAt,hs as LookAtConstraint,vs as MainModule,fs as MarkerTrackHandler,Ps as MarkerType,As as MaskableGraphic,Ts as MaterialPropertyBlock,bs as MaterialX,Ms as Mathf,Is as MeshCollider,Ds as MeshRenderer,Os as MinMaxCurve,xs as MinMaxGradient,ks as NEEDLE_ENGINE_FEATURE_FLAGS,Ls as NEEDLE_ENGINE_MODULES,lc as NEEDLE_progressive,Bs as NEKeyboardEvent,Fs as NEPointerEvent,Ns as NeedleButtonElement,ws as NeedleEngine,Ws as NeedleEngineModelLoader,Gs as NeedleEngineWebComponent,Us as NeedleMenu,Hs as NeedlePatchesKey,Xs as NeedleUSDZExporter,zs as NeedleXRController,g as NeedleXRSession,Vs as NeedleXRSync,_s as NeedleXRUtils,js as NestedGltf,Ks as NetworkConnection,Qs as NetworkedStreamEvents,Zs as NetworkedStreams,Ys as Networking,Js as NewInstanceModel,$s as NoiseModule,qs as ObjectRaycaster,et as ObjectUtils,at as OffsetConstraint,st as OneEuroFilter,tt as OneEuroFilterXYZ,ot as OpenURL,rt as OrbitControls,nt as Outline,it as OwnershipEvent,lt as OwnershipModel,dt as PUBLIC_KEY,ct as Padding,mt as ParticleBurst,pt as ParticleSubEmitter,gt as ParticleSystem,ut as ParticleSystemBaseBehaviour,St as ParticleSystemRenderer,Ct as ParticleSystemShapeType,yt as PeerHandle,Et as PeerNetworking,Rt as Physics,ht as PhysicsExtension,vt as PhysicsMaterialCombine,ft as PixelationEffect,Pt as PlayAnimationOnClick,At as PlayAudioOnClick,Tt as PlayableDirector,bt as PlayerColor,Mt as PlayerState,It as PlayerStateEvent,Dt as PlayerSync,Ot as PlayerView,xt as PlayerViewManager,kt as PointerEventData,Lt as PointerType,Bt as PostProcessingEffect,Ft as PostProcessingEffectOrder,Nt as PostProcessingHandler,wt as PostProcessingManager,Wt as PreliminaryAction,Gt as PreliminaryTrigger,Ut as PreviewHelper,Ht as PrimitiveType,Xt as Progress,zt as PromiseAllWithErrors,Vt as PromiseErrorResult,_t as RGBAColor,jt as RapierPhysics,Kt as RawImage,Qt as RaycastOptions,Zt as Rect,Yt as RectTransform,Jt as ReflectionProbe,$t as RegisteredAnimationInfo,qt as RemoteSkybox,eo as RenderTexture,ao as RenderTextureSerializer,so as Renderer,to as RendererData,oo as RendererLightmap,ro as Rigidbody,no as RigidbodyConstraints,io as RoomEvents,lo as RotationBySpeedModule,co as RotationOverLifetimeModule,mo as SceneLightSettings,po as SceneSwitcher,go as ScreenCapture,uo as ScreenSpaceAmbientOcclusion,So as ScreenSpaceAmbientOcclusionN8,Co as ScrollFollow,yo as SeeThrough,Eo as SendQueue,Ro as SerializationContext,ho as SetActiveOnClick,vo as ShadowCatcher,fo as ShapeModule,Po as ShapeOverlapResult,Ao as SharpeningEffect,To as SignalAsset,bo as SignalReceiver,Mo as SignalReceiverEvent,Io as SignalTrackHandler,Do as Size,Oo as SizeBySpeedModule,xo as SizeOverLifetimeModule,ko as SkinnedMeshRenderer,Lo as SmoothFollow,Bo as SpatialGrabRaycaster,Fo as SpatialHtml,No as SpatialTrigger,wo as SpatialTriggerReceiver,Wo as SpectatorCamera,Go as SphereCollider,Uo as SphereIntersection,Ho as SplineContainer,Xo as SplineData,zo as SplineUtils,Vo as SplineWalker,_o as Sprite,jo as SpriteData,Ko as SpriteRenderer,Qo as SpriteSheet,Zo as StateMachineBehaviour,Yo as StreamEndedEvent,Jo as StreamReceivedEvent,$o as SubEmitterSystem,qo as SyncedCamera,er as SyncedRoom,ar as SyncedTransform,sr as TapGestureTrigger,tr as TeleportTarget,or as TestRunner,rr as TestSimulateUserData,nr as Text,ir as TextBuilder,lr as TextExtension,dr as TextureSheetAnimationModule,cr as TiltShiftEffect,mr as Time,pr as ToneMappingEffect,gr as TrackHandler,ur as TrackType,Sr as TrailModule,Cr as TransformData,yr as TransformGizmo,Er as TriggerBuilder,Rr as TriggerModel,m as TypeStore,hr as UIRaycastUtils,vr as UIRootComponent,fr as USDDocument,Pr as USDObject,Ar as USDWriter,Tr as USDZExporter,br as USDZText,Mr as USDZUIExtension,Ir as UriSerializer,Dr as UsageMarker,Or as UserJoinedOrLeftRoomModel,S as VERSION,xr as VariantAction,kr as VelocityOverLifetimeModule,Lr as VerticalLayoutGroup,Br as VideoPlayer,Fr as ViewBox,Nr as ViewDevice,wr as Vignette,Wr as VisibilityAction,Gr as Voip,Ur as Volume,Hr as VolumeParameter,Xr as VolumeProfile,zr as WaitForFrames,Vr as WaitForPromise,_r as WaitForSeconds,jr as Watch,Kr as WebARCameraBackground,Qr as WebARSessionRoot,Zr as WebXR,Yr as WebXRButtonFactory,Jr as WebXRImageTracking,$r as WebXRImageTrackingModel,qr as WebXRPlaneTracking,en as WebXRTrackedImage,an as XRControllerFollow,sn as XRControllerModel,tn as XRControllerMovement,on as XRFlag,rn as XRRig,nn as XRState,ln as XRStateFlag,dn as __Ignore,cn as __internalNotifyObjectDestroyed,mn as activeInHierarchyFieldName,pn as addAttributeChangeCallback,gn as addComponent,un as addCustomExtensionPlugin,Sn as addNewComponent,Cn as addPatch,yn as apply,En as applyHMRChanges,Rn as applyPrototypeExtensions,hn as beginListenDestroy,vn as beginListenInstantiate,fn as binaryIdentifierCasts,Pn as build_scene_functions,An as builtinComponentKeyName,Tn as calculateProgress01,bn as clearBalloonMessages,Mn as clearOverlayMessages,In as colorSerializer,Dn as compareAssociation,On as componentSerializer,xn as copyTexture,kn as createMotion,Ln as debugNet,Bn as debugOwner,Fn as decompressGpuTexture,Nn as deepClone,wn as delay,Wn as delayForFrames,Gn as deserializeObject,Un as destroy,Hn as destroyComponentInstance,Xn as determineMimeTypeFromExtension,zn as disposeObjectResources,Vn as disposeStream,_n as editorGuidKeyName,jn as enableSpatialConsole,Kn as eventListSerializer,Qn as exportAsGLTF,Zn as findByGuid,Yn as findObjectOfType,Jn as findObjectsOfType,$n as findResourceUsers,qn as fitCamera,ei as fitObjectIntoVolume,ai as foreachComponent,si as foreachComponentEnumerator,ti as forward,oi as generateQRCode,ri as generateSeed,ni as getBoundingBox,ii as getCameraController,li as getComponent,di as getComponentInChildren,ci as getComponentInParent,mi as getComponents,pi as getComponentsInChildren,gi as getComponentsInParent,ui as getFormattedDate,Si as getIconElement,Ci as getIconTexture,yi as getLoader,Ei as getOrAddComponent,Ri as getParam,hi as getParentHierarchyPath,vi as getPath,fi as getPeerOptions,Pi as getPeerjsInstance,Ai as getResourceUserCount,Ti as getTempColor,bi as getTempQuaternion,Mi as getTempVector,Ii as getUrlParams,Di as getVisibleInCustomShadowRendering,Oi as getWorldDirection,xi as getWorldEuler,ki as getWorldPosition,Li as getWorldQuaternion,Bi as getWorldRotation,Fi as getWorldScale,Ni as hasCommercialLicense,wi as hasIndieLicense,Wi as hasPointerEventComponent,Gi as hasProLicense,Ui as hideDebugConsole,Hi as imageToCanvas,Xi as initAddressableSerializers,zi as initBuiltinSerializers,Vi as initVolumeParameterSerializer,_i as instantiate,ji as invokeLoadedImportPluginHooks,Ki as invokeXRSessionEnd,Qi as invokeXRSessionStart,Zi as isActiveInHierarchy,Yi as isActiveSelf,Ji as isAndroidDevice,$i as isAnimationAction,qi as isComponent,el as isDebugMode,al as isDesktop,sl as isDestroyed,tl as isDevEnvironment,ol as isDisposed,rl as isExporting,nl as isGLTFModel,il as isHostedOnGlitch,ll as isHotReloadEnabled,dl as isHotReloading,cl as isIPad,ml as isIconElement,pl as isLocalNetwork,gl as isMacOS,ul as isMobileDevice,Sl as isMozillaXR,Cl as isQuest,yl as isResourceTrackingEnabled,El as isSafari,Rl as isUsingInstancing,hl as isiOS,vl as isiPad,p as loadAsset,fl as loadPMREM,Pl as loadSync,Al as logHierarchy,Tl as lookAtInverse,bl as lookAtObject,Ml as lookAtScreenPoint,Il as makeId,Dl as makeIdFromRandomWords,Ol as makeNameSafeForUSD,xl as markAsInstancedRendered,kl as microphonePermissionsGranted,Ll as nameof,Bl as nameofFactory,Fl as objectSerializer,Nl as offXRSessionEnd,wl as offXRSessionStart,i as onAfterRender,l as onBeforeRender,o as onClear,r as onDestroy,n as onInitialized,c as onStart,d as onUpdate,Wl as onXRSessionEnd,Gl as onXRSessionStart,Ul as parseSync,Hl as placeOnSurface,Xl as postprocessFBXMaterials,zl as prefix,Vl as pushState,_l as randomNumber,jl as registerBinaryType,Kl as registerComponent,Ql as registerComponentExtension,Zl as registerCustomEffectType,Yl as registerExportExtensions,Jl as registerExtensions,$l as registerHotReloadType,ql as registerLoader,ed as registerPrefabProvider,ad as registerPrototypeExtensions,sd as registerType,td as relativePathPrefix,od as removeAttributeChangeCallback,rd as removeComponent,nd as removeCustomImportExtensionType,id as removePatch,ld as resolveUrl,dd as sanitizeString,cd as saveImage,md as screenshot,pd as screenshot2,gd as sendDestroyed,ud as serializable,Sd as serializeObject,Cd as serializeable,yd as setActive,Ed as setAllowBalloonMessages,Rd as setAllowOverlayMessages,hd as setAutoFitEnabled,vd as setCameraController,fd as setDestroyed,Pd as setDevEnvironment,Ad as setDisposable,Td as setDontDestroy,bd as setOrAddParamsToUrl,Md as setParam,Id as setParamWithoutReload,Dd as setPeerOptions,Od as setResourceTrackingEnabled,xd as setState,kd as setVisibleInCustomShadowRendering,Ld as setWorldEuler,Bd as setWorldPosition,Fd as setWorldPositionXYZ,Nd as setWorldQuaternion,wd as setWorldQuaternionXYZW,Wd as setWorldRotation,Gd as setWorldRotationXYZ,Ud as setWorldScale,Hd as showBalloonError,Xd as showBalloonMessage,zd as showBalloonWarning,Vd as showDebugConsole,_d as slerp,jd as syncDestroy,Kd as syncField,Qd as syncInstantiate,Zd as textureToCanvas,Yd as toSourceId,Jd as tryCastBinary,$d as tryDetermineMimetypeFromBinary,qd as tryDetermineMimetypeFromURL,ec as tryFindObject,ac as tryGetGuid,sc as unregisterHotReloadType,tc as unwatchWrite,oc as useForAutoFit,rc as validate,nc as watchWrite};
|
|
1
|
+
import{initEngine as y,GameObject as s,onClear as o,onDestroy as r,onInitialized as n,onAfterRender as i,onBeforeRender as l,onUpdate as d,onStart as c,TypeStore as m,loadAsset as p,NeedleXRSession as g,Context as u,VERSION as S,Component as E,Components as R}from"./needle-engine.bundle-CddS2Pmc.min.js";import{$componentName as h,$physicsKey as v,ActionBuilder as f,ActionCollection as P,ActionModel as A,Addressables as T,AlignmentConstraint as b,AmbientMode as M,Animation as I,AnimationCurve as D,AnimationExtension as O,AnimationTrackHandler as x,AnimationUtils as k,Animator as L,AnimatorConditionMode as B,AnimatorController as F,AnimatorControllerParameterType as N,AnimatorStateInfo as w,Antialiasing as W,Application as G,AssetDatabase as U,AssetReference as H,Attractor as X,AudioClip as z,AudioExtension as V,AudioListener as _,AudioSource as j,AudioTrackHandler as K,Avatar as Q,AvatarBlink_Simple as Z,AvatarEyeLook_Rotation as Y,AvatarLoader as J,AvatarMarker as $,AvatarModel as q,Avatar_Brain_LookAt as ee,Avatar_MouthShapes as ae,Avatar_MustacheShake as se,Avatar_POI as te,Axes as oe,AxesHelper as re,BUILD_TIME as ne,BaseUIComponent as ie,BasicIKConstraint as le,BehaviorExtension as de,BehaviorModel as ce,Component$1 as me,BlobStorage as pe,BloomEffect as ge,BoxCollider as ue,BoxGizmo as Se,BoxHelperComponent as Ce,Button as ye,ButtonsFactory as Ee,CallDirection as Re,CallInfo as he,Camera as ve,CameraTargetReachedEvent as fe,Canvas as Pe,CanvasGroup as Ae,CapsuleCollider as Te,ChangeMaterialOnClick as be,ChangeTransformOnClick as Me,CharacterController as Ie,CharacterControllerInput as De,ChromaticAberration as Oe,CircularBuffer as xe,ClearFlags as ke,ClickThrough as Le,ClipExtrapolation as Be,Collider as Fe,Collision as Ne,CollisionDetectionMode as we,ColorAdjustments as We,ColorBySpeedModule as Ge,ColorOverLifetimeModule as Ue,Component$1 as He,ComponentLifecycleEvents as Xe,ConnectionEvents as ze,ContactPoint as Ve,ContactShadows as _e,ContextArgs as je,ContextEvent as Ke,ContextRegistry as Qe,ControlTrackHandler as Ze,CursorFollow as Ye,CustomBranding as Je,CustomShader as $e,DefaultReflectionMode as qe,Deletable as ea,DeleteBox as aa,DepthOfField as sa,DeviceFlag as ta,DeviceUtilities as oa,DocumentExtension as ra,DragControls as na,DragMode as ia,DropListener as la,Duplicatable as da,EffectWrapper as ca,EmissionModule as ma,EmphasizeOnClick as pa,EngineLoadingView as ga,EnvironmentScene as ua,EventList as Sa,EventListEvent as Ca,EventSystem as ya,EventTrigger as Ea,FieldWithDefault as Ra,FileReference as ha,FileReferenceSerializer as va,FileSpawnModel as fa,File_Event as Pa,FixedJoint as Aa,Fog as Ta,FrameEvent as ba,GENERATOR as Ma,Gizmos as Ia,GltfExport as Da,GltfExportBox as Oa,Gradient as xa,Graphic as ka,GraphicRaycaster as La,Graphics as Ba,GridHelper as Fa,GridLayoutGroup as Na,GroundProjectedEnv as wa,GroupActionModel as Wa,HideFlags as Ga,HideOnStart as Ua,HingeJoint as Ha,HorizontalLayoutGroup as Xa,HostData as za,HoverAnimation as Va,Image as _a,ImageReference as ja,ImageReferenceSerializer as Ka,InheritVelocityModule as Qa,Input as Za,InputEventQueue as Ya,InputEvents as Ja,InputField as $a,InstanceHandle as qa,InstancingHandler as es,InstancingUtil as as,InstantiateEvent as ss,InstantiateIdProvider as ts,InstantiateOptions as os,Interactable as rs,InternalScreenshotUtils as ns,JoinedRoomResponse as is,KeyEventArgs as ls,Keyframe as ds,LODGroup as cs,LODModel as ms,LeftRoomResponse as ps,Light as gs,LightData as us,LimitVelocityOverLifetimeModule as Ss,LoadingElementOptions as Cs,LogStats as ys,LogType as Es,LookAt as Rs,LookAtConstraint as hs,MainModule as vs,MarkerTrackHandler as fs,MarkerType as Ps,MaskableGraphic as As,MaterialPropertyBlock as Ts,MaterialX as bs,Mathf as Ms,MeshCollider as Is,MeshRenderer as Ds,MinMaxCurve as Os,MinMaxGradient as xs,NEEDLE_ENGINE_FEATURE_FLAGS as ks,MODULES as Ls,NEKeyboardEvent as Bs,NEPointerEvent as Fs,NeedleButtonElement as Ns,ContextRegistry as ws,NeedleEngineModelLoader as Ws,NeedleEngineWebComponent as Gs,NeedleMenu as Us,NeedlePatchesKey as Hs,USDZExporter as Xs,NeedleXRController as zs,NeedleXRSync as Vs,NeedleXRUtils as _s,NestedGltf as js,NetworkConnection as Ks,NetworkedStreamEvents as Qs,NetworkedStreams as Zs,Networking as Ys,NewInstanceModel as Js,NoiseModule as $s,ObjectRaycaster as qs,ObjectUtils as et,OffsetConstraint as at,OneEuroFilter as st,OneEuroFilterXYZ as tt,OpenURL as ot,OrbitControls as rt,Outline as nt,OwnershipEvent as it,OwnershipModel as lt,PUBLIC_KEY as dt,Padding as ct,ParticleBurst as mt,ParticleSubEmitter as pt,ParticleSystem as gt,ParticleSystemBaseBehaviour as ut,ParticleSystemRenderer as St,ParticleSystemShapeType as Ct,PeerHandle as yt,PeerNetworking as Et,Physics as Rt,PhysicsExtension as ht,PhysicsMaterialCombine as vt,PixelationEffect as ft,PlayAnimationOnClick as Pt,PlayAudioOnClick as At,PlayableDirector as Tt,PlayerColor as bt,PlayerState as Mt,PlayerStateEvent as It,PlayerSync as Dt,PlayerView as Ot,PlayerViewManager as xt,PointerEventData as kt,PointerType as Lt,PostProcessingEffect as Bt,PostProcessingEffectOrder as Ft,PostProcessingHandler as Nt,Volume as wt,PreliminaryAction as Wt,PreliminaryTrigger as Gt,PreviewHelper as Ut,PrimitiveType as Ht,Progress as Xt,PromiseAllWithErrors as zt,PromiseErrorResult as Vt,RGBAColor as _t,RapierPhysics as jt,RawImage as Kt,RaycastOptions as Qt,Rect as Zt,RectTransform as Yt,ReflectionProbe as Jt,RegisteredAnimationInfo as $t,RemoteSkybox as qt,RenderTexture as eo,RenderTextureSerializer as ao,Renderer as so,RendererData as to,RendererLightmap as oo,Rigidbody as ro,RigidbodyConstraints as no,RoomEvents as io,RotationBySpeedModule as lo,RotationOverLifetimeModule as co,SceneLightSettings as mo,SceneSwitcher as po,ScreenCapture as go,ScreenSpaceAmbientOcclusion as uo,ScreenSpaceAmbientOcclusionN8 as So,ScrollFollow as Co,SeeThrough as yo,SendQueue as Eo,SerializationContext as Ro,SetActiveOnClick as ho,ShadowCatcher as vo,ShapeModule as fo,ShapeOverlapResult as Po,SharpeningEffect as Ao,SignalAsset as To,SignalReceiver as bo,SignalReceiverEvent as Mo,SignalTrackHandler as Io,Size as Do,SizeBySpeedModule as Oo,SizeOverLifetimeModule as xo,SkinnedMeshRenderer as ko,SmoothFollow as Lo,SpatialGrabRaycaster as Bo,SpatialHtml as Fo,SpatialTrigger as No,SpatialTriggerReceiver as wo,SpectatorCamera as Wo,SphereCollider as Go,SphereIntersection as Uo,SplineContainer as Ho,SplineData as Xo,SplineUtils as zo,SplineWalker as Vo,Sprite as _o,SpriteData as jo,SpriteRenderer as Ko,SpriteSheet as Qo,StateMachineBehaviour as Zo,StreamEndedEvent as Yo,StreamReceivedEvent as Jo,SubEmitterSystem as $o,SyncedCamera as qo,SyncedRoom as er,SyncedTransform as ar,TapGestureTrigger as sr,TeleportTarget as tr,TestRunner as or,TestSimulateUserData as rr,Text as nr,TextBuilder as ir,TextExtension as lr,TextureSheetAnimationModule as dr,TiltShiftEffect as cr,Time as mr,ToneMappingEffect as pr,TrackHandler as gr,TrackType as ur,TrailModule as Sr,TransformData as Cr,TransformGizmo as yr,TriggerBuilder as Er,TriggerModel as Rr,UIRaycastUtils as hr,UIRootComponent as vr,USDDocument as fr,USDObject as Pr,USDWriter as Ar,USDZExporter$1 as Tr,USDZText as br,USDZUIExtension as Mr,UriSerializer as Ir,UsageMarker as Dr,UserJoinedOrLeftRoomModel as Or,VariantAction as xr,VelocityOverLifetimeModule as kr,VerticalLayoutGroup as Lr,VideoPlayer as Br,ViewBox as Fr,ViewDevice as Nr,Vignette as wr,VisibilityAction as Wr,Voip as Gr,Volume as Ur,VolumeParameter as Hr,VolumeProfile as Xr,WaitForFrames as zr,WaitForPromise as Vr,WaitForSeconds as _r,Watch as jr,WebARCameraBackground as Kr,WebARSessionRoot as Qr,WebXR as Zr,WebXRButtonFactory as Yr,WebXRImageTracking as Jr,WebXRImageTrackingModel as $r,WebXRPlaneTracking as qr,WebXRTrackedImage as en,XRControllerFollow as an,XRControllerModel as sn,XRControllerMovement as tn,XRFlag as on,XRRig as rn,XRState as nn,XRStateFlag as ln,__Ignore as dn,__internalNotifyObjectDestroyed as cn,activeInHierarchyFieldName as mn,addAttributeChangeCallback as pn,addComponent as gn,addCustomExtensionPlugin as un,addNewComponent as Sn,addPatch as Cn,apply as yn,applyHMRChanges as En,applyPrototypeExtensions as Rn,beginListenDestroy as hn,beginListenInstantiate as vn,binaryIdentifierCasts as fn,build_scene_functions as Pn,builtinComponentKeyName as An,calculateProgress01 as Tn,clearMessages as bn,clearMessages as Mn,colorSerializer as In,compareAssociation as Dn,componentSerializer as On,copyTexture as xn,createMotion as kn,debugNet as Ln,debugOwner as Bn,decompressGpuTexture as Fn,deepClone as Nn,delay as wn,delayForFrames as Wn,deserializeObject as Gn,destroy as Un,destroyComponentInstance as Hn,determineMimeTypeFromExtension as Xn,disposeObjectResources as zn,disposeStream as Vn,editorGuidKeyName as _n,enableSpatialConsole as jn,eventListSerializer as Kn,exportAsGLTF as Qn,findByGuid as Zn,findObjectOfType as Yn,findObjectsOfType as Jn,findResourceUsers as $n,fitCamera as qn,fitObjectIntoVolume as ei,foreachComponent as ai,foreachComponentEnumerator as si,forward as ti,generateQRCode as oi,generateSeed as ri,getBoundingBox as ni,getCameraController as ii,getComponent as li,getComponentInChildren as di,getComponentInParent as ci,getComponents as mi,getComponentsInChildren as pi,getComponentsInParent as gi,getFormattedDate as ui,getIconElement as Si,getIconTexture as Ci,getLoader as yi,getOrAddComponent as Ei,getParam as Ri,getParentHierarchyPath as hi,getPath as vi,getPeerOptions as fi,getPeerjsInstance as Pi,getResourceUserCount as Ai,getTempColor as Ti,getTempQuaternion as bi,getTempVector as Mi,getUrlParams as Ii,getVisibleInCustomShadowRendering as Di,getWorldDirection as Oi,getWorldEuler as xi,getWorldPosition as ki,getWorldQuaternion as Li,getWorldRotation as Bi,getWorldScale as Fi,hasCommercialLicense as Ni,hasIndieLicense as wi,hasPointerEventComponent as Wi,hasProLicense as Gi,hideDebugConsole as Ui,imageToCanvas as Hi,initAddressableSerializers as Xi,initBuiltinSerializers as zi,initVolumeParameterSerializer as Vi,instantiate as _i,invokeLoadedImportPluginHooks as ji,invokeXRSessionEnd as Ki,invokeXRSessionStart as Qi,isActiveInHierarchy as Zi,isActiveSelf as Yi,isAndroidDevice as Ji,isAnimationAction as $i,isComponent as qi,isDebugMode as el,isDesktop as al,isDestroyed as sl,isDevEnvironment as tl,isDisposed as ol,isExporting as rl,isGLTFModel as nl,isHostedOnGlitch as il,isHotReloadEnabled as ll,isHotReloading as dl,isIPad as cl,isIconElement as ml,isLocalNetwork as pl,isMacOS as gl,isMobileDevice as ul,isMozillaXR as Sl,isQuest as Cl,isResourceTrackingEnabled as yl,isSafari as El,isUsingInstancing as Rl,isiOS as hl,isiPad as vl,loadPMREM as fl,loadSync as Pl,logHierarchy as Al,lookAtInverse as Tl,lookAtObject as bl,lookAtScreenPoint as Ml,makeId as Il,makeIdFromRandomWords as Dl,makeNameSafe as Ol,markAsInstancedRendered as xl,microphonePermissionsGranted as kl,nameof as Ll,nameofFactory as Bl,objectSerializer as Fl,offXRSessionEnd as Nl,offXRSessionStart as wl,onXRSessionEnd as Wl,onXRSessionStart as Gl,parseSync as Ul,placeOnSurface as Hl,postprocessFBXMaterials as Xl,prefix as zl,pushState as Vl,randomNumber as _l,registerBinaryType as jl,registerComponent as Kl,registerComponentExtension as Ql,registerCustomEffectType as Zl,registerExportExtensions as Yl,registerExtensions as Jl,registerHotReloadType as $l,registerLoader as ql,registerPrefabProvider as ed,registerPrototypeExtensions as ad,registerType as sd,relativePathPrefix as td,removeAttributeChangeCallback as od,removeComponent as rd,removeCustomImportExtensionType as nd,removePatch as id,resolveUrl as ld,sanitizeString as dd,saveImage as cd,screenshot as md,screenshot2 as pd,sendDestroyed as gd,serializable as ud,serializeObject as Sd,serializeable as Cd,setActive as yd,setAllowBalloonMessages as Ed,setAllowOverlayMessages as Rd,setAutoFitEnabled as hd,setCameraController as vd,setDestroyed as fd,setDevEnvironment as Pd,setDisposable as Ad,setDontDestroy as Td,setOrAddParamsToUrl as bd,setParam as Md,setParamWithoutReload as Id,setPeerOptions as Dd,setResourceTrackingEnabled as Od,setState as xd,setVisibleInCustomShadowRendering as kd,setWorldEuler as Ld,setWorldPosition as Bd,setWorldPositionXYZ as Fd,setWorldQuaternion as Nd,setWorldQuaternionXYZW as wd,setWorldRotation as Wd,setWorldRotationXYZ as Gd,setWorldScale as Ud,showBalloonError as Hd,showBalloonMessage as Xd,showBalloonWarning as zd,showDebugConsole as Vd,slerp as _d,syncDestroy as jd,syncField as Kd,syncInstantiate as Qd,textureToCanvas as Zd,toSourceId as Yd,tryCastBinary as Jd,tryDetermineMimetypeFromBinary as $d,tryDetermineMimetypeFromURL as qd,tryFindObject as ec,tryGetGuid as ac,unregisterHotReloadType as sc,unwatchWrite as tc,useForAutoFit as oc,validate as rc,watchWrite as nc}from"./needle-engine.bundle-CddS2Pmc.min.js";import{THREE as ic}from"./three.min.js";import{NEEDLE_progressive as lc}from"./gltf-progressive-BryRjllq.min.js";y();const a={VERSION:S,Context:u,NeedleXRSession:g,assets:{loadFromURL:p},types:m,onStart:c,onUpdate:d,onBeforeRender:l,onAfterRender:i,onInitializedContext:n,onDestroyContext:r,onClearContext:o};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function C(e){for(const t in e)a[t]=e[t]}C(E),C(R);for(const e of Object.getOwnPropertyNames(s))switch(e){case"prototype":case"constructor":case"length":case"name":continue;default:a[e]=s[e];break}if(!globalThis.Needle)globalThis.Needle=a;else for(const e in a)globalThis.Needle[e]=a[e];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=ic;export{h as $componentName,v as $physicsKey,f as ActionBuilder,P as ActionCollection,A as ActionModel,T as Addressables,b as AlignmentConstraint,M as AmbientMode,I as Animation,D as AnimationCurve,O as AnimationExtension,x as AnimationTrackHandler,k as AnimationUtils,L as Animator,B as AnimatorConditionMode,F as AnimatorController,N as AnimatorControllerParameterType,w as AnimatorStateInfo,W as Antialiasing,G as Application,U as AssetDatabase,H as AssetReference,X as Attractor,z as AudioClip,V as AudioExtension,_ as AudioListener,j as AudioSource,K as AudioTrackHandler,Q as Avatar,Z as AvatarBlink_Simple,Y as AvatarEyeLook_Rotation,J as AvatarLoader,$ as AvatarMarker,q as AvatarModel,ee as Avatar_Brain_LookAt,ae as Avatar_MouthShapes,se as Avatar_MustacheShake,te as Avatar_POI,oe as Axes,re as AxesHelper,ne as BUILD_TIME,ie as BaseUIComponent,le as BasicIKConstraint,de as BehaviorExtension,ce as BehaviorModel,me as Behaviour,pe as BlobStorage,ge as BloomEffect,ue as BoxCollider,Se as BoxGizmo,Ce as BoxHelperComponent,ye as Button,Ee as ButtonsFactory,Re as CallDirection,he as CallInfo,ve as Camera,fe as CameraTargetReachedEvent,Pe as Canvas,Ae as CanvasGroup,Te as CapsuleCollider,be as ChangeMaterialOnClick,Me as ChangeTransformOnClick,Ie as CharacterController,De as CharacterControllerInput,Oe as ChromaticAberration,xe as CircularBuffer,ke as ClearFlags,Le as ClickThrough,Be as ClipExtrapolation,Fe as Collider,Ne as Collision,we as CollisionDetectionMode,We as ColorAdjustments,Ge as ColorBySpeedModule,Ue as ColorOverLifetimeModule,He as Component,Xe as ComponentLifecycleEvents,ze as ConnectionEvents,Ve as ContactPoint,_e as ContactShadows,u as Context,je as ContextArgs,Ke as ContextEvent,Qe as ContextRegistry,Ze as ControlTrackHandler,Ye as CursorFollow,Je as CustomBranding,$e as CustomShader,qe as DefaultReflectionMode,ea as Deletable,aa as DeleteBox,sa as DepthOfField,ta as DeviceFlag,oa as DeviceUtilities,ra as DocumentExtension,na as DragControls,ia as DragMode,la as DropListener,da as Duplicatable,ca as EffectWrapper,ma as EmissionModule,pa as EmphasizeOnClick,ga as EngineLoadingView,ua as EnvironmentScene,Sa as EventList,Ca as EventListEvent,ya as EventSystem,Ea as EventTrigger,Ra as FieldWithDefault,ha as FileReference,va as FileReferenceSerializer,fa as FileSpawnModel,Pa as File_Event,Aa as FixedJoint,Ta as Fog,ba as FrameEvent,Ma as GENERATOR,s as GameObject,Ia as Gizmos,Da as GltfExport,Oa as GltfExportBox,xa as Gradient,ka as Graphic,La as GraphicRaycaster,Ba as Graphics,Fa as GridHelper,Na as GridLayoutGroup,wa as GroundProjectedEnv,Wa as GroupActionModel,Ga as HideFlags,Ua as HideOnStart,Ha as HingeJoint,Xa as HorizontalLayoutGroup,za as HostData,Va as HoverAnimation,_a as Image,ja as ImageReference,Ka as ImageReferenceSerializer,Qa as InheritVelocityModule,Za as Input,Ya as InputEventQueue,Ja as InputEvents,$a as InputField,qa as InstanceHandle,es as InstancingHandler,as as InstancingUtil,ss as InstantiateEvent,ts as InstantiateIdProvider,os as InstantiateOptions,rs as Interactable,ns as InternalScreenshotUtils,is as JoinedRoomResponse,ls as KeyEventArgs,ds as Keyframe,cs as LODGroup,ms as LODModel,ps as LeftRoomResponse,gs as Light,us as LightData,Ss as LimitVelocityOverLifetimeModule,Cs as LoadingElementOptions,ys as LogStats,Es as LogType,Rs as LookAt,hs as LookAtConstraint,vs as MainModule,fs as MarkerTrackHandler,Ps as MarkerType,As as MaskableGraphic,Ts as MaterialPropertyBlock,bs as MaterialX,Ms as Mathf,Is as MeshCollider,Ds as MeshRenderer,Os as MinMaxCurve,xs as MinMaxGradient,ks as NEEDLE_ENGINE_FEATURE_FLAGS,Ls as NEEDLE_ENGINE_MODULES,lc as NEEDLE_progressive,Bs as NEKeyboardEvent,Fs as NEPointerEvent,Ns as NeedleButtonElement,ws as NeedleEngine,Ws as NeedleEngineModelLoader,Gs as NeedleEngineWebComponent,Us as NeedleMenu,Hs as NeedlePatchesKey,Xs as NeedleUSDZExporter,zs as NeedleXRController,g as NeedleXRSession,Vs as NeedleXRSync,_s as NeedleXRUtils,js as NestedGltf,Ks as NetworkConnection,Qs as NetworkedStreamEvents,Zs as NetworkedStreams,Ys as Networking,Js as NewInstanceModel,$s as NoiseModule,qs as ObjectRaycaster,et as ObjectUtils,at as OffsetConstraint,st as OneEuroFilter,tt as OneEuroFilterXYZ,ot as OpenURL,rt as OrbitControls,nt as Outline,it as OwnershipEvent,lt as OwnershipModel,dt as PUBLIC_KEY,ct as Padding,mt as ParticleBurst,pt as ParticleSubEmitter,gt as ParticleSystem,ut as ParticleSystemBaseBehaviour,St as ParticleSystemRenderer,Ct as ParticleSystemShapeType,yt as PeerHandle,Et as PeerNetworking,Rt as Physics,ht as PhysicsExtension,vt as PhysicsMaterialCombine,ft as PixelationEffect,Pt as PlayAnimationOnClick,At as PlayAudioOnClick,Tt as PlayableDirector,bt as PlayerColor,Mt as PlayerState,It as PlayerStateEvent,Dt as PlayerSync,Ot as PlayerView,xt as PlayerViewManager,kt as PointerEventData,Lt as PointerType,Bt as PostProcessingEffect,Ft as PostProcessingEffectOrder,Nt as PostProcessingHandler,wt as PostProcessingManager,Wt as PreliminaryAction,Gt as PreliminaryTrigger,Ut as PreviewHelper,Ht as PrimitiveType,Xt as Progress,zt as PromiseAllWithErrors,Vt as PromiseErrorResult,_t as RGBAColor,jt as RapierPhysics,Kt as RawImage,Qt as RaycastOptions,Zt as Rect,Yt as RectTransform,Jt as ReflectionProbe,$t as RegisteredAnimationInfo,qt as RemoteSkybox,eo as RenderTexture,ao as RenderTextureSerializer,so as Renderer,to as RendererData,oo as RendererLightmap,ro as Rigidbody,no as RigidbodyConstraints,io as RoomEvents,lo as RotationBySpeedModule,co as RotationOverLifetimeModule,mo as SceneLightSettings,po as SceneSwitcher,go as ScreenCapture,uo as ScreenSpaceAmbientOcclusion,So as ScreenSpaceAmbientOcclusionN8,Co as ScrollFollow,yo as SeeThrough,Eo as SendQueue,Ro as SerializationContext,ho as SetActiveOnClick,vo as ShadowCatcher,fo as ShapeModule,Po as ShapeOverlapResult,Ao as SharpeningEffect,To as SignalAsset,bo as SignalReceiver,Mo as SignalReceiverEvent,Io as SignalTrackHandler,Do as Size,Oo as SizeBySpeedModule,xo as SizeOverLifetimeModule,ko as SkinnedMeshRenderer,Lo as SmoothFollow,Bo as SpatialGrabRaycaster,Fo as SpatialHtml,No as SpatialTrigger,wo as SpatialTriggerReceiver,Wo as SpectatorCamera,Go as SphereCollider,Uo as SphereIntersection,Ho as SplineContainer,Xo as SplineData,zo as SplineUtils,Vo as SplineWalker,_o as Sprite,jo as SpriteData,Ko as SpriteRenderer,Qo as SpriteSheet,Zo as StateMachineBehaviour,Yo as StreamEndedEvent,Jo as StreamReceivedEvent,$o as SubEmitterSystem,qo as SyncedCamera,er as SyncedRoom,ar as SyncedTransform,sr as TapGestureTrigger,tr as TeleportTarget,or as TestRunner,rr as TestSimulateUserData,nr as Text,ir as TextBuilder,lr as TextExtension,dr as TextureSheetAnimationModule,cr as TiltShiftEffect,mr as Time,pr as ToneMappingEffect,gr as TrackHandler,ur as TrackType,Sr as TrailModule,Cr as TransformData,yr as TransformGizmo,Er as TriggerBuilder,Rr as TriggerModel,m as TypeStore,hr as UIRaycastUtils,vr as UIRootComponent,fr as USDDocument,Pr as USDObject,Ar as USDWriter,Tr as USDZExporter,br as USDZText,Mr as USDZUIExtension,Ir as UriSerializer,Dr as UsageMarker,Or as UserJoinedOrLeftRoomModel,S as VERSION,xr as VariantAction,kr as VelocityOverLifetimeModule,Lr as VerticalLayoutGroup,Br as VideoPlayer,Fr as ViewBox,Nr as ViewDevice,wr as Vignette,Wr as VisibilityAction,Gr as Voip,Ur as Volume,Hr as VolumeParameter,Xr as VolumeProfile,zr as WaitForFrames,Vr as WaitForPromise,_r as WaitForSeconds,jr as Watch,Kr as WebARCameraBackground,Qr as WebARSessionRoot,Zr as WebXR,Yr as WebXRButtonFactory,Jr as WebXRImageTracking,$r as WebXRImageTrackingModel,qr as WebXRPlaneTracking,en as WebXRTrackedImage,an as XRControllerFollow,sn as XRControllerModel,tn as XRControllerMovement,on as XRFlag,rn as XRRig,nn as XRState,ln as XRStateFlag,dn as __Ignore,cn as __internalNotifyObjectDestroyed,mn as activeInHierarchyFieldName,pn as addAttributeChangeCallback,gn as addComponent,un as addCustomExtensionPlugin,Sn as addNewComponent,Cn as addPatch,yn as apply,En as applyHMRChanges,Rn as applyPrototypeExtensions,hn as beginListenDestroy,vn as beginListenInstantiate,fn as binaryIdentifierCasts,Pn as build_scene_functions,An as builtinComponentKeyName,Tn as calculateProgress01,bn as clearBalloonMessages,Mn as clearOverlayMessages,In as colorSerializer,Dn as compareAssociation,On as componentSerializer,xn as copyTexture,kn as createMotion,Ln as debugNet,Bn as debugOwner,Fn as decompressGpuTexture,Nn as deepClone,wn as delay,Wn as delayForFrames,Gn as deserializeObject,Un as destroy,Hn as destroyComponentInstance,Xn as determineMimeTypeFromExtension,zn as disposeObjectResources,Vn as disposeStream,_n as editorGuidKeyName,jn as enableSpatialConsole,Kn as eventListSerializer,Qn as exportAsGLTF,Zn as findByGuid,Yn as findObjectOfType,Jn as findObjectsOfType,$n as findResourceUsers,qn as fitCamera,ei as fitObjectIntoVolume,ai as foreachComponent,si as foreachComponentEnumerator,ti as forward,oi as generateQRCode,ri as generateSeed,ni as getBoundingBox,ii as getCameraController,li as getComponent,di as getComponentInChildren,ci as getComponentInParent,mi as getComponents,pi as getComponentsInChildren,gi as getComponentsInParent,ui as getFormattedDate,Si as getIconElement,Ci as getIconTexture,yi as getLoader,Ei as getOrAddComponent,Ri as getParam,hi as getParentHierarchyPath,vi as getPath,fi as getPeerOptions,Pi as getPeerjsInstance,Ai as getResourceUserCount,Ti as getTempColor,bi as getTempQuaternion,Mi as getTempVector,Ii as getUrlParams,Di as getVisibleInCustomShadowRendering,Oi as getWorldDirection,xi as getWorldEuler,ki as getWorldPosition,Li as getWorldQuaternion,Bi as getWorldRotation,Fi as getWorldScale,Ni as hasCommercialLicense,wi as hasIndieLicense,Wi as hasPointerEventComponent,Gi as hasProLicense,Ui as hideDebugConsole,Hi as imageToCanvas,Xi as initAddressableSerializers,zi as initBuiltinSerializers,Vi as initVolumeParameterSerializer,_i as instantiate,ji as invokeLoadedImportPluginHooks,Ki as invokeXRSessionEnd,Qi as invokeXRSessionStart,Zi as isActiveInHierarchy,Yi as isActiveSelf,Ji as isAndroidDevice,$i as isAnimationAction,qi as isComponent,el as isDebugMode,al as isDesktop,sl as isDestroyed,tl as isDevEnvironment,ol as isDisposed,rl as isExporting,nl as isGLTFModel,il as isHostedOnGlitch,ll as isHotReloadEnabled,dl as isHotReloading,cl as isIPad,ml as isIconElement,pl as isLocalNetwork,gl as isMacOS,ul as isMobileDevice,Sl as isMozillaXR,Cl as isQuest,yl as isResourceTrackingEnabled,El as isSafari,Rl as isUsingInstancing,hl as isiOS,vl as isiPad,p as loadAsset,fl as loadPMREM,Pl as loadSync,Al as logHierarchy,Tl as lookAtInverse,bl as lookAtObject,Ml as lookAtScreenPoint,Il as makeId,Dl as makeIdFromRandomWords,Ol as makeNameSafeForUSD,xl as markAsInstancedRendered,kl as microphonePermissionsGranted,Ll as nameof,Bl as nameofFactory,Fl as objectSerializer,Nl as offXRSessionEnd,wl as offXRSessionStart,i as onAfterRender,l as onBeforeRender,o as onClear,r as onDestroy,n as onInitialized,c as onStart,d as onUpdate,Wl as onXRSessionEnd,Gl as onXRSessionStart,Ul as parseSync,Hl as placeOnSurface,Xl as postprocessFBXMaterials,zl as prefix,Vl as pushState,_l as randomNumber,jl as registerBinaryType,Kl as registerComponent,Ql as registerComponentExtension,Zl as registerCustomEffectType,Yl as registerExportExtensions,Jl as registerExtensions,$l as registerHotReloadType,ql as registerLoader,ed as registerPrefabProvider,ad as registerPrototypeExtensions,sd as registerType,td as relativePathPrefix,od as removeAttributeChangeCallback,rd as removeComponent,nd as removeCustomImportExtensionType,id as removePatch,ld as resolveUrl,dd as sanitizeString,cd as saveImage,md as screenshot,pd as screenshot2,gd as sendDestroyed,ud as serializable,Sd as serializeObject,Cd as serializeable,yd as setActive,Ed as setAllowBalloonMessages,Rd as setAllowOverlayMessages,hd as setAutoFitEnabled,vd as setCameraController,fd as setDestroyed,Pd as setDevEnvironment,Ad as setDisposable,Td as setDontDestroy,bd as setOrAddParamsToUrl,Md as setParam,Id as setParamWithoutReload,Dd as setPeerOptions,Od as setResourceTrackingEnabled,xd as setState,kd as setVisibleInCustomShadowRendering,Ld as setWorldEuler,Bd as setWorldPosition,Fd as setWorldPositionXYZ,Nd as setWorldQuaternion,wd as setWorldQuaternionXYZW,Wd as setWorldRotation,Gd as setWorldRotationXYZ,Ud as setWorldScale,Hd as showBalloonError,Xd as showBalloonMessage,zd as showBalloonWarning,Vd as showDebugConsole,_d as slerp,jd as syncDestroy,Kd as syncField,Qd as syncInstantiate,Zd as textureToCanvas,Yd as toSourceId,Jd as tryCastBinary,$d as tryDetermineMimetypeFromBinary,qd as tryDetermineMimetypeFromURL,ec as tryFindObject,ac as tryGetGuid,sc as unregisterHotReloadType,tc as unwatchWrite,oc as useForAutoFit,rc as validate,nc as watchWrite};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./needle-engine.bundle-DOywNdEo.umd.cjs"),i=require("./three.umd.cjs"),a=require("./gltf-progressive-DJBMx-zB.umd.cjs");e.initEngine();const o={VERSION:e.VERSION,Context:e.Context,NeedleXRSession:e.NeedleXRSession,assets:{loadFromURL:e.loadAsset},types:e.TypeStore,onStart:e.onStart,onUpdate:e.onUpdate,onBeforeRender:e.onBeforeRender,onAfterRender:e.onAfterRender,onInitializedContext:e.onInitialized,onDestroyContext:e.onDestroy,onClearContext:e.onClear};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function n(t){for(const r in t)o[r]=t[r]}n(e.Component);n(e.Components);for(const t of Object.getOwnPropertyNames(e.GameObject))switch(t){case"prototype":case"constructor":case"length":case"name":continue;default:o[t]=e.GameObject[t];break}if(!globalThis.Needle)globalThis.Needle=o;else for(const t in o)globalThis.Needle[t]=o[t];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=i.THREE;exports.$componentName=e.$componentName;exports.$physicsKey=e.$physicsKey;exports.ActionBuilder=e.ActionBuilder;exports.ActionCollection=e.ActionCollection;exports.ActionModel=e.ActionModel;exports.Addressables=e.Addressables;exports.AlignmentConstraint=e.AlignmentConstraint;exports.AmbientMode=e.AmbientMode;exports.Animation=e.Animation;exports.AnimationCurve=e.AnimationCurve;exports.AnimationExtension=e.AnimationExtension;exports.AnimationTrackHandler=e.AnimationTrackHandler;exports.AnimationUtils=e.AnimationUtils;exports.Animator=e.Animator;exports.AnimatorConditionMode=e.AnimatorConditionMode;exports.AnimatorController=e.AnimatorController;exports.AnimatorControllerParameterType=e.AnimatorControllerParameterType;exports.AnimatorStateInfo=e.AnimatorStateInfo;exports.Antialiasing=e.Antialiasing;exports.Application=e.Application;exports.AssetDatabase=e.AssetDatabase;exports.AssetReference=e.AssetReference;exports.Attractor=e.Attractor;exports.AudioClip=e.AudioClip;exports.AudioExtension=e.AudioExtension;exports.AudioListener=e.AudioListener;exports.AudioSource=e.AudioSource;exports.AudioTrackHandler=e.AudioTrackHandler;exports.Avatar=e.Avatar;exports.AvatarBlink_Simple=e.AvatarBlink_Simple;exports.AvatarEyeLook_Rotation=e.AvatarEyeLook_Rotation;exports.AvatarLoader=e.AvatarLoader;exports.AvatarMarker=e.AvatarMarker;exports.AvatarModel=e.AvatarModel;exports.Avatar_Brain_LookAt=e.Avatar_Brain_LookAt;exports.Avatar_MouthShapes=e.Avatar_MouthShapes;exports.Avatar_MustacheShake=e.Avatar_MustacheShake;exports.Avatar_POI=e.Avatar_POI;exports.Axes=e.Axes;exports.AxesHelper=e.AxesHelper;exports.BUILD_TIME=e.BUILD_TIME;exports.BaseUIComponent=e.BaseUIComponent;exports.BasicIKConstraint=e.BasicIKConstraint;exports.BehaviorExtension=e.BehaviorExtension;exports.BehaviorModel=e.BehaviorModel;exports.Behaviour=e.Component$1;Object.defineProperty(exports,"BlobStorage",{enumerable:!0,get:()=>e.BlobStorage});exports.BloomEffect=e.BloomEffect;exports.BoxCollider=e.BoxCollider;exports.BoxGizmo=e.BoxGizmo;exports.BoxHelperComponent=e.BoxHelperComponent;exports.Button=e.Button;exports.ButtonsFactory=e.ButtonsFactory;exports.CallDirection=e.CallDirection;exports.CallInfo=e.CallInfo;exports.Camera=e.Camera;exports.CameraTargetReachedEvent=e.CameraTargetReachedEvent;exports.Canvas=e.Canvas;exports.CanvasGroup=e.CanvasGroup;exports.CapsuleCollider=e.CapsuleCollider;exports.ChangeMaterialOnClick=e.ChangeMaterialOnClick;exports.ChangeTransformOnClick=e.ChangeTransformOnClick;exports.CharacterController=e.CharacterController;exports.CharacterControllerInput=e.CharacterControllerInput;exports.ChromaticAberration=e.ChromaticAberration;exports.CircularBuffer=e.CircularBuffer;exports.ClearFlags=e.ClearFlags;exports.ClickThrough=e.ClickThrough;exports.ClipExtrapolation=e.ClipExtrapolation;exports.Collider=e.Collider;exports.Collision=e.Collision;exports.CollisionDetectionMode=e.CollisionDetectionMode;exports.ColorAdjustments=e.ColorAdjustments;exports.ColorBySpeedModule=e.ColorBySpeedModule;exports.ColorOverLifetimeModule=e.ColorOverLifetimeModule;exports.Component=e.Component$1;exports.ComponentLifecycleEvents=e.ComponentLifecycleEvents;exports.ConnectionEvents=e.ConnectionEvents;exports.ContactPoint=e.ContactPoint;exports.ContactShadows=e.ContactShadows;exports.Context=e.Context;exports.ContextArgs=e.ContextArgs;exports.ContextEvent=e.ContextEvent;exports.ContextRegistry=e.ContextRegistry;exports.ControlTrackHandler=e.ControlTrackHandler;exports.CursorFollow=e.CursorFollow;exports.CustomBranding=e.CustomBranding;exports.CustomShader=e.CustomShader;exports.DefaultReflectionMode=e.DefaultReflectionMode;exports.Deletable=e.Deletable;exports.DeleteBox=e.DeleteBox;exports.DepthOfField=e.DepthOfField;exports.DeviceFlag=e.DeviceFlag;Object.defineProperty(exports,"DeviceUtilities",{enumerable:!0,get:()=>e.DeviceUtilities});exports.DocumentExtension=e.DocumentExtension;exports.DragControls=e.DragControls;exports.DragMode=e.DragMode;exports.DropListener=e.DropListener;exports.Duplicatable=e.Duplicatable;exports.EffectWrapper=e.EffectWrapper;exports.EmissionModule=e.EmissionModule;exports.EmphasizeOnClick=e.EmphasizeOnClick;exports.EngineLoadingView=e.EngineLoadingView;exports.EnvironmentScene=e.EnvironmentScene;exports.EventList=e.EventList;exports.EventListEvent=e.EventListEvent;exports.EventSystem=e.EventSystem;exports.EventTrigger=e.EventTrigger;exports.FieldWithDefault=e.FieldWithDefault;exports.FileReference=e.FileReference;exports.FileReferenceSerializer=e.FileReferenceSerializer;exports.FileSpawnModel=e.FileSpawnModel;exports.File_Event=e.File_Event;exports.FixedJoint=e.FixedJoint;exports.Fog=e.Fog;exports.FrameEvent=e.FrameEvent;exports.GENERATOR=e.GENERATOR;exports.GameObject=e.GameObject;exports.Gizmos=e.Gizmos;exports.GltfExport=e.GltfExport;exports.GltfExportBox=e.GltfExportBox;exports.Gradient=e.Gradient;exports.Graphic=e.Graphic;exports.GraphicRaycaster=e.GraphicRaycaster;exports.Graphics=e.Graphics;exports.GridHelper=e.GridHelper;exports.GridLayoutGroup=e.GridLayoutGroup;exports.GroundProjectedEnv=e.GroundProjectedEnv;exports.GroupActionModel=e.GroupActionModel;exports.HideFlags=e.HideFlags;exports.HideOnStart=e.HideOnStart;exports.HingeJoint=e.HingeJoint;exports.HorizontalLayoutGroup=e.HorizontalLayoutGroup;exports.HostData=e.HostData;Object.defineProperty(exports,"HoverAnimation",{enumerable:!0,get:()=>e.HoverAnimation});exports.Image=e.Image;exports.ImageReference=e.ImageReference;exports.ImageReferenceSerializer=e.ImageReferenceSerializer;exports.InheritVelocityModule=e.InheritVelocityModule;exports.Input=e.Input;exports.InputEventQueue=e.InputEventQueue;exports.InputEvents=e.InputEvents;exports.InputField=e.InputField;exports.InstanceHandle=e.InstanceHandle;exports.InstancingHandler=e.InstancingHandler;exports.InstancingUtil=e.InstancingUtil;exports.InstantiateEvent=e.InstantiateEvent;exports.InstantiateIdProvider=e.InstantiateIdProvider;exports.InstantiateOptions=e.InstantiateOptions;exports.Interactable=e.Interactable;Object.defineProperty(exports,"InternalScreenshotUtils",{enumerable:!0,get:()=>e.InternalScreenshotUtils});exports.JoinedRoomResponse=e.JoinedRoomResponse;exports.KeyEventArgs=e.KeyEventArgs;exports.Keyframe=e.Keyframe;exports.LODGroup=e.LODGroup;exports.LODModel=e.LODModel;exports.LeftRoomResponse=e.LeftRoomResponse;exports.Light=e.Light;exports.LightData=e.LightData;exports.LimitVelocityOverLifetimeModule=e.LimitVelocityOverLifetimeModule;exports.LoadingElementOptions=e.LoadingElementOptions;exports.LogStats=e.LogStats;exports.LogType=e.LogType;exports.LookAt=e.LookAt;exports.LookAtConstraint=e.LookAtConstraint;exports.MainModule=e.MainModule;exports.MarkerTrackHandler=e.MarkerTrackHandler;exports.MarkerType=e.MarkerType;exports.MaskableGraphic=e.MaskableGraphic;exports.MaterialPropertyBlock=e.MaterialPropertyBlock;Object.defineProperty(exports,"MaterialX",{enumerable:!0,get:()=>e.MaterialX});exports.Mathf=e.Mathf;exports.MeshCollider=e.MeshCollider;exports.MeshRenderer=e.MeshRenderer;exports.MinMaxCurve=e.MinMaxCurve;exports.MinMaxGradient=e.MinMaxGradient;exports.NEEDLE_ENGINE_FEATURE_FLAGS=e.NEEDLE_ENGINE_FEATURE_FLAGS;exports.NEEDLE_ENGINE_MODULES=e.MODULES;exports.NEKeyboardEvent=e.NEKeyboardEvent;exports.NEPointerEvent=e.NEPointerEvent;exports.NeedleButtonElement=e.NeedleButtonElement;exports.NeedleEngine=e.ContextRegistry;Object.defineProperty(exports,"NeedleEngineModelLoader",{enumerable:!0,get:()=>e.NeedleEngineModelLoader});exports.NeedleEngineWebComponent=e.NeedleEngineWebComponent;exports.NeedleMenu=e.NeedleMenu;exports.NeedlePatchesKey=e.NeedlePatchesKey;exports.NeedleUSDZExporter=e.USDZExporter;exports.NeedleXRController=e.NeedleXRController;exports.NeedleXRSession=e.NeedleXRSession;exports.NeedleXRSync=e.NeedleXRSync;exports.NeedleXRUtils=e.NeedleXRUtils;exports.NestedGltf=e.NestedGltf;exports.NetworkConnection=e.NetworkConnection;exports.NetworkedStreamEvents=e.NetworkedStreamEvents;exports.NetworkedStreams=e.NetworkedStreams;exports.Networking=e.Networking;exports.NewInstanceModel=e.NewInstanceModel;exports.NoiseModule=e.NoiseModule;exports.ObjectRaycaster=e.ObjectRaycaster;exports.ObjectUtils=e.ObjectUtils;exports.OffsetConstraint=e.OffsetConstraint;exports.OneEuroFilter=e.OneEuroFilter;exports.OneEuroFilterXYZ=e.OneEuroFilterXYZ;exports.OpenURL=e.OpenURL;exports.OrbitControls=e.OrbitControls;exports.Outline=e.Outline;exports.OwnershipEvent=e.OwnershipEvent;exports.OwnershipModel=e.OwnershipModel;exports.PUBLIC_KEY=e.PUBLIC_KEY;exports.Padding=e.Padding;exports.ParticleBurst=e.ParticleBurst;exports.ParticleSubEmitter=e.ParticleSubEmitter;exports.ParticleSystem=e.ParticleSystem;exports.ParticleSystemBaseBehaviour=e.ParticleSystemBaseBehaviour;exports.ParticleSystemRenderer=e.ParticleSystemRenderer;exports.ParticleSystemShapeType=e.ParticleSystemShapeType;exports.PeerHandle=e.PeerHandle;exports.PeerNetworking=e.PeerNetworking;exports.Physics=e.Physics;exports.PhysicsExtension=e.PhysicsExtension;exports.PhysicsMaterialCombine=e.PhysicsMaterialCombine;exports.PixelationEffect=e.PixelationEffect;exports.PlayAnimationOnClick=e.PlayAnimationOnClick;exports.PlayAudioOnClick=e.PlayAudioOnClick;exports.PlayableDirector=e.PlayableDirector;exports.PlayerColor=e.PlayerColor;exports.PlayerState=e.PlayerState;exports.PlayerStateEvent=e.PlayerStateEvent;exports.PlayerSync=e.PlayerSync;exports.PlayerView=e.PlayerView;exports.PlayerViewManager=e.PlayerViewManager;exports.PointerEventData=e.PointerEventData;exports.PointerType=e.PointerType;exports.PostProcessingEffect=e.PostProcessingEffect;exports.PostProcessingEffectOrder=e.PostProcessingEffectOrder;exports.PostProcessingHandler=e.PostProcessingHandler;exports.PostProcessingManager=e.Volume;exports.PreliminaryAction=e.PreliminaryAction;exports.PreliminaryTrigger=e.PreliminaryTrigger;Object.defineProperty(exports,"PreviewHelper",{enumerable:!0,get:()=>e.PreviewHelper});exports.PrimitiveType=e.PrimitiveType;exports.Progress=e.Progress;exports.PromiseAllWithErrors=e.PromiseAllWithErrors;exports.PromiseErrorResult=e.PromiseErrorResult;exports.RGBAColor=e.RGBAColor;exports.RapierPhysics=e.RapierPhysics;exports.RawImage=e.RawImage;exports.RaycastOptions=e.RaycastOptions;exports.Rect=e.Rect;exports.RectTransform=e.RectTransform;exports.ReflectionProbe=e.ReflectionProbe;exports.RegisteredAnimationInfo=e.RegisteredAnimationInfo;exports.RemoteSkybox=e.RemoteSkybox;exports.RenderTexture=e.RenderTexture;exports.RenderTextureSerializer=e.RenderTextureSerializer;exports.Renderer=e.Renderer;exports.RendererData=e.RendererData;exports.RendererLightmap=e.RendererLightmap;exports.Rigidbody=e.Rigidbody;exports.RigidbodyConstraints=e.RigidbodyConstraints;exports.RoomEvents=e.RoomEvents;exports.RotationBySpeedModule=e.RotationBySpeedModule;exports.RotationOverLifetimeModule=e.RotationOverLifetimeModule;exports.SceneLightSettings=e.SceneLightSettings;exports.SceneSwitcher=e.SceneSwitcher;exports.ScreenCapture=e.ScreenCapture;exports.ScreenSpaceAmbientOcclusion=e.ScreenSpaceAmbientOcclusion;exports.ScreenSpaceAmbientOcclusionN8=e.ScreenSpaceAmbientOcclusionN8;exports.ScrollFollow=e.ScrollFollow;exports.SeeThrough=e.SeeThrough;exports.SendQueue=e.SendQueue;exports.SerializationContext=e.SerializationContext;exports.SetActiveOnClick=e.SetActiveOnClick;exports.ShadowCatcher=e.ShadowCatcher;exports.ShapeModule=e.ShapeModule;exports.ShapeOverlapResult=e.ShapeOverlapResult;exports.SharpeningEffect=e.SharpeningEffect;exports.SignalAsset=e.SignalAsset;exports.SignalReceiver=e.SignalReceiver;exports.SignalReceiverEvent=e.SignalReceiverEvent;exports.SignalTrackHandler=e.SignalTrackHandler;exports.Size=e.Size;exports.SizeBySpeedModule=e.SizeBySpeedModule;exports.SizeOverLifetimeModule=e.SizeOverLifetimeModule;exports.SkinnedMeshRenderer=e.SkinnedMeshRenderer;exports.SmoothFollow=e.SmoothFollow;exports.SpatialGrabRaycaster=e.SpatialGrabRaycaster;exports.SpatialHtml=e.SpatialHtml;exports.SpatialTrigger=e.SpatialTrigger;exports.SpatialTriggerReceiver=e.SpatialTriggerReceiver;exports.SpectatorCamera=e.SpectatorCamera;exports.SphereCollider=e.SphereCollider;exports.SphereIntersection=e.SphereIntersection;exports.SplineContainer=e.SplineContainer;exports.SplineData=e.SplineData;Object.defineProperty(exports,"SplineUtils",{enumerable:!0,get:()=>e.SplineUtils});exports.SplineWalker=e.SplineWalker;exports.Sprite=e.Sprite;exports.SpriteData=e.SpriteData;exports.SpriteRenderer=e.SpriteRenderer;exports.SpriteSheet=e.SpriteSheet;exports.StateMachineBehaviour=e.StateMachineBehaviour;exports.StreamEndedEvent=e.StreamEndedEvent;exports.StreamReceivedEvent=e.StreamReceivedEvent;exports.SubEmitterSystem=e.SubEmitterSystem;exports.SyncedCamera=e.SyncedCamera;exports.SyncedRoom=e.SyncedRoom;exports.SyncedTransform=e.SyncedTransform;exports.TapGestureTrigger=e.TapGestureTrigger;exports.TeleportTarget=e.TeleportTarget;exports.TestRunner=e.TestRunner;exports.TestSimulateUserData=e.TestSimulateUserData;exports.Text=e.Text;exports.TextBuilder=e.TextBuilder;exports.TextExtension=e.TextExtension;exports.TextureSheetAnimationModule=e.TextureSheetAnimationModule;exports.TiltShiftEffect=e.TiltShiftEffect;exports.Time=e.Time;exports.ToneMappingEffect=e.ToneMappingEffect;exports.TrackHandler=e.TrackHandler;exports.TrackType=e.TrackType;exports.TrailModule=e.TrailModule;exports.TransformData=e.TransformData;exports.TransformGizmo=e.TransformGizmo;exports.TriggerBuilder=e.TriggerBuilder;exports.TriggerModel=e.TriggerModel;exports.TypeStore=e.TypeStore;exports.UIRaycastUtils=e.UIRaycastUtils;exports.UIRootComponent=e.UIRootComponent;exports.USDDocument=e.USDDocument;exports.USDObject=e.USDObject;exports.USDWriter=e.USDWriter;exports.USDZExporter=e.USDZExporter$1;exports.USDZText=e.USDZText;exports.USDZUIExtension=e.USDZUIExtension;exports.UriSerializer=e.UriSerializer;exports.UsageMarker=e.UsageMarker;exports.UserJoinedOrLeftRoomModel=e.UserJoinedOrLeftRoomModel;exports.VERSION=e.VERSION;exports.VariantAction=e.VariantAction;exports.VelocityOverLifetimeModule=e.VelocityOverLifetimeModule;exports.VerticalLayoutGroup=e.VerticalLayoutGroup;exports.VideoPlayer=e.VideoPlayer;Object.defineProperty(exports,"ViewBox",{enumerable:!0,get:()=>e.ViewBox});exports.ViewDevice=e.ViewDevice;exports.Vignette=e.Vignette;exports.VisibilityAction=e.VisibilityAction;exports.Voip=e.Voip;exports.Volume=e.Volume;exports.VolumeParameter=e.VolumeParameter;exports.VolumeProfile=e.VolumeProfile;exports.WaitForFrames=e.WaitForFrames;exports.WaitForPromise=e.WaitForPromise;exports.WaitForSeconds=e.WaitForSeconds;exports.Watch=e.Watch;exports.WebARCameraBackground=e.WebARCameraBackground;exports.WebARSessionRoot=e.WebARSessionRoot;exports.WebXR=e.WebXR;exports.WebXRButtonFactory=e.WebXRButtonFactory;exports.WebXRImageTracking=e.WebXRImageTracking;exports.WebXRImageTrackingModel=e.WebXRImageTrackingModel;exports.WebXRPlaneTracking=e.WebXRPlaneTracking;exports.WebXRTrackedImage=e.WebXRTrackedImage;exports.XRControllerFollow=e.XRControllerFollow;exports.XRControllerModel=e.XRControllerModel;exports.XRControllerMovement=e.XRControllerMovement;exports.XRFlag=e.XRFlag;exports.XRRig=e.XRRig;exports.XRState=e.XRState;exports.XRStateFlag=e.XRStateFlag;exports.__Ignore=e.__Ignore;exports.__internalNotifyObjectDestroyed=e.__internalNotifyObjectDestroyed;exports.activeInHierarchyFieldName=e.activeInHierarchyFieldName;exports.addAttributeChangeCallback=e.addAttributeChangeCallback;exports.addComponent=e.addComponent;exports.addCustomExtensionPlugin=e.addCustomExtensionPlugin;exports.addNewComponent=e.addNewComponent;exports.addPatch=e.addPatch;exports.apply=e.apply;exports.applyHMRChanges=e.applyHMRChanges;exports.applyPrototypeExtensions=e.applyPrototypeExtensions;exports.beginListenDestroy=e.beginListenDestroy;exports.beginListenInstantiate=e.beginListenInstantiate;exports.binaryIdentifierCasts=e.binaryIdentifierCasts;exports.build_scene_functions=e.build_scene_functions;exports.builtinComponentKeyName=e.builtinComponentKeyName;exports.calculateProgress01=e.calculateProgress01;exports.clearBalloonMessages=e.clearMessages;exports.clearOverlayMessages=e.clearMessages;Object.defineProperty(exports,"colorSerializer",{enumerable:!0,get:()=>e.colorSerializer});exports.compareAssociation=e.compareAssociation;Object.defineProperty(exports,"componentSerializer",{enumerable:!0,get:()=>e.componentSerializer});exports.copyTexture=e.copyTexture;exports.createMotion=e.createMotion;exports.debugNet=e.debugNet;exports.debugOwner=e.debugOwner;exports.decompressGpuTexture=e.decompressGpuTexture;exports.deepClone=e.deepClone;exports.delay=e.delay;exports.delayForFrames=e.delayForFrames;exports.deserializeObject=e.deserializeObject;exports.destroy=e.destroy;exports.destroyComponentInstance=e.destroyComponentInstance;exports.determineMimeTypeFromExtension=e.determineMimeTypeFromExtension;exports.disposeObjectResources=e.disposeObjectResources;exports.disposeStream=e.disposeStream;exports.editorGuidKeyName=e.editorGuidKeyName;exports.enableSpatialConsole=e.enableSpatialConsole;Object.defineProperty(exports,"eventListSerializer",{enumerable:!0,get:()=>e.eventListSerializer});exports.exportAsGLTF=e.exportAsGLTF;exports.findByGuid=e.findByGuid;exports.findObjectOfType=e.findObjectOfType;exports.findObjectsOfType=e.findObjectsOfType;exports.findResourceUsers=e.findResourceUsers;exports.fitCamera=e.fitCamera;exports.fitObjectIntoVolume=e.fitObjectIntoVolume;exports.foreachComponent=e.foreachComponent;exports.foreachComponentEnumerator=e.foreachComponentEnumerator;exports.forward=e.forward;exports.generateQRCode=e.generateQRCode;exports.generateSeed=e.generateSeed;exports.getBoundingBox=e.getBoundingBox;exports.getCameraController=e.getCameraController;exports.getComponent=e.getComponent;exports.getComponentInChildren=e.getComponentInChildren;exports.getComponentInParent=e.getComponentInParent;exports.getComponents=e.getComponents;exports.getComponentsInChildren=e.getComponentsInChildren;exports.getComponentsInParent=e.getComponentsInParent;exports.getFormattedDate=e.getFormattedDate;exports.getIconElement=e.getIconElement;exports.getIconTexture=e.getIconTexture;exports.getLoader=e.getLoader;exports.getOrAddComponent=e.getOrAddComponent;exports.getParam=e.getParam;exports.getParentHierarchyPath=e.getParentHierarchyPath;exports.getPath=e.getPath;exports.getPeerOptions=e.getPeerOptions;exports.getPeerjsInstance=e.getPeerjsInstance;exports.getResourceUserCount=e.getResourceUserCount;exports.getTempColor=e.getTempColor;exports.getTempQuaternion=e.getTempQuaternion;exports.getTempVector=e.getTempVector;exports.getUrlParams=e.getUrlParams;exports.getVisibleInCustomShadowRendering=e.getVisibleInCustomShadowRendering;exports.getWorldDirection=e.getWorldDirection;exports.getWorldEuler=e.getWorldEuler;exports.getWorldPosition=e.getWorldPosition;exports.getWorldQuaternion=e.getWorldQuaternion;exports.getWorldRotation=e.getWorldRotation;exports.getWorldScale=e.getWorldScale;exports.hasCommercialLicense=e.hasCommercialLicense;exports.hasIndieLicense=e.hasIndieLicense;exports.hasPointerEventComponent=e.hasPointerEventComponent;exports.hasProLicense=e.hasProLicense;exports.hideDebugConsole=e.hideDebugConsole;exports.imageToCanvas=e.imageToCanvas;exports.initAddressableSerializers=e.initAddressableSerializers;exports.initBuiltinSerializers=e.initBuiltinSerializers;exports.initVolumeParameterSerializer=e.initVolumeParameterSerializer;exports.instantiate=e.instantiate;exports.invokeLoadedImportPluginHooks=e.invokeLoadedImportPluginHooks;exports.invokeXRSessionEnd=e.invokeXRSessionEnd;exports.invokeXRSessionStart=e.invokeXRSessionStart;exports.isActiveInHierarchy=e.isActiveInHierarchy;exports.isActiveSelf=e.isActiveSelf;exports.isAndroidDevice=e.isAndroidDevice;exports.isAnimationAction=e.isAnimationAction;exports.isComponent=e.isComponent;exports.isDebugMode=e.isDebugMode;exports.isDesktop=e.isDesktop;exports.isDestroyed=e.isDestroyed;exports.isDevEnvironment=e.isDevEnvironment;exports.isDisposed=e.isDisposed;exports.isExporting=e.isExporting;exports.isGLTFModel=e.isGLTFModel;exports.isHostedOnGlitch=e.isHostedOnGlitch;exports.isHotReloadEnabled=e.isHotReloadEnabled;exports.isHotReloading=e.isHotReloading;exports.isIPad=e.isIPad;exports.isIconElement=e.isIconElement;exports.isLocalNetwork=e.isLocalNetwork;exports.isMacOS=e.isMacOS;exports.isMobileDevice=e.isMobileDevice;exports.isMozillaXR=e.isMozillaXR;exports.isQuest=e.isQuest;exports.isResourceTrackingEnabled=e.isResourceTrackingEnabled;exports.isSafari=e.isSafari;exports.isUsingInstancing=e.isUsingInstancing;exports.isiOS=e.isiOS;exports.isiPad=e.isiPad;exports.loadAsset=e.loadAsset;exports.loadPMREM=e.loadPMREM;exports.loadSync=e.loadSync;exports.logHierarchy=e.logHierarchy;exports.lookAtInverse=e.lookAtInverse;exports.lookAtObject=e.lookAtObject;exports.lookAtScreenPoint=e.lookAtScreenPoint;exports.makeId=e.makeId;exports.makeIdFromRandomWords=e.makeIdFromRandomWords;exports.makeNameSafeForUSD=e.makeNameSafe;exports.markAsInstancedRendered=e.markAsInstancedRendered;exports.microphonePermissionsGranted=e.microphonePermissionsGranted;exports.nameof=e.nameof;exports.nameofFactory=e.nameofFactory;Object.defineProperty(exports,"objectSerializer",{enumerable:!0,get:()=>e.objectSerializer});exports.offXRSessionEnd=e.offXRSessionEnd;exports.offXRSessionStart=e.offXRSessionStart;exports.onAfterRender=e.onAfterRender;exports.onBeforeRender=e.onBeforeRender;exports.onClear=e.onClear;exports.onDestroy=e.onDestroy;exports.onInitialized=e.onInitialized;exports.onStart=e.onStart;exports.onUpdate=e.onUpdate;exports.onXRSessionEnd=e.onXRSessionEnd;exports.onXRSessionStart=e.onXRSessionStart;exports.parseSync=e.parseSync;exports.placeOnSurface=e.placeOnSurface;exports.postprocessFBXMaterials=e.postprocessFBXMaterials;exports.prefix=e.prefix;exports.pushState=e.pushState;exports.randomNumber=e.randomNumber;exports.registerBinaryType=e.registerBinaryType;exports.registerComponent=e.registerComponent;exports.registerComponentExtension=e.registerComponentExtension;exports.registerCustomEffectType=e.registerCustomEffectType;exports.registerExportExtensions=e.registerExportExtensions;exports.registerExtensions=e.registerExtensions;exports.registerHotReloadType=e.registerHotReloadType;exports.registerLoader=e.registerLoader;exports.registerPrefabProvider=e.registerPrefabProvider;exports.registerPrototypeExtensions=e.registerPrototypeExtensions;exports.registerType=e.registerType;exports.relativePathPrefix=e.relativePathPrefix;exports.removeAttributeChangeCallback=e.removeAttributeChangeCallback;exports.removeComponent=e.removeComponent;exports.removeCustomImportExtensionType=e.removeCustomImportExtensionType;exports.removePatch=e.removePatch;exports.resolveUrl=e.resolveUrl;exports.sanitizeString=e.sanitizeString;exports.saveImage=e.saveImage;exports.screenshot=e.screenshot;exports.screenshot2=e.screenshot2;exports.sendDestroyed=e.sendDestroyed;exports.serializable=e.serializable;exports.serializeObject=e.serializeObject;exports.serializeable=e.serializeable;exports.setActive=e.setActive;exports.setAllowBalloonMessages=e.setAllowBalloonMessages;exports.setAllowOverlayMessages=e.setAllowOverlayMessages;exports.setAutoFitEnabled=e.setAutoFitEnabled;exports.setCameraController=e.setCameraController;exports.setDestroyed=e.setDestroyed;exports.setDevEnvironment=e.setDevEnvironment;exports.setDisposable=e.setDisposable;exports.setDontDestroy=e.setDontDestroy;exports.setOrAddParamsToUrl=e.setOrAddParamsToUrl;exports.setParam=e.setParam;exports.setParamWithoutReload=e.setParamWithoutReload;exports.setPeerOptions=e.setPeerOptions;exports.setResourceTrackingEnabled=e.setResourceTrackingEnabled;exports.setState=e.setState;exports.setVisibleInCustomShadowRendering=e.setVisibleInCustomShadowRendering;exports.setWorldEuler=e.setWorldEuler;exports.setWorldPosition=e.setWorldPosition;exports.setWorldPositionXYZ=e.setWorldPositionXYZ;exports.setWorldQuaternion=e.setWorldQuaternion;exports.setWorldQuaternionXYZW=e.setWorldQuaternionXYZW;exports.setWorldRotation=e.setWorldRotation;exports.setWorldRotationXYZ=e.setWorldRotationXYZ;exports.setWorldScale=e.setWorldScale;exports.showBalloonError=e.showBalloonError;exports.showBalloonMessage=e.showBalloonMessage;exports.showBalloonWarning=e.showBalloonWarning;exports.showDebugConsole=e.showDebugConsole;exports.slerp=e.slerp;exports.syncDestroy=e.syncDestroy;exports.syncField=e.syncField;exports.syncInstantiate=e.syncInstantiate;exports.textureToCanvas=e.textureToCanvas;exports.toSourceId=e.toSourceId;exports.tryCastBinary=e.tryCastBinary;exports.tryDetermineMimetypeFromBinary=e.tryDetermineMimetypeFromBinary;exports.tryDetermineMimetypeFromURL=e.tryDetermineMimetypeFromURL;exports.tryFindObject=e.tryFindObject;exports.tryGetGuid=e.tryGetGuid;exports.unregisterHotReloadType=e.unregisterHotReloadType;exports.unwatchWrite=e.unwatchWrite;exports.useForAutoFit=e.useForAutoFit;exports.validate=e.validate;exports.watchWrite=e.watchWrite;exports.NEEDLE_progressive=a.NEEDLE_progressive;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./needle-engine.bundle--J0Pgk3R.umd.cjs"),i=require("./three.umd.cjs"),a=require("./gltf-progressive-DJBMx-zB.umd.cjs");e.initEngine();const o={VERSION:e.VERSION,Context:e.Context,NeedleXRSession:e.NeedleXRSession,assets:{loadFromURL:e.loadAsset},types:e.TypeStore,onStart:e.onStart,onUpdate:e.onUpdate,onBeforeRender:e.onBeforeRender,onAfterRender:e.onAfterRender,onInitializedContext:e.onInitialized,onDestroyContext:e.onDestroy,onClearContext:e.onClear};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function n(t){for(const r in t)o[r]=t[r]}n(e.Component);n(e.Components);for(const t of Object.getOwnPropertyNames(e.GameObject))switch(t){case"prototype":case"constructor":case"length":case"name":continue;default:o[t]=e.GameObject[t];break}if(!globalThis.Needle)globalThis.Needle=o;else for(const t in o)globalThis.Needle[t]=o[t];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=i.THREE;exports.$componentName=e.$componentName;exports.$physicsKey=e.$physicsKey;exports.ActionBuilder=e.ActionBuilder;exports.ActionCollection=e.ActionCollection;exports.ActionModel=e.ActionModel;exports.Addressables=e.Addressables;exports.AlignmentConstraint=e.AlignmentConstraint;exports.AmbientMode=e.AmbientMode;exports.Animation=e.Animation;exports.AnimationCurve=e.AnimationCurve;exports.AnimationExtension=e.AnimationExtension;exports.AnimationTrackHandler=e.AnimationTrackHandler;exports.AnimationUtils=e.AnimationUtils;exports.Animator=e.Animator;exports.AnimatorConditionMode=e.AnimatorConditionMode;exports.AnimatorController=e.AnimatorController;exports.AnimatorControllerParameterType=e.AnimatorControllerParameterType;exports.AnimatorStateInfo=e.AnimatorStateInfo;exports.Antialiasing=e.Antialiasing;exports.Application=e.Application;exports.AssetDatabase=e.AssetDatabase;exports.AssetReference=e.AssetReference;exports.Attractor=e.Attractor;exports.AudioClip=e.AudioClip;exports.AudioExtension=e.AudioExtension;exports.AudioListener=e.AudioListener;exports.AudioSource=e.AudioSource;exports.AudioTrackHandler=e.AudioTrackHandler;exports.Avatar=e.Avatar;exports.AvatarBlink_Simple=e.AvatarBlink_Simple;exports.AvatarEyeLook_Rotation=e.AvatarEyeLook_Rotation;exports.AvatarLoader=e.AvatarLoader;exports.AvatarMarker=e.AvatarMarker;exports.AvatarModel=e.AvatarModel;exports.Avatar_Brain_LookAt=e.Avatar_Brain_LookAt;exports.Avatar_MouthShapes=e.Avatar_MouthShapes;exports.Avatar_MustacheShake=e.Avatar_MustacheShake;exports.Avatar_POI=e.Avatar_POI;exports.Axes=e.Axes;exports.AxesHelper=e.AxesHelper;exports.BUILD_TIME=e.BUILD_TIME;exports.BaseUIComponent=e.BaseUIComponent;exports.BasicIKConstraint=e.BasicIKConstraint;exports.BehaviorExtension=e.BehaviorExtension;exports.BehaviorModel=e.BehaviorModel;exports.Behaviour=e.Component$1;Object.defineProperty(exports,"BlobStorage",{enumerable:!0,get:()=>e.BlobStorage});exports.BloomEffect=e.BloomEffect;exports.BoxCollider=e.BoxCollider;exports.BoxGizmo=e.BoxGizmo;exports.BoxHelperComponent=e.BoxHelperComponent;exports.Button=e.Button;exports.ButtonsFactory=e.ButtonsFactory;exports.CallDirection=e.CallDirection;exports.CallInfo=e.CallInfo;exports.Camera=e.Camera;exports.CameraTargetReachedEvent=e.CameraTargetReachedEvent;exports.Canvas=e.Canvas;exports.CanvasGroup=e.CanvasGroup;exports.CapsuleCollider=e.CapsuleCollider;exports.ChangeMaterialOnClick=e.ChangeMaterialOnClick;exports.ChangeTransformOnClick=e.ChangeTransformOnClick;exports.CharacterController=e.CharacterController;exports.CharacterControllerInput=e.CharacterControllerInput;exports.ChromaticAberration=e.ChromaticAberration;exports.CircularBuffer=e.CircularBuffer;exports.ClearFlags=e.ClearFlags;exports.ClickThrough=e.ClickThrough;exports.ClipExtrapolation=e.ClipExtrapolation;exports.Collider=e.Collider;exports.Collision=e.Collision;exports.CollisionDetectionMode=e.CollisionDetectionMode;exports.ColorAdjustments=e.ColorAdjustments;exports.ColorBySpeedModule=e.ColorBySpeedModule;exports.ColorOverLifetimeModule=e.ColorOverLifetimeModule;exports.Component=e.Component$1;exports.ComponentLifecycleEvents=e.ComponentLifecycleEvents;exports.ConnectionEvents=e.ConnectionEvents;exports.ContactPoint=e.ContactPoint;exports.ContactShadows=e.ContactShadows;exports.Context=e.Context;exports.ContextArgs=e.ContextArgs;exports.ContextEvent=e.ContextEvent;exports.ContextRegistry=e.ContextRegistry;exports.ControlTrackHandler=e.ControlTrackHandler;exports.CursorFollow=e.CursorFollow;exports.CustomBranding=e.CustomBranding;exports.CustomShader=e.CustomShader;exports.DefaultReflectionMode=e.DefaultReflectionMode;exports.Deletable=e.Deletable;exports.DeleteBox=e.DeleteBox;exports.DepthOfField=e.DepthOfField;exports.DeviceFlag=e.DeviceFlag;Object.defineProperty(exports,"DeviceUtilities",{enumerable:!0,get:()=>e.DeviceUtilities});exports.DocumentExtension=e.DocumentExtension;exports.DragControls=e.DragControls;exports.DragMode=e.DragMode;exports.DropListener=e.DropListener;exports.Duplicatable=e.Duplicatable;exports.EffectWrapper=e.EffectWrapper;exports.EmissionModule=e.EmissionModule;exports.EmphasizeOnClick=e.EmphasizeOnClick;exports.EngineLoadingView=e.EngineLoadingView;exports.EnvironmentScene=e.EnvironmentScene;exports.EventList=e.EventList;exports.EventListEvent=e.EventListEvent;exports.EventSystem=e.EventSystem;exports.EventTrigger=e.EventTrigger;exports.FieldWithDefault=e.FieldWithDefault;exports.FileReference=e.FileReference;exports.FileReferenceSerializer=e.FileReferenceSerializer;exports.FileSpawnModel=e.FileSpawnModel;exports.File_Event=e.File_Event;exports.FixedJoint=e.FixedJoint;exports.Fog=e.Fog;exports.FrameEvent=e.FrameEvent;exports.GENERATOR=e.GENERATOR;exports.GameObject=e.GameObject;exports.Gizmos=e.Gizmos;exports.GltfExport=e.GltfExport;exports.GltfExportBox=e.GltfExportBox;exports.Gradient=e.Gradient;exports.Graphic=e.Graphic;exports.GraphicRaycaster=e.GraphicRaycaster;exports.Graphics=e.Graphics;exports.GridHelper=e.GridHelper;exports.GridLayoutGroup=e.GridLayoutGroup;exports.GroundProjectedEnv=e.GroundProjectedEnv;exports.GroupActionModel=e.GroupActionModel;exports.HideFlags=e.HideFlags;exports.HideOnStart=e.HideOnStart;exports.HingeJoint=e.HingeJoint;exports.HorizontalLayoutGroup=e.HorizontalLayoutGroup;exports.HostData=e.HostData;Object.defineProperty(exports,"HoverAnimation",{enumerable:!0,get:()=>e.HoverAnimation});exports.Image=e.Image;exports.ImageReference=e.ImageReference;exports.ImageReferenceSerializer=e.ImageReferenceSerializer;exports.InheritVelocityModule=e.InheritVelocityModule;exports.Input=e.Input;exports.InputEventQueue=e.InputEventQueue;exports.InputEvents=e.InputEvents;exports.InputField=e.InputField;exports.InstanceHandle=e.InstanceHandle;exports.InstancingHandler=e.InstancingHandler;exports.InstancingUtil=e.InstancingUtil;exports.InstantiateEvent=e.InstantiateEvent;exports.InstantiateIdProvider=e.InstantiateIdProvider;exports.InstantiateOptions=e.InstantiateOptions;exports.Interactable=e.Interactable;Object.defineProperty(exports,"InternalScreenshotUtils",{enumerable:!0,get:()=>e.InternalScreenshotUtils});exports.JoinedRoomResponse=e.JoinedRoomResponse;exports.KeyEventArgs=e.KeyEventArgs;exports.Keyframe=e.Keyframe;exports.LODGroup=e.LODGroup;exports.LODModel=e.LODModel;exports.LeftRoomResponse=e.LeftRoomResponse;exports.Light=e.Light;exports.LightData=e.LightData;exports.LimitVelocityOverLifetimeModule=e.LimitVelocityOverLifetimeModule;exports.LoadingElementOptions=e.LoadingElementOptions;exports.LogStats=e.LogStats;exports.LogType=e.LogType;exports.LookAt=e.LookAt;exports.LookAtConstraint=e.LookAtConstraint;exports.MainModule=e.MainModule;exports.MarkerTrackHandler=e.MarkerTrackHandler;exports.MarkerType=e.MarkerType;exports.MaskableGraphic=e.MaskableGraphic;exports.MaterialPropertyBlock=e.MaterialPropertyBlock;Object.defineProperty(exports,"MaterialX",{enumerable:!0,get:()=>e.MaterialX});exports.Mathf=e.Mathf;exports.MeshCollider=e.MeshCollider;exports.MeshRenderer=e.MeshRenderer;exports.MinMaxCurve=e.MinMaxCurve;exports.MinMaxGradient=e.MinMaxGradient;exports.NEEDLE_ENGINE_FEATURE_FLAGS=e.NEEDLE_ENGINE_FEATURE_FLAGS;exports.NEEDLE_ENGINE_MODULES=e.MODULES;exports.NEKeyboardEvent=e.NEKeyboardEvent;exports.NEPointerEvent=e.NEPointerEvent;exports.NeedleButtonElement=e.NeedleButtonElement;exports.NeedleEngine=e.ContextRegistry;Object.defineProperty(exports,"NeedleEngineModelLoader",{enumerable:!0,get:()=>e.NeedleEngineModelLoader});exports.NeedleEngineWebComponent=e.NeedleEngineWebComponent;exports.NeedleMenu=e.NeedleMenu;exports.NeedlePatchesKey=e.NeedlePatchesKey;exports.NeedleUSDZExporter=e.USDZExporter;exports.NeedleXRController=e.NeedleXRController;exports.NeedleXRSession=e.NeedleXRSession;exports.NeedleXRSync=e.NeedleXRSync;exports.NeedleXRUtils=e.NeedleXRUtils;exports.NestedGltf=e.NestedGltf;exports.NetworkConnection=e.NetworkConnection;exports.NetworkedStreamEvents=e.NetworkedStreamEvents;exports.NetworkedStreams=e.NetworkedStreams;exports.Networking=e.Networking;exports.NewInstanceModel=e.NewInstanceModel;exports.NoiseModule=e.NoiseModule;exports.ObjectRaycaster=e.ObjectRaycaster;exports.ObjectUtils=e.ObjectUtils;exports.OffsetConstraint=e.OffsetConstraint;exports.OneEuroFilter=e.OneEuroFilter;exports.OneEuroFilterXYZ=e.OneEuroFilterXYZ;exports.OpenURL=e.OpenURL;exports.OrbitControls=e.OrbitControls;exports.Outline=e.Outline;exports.OwnershipEvent=e.OwnershipEvent;exports.OwnershipModel=e.OwnershipModel;exports.PUBLIC_KEY=e.PUBLIC_KEY;exports.Padding=e.Padding;exports.ParticleBurst=e.ParticleBurst;exports.ParticleSubEmitter=e.ParticleSubEmitter;exports.ParticleSystem=e.ParticleSystem;exports.ParticleSystemBaseBehaviour=e.ParticleSystemBaseBehaviour;exports.ParticleSystemRenderer=e.ParticleSystemRenderer;exports.ParticleSystemShapeType=e.ParticleSystemShapeType;exports.PeerHandle=e.PeerHandle;exports.PeerNetworking=e.PeerNetworking;exports.Physics=e.Physics;exports.PhysicsExtension=e.PhysicsExtension;exports.PhysicsMaterialCombine=e.PhysicsMaterialCombine;exports.PixelationEffect=e.PixelationEffect;exports.PlayAnimationOnClick=e.PlayAnimationOnClick;exports.PlayAudioOnClick=e.PlayAudioOnClick;exports.PlayableDirector=e.PlayableDirector;exports.PlayerColor=e.PlayerColor;exports.PlayerState=e.PlayerState;exports.PlayerStateEvent=e.PlayerStateEvent;exports.PlayerSync=e.PlayerSync;exports.PlayerView=e.PlayerView;exports.PlayerViewManager=e.PlayerViewManager;exports.PointerEventData=e.PointerEventData;exports.PointerType=e.PointerType;exports.PostProcessingEffect=e.PostProcessingEffect;exports.PostProcessingEffectOrder=e.PostProcessingEffectOrder;exports.PostProcessingHandler=e.PostProcessingHandler;exports.PostProcessingManager=e.Volume;exports.PreliminaryAction=e.PreliminaryAction;exports.PreliminaryTrigger=e.PreliminaryTrigger;Object.defineProperty(exports,"PreviewHelper",{enumerable:!0,get:()=>e.PreviewHelper});exports.PrimitiveType=e.PrimitiveType;exports.Progress=e.Progress;exports.PromiseAllWithErrors=e.PromiseAllWithErrors;exports.PromiseErrorResult=e.PromiseErrorResult;exports.RGBAColor=e.RGBAColor;exports.RapierPhysics=e.RapierPhysics;exports.RawImage=e.RawImage;exports.RaycastOptions=e.RaycastOptions;exports.Rect=e.Rect;exports.RectTransform=e.RectTransform;exports.ReflectionProbe=e.ReflectionProbe;exports.RegisteredAnimationInfo=e.RegisteredAnimationInfo;exports.RemoteSkybox=e.RemoteSkybox;exports.RenderTexture=e.RenderTexture;exports.RenderTextureSerializer=e.RenderTextureSerializer;exports.Renderer=e.Renderer;exports.RendererData=e.RendererData;exports.RendererLightmap=e.RendererLightmap;exports.Rigidbody=e.Rigidbody;exports.RigidbodyConstraints=e.RigidbodyConstraints;exports.RoomEvents=e.RoomEvents;exports.RotationBySpeedModule=e.RotationBySpeedModule;exports.RotationOverLifetimeModule=e.RotationOverLifetimeModule;exports.SceneLightSettings=e.SceneLightSettings;exports.SceneSwitcher=e.SceneSwitcher;exports.ScreenCapture=e.ScreenCapture;exports.ScreenSpaceAmbientOcclusion=e.ScreenSpaceAmbientOcclusion;exports.ScreenSpaceAmbientOcclusionN8=e.ScreenSpaceAmbientOcclusionN8;exports.ScrollFollow=e.ScrollFollow;exports.SeeThrough=e.SeeThrough;exports.SendQueue=e.SendQueue;exports.SerializationContext=e.SerializationContext;exports.SetActiveOnClick=e.SetActiveOnClick;exports.ShadowCatcher=e.ShadowCatcher;exports.ShapeModule=e.ShapeModule;exports.ShapeOverlapResult=e.ShapeOverlapResult;exports.SharpeningEffect=e.SharpeningEffect;exports.SignalAsset=e.SignalAsset;exports.SignalReceiver=e.SignalReceiver;exports.SignalReceiverEvent=e.SignalReceiverEvent;exports.SignalTrackHandler=e.SignalTrackHandler;exports.Size=e.Size;exports.SizeBySpeedModule=e.SizeBySpeedModule;exports.SizeOverLifetimeModule=e.SizeOverLifetimeModule;exports.SkinnedMeshRenderer=e.SkinnedMeshRenderer;exports.SmoothFollow=e.SmoothFollow;exports.SpatialGrabRaycaster=e.SpatialGrabRaycaster;exports.SpatialHtml=e.SpatialHtml;exports.SpatialTrigger=e.SpatialTrigger;exports.SpatialTriggerReceiver=e.SpatialTriggerReceiver;exports.SpectatorCamera=e.SpectatorCamera;exports.SphereCollider=e.SphereCollider;exports.SphereIntersection=e.SphereIntersection;exports.SplineContainer=e.SplineContainer;exports.SplineData=e.SplineData;Object.defineProperty(exports,"SplineUtils",{enumerable:!0,get:()=>e.SplineUtils});exports.SplineWalker=e.SplineWalker;exports.Sprite=e.Sprite;exports.SpriteData=e.SpriteData;exports.SpriteRenderer=e.SpriteRenderer;exports.SpriteSheet=e.SpriteSheet;exports.StateMachineBehaviour=e.StateMachineBehaviour;exports.StreamEndedEvent=e.StreamEndedEvent;exports.StreamReceivedEvent=e.StreamReceivedEvent;exports.SubEmitterSystem=e.SubEmitterSystem;exports.SyncedCamera=e.SyncedCamera;exports.SyncedRoom=e.SyncedRoom;exports.SyncedTransform=e.SyncedTransform;exports.TapGestureTrigger=e.TapGestureTrigger;exports.TeleportTarget=e.TeleportTarget;exports.TestRunner=e.TestRunner;exports.TestSimulateUserData=e.TestSimulateUserData;exports.Text=e.Text;exports.TextBuilder=e.TextBuilder;exports.TextExtension=e.TextExtension;exports.TextureSheetAnimationModule=e.TextureSheetAnimationModule;exports.TiltShiftEffect=e.TiltShiftEffect;exports.Time=e.Time;exports.ToneMappingEffect=e.ToneMappingEffect;exports.TrackHandler=e.TrackHandler;exports.TrackType=e.TrackType;exports.TrailModule=e.TrailModule;exports.TransformData=e.TransformData;exports.TransformGizmo=e.TransformGizmo;exports.TriggerBuilder=e.TriggerBuilder;exports.TriggerModel=e.TriggerModel;exports.TypeStore=e.TypeStore;exports.UIRaycastUtils=e.UIRaycastUtils;exports.UIRootComponent=e.UIRootComponent;exports.USDDocument=e.USDDocument;exports.USDObject=e.USDObject;exports.USDWriter=e.USDWriter;exports.USDZExporter=e.USDZExporter$1;exports.USDZText=e.USDZText;exports.USDZUIExtension=e.USDZUIExtension;exports.UriSerializer=e.UriSerializer;exports.UsageMarker=e.UsageMarker;exports.UserJoinedOrLeftRoomModel=e.UserJoinedOrLeftRoomModel;exports.VERSION=e.VERSION;exports.VariantAction=e.VariantAction;exports.VelocityOverLifetimeModule=e.VelocityOverLifetimeModule;exports.VerticalLayoutGroup=e.VerticalLayoutGroup;exports.VideoPlayer=e.VideoPlayer;Object.defineProperty(exports,"ViewBox",{enumerable:!0,get:()=>e.ViewBox});exports.ViewDevice=e.ViewDevice;exports.Vignette=e.Vignette;exports.VisibilityAction=e.VisibilityAction;exports.Voip=e.Voip;exports.Volume=e.Volume;exports.VolumeParameter=e.VolumeParameter;exports.VolumeProfile=e.VolumeProfile;exports.WaitForFrames=e.WaitForFrames;exports.WaitForPromise=e.WaitForPromise;exports.WaitForSeconds=e.WaitForSeconds;exports.Watch=e.Watch;exports.WebARCameraBackground=e.WebARCameraBackground;exports.WebARSessionRoot=e.WebARSessionRoot;exports.WebXR=e.WebXR;exports.WebXRButtonFactory=e.WebXRButtonFactory;exports.WebXRImageTracking=e.WebXRImageTracking;exports.WebXRImageTrackingModel=e.WebXRImageTrackingModel;exports.WebXRPlaneTracking=e.WebXRPlaneTracking;exports.WebXRTrackedImage=e.WebXRTrackedImage;exports.XRControllerFollow=e.XRControllerFollow;exports.XRControllerModel=e.XRControllerModel;exports.XRControllerMovement=e.XRControllerMovement;exports.XRFlag=e.XRFlag;exports.XRRig=e.XRRig;exports.XRState=e.XRState;exports.XRStateFlag=e.XRStateFlag;exports.__Ignore=e.__Ignore;exports.__internalNotifyObjectDestroyed=e.__internalNotifyObjectDestroyed;exports.activeInHierarchyFieldName=e.activeInHierarchyFieldName;exports.addAttributeChangeCallback=e.addAttributeChangeCallback;exports.addComponent=e.addComponent;exports.addCustomExtensionPlugin=e.addCustomExtensionPlugin;exports.addNewComponent=e.addNewComponent;exports.addPatch=e.addPatch;exports.apply=e.apply;exports.applyHMRChanges=e.applyHMRChanges;exports.applyPrototypeExtensions=e.applyPrototypeExtensions;exports.beginListenDestroy=e.beginListenDestroy;exports.beginListenInstantiate=e.beginListenInstantiate;exports.binaryIdentifierCasts=e.binaryIdentifierCasts;exports.build_scene_functions=e.build_scene_functions;exports.builtinComponentKeyName=e.builtinComponentKeyName;exports.calculateProgress01=e.calculateProgress01;exports.clearBalloonMessages=e.clearMessages;exports.clearOverlayMessages=e.clearMessages;Object.defineProperty(exports,"colorSerializer",{enumerable:!0,get:()=>e.colorSerializer});exports.compareAssociation=e.compareAssociation;Object.defineProperty(exports,"componentSerializer",{enumerable:!0,get:()=>e.componentSerializer});exports.copyTexture=e.copyTexture;exports.createMotion=e.createMotion;exports.debugNet=e.debugNet;exports.debugOwner=e.debugOwner;exports.decompressGpuTexture=e.decompressGpuTexture;exports.deepClone=e.deepClone;exports.delay=e.delay;exports.delayForFrames=e.delayForFrames;exports.deserializeObject=e.deserializeObject;exports.destroy=e.destroy;exports.destroyComponentInstance=e.destroyComponentInstance;exports.determineMimeTypeFromExtension=e.determineMimeTypeFromExtension;exports.disposeObjectResources=e.disposeObjectResources;exports.disposeStream=e.disposeStream;exports.editorGuidKeyName=e.editorGuidKeyName;exports.enableSpatialConsole=e.enableSpatialConsole;Object.defineProperty(exports,"eventListSerializer",{enumerable:!0,get:()=>e.eventListSerializer});exports.exportAsGLTF=e.exportAsGLTF;exports.findByGuid=e.findByGuid;exports.findObjectOfType=e.findObjectOfType;exports.findObjectsOfType=e.findObjectsOfType;exports.findResourceUsers=e.findResourceUsers;exports.fitCamera=e.fitCamera;exports.fitObjectIntoVolume=e.fitObjectIntoVolume;exports.foreachComponent=e.foreachComponent;exports.foreachComponentEnumerator=e.foreachComponentEnumerator;exports.forward=e.forward;exports.generateQRCode=e.generateQRCode;exports.generateSeed=e.generateSeed;exports.getBoundingBox=e.getBoundingBox;exports.getCameraController=e.getCameraController;exports.getComponent=e.getComponent;exports.getComponentInChildren=e.getComponentInChildren;exports.getComponentInParent=e.getComponentInParent;exports.getComponents=e.getComponents;exports.getComponentsInChildren=e.getComponentsInChildren;exports.getComponentsInParent=e.getComponentsInParent;exports.getFormattedDate=e.getFormattedDate;exports.getIconElement=e.getIconElement;exports.getIconTexture=e.getIconTexture;exports.getLoader=e.getLoader;exports.getOrAddComponent=e.getOrAddComponent;exports.getParam=e.getParam;exports.getParentHierarchyPath=e.getParentHierarchyPath;exports.getPath=e.getPath;exports.getPeerOptions=e.getPeerOptions;exports.getPeerjsInstance=e.getPeerjsInstance;exports.getResourceUserCount=e.getResourceUserCount;exports.getTempColor=e.getTempColor;exports.getTempQuaternion=e.getTempQuaternion;exports.getTempVector=e.getTempVector;exports.getUrlParams=e.getUrlParams;exports.getVisibleInCustomShadowRendering=e.getVisibleInCustomShadowRendering;exports.getWorldDirection=e.getWorldDirection;exports.getWorldEuler=e.getWorldEuler;exports.getWorldPosition=e.getWorldPosition;exports.getWorldQuaternion=e.getWorldQuaternion;exports.getWorldRotation=e.getWorldRotation;exports.getWorldScale=e.getWorldScale;exports.hasCommercialLicense=e.hasCommercialLicense;exports.hasIndieLicense=e.hasIndieLicense;exports.hasPointerEventComponent=e.hasPointerEventComponent;exports.hasProLicense=e.hasProLicense;exports.hideDebugConsole=e.hideDebugConsole;exports.imageToCanvas=e.imageToCanvas;exports.initAddressableSerializers=e.initAddressableSerializers;exports.initBuiltinSerializers=e.initBuiltinSerializers;exports.initVolumeParameterSerializer=e.initVolumeParameterSerializer;exports.instantiate=e.instantiate;exports.invokeLoadedImportPluginHooks=e.invokeLoadedImportPluginHooks;exports.invokeXRSessionEnd=e.invokeXRSessionEnd;exports.invokeXRSessionStart=e.invokeXRSessionStart;exports.isActiveInHierarchy=e.isActiveInHierarchy;exports.isActiveSelf=e.isActiveSelf;exports.isAndroidDevice=e.isAndroidDevice;exports.isAnimationAction=e.isAnimationAction;exports.isComponent=e.isComponent;exports.isDebugMode=e.isDebugMode;exports.isDesktop=e.isDesktop;exports.isDestroyed=e.isDestroyed;exports.isDevEnvironment=e.isDevEnvironment;exports.isDisposed=e.isDisposed;exports.isExporting=e.isExporting;exports.isGLTFModel=e.isGLTFModel;exports.isHostedOnGlitch=e.isHostedOnGlitch;exports.isHotReloadEnabled=e.isHotReloadEnabled;exports.isHotReloading=e.isHotReloading;exports.isIPad=e.isIPad;exports.isIconElement=e.isIconElement;exports.isLocalNetwork=e.isLocalNetwork;exports.isMacOS=e.isMacOS;exports.isMobileDevice=e.isMobileDevice;exports.isMozillaXR=e.isMozillaXR;exports.isQuest=e.isQuest;exports.isResourceTrackingEnabled=e.isResourceTrackingEnabled;exports.isSafari=e.isSafari;exports.isUsingInstancing=e.isUsingInstancing;exports.isiOS=e.isiOS;exports.isiPad=e.isiPad;exports.loadAsset=e.loadAsset;exports.loadPMREM=e.loadPMREM;exports.loadSync=e.loadSync;exports.logHierarchy=e.logHierarchy;exports.lookAtInverse=e.lookAtInverse;exports.lookAtObject=e.lookAtObject;exports.lookAtScreenPoint=e.lookAtScreenPoint;exports.makeId=e.makeId;exports.makeIdFromRandomWords=e.makeIdFromRandomWords;exports.makeNameSafeForUSD=e.makeNameSafe;exports.markAsInstancedRendered=e.markAsInstancedRendered;exports.microphonePermissionsGranted=e.microphonePermissionsGranted;exports.nameof=e.nameof;exports.nameofFactory=e.nameofFactory;Object.defineProperty(exports,"objectSerializer",{enumerable:!0,get:()=>e.objectSerializer});exports.offXRSessionEnd=e.offXRSessionEnd;exports.offXRSessionStart=e.offXRSessionStart;exports.onAfterRender=e.onAfterRender;exports.onBeforeRender=e.onBeforeRender;exports.onClear=e.onClear;exports.onDestroy=e.onDestroy;exports.onInitialized=e.onInitialized;exports.onStart=e.onStart;exports.onUpdate=e.onUpdate;exports.onXRSessionEnd=e.onXRSessionEnd;exports.onXRSessionStart=e.onXRSessionStart;exports.parseSync=e.parseSync;exports.placeOnSurface=e.placeOnSurface;exports.postprocessFBXMaterials=e.postprocessFBXMaterials;exports.prefix=e.prefix;exports.pushState=e.pushState;exports.randomNumber=e.randomNumber;exports.registerBinaryType=e.registerBinaryType;exports.registerComponent=e.registerComponent;exports.registerComponentExtension=e.registerComponentExtension;exports.registerCustomEffectType=e.registerCustomEffectType;exports.registerExportExtensions=e.registerExportExtensions;exports.registerExtensions=e.registerExtensions;exports.registerHotReloadType=e.registerHotReloadType;exports.registerLoader=e.registerLoader;exports.registerPrefabProvider=e.registerPrefabProvider;exports.registerPrototypeExtensions=e.registerPrototypeExtensions;exports.registerType=e.registerType;exports.relativePathPrefix=e.relativePathPrefix;exports.removeAttributeChangeCallback=e.removeAttributeChangeCallback;exports.removeComponent=e.removeComponent;exports.removeCustomImportExtensionType=e.removeCustomImportExtensionType;exports.removePatch=e.removePatch;exports.resolveUrl=e.resolveUrl;exports.sanitizeString=e.sanitizeString;exports.saveImage=e.saveImage;exports.screenshot=e.screenshot;exports.screenshot2=e.screenshot2;exports.sendDestroyed=e.sendDestroyed;exports.serializable=e.serializable;exports.serializeObject=e.serializeObject;exports.serializeable=e.serializeable;exports.setActive=e.setActive;exports.setAllowBalloonMessages=e.setAllowBalloonMessages;exports.setAllowOverlayMessages=e.setAllowOverlayMessages;exports.setAutoFitEnabled=e.setAutoFitEnabled;exports.setCameraController=e.setCameraController;exports.setDestroyed=e.setDestroyed;exports.setDevEnvironment=e.setDevEnvironment;exports.setDisposable=e.setDisposable;exports.setDontDestroy=e.setDontDestroy;exports.setOrAddParamsToUrl=e.setOrAddParamsToUrl;exports.setParam=e.setParam;exports.setParamWithoutReload=e.setParamWithoutReload;exports.setPeerOptions=e.setPeerOptions;exports.setResourceTrackingEnabled=e.setResourceTrackingEnabled;exports.setState=e.setState;exports.setVisibleInCustomShadowRendering=e.setVisibleInCustomShadowRendering;exports.setWorldEuler=e.setWorldEuler;exports.setWorldPosition=e.setWorldPosition;exports.setWorldPositionXYZ=e.setWorldPositionXYZ;exports.setWorldQuaternion=e.setWorldQuaternion;exports.setWorldQuaternionXYZW=e.setWorldQuaternionXYZW;exports.setWorldRotation=e.setWorldRotation;exports.setWorldRotationXYZ=e.setWorldRotationXYZ;exports.setWorldScale=e.setWorldScale;exports.showBalloonError=e.showBalloonError;exports.showBalloonMessage=e.showBalloonMessage;exports.showBalloonWarning=e.showBalloonWarning;exports.showDebugConsole=e.showDebugConsole;exports.slerp=e.slerp;exports.syncDestroy=e.syncDestroy;exports.syncField=e.syncField;exports.syncInstantiate=e.syncInstantiate;exports.textureToCanvas=e.textureToCanvas;exports.toSourceId=e.toSourceId;exports.tryCastBinary=e.tryCastBinary;exports.tryDetermineMimetypeFromBinary=e.tryDetermineMimetypeFromBinary;exports.tryDetermineMimetypeFromURL=e.tryDetermineMimetypeFromURL;exports.tryFindObject=e.tryFindObject;exports.tryGetGuid=e.tryGetGuid;exports.unregisterHotReloadType=e.unregisterHotReloadType;exports.unwatchWrite=e.unwatchWrite;exports.useForAutoFit=e.useForAutoFit;exports.validate=e.validate;exports.watchWrite=e.watchWrite;exports.NEEDLE_progressive=a.NEEDLE_progressive;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "5.0.8
|
|
3
|
+
"version": "5.0.8",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
|
|
5
5
|
"main": "dist/needle-engine.min.js",
|
|
6
6
|
"exports": {
|
|
@@ -204,4 +204,4 @@
|
|
|
204
204
|
"module": "lib/needle-engine.js",
|
|
205
205
|
"typings": "lib/needle-engine.d.ts",
|
|
206
206
|
"types": "lib/needle-engine.d.ts"
|
|
207
|
-
}
|
|
207
|
+
}
|