@needle-tools/engine 4.5.6-next.9964a29 → 4.5.7-next.029f239
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/CHANGELOG.md +3 -0
- package/dist/{needle-engine.bundle-D2L7sMfH.umd.cjs → needle-engine.bundle-BAC1t3iE.umd.cjs} +3 -3
- package/dist/{needle-engine.bundle-CZmu3wcW.js → needle-engine.bundle-CqkJzUmA.js} +8 -8
- package/dist/{needle-engine.bundle-DUlN8wdu.min.js → needle-engine.bundle-D3-SYyvs.min.js} +2 -2
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/engine_addressables.js +3 -3
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_gameobject.js +6 -3
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/engine_addressables.ts +3 -3
- package/src/engine/engine_gameobject.ts +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,9 @@ All notable changes to this package will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [4.5.7] - 2025-06-10
|
|
8
|
+
- Fix: `instantiate({ visible: false })` should only set the root object's visible state
|
|
9
|
+
|
|
7
10
|
## [4.5.6] - 2025-05-21
|
|
8
11
|
- Add: `Cylinder` primitive to ObjectUtils
|
|
9
12
|
- Add: QR code now displays the URL that will open
|
package/dist/{needle-engine.bundle-D2L7sMfH.umd.cjs → needle-engine.bundle-BAC1t3iE.umd.cjs}
RENAMED
|
@@ -130,7 +130,7 @@ Open this page to get the console: `+t.toString())}const o=exports.DeviceUtiliti
|
|
|
130
130
|
#__vconsole .vc-mask {
|
|
131
131
|
overflow: hidden;
|
|
132
132
|
}
|
|
133
|
-
`,_i==null||_i.prepend(i),o===!0&&Tm()<=0&&_0(),console.log("🌵 Debug console has loaded")}},t.onerror=()=>{console.warn("🌵 Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),Sl=!1,Wt=null},t.src="https://cdn.jsdelivr.net/npm/vconsole@3.9.1/dist/vconsole.min.js",document.body.appendChild(t)}function qS(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("needle-console","🌵 Inspect glTF"),t=()=>document.querySelector("#__vc_plug_"+o._id+" iframe");return o.on("renderTab",function(e){const i=globalThis["needle:codegen_files"];if(!i||i.length===0)return;let n=globalThis["needle:codegen_files"][0];const s=n.indexOf("?");s>-1&&(n=n.substring(0,s));const l=location.protocol+"//"+location.host+location.pathname+"/"+n,c=encodeURIComponent(l);o.fullUrl="https://viewer.needle.tools?inspect&file="+c;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';e(h)}),o.on("show",function(){const e=t();e&&e.src!==o.fullUrl&&(e.src=o.fullUrl)}),o.on("hide",function(){const e=t();e&&(e.src="")}),o.on("addTopBar",function(e){var i=new Array;i.push({name:"Open in new window ↗",onClick:function(n){window.open(o.fullUrl,"_blank"),Wt==null||Wt.hide()}}),i.push({name:"Reload",onClick:function(n){const s=t();s&&(s.src=o.fullUrl)}}),i.push({name:"Fullscreen",onClick:function(n){const s=t();s.requestFullscreen?s.requestFullscreen():s.webkitRequestFullscreen instanceof Function&&s.webkitRequestFullscreen()}}),e(i)}),o}function XS(){const o=document.querySelector("#__vconsole .vc-switch");return o||null}function QS(){const o=document.querySelector("#__vconsole");return o||null}const w0=x("debugdefines");Mo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');Mo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');Mo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');Mo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');Mo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.5.
|
|
133
|
+
`,_i==null||_i.prepend(i),o===!0&&Tm()<=0&&_0(),console.log("🌵 Debug console has loaded")}},t.onerror=()=>{console.warn("🌵 Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),Sl=!1,Wt=null},t.src="https://cdn.jsdelivr.net/npm/vconsole@3.9.1/dist/vconsole.min.js",document.body.appendChild(t)}function qS(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("needle-console","🌵 Inspect glTF"),t=()=>document.querySelector("#__vc_plug_"+o._id+" iframe");return o.on("renderTab",function(e){const i=globalThis["needle:codegen_files"];if(!i||i.length===0)return;let n=globalThis["needle:codegen_files"][0];const s=n.indexOf("?");s>-1&&(n=n.substring(0,s));const l=location.protocol+"//"+location.host+location.pathname+"/"+n,c=encodeURIComponent(l);o.fullUrl="https://viewer.needle.tools?inspect&file="+c;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';e(h)}),o.on("show",function(){const e=t();e&&e.src!==o.fullUrl&&(e.src=o.fullUrl)}),o.on("hide",function(){const e=t();e&&(e.src="")}),o.on("addTopBar",function(e){var i=new Array;i.push({name:"Open in new window ↗",onClick:function(n){window.open(o.fullUrl,"_blank"),Wt==null||Wt.hide()}}),i.push({name:"Reload",onClick:function(n){const s=t();s&&(s.src=o.fullUrl)}}),i.push({name:"Fullscreen",onClick:function(n){const s=t();s.requestFullscreen?s.requestFullscreen():s.webkitRequestFullscreen instanceof Function&&s.webkitRequestFullscreen()}}),e(i)}),o}function XS(){const o=document.querySelector("#__vconsole .vc-switch");return o||null}function QS(){const o=document.querySelector("#__vconsole");return o||null}const w0=x("debugdefines");Mo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');Mo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');Mo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');Mo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');Mo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.5.7";');Mo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');Mo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Tue Jun 10 2025 10:04:56 GMT+0000 (Coordinated Universal Time)";');Mo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const pn="4.5.7",Cu="undefined",zm="Tue Jun 10 2025 10:04:56 GMT+0000 (Coordinated Universal Time)";w0&&console.log(`Engine version: ${pn} (generator: ${Cu})
|
|
134
134
|
Project built at ${zm}`);const ua=NEEDLE_PUBLIC_KEY,Ps="needle_isActiveInHierarchy",Qo="builtin_components",Jl="needle_editor_guid";function Mo(o){try{(0,eval)(o)}catch(t){w0&&console.error(t)}}let x0,e_=null;function gn(){return x0}function Nm(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}e_!==o&&(e_=o,x0=new o)}const wi=Symbol("shadowDomOwner"),YS=x("debugpatch");function Pu(o,t,e,i){const n=YS===t;if(!e&&!i)return;const s=t+"___needle";ZS(o,t,e,i);const a=Object.getOwnPropertyDescriptor(o,t),l=o[t];n&&console.log("Patch",o.constructor.name,t,a,l),a?(n&&console.log("Apply patch with existing descriptor",o.constructor.name,t,a),typeof a.value=="function"&&(o[t]=i_(a.value,o,t))):(n&&console.log("Create patch with new property",o.constructor.name,t,a),Object.defineProperty(o,t,{set:function(c){if(typeof c=="function")this[s]=i_(c,o,t);else{const h=this[s];S0(o,t,this,h,c),this[s]=c,C0(o,t,this,h,c)}},get:function(){const c=this[s];return typeof c=="function"&&c[s]?c[s]:c}}))}function KS(o,t,e){const i=Vm(o,t);if(i)for(let n=i.length-1;n>=0;n--){const s=i[n];s.prefix===e&&(s.prefix=null),s.postfix===e&&(s.postfix=null),!s.prefix&&!s.postfix&&i.splice(n,1)}}const t_=Symbol("Needle:Patches:WrappedFunction");function i_(o,t,e){if(o[t_])return o;const i=function(...n){S0(t,e,this,...n);const s=o.apply(this,n);return C0(t,e,this,s,...n),s};return i[t_]=!0,i}const yd="Needle:Patches";function Np(){return globalThis[yd]||(globalThis[yd]=new WeakMap),globalThis[yd]}function Vm(o,t){const e=Np().get(o);return e?e.get(t):null}function ZS(o,t,e,i){let n=Np().get(o);n||(n=new Map,Np().set(o,n));let s=n.get(t);s||(s=[],n.set(t,s)),s.push({prefix:e,postfix:i})}function S0(o,t,e,...i){var s;if(!e)return;const n=Vm(o,t);if(n)for(const a of n)(s=a.prefix)==null||s.call(e,...i)}function C0(o,t,e,i,...n){var a;if(!e)return;const s=Vm(o,t);if(s)for(const l of s)(a=l.postfix)==null||a.call(e,i,...n)}const Ia=[];function Mu(o){Ia.indexOf(o)===-1&&Ia.push(o)}function JS(o){const t=Ia.indexOf(o);t!==-1&&Ia.splice(t,1)}const ja=[];function $m(o){ja.indexOf(o)===-1&&ja.push(o)}function eC(o){const t=ja.indexOf(o);t!==-1&&ja.splice(t,1)}function P0(o){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-start",{detail:o}));for(let t=0;t<Ia.length;t++)Ia[t](o)}function M0(o){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-end",{detail:o}));for(let t=0;t<ja.length;t++)ja[t](o)}const Ze=x("debuginput");var Ou=(o=>(o.Mouse="mouse",o.Touch="touch",o.Controller="controller",o.Hand="hand",o))(Ou||{}),Ee=(o=>(o.PointerDown="pointerdown",o.PointerUp="pointerup",o.PointerMove="pointermove",o.KeyDown="keydown",o.KeyUp="keyup",o.KeyPressed="keypress",o))(Ee||{});class us extends PointerEvent{constructor(e,i,n){super(e,n);r(this,"clientZ");r(this,"deviceIndex");r(this,"origin");r(this,"source");r(this,"mode");r(this,"_ray");r(this,"space");r(this,"isClick",!1);r(this,"isDoubleClick",!1);r(this,"_used",!1);r(this,"_pointerid");r(this,"_pointerType");r(this,"_type");r(this,"metadata",{});r(this,"intersections",new Array);r(this,"_immediatePropagationStopped",!1);r(this,"_propagationStopped",!1);this.clientZ=n.clientZ,this._pointerid=n.pointerId,this._pointerType=n.pointerType,this._type=e,this.deviceIndex=n.deviceIndex,this.origin=n.origin,this.source=i,this.mode=n.mode,this._ray=n.ray,this.space=n.device}get isSpatial(){return this.mode!="screen"}get ray(){return this._ray||(this._ray=new d.Ray(this.space.worldPosition.clone(),this.space.worldForward.clone())),this._ray}set ray(e){this._ray=e}get hasRay(){return this._ray!==void 0}get used(){return this._used}use(){this._used=!0}get pointerId(){return this._pointerid}get pointerType(){return this._pointerType}get type(){return this._type}get immediatePropagationStopped(){return this._immediatePropagationStopped}get propagationStopped(){return this._immediatePropagationStopped||this._propagationStopped}stopImmediatePropagation(){var e;this._immediatePropagationStopped=!0,super.stopImmediatePropagation(),(e=this.source)==null||e.stopImmediatePropagation()}stopPropagation(){var e;this._propagationStopped=!0,super.stopPropagation(),(e=this.source)==null||e.stopPropagation(),Ze&&console.warn("Stop propagation...",this.pointerId,this.pointerType)}}class zl extends KeyboardEvent{constructor(e,i,n){super(e,n);r(this,"source");this.source=i}stopImmediatePropagation(){var e;super.stopImmediatePropagation(),(e=this.source)==null||e.stopImmediatePropagation()}}class tC{constructor(t){r(this,"key");r(this,"keyType");r(this,"source");this.key=t.key,this.keyType=t.type,this.source=t}}var ni=(o=>(o[o.Early=-100]="Early",o[o.Default=0]="Default",o[o.Late=100]="Late",o))(ni||{});class O0{constructor(t){r(this,"_eventListeners",{});r(this,"_doubleClickTimeThreshold",.2);r(this,"_longPressTimeThreshold",1);r(this,"_setCursorTypes",[]);r(this,"context");r(this,"_pointerDown",[!1]);r(this,"_pointerUp",[!1]);r(this,"_pointerClick",[!1]);r(this,"_pointerDoubleClick",[!1]);r(this,"_pointerPressed",[!1]);r(this,"_pointerPositions",[new d.Vector2]);r(this,"_pointerPositionsLastFrame",[new d.Vector2]);r(this,"_pointerPositionsDelta",[new d.Vector2]);r(this,"_pointerPositionsRC",[new d.Vector2]);r(this,"_pointerPositionDown",[new d.Vector3]);r(this,"_pointerDownTime",[]);r(this,"_pointerUpTime",[]);r(this,"_pointerUpTimestamp",[]);r(this,"_pointerIds",[]);r(this,"_pointerTypes",[""]);r(this,"_mouseWheelChanged",[!1]);r(this,"_mouseWheelDeltaY",[0]);r(this,"_pointerEvent",[]);r(this,"_pointerEventsPressed",[]);r(this,"_pointerSpace",[]);r(this,"_pressedStack",new Map);r(this,"_htmlEventSource");r(this,"onLostFocus",()=>{for(const t in this.keysPressed)this.keysPressed[t].pressed=!1});r(this,"_receivedPointerMoveEventsThisFrame",new Array);r(this,"onEndOfFrame",()=>{this._receivedPointerMoveEventsThisFrame.length=0;for(let t=0;t<this._pointerUp.length;t++)this._pointerUp[t]=!1;for(let t=0;t<this._pointerDown.length;t++)this._pointerDown[t]=!1;for(let t=0;t<this._pointerClick.length;t++)this._pointerClick[t]=!1;for(let t=0;t<this._pointerDoubleClick.length;t++)this._pointerDoubleClick[t]=!1;for(const t of this._pointerPositionsDelta)t.set(0,0);for(let t=0;t<this._mouseWheelChanged.length;t++)this._mouseWheelChanged[t]=!1;for(let t=0;t<this._mouseWheelDeltaY.length;t++)this._mouseWheelDeltaY[t]=0});r(this,"onContextMenu",t=>{this.canReceiveInput(t)!==!1&&t instanceof PointerEvent&&t.pointerType});r(this,"keysPressed",{});r(this,"onKeyDown",t=>{if(Ze&&console.log(`key down ${t.code}, ${this.context.application.hasFocus}`,t),!this.context.application.hasFocus)return;const e=this.keysPressed[t.code];if(e&&e.pressed)return;this.keysPressed[t.code]={pressed:!0,frame:this.context.time.frameCount+1,startFrame:this.context.time.frameCount+1,key:t.key,code:t.code};const i=new zl("keydown",t,t);this.onDispatchEvent(i)});r(this,"onKeyPressed",t=>{if(!this.context.application.hasFocus)return;const e=this.keysPressed[t.code];if(!e)return;e.pressed=!0,e.frame=this.context.time.frameCount+1;const i=new zl("keypress",t,t);this.onDispatchEvent(i)});r(this,"onKeyUp",t=>{if(!this.context.application.hasFocus)return;const e=this.keysPressed[t.code];if(!e)return;e.pressed=!1,e.frame=this.context.time.frameCount+1;const i=new zl("keyup",t,t);this.onDispatchEvent(i)});r(this,"onWheelWindow",t=>{document.pointerLockElement&&this.onMouseWheel(t)});r(this,"onMouseWheel",t=>{if(this.canReceiveInput(t)===!1)return;this._mouseWheelDeltaY.length<=0&&this._mouseWheelDeltaY.push(0),this._mouseWheelChanged.length<=0&&this._mouseWheelChanged.push(!1),this._mouseWheelChanged[0]=!0;const e=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=e+t.deltaY});r(this,"onPointerDown",t=>{if(this.context.isInAR||this.canReceiveInput(t)===!1)return;t.target instanceof HTMLElement&&t.target.setPointerCapture(t.pointerId);const e=this.getPointerId(t);Ze&&Te(`pointer down #${e}, identifier:${t.pointerId}`);const i=this.getAndUpdateSpatialObjectForScreenPosition(e,t.clientX,t.clientY),n=new us("pointerdown",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:e,button:t.button,clientX:t.clientX,clientY:t.clientY,pointerType:t.pointerType,buttonName:this.getButtonName(t),device:i,pressure:t.pressure});this.onDown(n)});r(this,"onPointerMove",t=>{if(this.context.isInAR||this._receivedPointerMoveEventsThisFrame.includes(t.pointerId))return;this._receivedPointerMoveEventsThisFrame.push(t.pointerId);let e=t.button;t.pointerType==="mouse"&&(e=this.getFirstPressedButtonForPointer(0)??0);const i=this.getPointerId(t,e);e===-1&&(e=i);const n=this.getAndUpdateSpatialObjectForScreenPosition(i,t.clientX,t.clientY),s=new us("pointermove",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:i,button:e,clientX:t.clientX,clientY:t.clientY,pointerType:t.pointerType,buttonName:this.getButtonName(t),device:n,pressure:t.pressure});this.onMove(s)});r(this,"onPointerCancel",t=>{this.context.isInAR||(Ze&&console.log("Pointer cancel",t),this.onPointerUp(t))});r(this,"onPointerUp",t=>{if(this.context.isInAR)return;t.target instanceof HTMLElement&&t.target.releasePointerCapture(t.pointerId);const e=this.getPointerId(t),i=new us("pointerup",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:e,button:t.button,clientX:t.clientX,clientY:t.clientY,pointerType:t.pointerType,buttonName:this.getButtonName(t),device:this.getAndUpdateSpatialObjectForScreenPosition(e,t.clientX,t.clientY),pressure:t.pressure});this.onUp(i),this._pointerIds[e]=-1,Ze&&console.log("ID="+e,"PointerId="+t.pointerId,"ALL:",[...this._pointerIds])});r(this,"onTouchStart",t=>{if(this.context.isInAR)for(let e=0;e<t.changedTouches.length;e++){const i=t.changedTouches[e],n=this.getPointerIndex(i.identifier),s=this.getAndUpdateSpatialObjectForScreenPosition(n,i.clientX,i.clientY),a=new us("pointerdown",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:n,button:0,clientX:i.clientX,clientY:i.clientY,pointerType:"touch",buttonName:"unknown",device:s,pressure:i.force});this.onDown(a)}});r(this,"onTouchMove",t=>{if(this.context.isInAR)for(let e=0;e<t.changedTouches.length;e++){const i=t.changedTouches[e],n=this.getPointerIndex(i.identifier),s=this.getAndUpdateSpatialObjectForScreenPosition(n,i.clientX,i.clientY),a=new us("pointermove",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:n,button:0,clientX:i.clientX,clientY:i.clientY,pointerType:"touch",buttonName:"unknown",device:s,pressure:i.force});this.onMove(a)}});r(this,"onTouchEnd",t=>{if(this.context.isInAR)for(let e=0;e<t.changedTouches.length;e++){const i=t.changedTouches[e],n=this.getPointerIndex(i.identifier),s=new us("pointerup",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:n,button:0,clientX:i.clientX,clientY:i.clientY,pointerType:"touch",buttonName:"unknown",device:this.getAndUpdateSpatialObjectForScreenPosition(n,i.clientX,i.clientY),pressure:i.force});this.onUp(s),this._pointerIds[n]=-1}});r(this,"tempNearPlaneVector",new d.Vector3);r(this,"tempFarPlaneVector",new d.Vector3);r(this,"tempLookMatrix",new d.Matrix4);this.context=t,this.context.post_render_callbacks.push(this.onEndOfFrame)}addEventListener(t,e,i){if(this._eventListeners[t]||(this._eventListeners[t]=[]),!e||typeof e!="function"){console.error("Invalid call to addEventListener: callback is required and must be a function!");return}i?i={...i}:i={};let n=0;(i==null?void 0:i.queue)!=null&&(n=i.queue);const s=this._eventListeners[t],a=s.find(l=>l.priority===n);a?a.listeners.push({callback:e,options:i}):(s.push({priority:n,listeners:[{callback:e,options:i}]}),s.sort((l,c)=>l.priority-c.priority))}removeEventListener(t,e,i){if(!this._eventListeners[t]||!e)return;const n=this._eventListeners[t];if((i==null?void 0:i.queue)!=null){const s=n.find(l=>l.priority===i.queue);if(!s)return;const a=s.listeners.findIndex(l=>l.callback===e);a>=0&&s.listeners.splice(a,1)}else for(const s of n){const a=s.listeners.findIndex(l=>l.callback===e);a>=0&&s.listeners.splice(a,1)}}dispatchEvent(t){var i,n,s,a;let e=!1;if(t instanceof zl){const l=this._eventListeners[t.type];if(l)for(const c of l)for(let h=0;h<c.listeners.length;h++){const u=c.listeners[h];if((n=(i=u.options)==null?void 0:i.signal)!=null&&n.aborted){c.listeners.splice(h,1),h--;continue}u.options.once&&(c.listeners.splice(h,1),h--),u.callback(t)}}if(t instanceof us){const l=this._eventListeners[t.type];if(l)for(const c of l){if(e)break;for(let h=0;h<c.listeners.length;h++){const u=c.listeners[h];if((a=(s=u.options)==null?void 0:s.signal)!=null&&a.aborted){c.listeners.splice(h,1),h--;continue}if(t.immediatePropagationStopped){e=!0,Ze&&console.log("immediatePropagationStopped",t.type);break}else t.propagationStopped&&(e=!0,Ze&&console.log("propagationStopped",t.type));u.options.once&&(c.listeners.splice(h,1),h--),u.callback(t)}}}}get mousePosition(){return this._pointerPositions[0]}get mousePositionRC(){return this._pointerPositionsRC[0]}get mouseDown(){return this._pointerDown[0]}get mouseUp(){return this._pointerUp[0]}get mouseClick(){return this._pointerClick[0]}get mouseDoubleClick(){return this._pointerDoubleClick[0]}get mousePressed(){return this._pointerPressed[0]}get mouseWheelChanged(){return this.getMouseWheelChanged(0)}get click(){return this._pointerClick[0]}get doubleClick(){return this._pointerDoubleClick[0]}getGamepad(t=0){return typeof navigator<"u"&&"getGamepads"in navigator&&navigator.getGamepads()[t]||null}setCursorPointer(){this.setCursor("pointer")}setCursorNormal(){this.unsetCursor("pointer")}setCursor(t){this._setCursorTypes.push(t),this._setCursorTypes.length>10&&this._setCursorTypes.shift(),this.updateCursor()}unsetCursor(t){for(let e=this._setCursorTypes.length-1;e>=0;e--)if(this._setCursorTypes[e]===t){this._setCursorTypes.splice(e,1),this.updateCursor();break}}updateCursor(){var t;((t=this._setCursorTypes)==null?void 0:t.length)==0?this.context.domElement.style.cursor="default":this.context.domElement.style.cursor=this._setCursorTypes[this._setCursorTypes.length-1]}getIsPointerIdInUse(t){for(const e of this._pointerEventsPressed)if(e.pointerId===t&&e.used)return!0;return!1}getPointerPressedCount(){let t=0;for(let e=0;e<this._pointerPressed.length;e++)this._pointerPressed[e]&&t++;return t}getPointerPosition(t){return t>=this._pointerPositions.length?null:this._pointerPositions[t]}getPointerPositionLastFrame(t){return t>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[t]}getPointerPositionDelta(t){return t>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[t]}getPointerPositionRC(t){return t>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[t]}getPointerDown(t){return t>=this._pointerDown.length?!1:this._pointerDown[t]}getPointerUp(t){return t>=this._pointerUp.length?!1:this._pointerUp[t]}getPointerPressed(t){return t>=this._pointerPressed.length?!1:this._pointerPressed[t]}getPointerClicked(t){return t>=this._pointerClick.length?!1:this._pointerClick[t]}getPointerDoubleClicked(t){return t>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[t]}getPointerDownTime(t){return t>=this._pointerDownTime.length?-1:this._pointerDownTime[t]}getPointerUpTime(t){return t>=this._pointerUpTime.length?-1:this._pointerUpTime[t]}getPointerLongPress(t){return t>=this._pointerDownTime.length?!1:this.getPointerPressed(t)&&this.context.time.time-this._pointerDownTime[t]>this._longPressTimeThreshold}getIsMouse(t){return t<0||t>=this._pointerTypes.length?!1:this._pointerTypes[t]==="mouse"}getIsTouch(t){return t<0||t>=this._pointerTypes.length?!1:this._pointerTypes[t]==="touch"}getTouchesPressedCount(){let t=0;for(let e=0;e<this._pointerPressed.length;e++)this._pointerPressed[e]&&this.getIsTouch(e)&&t++;return t}getMouseWheelChanged(t=0){return t>=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[t]}getMouseWheelDeltaY(t=0){return t>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[t]}getPointerEvent(t){if(!(t>=this._pointerEvent.length))return this._pointerEvent[t]??void 0}*foreachPointerId(t){for(let e=0;e<this._pointerTypes.length;e++)if(this._pointerIsActive(e)){if(t!==void 0){const i=this._pointerTypes[e];if(Array.isArray(t)){let n=!1;for(const s of t)if(i===s){n=!0;break}if(!n)continue}else if(t!==i)continue}yield e}}*foreachTouchId(){for(let t=0;t<this._pointerTypes.length;t++)this._pointerTypes[t]==="touch"&&this._pointerIsActive[t]&&(yield t)}_pointerIsActive(t){return t<0?!1:this._pointerPressed[t]||this._pointerDown[t]||this._pointerUp[t]}onDownButton(t,e){let i=this._pressedStack.get(t);i||(i=[],this._pressedStack.set(t,i)),i.push(e)}onReleaseButton(t,e){const i=this._pressedStack.get(t);if(!i)return;const n=i.indexOf(e);n>=0&&i.splice(n,1)}getFirstPressedButtonForPointer(t){const e=this._pressedStack.get(t);if(e)return e[0]}getLatestPressedButtonForPointer(t){const e=this._pressedStack.get(t);if(e)return e[e.length-1]}getKeyDown(t){if(t!==void 0)return this.isKeyDown(t);for(const e in this.keysPressed){const i=this.keysPressed[e];if(i.startFrame===this.context.time.frameCount)return i.key}return null}getKeyPressed(t){if(t!==void 0)return this.isKeyPressed(t);for(const e in this.keysPressed){const i=this.keysPressed[e];if(i.pressed)return i.key}return null}getKeyUp(t){if(t!==void 0)return this.isKeyUp(t);for(const e in this.keysPressed){const i=this.keysPressed[e];return i.pressed===!1&&i.frame===this.context.time.frameCount}return null}isKeyDown(t){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const e=this.getCodeForCommonKeyName(t);if(e!==null){for(const n of e)if(this.isKeyDown(n))return!0;return!1}const i=this.keysPressed[t];return i?i.startFrame===this.context.time.frameCount&&i.pressed:!1}isKeyUp(t){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const e=this.getCodeForCommonKeyName(t);if(e!==null){for(const n of e)if(this.isKeyUp(n))return!0;return!1}const i=this.keysPressed[t];return i?i.frame===this.context.time.frameCount&&i.pressed===!1:!1}isKeyPressed(t){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const e=this.getCodeForCommonKeyName(t);if(e!==null){for(const n of e)if(this.isKeyPressed(n))return!0;return!1}const i=this.keysPressed[t];return i&&i.pressed||!1}getCodeForCommonKeyName(t){if(t.length===1){if(t>="0"&&t<="9")return["Digit"+t];if(t>="a"&&t<="z")return["Key"+t.toUpperCase()];if(t==" ")return["Space"]}switch(t){case"shift":case"Shift":return["ShiftLeft","ShiftRight"];case"control":case"Control":return["ControlLeft","ControlRight"];case"alt":case"Alt":return["AltLeft","AltRight"]}return null}createInputEvent(t){switch(t.type){case"pointerdown":Ze&&Te("Create Pointer down"),this.onDownButton(t.deviceIndex,t.button),this.onDown(t);break;case"pointermove":Ze&&Te("Create Pointer move"),this.onMove(t);break;case"pointerup":Ze&&Te("Create Pointer up"),this.onUp(t),this.onReleaseButton(t.deviceIndex,t.button);break}}convertScreenspaceToRaycastSpace(t){return t.x=(t.x-this.context.domX)/this.context.domWidth*2-1,t.y=-((t.y-this.context.domY)/this.context.domHeight)*2+1,t}bindEvents(){this.unbindEvents(),this._htmlEventSource=this.context.renderer.domElement,window.addEventListener("contextmenu",this.onContextMenu),this._htmlEventSource.addEventListener("pointerdown",this.onPointerDown,{passive:!0}),window.addEventListener("pointermove",this.onPointerMove,{passive:!0,capture:!0}),window.addEventListener("pointerup",this.onPointerUp,{passive:!0}),window.addEventListener("pointercancel",this.onPointerCancel,{passive:!0}),window.addEventListener("touchstart",this.onTouchStart,{passive:!0}),window.addEventListener("touchmove",this.onTouchMove,{passive:!0}),window.addEventListener("touchend",this.onTouchEnd,{passive:!0}),this._htmlEventSource.addEventListener("wheel",this.onMouseWheel,{passive:!0}),window.addEventListener("wheel",this.onWheelWindow,{passive:!0}),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keypress",this.onKeyPressed,!1),window.addEventListener("keyup",this.onKeyUp,!1),window.addEventListener("blur",this.onLostFocus)}unbindEvents(){var t,e;window.removeEventListener("contextmenu",this.onContextMenu),(t=this._htmlEventSource)==null||t.removeEventListener("pointerdown",this.onPointerDown),window.removeEventListener("pointermove",this.onPointerMove),window.removeEventListener("pointerup",this.onPointerUp),window.removeEventListener("pointercancel",this.onPointerCancel),window.removeEventListener("touchstart",this.onTouchStart),window.removeEventListener("touchmove",this.onTouchMove),window.removeEventListener("touchend",this.onTouchEnd),(e=this._htmlEventSource)==null||e.removeEventListener("wheel",this.onMouseWheel,!1),window.removeEventListener("wheel",this.onWheelWindow,!1),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keypress",this.onKeyPressed,!1),window.removeEventListener("keyup",this.onKeyUp,!1),window.removeEventListener("blur",this.onLostFocus)}dispose(){const t=this.context.post_render_callbacks.indexOf(this.onEndOfFrame);t>=0&&this.context.post_render_callbacks.splice(t,1),this.unbindEvents()}canReceiveInput(t){var e;return t.target===((e=this.context.renderer)==null?void 0:e.domElement)||t.target===this.context.domElement||this.context.isInAR||this.context.isInAR&&t.target===document.body&&exports.DeviceUtilities.isMozillaXR()?!0:(Ze&&console.warn("CanReceiveInput:False for",t.target),!1)}getPointerId(t,e){return t.pointerType==="mouse"?0+(e??t.button):this.getPointerIndex(t.pointerId)}getButtonName(t){const e=t.button;if(t.pointerType==="mouse")switch(e){case 0:return"left";case 1:return"middle";case 2:return"right"}return"unknown"}getAndUpdateSpatialObjectForScreenPosition(t,e,i){let n=this._pointerSpace[t];n||(n=new d.Object3D,this._pointerSpace[t]=n),this._pointerSpace[t]=n;const s=this.context.mainCamera;if(s){const a=this.tempNearPlaneVector.set(e,i,-1);this.convertScreenspaceToRaycastSpace(a);const l=this.tempFarPlaneVector.set(a.x,a.y,1);a.unproject(s),l.unproject(s);const c=s.worldUp||$(0,1,0).applyQuaternion(_e(s));this.tempLookMatrix.lookAt(l,a,c),n.position.set(a.x,a.y,a.z),n.quaternion.setFromRotationMatrix(this.tempLookMatrix)}return n}isInRect(t){if(this.context.isInXR)return!0;const e=this.context.domElement.getBoundingClientRect(),i=t.clientX,n=t.clientY,s=i>=e.x&&i<=e.right&&n>=e.y&&n<=e.bottom;return Ze&&!s&&console.log("Not in rect",e,i,n),s}onDown(t){const e=t.pointerId;if(this.getPointerPressed(e)&&console.warn(`Received pointerDown for pointerId that is already pressed: ${e}`,Ze?t:""),Ze&&console.log(t.pointerType,"DOWN",e),!!this.isInRect(t)){for(this.setPointerState(e,this._pointerPressed,!0),this.setPointerState(e,this._pointerDown,!0),this.setPointerStateT(e,this._pointerEvent,t.source);e>=this._pointerTypes.length;)this._pointerTypes.push(t.pointerType);for(this._pointerTypes[e]=t.pointerType;e>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new d.Vector3);for(this._pointerPositionDown[e].set(t.clientX,t.clientY,t.clientZ??0);e>=this._pointerPositions.length;)this._pointerPositions.push(new d.Vector2);this._pointerPositions[e].set(t.clientX,t.clientY),e>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[e]=this.context.time.realtimeSinceStartup,this.updatePointerPosition(t),this._pointerEventsPressed.push(t),this.onDispatchEvent(t)}}onMove(t){const e=t.pointerId,i=this.getPointerPressed(e);i===!1&&!this.isInRect(t)||t.pointerType==="touch"&&!i||(this.updatePointerPosition(t),this.setPointerStateT(e,this._pointerEvent,t.source),this.onDispatchEvent(t))}onUp(t){const e=t.pointerId;if(!this.getPointerPressed(e)){Ze&&console.log(t.pointerType,"UP",e,"was not down");return}Ze&&console.log(t.pointerType,"UP",e),this.setPointerState(e,this._pointerPressed,!1),this.setPointerStateT(e,this._pointerEvent,t.source),this.setPointerState(e,this._pointerUp,!0),this.updatePointerPosition(t);for(let c=this._pointerEventsPressed.length-1;c>=0;c--)if(this._pointerEventsPressed[c].pointerId===e){this._pointerEventsPressed.splice(c,1);break}if(!this._pointerPositionDown[e]){Ze&&me("Received pointer up event without matching down event for button: "+e),console.warn("Received pointer up event without matching down event for button: "+e);return}const n=this._pointerUpTime[e],s=this._pointerDownTime[e],a=this.context.time.realtimeSinceStartup,l=a-s;if(e>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),this._pointerUpTime[e]=a,l<1){let c=t.clientX-this._pointerPositionDown[e].x,h=t.clientY-this._pointerPositionDown[e].y,u=0;if(t.isSpatial&&t.clientZ!=null&&(u=t.clientZ-this._pointerPositionDown[e].z,c*=200,h*=200,u*=200),Math.abs(c)<5&&Math.abs(h)<5&&Math.abs(u)<5){this.setPointerState(e,this._pointerClick,!0),t.isClick=!0;const f=a-n;Ze&&console.log("CLICK",e,c,h,u,f),f<this._doubleClickTimeThreshold&&f>0&&(this.setPointerState(e,this._pointerDoubleClick,!0),t.isDoubleClick=!0)}}this.onDispatchEvent(t)}updatePointerPosition(t){const e=t.pointerId;for(;e>=this._pointerPositions.length;)this._pointerPositions.push(new d.Vector2);for(;e>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new d.Vector2);for(;e>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new d.Vector2);const i=this._pointerPositionsLastFrame[e];i.copy(this._pointerPositions[e]);const n=this._pointerPositionsDelta[e];let s=t.clientX-i.x,a=t.clientY-i.y;if(t.source instanceof MouseEvent||t.source instanceof TouchEvent){const u=t.source;s===0&&u.movementX!==0&&(s=u.movementX||0),a===0&&u.movementY!==0&&(a=u.movementY||0)}n.x+=s,n.y+=a,this._pointerPositions[e].x=t.clientX,this._pointerPositions[e].y=t.clientY;const l=t.clientX,c=t.clientY;for(;e>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new d.Vector2);const h=this._pointerPositionsRC[e];h.set(l,c),this.convertScreenspaceToRaycastSpace(h)}getPointerIndex(t){let e=-1;for(let i=0;i<this._pointerIds.length;i++){if(this._pointerIds[i]===t)return i;e===-1&&this._pointerIds[i]===-1&&(e=i)}return e!==-1?(this._pointerIds[e]=t,e):(Ze&&console.log("PUSH pointerId:",t),this._pointerIds.push(t),this._pointerIds.length-1)}setPointerState(t,e,i){e[t]=i}setPointerStateT(t,e,i){return e[t]=i,i}onDispatchEvent(t){const e=Q.Current;try{Q.Current=this.context,this.dispatchEvent(t)}finally{Q.Current=e}}}const Pa=new d.Matrix4().makeRotationY(Math.PI),Fi=new d.Quaternion().setFromAxisAngle(new d.Vector3(0,1,0),Math.PI),iC=x("debugwebxr");class nC{constructor(){r(this,"priority",-1e5);r(this,"gameObject");if(this.gameObject=new d.Object3D,this.gameObject.name="Implicit XR Rig",iC){const t=Ym(16733661);t.position.y+=.5,this.gameObject.add(t)}}isXRRig(){return!0}get isActive(){return this.gameObject.visible}}const rs=x("debugwebxr"),Vh=x("debugcustomgesture"),sC="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",oC="generic-trigger",rC=new d.Quaternion().setFromEuler(new d.Euler(d.MathUtils.degToRad(0),d.MathUtils.degToRad(-90),d.MathUtils.degToRad(-90))),aC=new d.Vector3(.04,-.04,0);class Wm{constructor(t,e,i){r(this,"xr");r(this,"inputSource");r(this,"index",0);r(this,"emitEvents",!0);r(this,"_connected",!0);r(this,"_isTracking",!1);r(this,"__gamepad");r(this,"__hand");r(this,"__side");r(this,"_hitTestSource");r(this,"_hasSelectEvent",!1);r(this,"_isMxInk",!1);r(this,"_isMetaQuestTouchController",!1);r(this,"_handJointPoses",new Map);r(this,"_gripMatrix",new d.Matrix4);r(this,"_gripPosition",new d.Vector3);r(this,"_gripQuaternion",new d.Quaternion);r(this,"_linearVelocity",new d.Vector3);r(this,"_rayPositionRaw",new d.Vector3);r(this,"_rayRotationRaw",new d.Quaternion);r(this,"_rayMatrix",new d.Matrix4);r(this,"_rayPosition",new d.Vector3);r(this,"_rayQuaternion",new d.Quaternion);r(this,"_gripWorldPosition",new d.Vector3);r(this,"_gripWorldQuaternion",new d.Quaternion);r(this,"_rayWorldPosition",new d.Vector3);r(this,"_rayWorldQuaternion",new d.Quaternion);r(this,"_pinchPosition",new d.Vector3);r(this,"_ray");r(this,"_hand_wristDotUp");r(this,"_object");r(this,"_gripSpaceObject");r(this,"_raySpaceObject");r(this,"model",null);r(this,"_debugAxesHelper",new d.AxesHelper(.15));r(this,"_debugGripAxesHelper",new d.AxesHelper(.07));r(this,"_debugRayAxesHelper",new d.AxesHelper(.07));r(this,"_hitTestSourcePromise",null);r(this,"onPointerHits",t=>{});r(this,"_needleGamepadButtons",{});r(this,"_buttonMap",new Map);r(this,"_motioncontroller");r(this,"_layout");r(this,"getMotionController");r(this,"emitPointerDownEvent",!0);r(this,"emitPointerUpEvent",!0);r(this,"emitPointerMoveEvent",!0);r(this,"pointerMoveDistanceThreshold",.03);r(this,"pointerMoveAngleThreshold",.05);r(this,"_selectButtonIndex");r(this,"_squeezeButtonIndex");r(this,"onSelectStart",t=>{var n,s,a,l;if(!this.emitPointerDownEvent||this.inputSource!==t.inputSource)return;this.onUpdateFrame(t.frame),this._hasSelectEvent=!0;const e=(n=this._layout)==null?void 0:n.selectComponentId,i=(l=(a=(s=this._layout)==null?void 0:s.components[e])==null?void 0:a.gamepadIndices)==null?void 0:l.button;i!==void 0&&(this._selectButtonIndex=i),!Vh&&(rs&&V.DrawDirection(this.rayWorldPosition,$(0,.01,1).applyQuaternion(this.rayWorldQuaternion),16711680,10),this.emitPointerEvent(Ee.PointerDown,this._selectButtonIndex||0,"xr-standard-trigger",!0,t))});r(this,"onSelectEnd",t=>{this.emitPointerUpEvent&&(Vh||this.inputSource===t.inputSource&&this.emitPointerEvent(Ee.PointerUp,this._selectButtonIndex||0,"xr-standard-trigger",!0,t))});r(this,"onSequeezeStart",t=>{var e,i,n;this.emitPointerDownEvent&&this.inputSource===t.inputSource&&(this._squeezeButtonIndex=(n=(i=(e=this._layout)==null?void 0:e.components["xr-standard-squeeze"])==null?void 0:i.gamepadIndices)==null?void 0:n.button,this._squeezeButtonIndex!==void 0&&(rs&&V.DrawDirection(this.rayWorldPosition,$(0,.01,1).applyQuaternion(this.rayWorldQuaternion),255,10),this.emitPointerEvent(Ee.PointerDown,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,t)))});r(this,"onSequeezeEnd",t=>{this.emitPointerUpEvent&&this.inputSource===t.inputSource&&this._squeezeButtonIndex!==void 0&&this.emitPointerEvent(Ee.PointerUp,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,t)});r(this,"states",{});r(this,"_didMoveLastFrame",!1);r(this,"_lastPointerMovePosition",new d.Vector3);r(this,"_lastPointerMoveQuaternion",new d.Quaternion);r(this,"pointerInit");this.xr=t,this.inputSource=e,this.index=i,this._object=new d.Object3D,this._object.name=`NeedleXRController_${i}`,rs&&(this._object.add(this._debugAxesHelper),this._gripSpaceObject=new d.Object3D,this._raySpaceObject=new d.Object3D,this._gripSpaceObject.name=`NeedleXRController_${i}_gripSpace`,this._raySpaceObject.name=`NeedleXRController_${i}_raySpace`,this._gripSpaceObject.add(this._debugGripAxesHelper),this._raySpaceObject.add(this._debugRayAxesHelper),this.xr.context.scene.add(this._gripSpaceObject),this.xr.context.scene.add(this._raySpaceObject)),this.xr.context.scene.add(this._object),this._ray=new d.Ray,this.pointerInit={origin:this,pointerType:this.hand?"hand":"controller",deviceIndex:this.index,pointerId:-1,mode:this.inputSource.targetRayMode,ray:this._ray,device:this._object,buttonName:"none"},this.initialize(),this.subscribeEvents()}get context(){return this.xr.context}get connected(){return this._connected}get isTracking(){return this._isTracking}get gamepad(){return this.__gamepad??(this.__gamepad=this.inputSource.gamepad)}get isHand(){return this.hand!=null}get hand(){return this.__hand??(this.__hand=this.inputSource.hand)}get handObject(){return this.context.renderer.xr.getHand(this.index)}get profiles(){return this.inputSource.profiles}get layout(){return this._layout}get targetRayMode(){return this.inputSource.targetRayMode}get targetRaySpace(){return this.inputSource.targetRaySpace}get gripSpace(){return this.inputSource.gripSpace}get side(){return this.__side??(this.__side=this.inputSource.handedness)}get isRight(){return this.side==="right"}get isLeft(){return this.side==="left"}get isStylus(){return this._isMxInk}getHitTestSource(){return this._hitTestSource||this._requestHitTestSource(),this._hitTestSource}get hasHitTestSource(){return this._hitTestSource}cancelHitTestSource(){this._hitTestSource&&(this._hitTestSource.cancel(),this._hitTestSource=void 0)}get hasSelectEvent(){return this._hasSelectEvent}getHitTest(){return this.xr.getHitTest(this)}getHandJointPose(t,e){var n;if(e=e||this.xr.frame,!this.hand||!(e!=null&&e.getJointPose)||!this.xr.referenceSpace)return null;let i=(n=this._handJointPoses)==null?void 0:n.get(t);return i||(i=e.getJointPose(t,this.xr.referenceSpace),i&&this._handJointPoses.set(t,i),i)}get gripPosition(){return $(this._gripPosition)}get gripQuaternion(){return ln(this._gripQuaternion)}get gripMatrix(){return this._gripMatrix}get gripLinearVelocity(){return $(this._linearVelocity).applyQuaternion(Fi)}get rayPosition(){return $(this._rayPosition)}get rayQuaternion(){return ln(this._rayQuaternion)}get gripWorldPosition(){return $(this._gripWorldPosition)}get gripWorldQuaternion(){return ln(this._gripWorldQuaternion)}get rayWorldPosition(){return $(this._rayWorldPosition)}updateRayWorldPosition(){var e;const t=(e=this.xr.context.mainCamera)==null?void 0:e.parent;this._rayWorldPosition.copy(this._rayPositionRaw),t&&this._rayWorldPosition.applyMatrix4(t.matrixWorld)}get rayWorldQuaternion(){return ln(this._rayWorldQuaternion)}get pinchPosition(){return $(this._pinchPosition)}updateRayWorldQuaternion(){var i;const t=(i=this.xr.context.mainCamera)==null?void 0:i.parent,e=t?_e(t):void 0;this._rayWorldQuaternion.copy(this._rayRotationRaw).multiply(Fi),e&&this._rayWorldQuaternion.premultiply(e)}get ray(){return this._ray.origin.copy(this.rayWorldPosition),this._ray.direction.copy($(0,0,1).applyQuaternion(this.rayWorldQuaternion)),this._ray}get handWristDotUp(){var e;if(this._hand_wristDotUp!==void 0)return this._hand_wristDotUp;const t=(e=this.handObject)==null?void 0:e.joints.wrist;if(t){const i=$(0,1,0).applyQuaternion(t.quaternion),n=$(0,1,0).dot(i);return this._hand_wristDotUp=n}}get isHandUpsideDown(){return this.handWristDotUp!==void 0?this.handWristDotUp<-.7:!1}get isTeleportGesture(){var t;return this.isHandUpsideDown&&((t=this.getGesture("pinch"))==null?void 0:t.isDown)}get object(){return this._object}async getModelUrl(){var t;return(t=this.getMotionController)==null?void 0:t.then(e=>(e==null?void 0:e.assetUrl)||null)}_requestHitTestSource(){var t;return this._hitTestSourcePromise?this._hitTestSourcePromise:this.xr.mode==="immersive-ar"&&this.inputSource.targetRayMode==="tracked-pointer"&&this.xr.session.requestHitTestSourceForTransientInput?this._hitTestSourcePromise=((t=this.xr.session.requestHitTestSourceForTransientInput({profile:this.inputSource.profiles[0],offsetRay:new XRRay}))==null?void 0:t.then(e=>(this._hitTestSourcePromise=null,this.connected?this._hitTestSource=e:(e.cancel(),null))))??null:null}onUpdate(t){this.onUpdateFrame(t),this.updateInputEvents(),this.onUpdateMove()}onRenderDebug(){var s;V.DrawSphere(this.rayWorldPosition,.003),V.DrawDirection(this.rayWorldPosition,$(0,0,10).applyQuaternion(this.rayWorldQuaternion));const e=(this.inputSource.gripSpace?this.gripWorldPosition:this.object.worldPosition).sub(this.object.worldForward.multiplyScalar(.1)),i=this.inputSource.profiles.join(`
|
|
135
135
|
`);let n=`Controller[${this.index}] (${this.inputSource.targetRayMode}, ${this.side})
|
|
136
136
|
C:${this.connected?"x":"-"} T:${this.isTracking?"x":"-"} Hand:${this.inputSource.hand?"x":"-"} Pen: ${this._isMxInk?"x":"-"}`;if(this.inputSource.hand&&(n+=`
|
|
@@ -176,7 +176,7 @@ Please use the component type instead. This may keep working in local developmen
|
|
|
176
176
|
|
|
177
177
|
You can import other modules your main module to get access to types
|
|
178
178
|
or if you use npmdefs you can make types available globally using globalThis:
|
|
179
|
-
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,t))),O_()&&console.log("[onGetComponent] FIND",t),t==null))return null;for(let n=0;n<o.userData.components.length;n++){const s=o.userData.components[n];let a=Object.getPrototypeOf(s);for(;a;){if(a===t.prototype)if(O_()&&console.log("[onGetComponent] MATCH BY PROTOYPE",a),e)e.push(s);else return s;a=Object.getPrototypeOf(a)}}return e||null}function Rr(o,t){const e=pv(o,t);return e?Array.isArray(e)?e[0]:e:null}function Kc(o,t,e,i=!0){return e||(e=[]),i&&(e.length=0),pv(o,t,e),e}function Zc(o,t,e){var n;if(e===!1&&o[Ps]===!1)return null;const i=Rr(o,t);if(e===!1&&(i==null?void 0:i.enabled)===!1)return null;if(i)return i;for(let s=0;s<((n=o==null?void 0:o.children)==null?void 0:n.length);s++){const a=Zc(o.children[s],t);if(a)return a}return null}function Za(o,t,e,i=!0){var n;e||(e=[]),i&&(e.length=0),Kc(o,t,e,!1);for(let s=0;s<((n=o==null?void 0:o.children)==null?void 0:n.length);s++)Za(o.children[s],t,e,!1);return e}function Sc(o,t){if(!o)return null;if(Array.isArray(o)){for(let i=0;i<o.length;i++){const n=h1(o[i]),s=Sc(n,t);if(s)return s}return null}const e=Rr(o,t);return e||(o.parent?Sc(o.parent,t):null)}function Ru(o,t,e,i=!0){return e||(e=[]),i&&(e.length=0),o?(Kc(o,t,e,!1),o.parent?Ru(o.parent,t,e,!1):e):e}function Jc(o,t=void 0,e=!0){if(!o)return null;if(!t&&(t=Q.Current,!t))return console.error("Can not search object without any needle context or scene!!!"),null;let i=t;if(i.isScene||(i=t==null?void 0:t.scene),!i)return null;const n=Zc(i,o,e);return n||null}function mv(o,t,e=void 0){if(!o)return t??[];if(t||(t=[]),t.length=0,!e&&(e=Q.Current,!e))return console.error("Can not search object without any needle context or scene!!!"),t;"scene"in e&&(e=e.scene);const i=e;return i&&Za(i,o,t,!1),t}function Eu(o){o&&o.isObject3D===!0&&hv(o,d.Object3D)}d.Object3D.prototype.SetActive=function(o){this.visible=o};d.Object3D.prototype.setActive=function(o){this.visible=o};d.Object3D.prototype.destroy=function(){Oi(this)};d.Object3D.prototype.addComponent=function(o,t){return Pi(this,o,t)};d.Object3D.prototype.addNewComponent=function(o,t){return Pi(this,o,t)};d.Object3D.prototype.removeComponent=function(o){return rg(this,o)};d.Object3D.prototype.getOrAddComponent=function(o,t){return Yc(this,o,t)};d.Object3D.prototype.getComponent=function(o){return Rr(this,o)};d.Object3D.prototype.getComponents=function(o,t){return Kc(this,o,t)};d.Object3D.prototype.getComponentInChildren=function(o){return Zc(this,o)};d.Object3D.prototype.getComponentsInChildren=function(o,t){return Za(this,o,t)};d.Object3D.prototype.getComponentInParent=function(o){return Sc(this,o)};d.Object3D.prototype.getComponentsInParent=function(o,t){return Ru(this,o,t)};Object.getOwnPropertyDescriptor(d.Object3D.prototype,"activeSelf")||Object.defineProperty(d.Object3D.prototype,"activeSelf",{get:function(){return Ja(this)},set:function(o){ic(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldPosition")||Object.defineProperty(d.Object3D.prototype,"worldPosition",{get:function(){return this instanceof G.TransformControlsGizmo?K(this.object):K(this)},set:function(o){tt(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldQuaternion")||Object.defineProperty(d.Object3D.prototype,"worldQuaternion",{get:function(){return this instanceof G.TransformControlsGizmo?_e(this.object):_e(this)},set:function(o){Hi(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldRotation")||Object.defineProperty(d.Object3D.prototype,"worldRotation",{get:function(){return Su(this)},set:function(o){h0(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldScale")||Object.defineProperty(d.Object3D.prototype,"worldScale",{get:function(){return Fe(this)},set:function(o){Da(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldForward")||Object.defineProperty(d.Object3D.prototype,"worldForward",{get:function(){return $().set(0,0,1).applyQuaternion(_e(this))}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldRight")||Object.defineProperty(d.Object3D.prototype,"worldRight",{get:function(){return $().set(1,0,0).applyQuaternion(_e(this))}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldUp")||Object.defineProperty(d.Object3D.prototype,"worldUp",{get:function(){return $().set(0,1,0).applyQuaternion(_e(this))}});dv(d.Object3D);class ie extends d.Color{constructor(e,i,n,s){super();r(this,"alpha",1);typeof e=="number"&&typeof i=="number"&&typeof n=="number"?(this.set(e,i,n),this.alpha=typeof s=="number"?s:1):e!==void 0&&(this.set(e),this.alpha=1)}get isRGBAColor(){return!0}set a(e){this.alpha=e}get a(){return this.alpha}clone(){const e=super.clone();return e.alpha=this.alpha,e}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,"alpha"in e&&typeof e.alpha=="number"?this.alpha=e.alpha:typeof e.a=="number"&&(this.alpha=e.a),this}lerp(e,i){const n=e;return n.alpha!=null&&(this.alpha=z.lerp(this.alpha,n.alpha,i)),super.lerp(e,i)}lerpColors(e,i,n){const s=e,a=i;return s.alpha!=null&&a.alpha!=null&&(this.alpha=z.lerp(s.alpha,a.alpha,n)),super.lerpColors(e,i,n)}multiply(e){const i=e;return i.alpha!=null&&(this.alpha=this.alpha*i.alpha),super.multiply(e)}fromArray(e,i=0){return this.alpha=e[i+3],super.fromArray(e,i)}static fromColorRepresentation(e){if(typeof e=="string"){if(e.trim()==="transparent")return new ie(0,0,0,0);if(e.startsWith("#")&&e.length===9){const i=parseInt(e.slice(1,9),16),n=i>>24&255,s=i>>16&255,a=i>>8&255,l=i>>0&255;return new ie(n/255,s/255,a/255,l/255)}else if(e.startsWith("#")){const i=parseInt(e.slice(1),16),n=i>>16&255,s=i>>8&255,a=i>>0&255;return new ie(n/255,s/255,a/255,1)}else if(e.startsWith("rgba")){const i=e.slice(5,-1).split(",").map(Number);return new ie(i[0]/255,i[1]/255,i[2]/255,i[3])}else if(e.startsWith("rgb")){const i=e.slice(4,-1).split(",").map(Number);return new ie(i[0]/255,i[1]/255,i[2]/255,1)}}else if(Array.isArray(e)){if(e.length===4)return new ie(e[0],e[1],e[2],e[3]);if(e.length===3)return new ie(e[0],e[1],e[2],1);console.error("Invalid color array length. Expected 3 or 4, got "+e.length)}return new ie(e)}}const wd=x("debuggetcomponent"),gr=x("debuginstantiate");class vn{constructor(){r(this,"idProvider");r(this,"parent");r(this,"keepWorldPosition");r(this,"position");r(this,"rotation");r(this,"scale");r(this,"visible");r(this,"context");r(this,"components")}clone(){var e,i,n;const t=new vn;return t.idProvider=this.idProvider,t.parent=this.parent,t.keepWorldPosition=this.keepWorldPosition,t.position=(e=this.position)==null?void 0:e.clone(),t.rotation=(i=this.rotation)==null?void 0:i.clone(),t.scale=(n=this.scale)==null?void 0:n.clone(),t.visible=this.visible,t.context=this.context,t.components=this.components,t}cloneAssign(t){var e,i,n;this.idProvider=t.idProvider,this.parent=t.parent,this.keepWorldPosition=t.keepWorldPosition,this.position=(e=t.position)==null?void 0:e.clone(),this.rotation=(i=t.rotation)==null?void 0:i.clone(),this.scale=(n=t.scale)==null?void 0:n.clone(),this.visible=t.visible,this.context=t.context,this.components=t.components}}function Ja(o){return o.visible}function ic(o,t){return typeof t=="number"&&(t=t>.5),o.visible=t,o.visible}function gv(o){return o[Ps]||Tu(o)}function yv(o,t){o[H0]=t}function Tu(o){return $i.isUsingInstancing(o)}function ag(o,t){return La(o,t,!0,!0)}const _v=Symbol("isDestroyed");function wr(o){return o[_v]}function bv(o,t){o[_v]=t}const Jp=Symbol("isDontDestroy");function aa(o,t=!0){o[Jp]=t}const xd=[],Sd=[];function Oi(o,t=!0,e=!1){xd.length=0,Sd.length=0,em(o,t,!0);for(const i of xd)i.gameObject=null,i.context=null;for(const i of Sd)bv(i,!0),e&&Se(i),W0(i);Sd.length=0,xd.length=0}function em(o,t=!0,e=!0){var a;if(o==null)return;const i=o;if(i.isComponent){if(i[Jp])return;xd.push(i);const l=i.gameObject;i.__internalDisable(),i.__internalDestroy(),i.gameObject=l;return}if(o[Jp])return;const n=o;wd&&console.log(n),Sd.push(n);const s=(a=n.userData)==null?void 0:a.components;if(s!=null&&Array.isArray(s)){let l=s.length;for(let c=0;c<s.length;c++){const h=s[c];em(h,t,!1),s.length<l&&(l=s.length,c--)}}if(t&&n.children)for(const l of n.children)em(l,t,!1);e&&n.removeFromParent()}function xr(o,t,e=!0){return vv(o,t,e)}function*Au(o,t,e=!1,i=999,n=0){if(o!=null&&o.userData.components&&!(n>i)){for(const s of o.userData.components)t&&(s==null?void 0:s.isComponent)===!0&&s instanceof t?yield s:yield s;if(e===!0)for(const s of o.children)yield*Au(s,t,!0,i,n+1)}}function vv(o,t,e,i=0){var n;if(o){if(o.isObject3D,i>1e3){console.warn("Failed to iterate components: too many levels");return}if((n=o.userData)!=null&&n.components)for(let s=0;s<o.userData.components.length;s++){const a=o.userData.components[s];if((a==null?void 0:a.isComponent)===!0){const l=t(a);if(l!==void 0)return l}}if(e&&o.children){const s=i+1;for(let a=0;a<o.children.length;a++){const l=o.children[a];if(!l)continue;const c=vv(l,t,e,s);if(c!==void 0)return c}}}}function Sr(o,t){if("isAssetReference"in o)return o.instantiate(t??void 0);let e=null;t!=null&&(t.x!==void 0?(e=new vn,e.position=t):e=t);let i=Q.Current;e!=null&&e.context&&(i=e.context),wd&&i.alias&&console.log("context",i.alias),e&&!e.idProvider&&(e.idProvider=new gt(Date.now()));const n=[],s={},a={},l=wv(i,o,e,n,s,a);l&&(u1(s),d1(a,s)),wd&&(jd(o,!0),jd(l,!0));const c={};if((e==null?void 0:e.components)!==!1){for(const h in n){const u=n[h],f=u.guid;e&&e.idProvider&&(u.guid=e.idProvider.generateUUID(),c[f]=u.guid,wd&&console.log(u.name,u.guid)),Lu(u,i),u.__internalNewInstanceCreated&&u.__internalNewInstanceCreated()}for(const h in n){const u=n[h];u.resolveGuids&&u.resolveGuids(c),u.enabled!==!1&&(u.enabled=!0)}Nd(i)}return l}function wv(o,t,e,i,n,s){var u;if(!t||t[wi])return null;const a=t.userData;t.userData={};const l=t.children;t.children=[];const c=t.clone(!1);if(Eu(c),t.userData=a,t.children=l,n[t.uuid]={original:t,clone:c},gr&&console.log("ADD",t,c),t.type==="SkinnedMesh"&&(s[t.uuid]={original:t,clone:c}),(e==null?void 0:e.visible)!==void 0&&(c.visible=e.visible),e!=null&&e.idProvider){c.uuid=e.idProvider.generateUUID();const f=c;f&&(f.guid=c.uuid)}t.animations&&t.animations.length>0&&(c.animations=[...t.animations]);const h=t.parent;if(h&&h.add(c),e!=null&&e.position?tt(c,e.position):c.position.copy(t.position),e!=null&&e.rotation?Hi(c,e.rotation):c.quaternion.copy(t.quaternion),e!=null&&e.scale?c.scale.copy(e.scale):c.scale.copy(t.scale),e!=null&&e.parent&&e.parent!=="scene"){let f=null;if(typeof e.parent=="string"?f=La(e.parent,o.scene,!0):f=e.parent,f){const m=e.keepWorldPosition===!0?f.attach:f.add;m?m.call(f,c):console.error("Invalid parent object",f,"received when instantiating:",t)}else console.warn("could not find parent:",e.parent)}for(const[f,m]of Object.entries(t.userData))f!=="components"&&(c.userData[f]=m);if((u=t.userData)!=null&&u.components){const f=t.userData.components,m=[];c.userData.components=m;for(let g=0;g<f.length;g++){const y=f[g],_=new y.constructor;Fa(_,y,void 0,{}),y[Jl]!==void 0&&(_[Jl]=y[Jl]),m.push(_),_.gameObject=c,i.push(_),n[y.guid]={original:y,clone:_},qc.dispatchComponentLifecycleEvent("component-added",_)}}e&&(e.position=void 0,e.rotation=void 0,e.scale=void 0,e.parent=void 0);for(const f in t.children){const m=t.children[f],g=wv(o,m,e,i,n,s);g&&c.add(g)}return c}function d1(o,t){for(const e in o){const i=o[e],n=i.original,s=n.skeleton,a=i.clone;if(!s){console.warn("Skinned mesh has no skeleton?",i);continue}const l=s.bones,c=a.skeleton.clone();a.skeleton=c,a.bindMatrix.clone().copy(n.bindMatrix),a.bindMatrixInverse.copy(n.bindMatrixInverse);const h=[];c.bones=h;for(let u=0;u<l.length;u++){const f=l[u],g=t[f.uuid].clone;h.push(g)}}for(const e in o){const i=o[e].clone;i.skeleton.update(),i.bind(i.skeleton,i.bindMatrix),i.updateMatrixWorld(!0)}}function u1(o){var t;for(const e in o){const n=o[e].clone;if(n!=null&&n.isObject3D&&((t=n==null?void 0:n.userData)!=null&&t.components))for(let s=0;s<n.userData.components.length;s++){const a=n.userData.components[s],l=Object.entries(a);for(const[c,h]of l)if(Array.isArray(h)){const u=[];a[c]=u;for(let f=0;f<h.length;f++){const m=h[f];if(typeof m!="object"){u.push(m);continue}const g=R_(a,c,m,o);g!==void 0?(gr&&console.log("Found new instance for",c,m,"->",g),u.push(g)):(gr&&console.warn("Could not find new instance for",c,m),u.push(m))}}else if(typeof h=="object"){const u=R_(a,c,h,o);u!==void 0?a[c]=u:gr&&console.warn("Could not find new instance for",c,h)}}}}function R_(o,t,e,i){var n,s;if(e!=null)if(e.isComponent===!0){const a=e.gameObject;if(a){const l=a.uuid,c=(n=i[l])==null?void 0:n.clone;if(!c){gr&&console.log("reference did not change",t,o,e);return}const h=a.userData.components.indexOf(e);if(h>=0&&c.isObject3D)return gr&&console.log(t,l),c.userData.components[h];console.warn("could not find component",t,e)}}else if(e.isObject3D===!0){if(t==="gameObject")return;const a=e;if(a){const l=a.uuid,c=(s=i[l])==null?void 0:s.clone;if(c)return gr&&console.log(t,"old",e,"new",c),c}}else{if(e.isVector4||e.isVector3||e.isVector2||e.isQuaternion||e.isEuler)return e.clone();if(e.isColor===!0)return e.clone();if(e.isEventList===!0)return e.__internalOnInstantiate(i)}}exports.BlobStorage=void 0;(o=>{o.baseUrl="https://networking.needle.tools";function i(u){return ae.md5(new Uint8Array(u))}o.hashMD5=i;function n(u){const f=ae.md5(new Uint8Array(u),{encoding:"binary",asBytes:!0});return btoa(String.fromCharCode(...f))}o.hashMD5_Base64=n;function s(u){const f=new Uint8Array(u);return crypto.subtle.digest("SHA-256",f).then(g=>btoa(String.fromCharCode(...new Uint8Array(g))))}o.hashSha256=s;function a(u){const f=u.filesize/1024/1024;return Gn()?f<50:f<5}o.canUpload=a;async function l(u,f){var S;const m=o.baseUrl;if(m){if(!u.name)return console.error("Upload: file name is missing"),null}else return console.error("Blob storage base url is not set"),null;let g=null;u instanceof File?g=await u.arrayBuffer():g=u.data;const y=g.byteLength,_=y/1024/1024;if(_>50)return(f==null?void 0:f.silent)!==!0&&me(`File (${_.toFixed(1)}MB) is too large for uploading (see console for details)`),console.warn(`Your file is too large for uploading (${_.toFixed(1)}MB). Max allowed size is 50MB`),null;if(!Gn()&&_>5)return(f==null?void 0:f.silent)!==!0&&me('File is too large for uploading. Please get a <a href="https://needle.tools/pricing" target="_blank">commercial license</a> to upload files larger than 5MB'),console.warn(`Your file is too large for uploading (${_.toFixed(1)}MB). Max size is 5MB for non-commercial users. Please get a commercial license at https://needle.tools/pricing for larger files (up to 50MB)`),null;if(y<1)return console.warn(`Your file is too small for uploading (${_.toFixed(1)}MB). Min size is 1 byte`),null;const v=n(g),b={filename:u.name,"Content-Md5":v,"Content-Type":u.type||"application/octet-stream",FileSize:y.toString(),"Content-Disposition":`attachment; filename="${u.name}"`,"x-amz-server-side-encryption":"AES256"},w=await fetch(m+"/api/needle/blob",{method:"POST",headers:b,signal:f==null?void 0:f.abort}).then(R=>R.json()).catch(R=>(console.error(R),null));if(w==null)return console.warn("Upload failed..."),null;if("error"in w)return console.error(w.error),null;if("upload"in w&&w.upload){let R=function(M){var T;return(T=f==null?void 0:f.onProgress)==null||T.call(null,{progress01:0,state:"inprogress"}),fetch(M,{method:"PUT",headers:b,body:g,signal:f==null?void 0:f.abort}).then(D=>{var j;return(j=f==null?void 0:f.onProgress)==null||j.call(null,{progress01:1,state:"finished"}),D}).catch(D=>D)};console.debug("Uploading file",w.upload);let k=!1,E=null;for(let M=0;M<3;M++)try{if(k)break;if((S=f==null?void 0:f.abort)!=null&&S.aborted)return console.debug("Aborted upload"),null;const I=await R(w.upload);I instanceof Error?(E=I,await mn(1e3*M)):I.ok&&(console.debug("File uploaded successfully"),k=!0)}catch(I){console.error(I)}if(!k)return console.error((E==null?void 0:E.message)||"Failed to upload file"),null}if("download"in w){const R=m+w.download;return console.debug("File found in blob storage",R),{key:w.key,success:!0,download_url:R}}return null}o.upload=l;function c(u){return`${o.baseUrl}/api/needle/blob/${u}`}o.getBlobUrlForKey=c;async function h(u,f){const m=new d.FileLoader;m.setResponseType("arraybuffer");const g=await m.loadAsync(u,y=>{f&&f.call(null,y)});return g instanceof ArrayBuffer?new Uint8Array(g):(console.error("Download failed, no arraybuffer returned"),null)}o.download=h})(exports.BlobStorage||(exports.BlobStorage={}));const $s=x("debugaddressables");class xv{constructor(t){r(this,"_context");r(this,"_assetReferences",{});r(this,"preUpdate",()=>{});this._context=t,this._context.pre_update_callbacks.push(this.preUpdate)}dispose(){const t=this._context.pre_update_callbacks.indexOf(this.preUpdate);t>=0&&this._context.pre_update_callbacks.splice(t,1);for(const e in this._assetReferences){const i=this._assetReferences[e];i==null||i.unload()}this._assetReferences={}}findAssetReference(t){return this._assetReferences[t]||null}registerAssetReference(t){return t.url&&(this._assetReferences[t.url]?console.warn("Asset reference already registered",t):this._assetReferences[t.url]=t),t}unregisterAssetReference(t){t.url&&delete this._assetReferences[t.url]}}const Vf=Symbol("assetReference"),to=class to{constructor(t,e,i=null){r(this,"_loading");r(this,"_asset");r(this,"_glbRoot");r(this,"_url");r(this,"_urlName");r(this,"_progressListeners",[]);r(this,"_hash");r(this,"_hashedUri");r(this,"_isLoadingRawBinary",!1);r(this,"_rawBinary");this._url=t;const n=t.lastIndexOf("/");if(n>=0){this._urlName=t.substring(n+1);const s=this._urlName.lastIndexOf(".");s>=0&&(this._urlName=this._urlName.substring(0,s))}else this._urlName=t;this._hash=e,t.includes("?v=")?this._hashedUri=t:this._hashedUri=e?t+"?v="+e:t,i!==null&&(this.asset=i),iv(this._url,this.onResolvePrefab.bind(this))}static getOrCreateFromUrl(t,e){if(!e&&(e=Q.Current,!e))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.');const i=e.addressables,n=i.findAssetReference(t);if(n)return n;const s=new to(t,e.hash);return i.registerAssetReference(s),s}static getOrCreate(t,e,i){if(typeof t=="string"){if(!i&&(i=Q.Current,!i))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.')}else i=t.context,t=t.sourceId;const n=Po(t,e);$s&&console.log("GetOrCreate Addressable from",t,e,"FinalPath=",n);const s=i.addressables,a=s.findAssetReference(n);if(a)return a;const l=new to(n,i.hash);return s.registerAssetReference(l),l}get isAssetReference(){return!0}get asset(){return this._glbRoot??this._asset}set asset(t){this._asset=t}get uri(){return this._url}get url(){return this._url}get urlName(){return this._urlName}get hasUrl(){return this._url!==void 0&&(this._url.startsWith("http")||this._url.startsWith("blob:")||this._url.startsWith("www.")||this._url.includes("/"))}get rawAsset(){return this._asset}async onResolvePrefab(t){return t===this.url&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0||wr(this.asset)===!0}isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&($s&&console.log("Unload",this.asset),"scene"in this.asset&&this.asset.scene&&Oi(this.asset.scene,!0,!0),Oi(this.asset,!0,!0)),this.asset=null,this._rawBinary=void 0,this._glbRoot=null,this._loading=void 0,Q.Current&&Q.Current.addressables.unregisterAssetReference(this)}async preload(){if(!this.mustLoad||this._isLoadingRawBinary)return null;if(this._rawBinary!==void 0)return this._rawBinary;this._isLoadingRawBinary=!0,$s&&console.log("Preload",this._hashedUri);const t=await exports.BlobStorage.download(this._hashedUri,e=>{this.raiseProgressEvent(e)});return this._rawBinary=(t==null?void 0:t.buffer)??null,this._isLoadingRawBinary=!1,this._rawBinary}async loadAssetAsync(t){if($s&&console.log("loadAssetAsync",this.url),!this.mustLoad)return this.asset;if(t&&this._progressListeners.push(t),this._loading!==void 0)return this._loading.then(n=>this.asset);const e=Q.Current;if(this._rawBinary){if(!(this._rawBinary instanceof ArrayBuffer))return console.error("Invalid raw binary data",this._rawBinary),null;this._loading=gn().parseSync(e,this._rawBinary,this.url,null),this.raiseProgressEvent(new ProgressEvent("progress",{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))}else $s&&console.log("Load async",this.url),this._loading=gn().loadSync(e,this._hashedUri,this.url,null,n=>{this.raiseProgressEvent(n)});const i=await this._loading;return this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(i),this._loading=void 0,i?(i[Vf]=this,this._glbRoot&&(this._glbRoot[Vf]=this),this.asset&&(this.asset[Vf]=this),Nd(e),i.scene!==void 0&&(this.asset=i),this.asset):null}async instantiate(t){return this.onInstantiate(t,!1)}async instantiateSynced(t,e=!0){return this.onInstantiate(t,!0,e)}beginListenDownload(t){this._progressListeners.indexOf(t)<0&&this._progressListeners.push(t)}endListenDownload(t){const e=this._progressListeners.indexOf(t);e>=0&&this._progressListeners.splice(e,1)}raiseProgressEvent(t){for(const e of this._progressListeners)e(this,t)}async onInstantiate(t,e=!1,i){const n=Q.Current,s=new vn;if(t instanceof d.Object3D?s.parent=t:t&&(Object.assign(s,t),s.cloneAssign(t)),s.parent||(s.parent=n.scene),this.mustLoad&&await this.loadAssetAsync(),$s&&console.log("Instantiate",this.url,"parent:",t),this.asset){$s&&console.log("Add to scene",this.asset);let a=to.currentlyInstantiating.get(this.url);if(a!==void 0&&a>=1e4)return console.error("Recursive or too many instantiations of "+this.url+" in the same frame ("+a+")"),null;try{if(a===void 0&&(a=0),a+=1,to.currentlyInstantiating.set(this.url,a),e){s.context=n;const l=this.asset;l.guid=this.url;const c=ig(l,s,void 0,i);if(c)return c}else{const l=Sr(this.asset,s);if(l)return l}}finally{n.post_render_callbacks.push(()=>{a===void 0||a<0?a=0:a-=1,to.currentlyInstantiating.set(this.url,a)})}}else $s&&console.warn("Failed to load asset",this.url);return null}tryGetActualGameObjectRoot(t){if(t&&t.scene){const e=t.scene;return e.isGroup&&e.children.length===1&&e.children[0].name+"glb"===e.name?e.children[0]:e}return null}};r(to,"currentlyInstantiating",new Map);let te=to;class f1 extends Qi{constructor(){super([te],"AssetReferenceSerializer")}onSerialize(t,e){if(t&&t.uri!==void 0&&typeof t.uri=="string")return t.uri}onDeserialize(t,e){if(typeof t=="string")return e.context?e.gltfId?te.getOrCreate(e.gltfId,t,e.context):(console.error("Missing source id"),null):(console.error("Missing context"),null);if(t instanceof d.Object3D){if(!e.context)return console.error("Missing context"),null;if(!e.gltfId)return console.error("Missing source id"),null;const i=t,n=e.context,s=i.guid??i.uuid,a=n.addressables.findAssetReference(s);if(a)return a;const l=new te(s,void 0,i);return n.addressables.registerAssetReference(l),l}return null}}new f1;const p1=Promise.resolve(null),ba=class ba{constructor(t){r(this,"url");r(this,"_bitmap");r(this,"_bitmapObject");r(this,"loader",null);this.url=t}static getOrCreate(t){let e=ba.imageReferences.get(t);return e||(e=new ba(t),ba.imageReferences.set(t,e)),e}dispose(){this._bitmapObject&&this._bitmapObject.close(),this._bitmap=void 0}createHTMLImage(){const t=new Image;return t.src=this.url,t}createTexture(){return this.url?(this.loader||(this.loader=new d.TextureLoader),this.loader.setCrossOrigin("anonymous"),this.loader.loadAsync(this.url).then(t=>{var e;return t&&!((e=t.name)!=null&&e.length)&&(t.name=this.url.split("/").pop()??this.url),t})):(console.error("Can not load texture without url"),p1)}getBitmap(){return this._bitmap?this._bitmap:(this._bitmap=new Promise((t,e)=>{const i=document.createElement("img");i.addEventListener("load",()=>{this._bitmap=createImageBitmap(i).then(n=>(this._bitmapObject=n,t(n),n))}),i.addEventListener("error",n=>{console.error("Failed to load image:"+this.url,n),t(null)}),i.src=this.url}),this._bitmap)}};r(ba,"imageReferences",new Map);let Cc=ba;class Sv extends Qi{constructor(){super([Cc],"ImageReferenceSerializer")}onSerialize(t,e){return null}onDeserialize(t,e){if(typeof t=="string"){const i=Po(e.gltfId,t);return Cc.getOrCreate(i)}}}new Sv;const va=class va{constructor(t){r(this,"url");r(this,"res");this.url=t}static getOrCreate(t){let e=va.cache.get(t);return e||(e=new va(t),va.cache.set(t,e)),e}async loadRaw(){return this.res||(this.res=fetch(this.url)),this.res.then(t=>t.blob())}async loadText(){return this.res||(this.res=fetch(this.url)),this.res.then(t=>t.text())}};r(va,"cache",new Map);let Pc=va;class Cv extends Qi{constructor(){super([Pc],"FileReferenceSerializer")}onSerialize(t,e){return null}onDeserialize(t,e){if(typeof t=="string"){const i=Po(e.gltfId,t);return Pc.getOrCreate(i)}}}new Cv;class m1{constructor(t){r(this,"context");r(this,"mixers",[]);this.context=t}onDestroy(){this.mixers.forEach(t=>t.stopAllAction()),this.mixers.length=0}registerAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(t)||this.mixers.push(t)}unregisterAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const e=this.mixers.indexOf(t);e!==-1&&this.mixers.splice(e,1)}}class Ua{static tryGetActionsFromMixer(t){const e=t._actions;return e||null}static tryGetAnimationClipsFromObjectHierarchy(t,e){if(e||(e=new Array),t)t.animations&&e.push(...t.animations);else return e;if(t.children)for(const i of t.children)this.tryGetAnimationClipsFromObjectHierarchy(i,e);return e}static assignAnimationsFromFile(t,e){if(!t||!t.animations){console.debug("No animations found in file");return}for(let n=0;n<t.animations.length;n++){const s=t.animations[n];if(!s.tracks||s.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const a in s.tracks){const l=s.tracks[a],c=d.PropertyBinding.parseTrackName(l.name);let h=d.PropertyBinding.findNode(t.scene,c.nodeName);if(!h){const f=l.__objectName??l.name.substring(0,l.name.indexOf("."));if(h=t.scene.getObjectByProperty("uuid",f),!h)continue}let u=i(h);if(!u){if(!(e!=null&&e.createAnimationComponent)){console.warn("No AnimationComponent found in parent hierarchy of object and no 'createAnimationComponent' callback was provided in options.");continue}u=e.createAnimationComponent(t.scene,s)}u.addClip&&u.addClip(s)}}function i(n){var a;if(!n)return null;const s=(a=n.userData)==null?void 0:a.components;if(s&&s.length>0){for(let l=0;l<s.length;l++)if(s[l].isAnimationComponent===!0)return n}return i(n.parent)}}}function*lg(o,t=null){const e=t?t.time:Q.Current.time,i=e.time;for(;e.time-i<o;)yield}function*g1(o){for(let t=0;t<o;t++)yield}function*Pv(o){let t=!0;for(o.then(()=>t=!1),o.catch(()=>t=!1);t;)yield}const E_="NEEDLE_lightmaps",Cl=x("debuglightmapsextension")||x("debuglightmaps");var ho=(o=>(o[o.Lightmap=0]="Lightmap",o[o.Skybox=1]="Skybox",o[o.Reflection=2]="Reflection",o))(ho||{});class y1{constructor(t,e,i){r(this,"parser");r(this,"registry");r(this,"source");this.parser=t,this.registry=e,this.source=i}get name(){return E_}afterRoot(t){const e=this.parser.json.extensions;if(e){const i=e[E_];if(i){const n=i.textures;return n!=null&&n.length?(Cl&&console.log(i),new Promise(async(s,a)=>{const l=[];for(const h of n)if(h.pointer){Cl&&console.log(h);let u=null;if(h.pointer.startsWith("/textures/"))Cl&&console.log("Load texture from gltf",h.pointer),u=sg(this.parser,h.pointer).then(f=>this.resolveTexture(h,f));else if(typeof h.pointer=="string"){Cl&&console.log("Load texture from path",h.pointer);const f=Po(this.source,h.pointer);let m;f.endsWith(".exr")?m=new G.EXRLoader(this.parser.options.manager):f.endsWith(".hdr")?m=new G.RGBELoader(this.parser.options.manager):m=new d.TextureLoader(this.parser.options.manager),u=m.loadAsync(f,void 0).then(g=>this.resolveTexture(h,g))}else h.pointer;u&&l.push(u)}const c=await Em(l);c!=null&&c.anyFailed&&F()&&console.error("Failed to load lightmap extension",c),s()})):null}}return null}resolveTexture(t,e){const i=e;Cl&&console.log("Lightmap loaded:",i),i!=null&&i.isTexture&&(this.registry?(i.colorSpace=d.LinearSRGBColorSpace,this.registry.registerTexture(this.source,t.type,i,t.index)):console.log(ho[t.type],t.pointer,i))}}const T_=!!x("debuglightmaps");class _1{constructor(t){r(this,"_context");r(this,"_lightmaps",new Map);this._context=t}clear(){this._lightmaps.clear()}registerTexture(t,e,i,n){T_&&console.log("Registering ",ho[e]+' "'+t+'"',i),this._lightmaps.has(t)||this._lightmaps.set(t,new Map);const s=this._lightmaps.get(t),a=(s==null?void 0:s.get(e))??[];a.length<n&&(a.length=n+1),a[n]=i,s==null||s.set(e,a)}tryGetLightmap(t,e=0){return this.tryGet(t,ho.Lightmap,e)}tryGetSkybox(t){return this.tryGet(t,ho.Skybox,0)}tryGetReflection(t){return this.tryGet(t,ho.Reflection,0)}tryGet(t,e,i){if(!t)return T_&&console.warn("Missing source id"),null;const n=this._lightmaps.get(t);if(!n)return null;const s=n.get(e);return s===void 0||!(s!=null&&s.length)||s.length<=i?null:s[i]}}d.ShaderChunk.lights_fragment_maps=d.ShaderChunk.lights_fragment_maps.replace("vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );",`
|
|
179
|
+
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,t))),O_()&&console.log("[onGetComponent] FIND",t),t==null))return null;for(let n=0;n<o.userData.components.length;n++){const s=o.userData.components[n];let a=Object.getPrototypeOf(s);for(;a;){if(a===t.prototype)if(O_()&&console.log("[onGetComponent] MATCH BY PROTOYPE",a),e)e.push(s);else return s;a=Object.getPrototypeOf(a)}}return e||null}function Rr(o,t){const e=pv(o,t);return e?Array.isArray(e)?e[0]:e:null}function Kc(o,t,e,i=!0){return e||(e=[]),i&&(e.length=0),pv(o,t,e),e}function Zc(o,t,e){var n;if(e===!1&&o[Ps]===!1)return null;const i=Rr(o,t);if(e===!1&&(i==null?void 0:i.enabled)===!1)return null;if(i)return i;for(let s=0;s<((n=o==null?void 0:o.children)==null?void 0:n.length);s++){const a=Zc(o.children[s],t);if(a)return a}return null}function Za(o,t,e,i=!0){var n;e||(e=[]),i&&(e.length=0),Kc(o,t,e,!1);for(let s=0;s<((n=o==null?void 0:o.children)==null?void 0:n.length);s++)Za(o.children[s],t,e,!1);return e}function Sc(o,t){if(!o)return null;if(Array.isArray(o)){for(let i=0;i<o.length;i++){const n=h1(o[i]),s=Sc(n,t);if(s)return s}return null}const e=Rr(o,t);return e||(o.parent?Sc(o.parent,t):null)}function Ru(o,t,e,i=!0){return e||(e=[]),i&&(e.length=0),o?(Kc(o,t,e,!1),o.parent?Ru(o.parent,t,e,!1):e):e}function Jc(o,t=void 0,e=!0){if(!o)return null;if(!t&&(t=Q.Current,!t))return console.error("Can not search object without any needle context or scene!!!"),null;let i=t;if(i.isScene||(i=t==null?void 0:t.scene),!i)return null;const n=Zc(i,o,e);return n||null}function mv(o,t,e=void 0){if(!o)return t??[];if(t||(t=[]),t.length=0,!e&&(e=Q.Current,!e))return console.error("Can not search object without any needle context or scene!!!"),t;"scene"in e&&(e=e.scene);const i=e;return i&&Za(i,o,t,!1),t}function Eu(o){o&&o.isObject3D===!0&&hv(o,d.Object3D)}d.Object3D.prototype.SetActive=function(o){this.visible=o};d.Object3D.prototype.setActive=function(o){this.visible=o};d.Object3D.prototype.destroy=function(){Oi(this)};d.Object3D.prototype.addComponent=function(o,t){return Pi(this,o,t)};d.Object3D.prototype.addNewComponent=function(o,t){return Pi(this,o,t)};d.Object3D.prototype.removeComponent=function(o){return rg(this,o)};d.Object3D.prototype.getOrAddComponent=function(o,t){return Yc(this,o,t)};d.Object3D.prototype.getComponent=function(o){return Rr(this,o)};d.Object3D.prototype.getComponents=function(o,t){return Kc(this,o,t)};d.Object3D.prototype.getComponentInChildren=function(o){return Zc(this,o)};d.Object3D.prototype.getComponentsInChildren=function(o,t){return Za(this,o,t)};d.Object3D.prototype.getComponentInParent=function(o){return Sc(this,o)};d.Object3D.prototype.getComponentsInParent=function(o,t){return Ru(this,o,t)};Object.getOwnPropertyDescriptor(d.Object3D.prototype,"activeSelf")||Object.defineProperty(d.Object3D.prototype,"activeSelf",{get:function(){return Ja(this)},set:function(o){ic(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldPosition")||Object.defineProperty(d.Object3D.prototype,"worldPosition",{get:function(){return this instanceof G.TransformControlsGizmo?K(this.object):K(this)},set:function(o){tt(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldQuaternion")||Object.defineProperty(d.Object3D.prototype,"worldQuaternion",{get:function(){return this instanceof G.TransformControlsGizmo?_e(this.object):_e(this)},set:function(o){Hi(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldRotation")||Object.defineProperty(d.Object3D.prototype,"worldRotation",{get:function(){return Su(this)},set:function(o){h0(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldScale")||Object.defineProperty(d.Object3D.prototype,"worldScale",{get:function(){return Fe(this)},set:function(o){Da(this,o)}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldForward")||Object.defineProperty(d.Object3D.prototype,"worldForward",{get:function(){return $().set(0,0,1).applyQuaternion(_e(this))}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldRight")||Object.defineProperty(d.Object3D.prototype,"worldRight",{get:function(){return $().set(1,0,0).applyQuaternion(_e(this))}});Object.getOwnPropertyDescriptor(d.Object3D.prototype,"worldUp")||Object.defineProperty(d.Object3D.prototype,"worldUp",{get:function(){return $().set(0,1,0).applyQuaternion(_e(this))}});dv(d.Object3D);class ie extends d.Color{constructor(e,i,n,s){super();r(this,"alpha",1);typeof e=="number"&&typeof i=="number"&&typeof n=="number"?(this.set(e,i,n),this.alpha=typeof s=="number"?s:1):e!==void 0&&(this.set(e),this.alpha=1)}get isRGBAColor(){return!0}set a(e){this.alpha=e}get a(){return this.alpha}clone(){const e=super.clone();return e.alpha=this.alpha,e}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,"alpha"in e&&typeof e.alpha=="number"?this.alpha=e.alpha:typeof e.a=="number"&&(this.alpha=e.a),this}lerp(e,i){const n=e;return n.alpha!=null&&(this.alpha=z.lerp(this.alpha,n.alpha,i)),super.lerp(e,i)}lerpColors(e,i,n){const s=e,a=i;return s.alpha!=null&&a.alpha!=null&&(this.alpha=z.lerp(s.alpha,a.alpha,n)),super.lerpColors(e,i,n)}multiply(e){const i=e;return i.alpha!=null&&(this.alpha=this.alpha*i.alpha),super.multiply(e)}fromArray(e,i=0){return this.alpha=e[i+3],super.fromArray(e,i)}static fromColorRepresentation(e){if(typeof e=="string"){if(e.trim()==="transparent")return new ie(0,0,0,0);if(e.startsWith("#")&&e.length===9){const i=parseInt(e.slice(1,9),16),n=i>>24&255,s=i>>16&255,a=i>>8&255,l=i>>0&255;return new ie(n/255,s/255,a/255,l/255)}else if(e.startsWith("#")){const i=parseInt(e.slice(1),16),n=i>>16&255,s=i>>8&255,a=i>>0&255;return new ie(n/255,s/255,a/255,1)}else if(e.startsWith("rgba")){const i=e.slice(5,-1).split(",").map(Number);return new ie(i[0]/255,i[1]/255,i[2]/255,i[3])}else if(e.startsWith("rgb")){const i=e.slice(4,-1).split(",").map(Number);return new ie(i[0]/255,i[1]/255,i[2]/255,1)}}else if(Array.isArray(e)){if(e.length===4)return new ie(e[0],e[1],e[2],e[3]);if(e.length===3)return new ie(e[0],e[1],e[2],1);console.error("Invalid color array length. Expected 3 or 4, got "+e.length)}return new ie(e)}}const wd=x("debuggetcomponent"),gr=x("debuginstantiate");class vn{constructor(){r(this,"idProvider");r(this,"parent");r(this,"keepWorldPosition");r(this,"position");r(this,"rotation");r(this,"scale");r(this,"visible");r(this,"context");r(this,"components")}clone(){var e,i,n;const t=new vn;return t.idProvider=this.idProvider,t.parent=this.parent,t.keepWorldPosition=this.keepWorldPosition,t.position=(e=this.position)==null?void 0:e.clone(),t.rotation=(i=this.rotation)==null?void 0:i.clone(),t.scale=(n=this.scale)==null?void 0:n.clone(),t.visible=this.visible,t.context=this.context,t.components=this.components,t}cloneAssign(t){var e,i,n;this.idProvider=t.idProvider,this.parent=t.parent,this.keepWorldPosition=t.keepWorldPosition,this.position=(e=t.position)==null?void 0:e.clone(),this.rotation=(i=t.rotation)==null?void 0:i.clone(),this.scale=(n=t.scale)==null?void 0:n.clone(),this.visible=t.visible,this.context=t.context,this.components=t.components}}function Ja(o){return o.visible}function ic(o,t){return typeof t=="number"&&(t=t>.5),o.visible=t,o.visible}function gv(o){return o[Ps]||Tu(o)}function yv(o,t){o[H0]=t}function Tu(o){return $i.isUsingInstancing(o)}function ag(o,t){return La(o,t,!0,!0)}const _v=Symbol("isDestroyed");function wr(o){return o[_v]}function bv(o,t){o[_v]=t}const Jp=Symbol("isDontDestroy");function aa(o,t=!0){o[Jp]=t}const xd=[],Sd=[];function Oi(o,t=!0,e=!1){xd.length=0,Sd.length=0,em(o,t,!0);for(const i of xd)i.gameObject=null,i.context=null;for(const i of Sd)bv(i,!0),e&&Se(i),W0(i);Sd.length=0,xd.length=0}function em(o,t=!0,e=!0){var a;if(o==null)return;const i=o;if(i.isComponent){if(i[Jp])return;xd.push(i);const l=i.gameObject;i.__internalDisable(),i.__internalDestroy(),i.gameObject=l;return}if(o[Jp])return;const n=o;wd&&console.log(n),Sd.push(n);const s=(a=n.userData)==null?void 0:a.components;if(s!=null&&Array.isArray(s)){let l=s.length;for(let c=0;c<s.length;c++){const h=s[c];em(h,t,!1),s.length<l&&(l=s.length,c--)}}if(t&&n.children)for(const l of n.children)em(l,t,!1);e&&n.removeFromParent()}function xr(o,t,e=!0){return vv(o,t,e)}function*Au(o,t,e=!1,i=999,n=0){if(o!=null&&o.userData.components&&!(n>i)){for(const s of o.userData.components)t&&(s==null?void 0:s.isComponent)===!0&&s instanceof t?yield s:yield s;if(e===!0)for(const s of o.children)yield*Au(s,t,!0,i,n+1)}}function vv(o,t,e,i=0){var n;if(o){if(o.isObject3D,i>1e3){console.warn("Failed to iterate components: too many levels");return}if((n=o.userData)!=null&&n.components)for(let s=0;s<o.userData.components.length;s++){const a=o.userData.components[s];if((a==null?void 0:a.isComponent)===!0){const l=t(a);if(l!==void 0)return l}}if(e&&o.children){const s=i+1;for(let a=0;a<o.children.length;a++){const l=o.children[a];if(!l)continue;const c=vv(l,t,e,s);if(c!==void 0)return c}}}}function Sr(o,t){if("isAssetReference"in o)return o.instantiate(t??void 0);let e=null;t!=null&&(t.x!==void 0?(e=new vn,e.position=t):e=t);let i=Q.Current;e!=null&&e.context&&(i=e.context),wd&&i.alias&&console.log("context",i.alias),e&&!e.idProvider&&(e.idProvider=new gt(Date.now()));const n=[],s={},a={},l=wv(i,o,e,n,s,a);l&&(u1(s),d1(a,s)),wd&&(jd(o,!0),jd(l,!0));const c={};if((e==null?void 0:e.components)!==!1){for(const h in n){const u=n[h],f=u.guid;e&&e.idProvider&&(u.guid=e.idProvider.generateUUID(),c[f]=u.guid,wd&&console.log(u.name,u.guid)),Lu(u,i),u.__internalNewInstanceCreated&&u.__internalNewInstanceCreated()}for(const h in n){const u=n[h];u.resolveGuids&&u.resolveGuids(c),u.enabled!==!1&&(u.enabled=!0)}Nd(i)}return l}function wv(o,t,e,i,n,s){var u;if(!t||t[wi])return null;const a=t.userData;t.userData={};const l=t.children;t.children=[];const c=t.clone(!1);if(Eu(c),t.userData=a,t.children=l,n[t.uuid]={original:t,clone:c},gr&&console.log("ADD",t,c),t.type==="SkinnedMesh"&&(s[t.uuid]={original:t,clone:c}),(e==null?void 0:e.visible)!==void 0&&(c.visible=e.visible),e!=null&&e.idProvider){c.uuid=e.idProvider.generateUUID();const f=c;f&&(f.guid=c.uuid)}t.animations&&t.animations.length>0&&(c.animations=[...t.animations]);const h=t.parent;if(h&&h.add(c),e!=null&&e.position?tt(c,e.position):c.position.copy(t.position),e!=null&&e.rotation?Hi(c,e.rotation):c.quaternion.copy(t.quaternion),e!=null&&e.scale?c.scale.copy(e.scale):c.scale.copy(t.scale),e!=null&&e.parent&&e.parent!=="scene"){let f=null;if(typeof e.parent=="string"?f=La(e.parent,o.scene,!0):f=e.parent,f){const m=e.keepWorldPosition===!0?f.attach:f.add;m?m.call(f,c):console.error("Invalid parent object",f,"received when instantiating:",t)}else console.warn("could not find parent:",e.parent)}for(const[f,m]of Object.entries(t.userData))f!=="components"&&(c.userData[f]=m);if((u=t.userData)!=null&&u.components){const f=t.userData.components,m=[];c.userData.components=m;for(let g=0;g<f.length;g++){const y=f[g],_=new y.constructor;Fa(_,y,void 0,{}),y[Jl]!==void 0&&(_[Jl]=y[Jl]),m.push(_),_.gameObject=c,i.push(_),n[y.guid]={original:y,clone:_},qc.dispatchComponentLifecycleEvent("component-added",_)}}e&&(e.position=void 0,e.rotation=void 0,e.scale=void 0,e.parent=void 0,e.visible=void 0);for(const f in t.children){const m=t.children[f],g=wv(o,m,e,i,n,s);g&&(n[g.uuid]={original:m,clone:g},c.add(g))}return c}function d1(o,t){for(const e in o){const i=o[e],n=i.original,s=n.skeleton,a=i.clone;if(!s){console.warn("Skinned mesh has no skeleton?",i);continue}const l=s.bones,c=a.skeleton.clone();a.skeleton=c,a.bindMatrix.clone().copy(n.bindMatrix),a.bindMatrixInverse.copy(n.bindMatrixInverse);const h=[];c.bones=h;for(let u=0;u<l.length;u++){const f=l[u],g=t[f.uuid].clone;h.push(g)}}for(const e in o){const i=o[e].clone;i.skeleton.update(),i.bind(i.skeleton,i.bindMatrix),i.updateMatrixWorld(!0)}}function u1(o){var t;for(const e in o){const n=o[e].clone;if(n!=null&&n.isObject3D&&((t=n==null?void 0:n.userData)!=null&&t.components))for(let s=0;s<n.userData.components.length;s++){const a=n.userData.components[s],l=Object.entries(a);for(const[c,h]of l)if(Array.isArray(h)){const u=[];a[c]=u;for(let f=0;f<h.length;f++){const m=h[f];if(typeof m!="object"){u.push(m);continue}const g=R_(a,c,m,o);g!==void 0?(gr&&console.log("Found new instance for",c,m,"->",g),u.push(g)):(gr&&console.warn("Could not find new instance for",c,m),u.push(m))}}else if(typeof h=="object"){const u=R_(a,c,h,o);u!==void 0?a[c]=u:gr&&console.warn("Could not find new instance for",c,h)}}}}function R_(o,t,e,i){var n,s;if(e!=null)if(e.isComponent===!0){const a=e.gameObject;if(a){const l=a.uuid,c=(n=i[l])==null?void 0:n.clone;if(!c){gr&&console.log("reference did not change",t,o,e);return}const h=a.userData.components.indexOf(e);if(h>=0&&c.isObject3D)return gr&&console.log(t,l),c.userData.components[h];console.warn("could not find component",t,e)}}else if(e.isObject3D===!0){if(t==="gameObject")return;const a=e;if(a){const l=a.uuid,c=(s=i[l])==null?void 0:s.clone;if(c)return gr&&console.log(t,"old",e,"new",c),c}}else{if(e.isVector4||e.isVector3||e.isVector2||e.isQuaternion||e.isEuler)return e.clone();if(e.isColor===!0)return e.clone();if(e.isEventList===!0)return e.__internalOnInstantiate(i)}}exports.BlobStorage=void 0;(o=>{o.baseUrl="https://networking.needle.tools";function i(u){return ae.md5(new Uint8Array(u))}o.hashMD5=i;function n(u){const f=ae.md5(new Uint8Array(u),{encoding:"binary",asBytes:!0});return btoa(String.fromCharCode(...f))}o.hashMD5_Base64=n;function s(u){const f=new Uint8Array(u);return crypto.subtle.digest("SHA-256",f).then(g=>btoa(String.fromCharCode(...new Uint8Array(g))))}o.hashSha256=s;function a(u){const f=u.filesize/1024/1024;return Gn()?f<50:f<5}o.canUpload=a;async function l(u,f){var S;const m=o.baseUrl;if(m){if(!u.name)return console.error("Upload: file name is missing"),null}else return console.error("Blob storage base url is not set"),null;let g=null;u instanceof File?g=await u.arrayBuffer():g=u.data;const y=g.byteLength,_=y/1024/1024;if(_>50)return(f==null?void 0:f.silent)!==!0&&me(`File (${_.toFixed(1)}MB) is too large for uploading (see console for details)`),console.warn(`Your file is too large for uploading (${_.toFixed(1)}MB). Max allowed size is 50MB`),null;if(!Gn()&&_>5)return(f==null?void 0:f.silent)!==!0&&me('File is too large for uploading. Please get a <a href="https://needle.tools/pricing" target="_blank">commercial license</a> to upload files larger than 5MB'),console.warn(`Your file is too large for uploading (${_.toFixed(1)}MB). Max size is 5MB for non-commercial users. Please get a commercial license at https://needle.tools/pricing for larger files (up to 50MB)`),null;if(y<1)return console.warn(`Your file is too small for uploading (${_.toFixed(1)}MB). Min size is 1 byte`),null;const v=n(g),b={filename:u.name,"Content-Md5":v,"Content-Type":u.type||"application/octet-stream",FileSize:y.toString(),"Content-Disposition":`attachment; filename="${u.name}"`,"x-amz-server-side-encryption":"AES256"},w=await fetch(m+"/api/needle/blob",{method:"POST",headers:b,signal:f==null?void 0:f.abort}).then(R=>R.json()).catch(R=>(console.error(R),null));if(w==null)return console.warn("Upload failed..."),null;if("error"in w)return console.error(w.error),null;if("upload"in w&&w.upload){let R=function(M){var T;return(T=f==null?void 0:f.onProgress)==null||T.call(null,{progress01:0,state:"inprogress"}),fetch(M,{method:"PUT",headers:b,body:g,signal:f==null?void 0:f.abort}).then(D=>{var j;return(j=f==null?void 0:f.onProgress)==null||j.call(null,{progress01:1,state:"finished"}),D}).catch(D=>D)};console.debug("Uploading file",w.upload);let k=!1,E=null;for(let M=0;M<3;M++)try{if(k)break;if((S=f==null?void 0:f.abort)!=null&&S.aborted)return console.debug("Aborted upload"),null;const I=await R(w.upload);I instanceof Error?(E=I,await mn(1e3*M)):I.ok&&(console.debug("File uploaded successfully"),k=!0)}catch(I){console.error(I)}if(!k)return console.error((E==null?void 0:E.message)||"Failed to upload file"),null}if("download"in w){const R=m+w.download;return console.debug("File found in blob storage",R),{key:w.key,success:!0,download_url:R}}return null}o.upload=l;function c(u){return`${o.baseUrl}/api/needle/blob/${u}`}o.getBlobUrlForKey=c;async function h(u,f){const m=new d.FileLoader;m.setResponseType("arraybuffer");const g=await m.loadAsync(u,y=>{f&&f.call(null,y)});return g instanceof ArrayBuffer?new Uint8Array(g):(console.error("Download failed, no arraybuffer returned"),null)}o.download=h})(exports.BlobStorage||(exports.BlobStorage={}));const $s=x("debugaddressables");class xv{constructor(t){r(this,"_context");r(this,"_assetReferences",{});r(this,"preUpdate",()=>{});this._context=t,this._context.pre_update_callbacks.push(this.preUpdate)}dispose(){const t=this._context.pre_update_callbacks.indexOf(this.preUpdate);t>=0&&this._context.pre_update_callbacks.splice(t,1);for(const e in this._assetReferences){const i=this._assetReferences[e];i==null||i.unload()}this._assetReferences={}}findAssetReference(t){return this._assetReferences[t]||null}registerAssetReference(t){return t.url&&(this._assetReferences[t.url]?console.warn("Asset reference already registered",t):this._assetReferences[t.url]=t),t}unregisterAssetReference(t){t.url&&delete this._assetReferences[t.url]}}const Vf=Symbol("assetReference"),to=class to{constructor(t,e,i=null){r(this,"_loading");r(this,"_asset");r(this,"_glbRoot");r(this,"_url");r(this,"_urlName");r(this,"_progressListeners",[]);r(this,"_hash");r(this,"_hashedUri");r(this,"_isLoadingRawBinary",!1);r(this,"_rawBinary");this._url=t;const n=t.lastIndexOf("/");if(n>=0){this._urlName=t.substring(n+1);const s=this._urlName.lastIndexOf(".");s>=0&&(this._urlName=this._urlName.substring(0,s))}else this._urlName=t;this._hash=e,t.includes("?v=")?this._hashedUri=t:this._hashedUri=e?t+"?v="+e:t,i!==null&&(this.asset=i),iv(this._url,this.onResolvePrefab.bind(this))}static getOrCreateFromUrl(t,e){if(!e&&(e=Q.Current,!e))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.');const i=e.addressables,n=i.findAssetReference(t);if(n)return n;const s=new to(t,e.hash);return i.registerAssetReference(s),s}static getOrCreate(t,e,i){if(typeof t=="string"){if(!i&&(i=Q.Current,!i))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.')}else i=t.context,t=t.sourceId;const n=Po(t,e);$s&&console.log("GetOrCreate Addressable from",t,e,"FinalPath=",n);const s=i.addressables,a=s.findAssetReference(n);if(a)return a;const l=new to(n,i.hash);return s.registerAssetReference(l),l}get isAssetReference(){return!0}get asset(){return this._glbRoot??this._asset}set asset(t){this._asset=t}get uri(){return this._url}get url(){return this._url}get urlName(){return this._urlName}get hasUrl(){return this._url!==void 0&&(this._url.startsWith("http")||this._url.startsWith("blob:")||this._url.startsWith("www.")||this._url.includes("/"))}get rawAsset(){return this._asset}async onResolvePrefab(t){return t===this.url&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0||wr(this.asset)===!0}isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&($s&&console.log("Unload",this.asset),"scene"in this.asset&&this.asset.scene&&Oi(this.asset.scene,!0,!0),Oi(this.asset,!0,!0)),this.asset=null,this._rawBinary=void 0,this._glbRoot=null,this._loading=void 0,Q.Current&&Q.Current.addressables.unregisterAssetReference(this)}async preload(){if(!this.mustLoad||this._isLoadingRawBinary)return null;if(this._rawBinary!==void 0)return this._rawBinary;this._isLoadingRawBinary=!0,$s&&console.log("Preload",this._hashedUri);const t=await exports.BlobStorage.download(this._hashedUri,e=>{this.raiseProgressEvent(e)});return this._rawBinary=(t==null?void 0:t.buffer)??null,this._isLoadingRawBinary=!1,this._rawBinary}async loadAssetAsync(t){if($s&&console.log("loadAssetAsync",this.url),!this.mustLoad)return this.asset;if(t&&this._progressListeners.push(t),this._loading!==void 0)return this._loading.then(n=>this.asset);const e=Q.Current;if(this._rawBinary){if(!(this._rawBinary instanceof ArrayBuffer))return console.error("Invalid raw binary data",this._rawBinary),null;this._loading=gn().parseSync(e,this._rawBinary,this.url,null),this.raiseProgressEvent(new ProgressEvent("progress",{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))}else $s&&console.log("Load async",this.url),this._loading=gn().loadSync(e,this._hashedUri,this.url,null,n=>{this.raiseProgressEvent(n)});const i=await this._loading;return this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(i),this._loading=void 0,i?(i[Vf]=this,this._glbRoot&&(this._glbRoot[Vf]=this),this.asset&&(this.asset[Vf]=this),Nd(e),i.scene!==void 0&&(this.asset=i),this.asset):null}instantiate(t){return this.onInstantiate(t,!1)}instantiateSynced(t,e=!0){return this.onInstantiate(t,!0,e)}beginListenDownload(t){this._progressListeners.indexOf(t)<0&&this._progressListeners.push(t)}endListenDownload(t){const e=this._progressListeners.indexOf(t);e>=0&&this._progressListeners.splice(e,1)}raiseProgressEvent(t){for(const e of this._progressListeners)e(this,t)}async onInstantiate(t,e=!1,i){const n=Q.Current,s=new vn;if(t instanceof d.Object3D?s.parent=t:t&&(Object.assign(s,t),s.cloneAssign(t)),s.parent===void 0&&(s.parent=n.scene),this.mustLoad&&await this.loadAssetAsync(),$s&&console.log("Instantiate",this.url,"parent:",t),this.asset){$s&&console.log("Add to scene",this.asset);let a=to.currentlyInstantiating.get(this.url);if(a!==void 0&&a>=1e4)return console.error("Recursive or too many instantiations of "+this.url+" in the same frame ("+a+")"),null;try{if(a===void 0&&(a=0),a+=1,to.currentlyInstantiating.set(this.url,a),e){s.context=n;const l=this.asset;l.guid=this.url;const c=ig(l,s,void 0,i);if(c)return c}else{const l=Sr(this.asset,s);if(l)return l}}finally{n.post_render_callbacks.push(()=>{a===void 0||a<0?a=0:a-=1,to.currentlyInstantiating.set(this.url,a)})}}else $s&&console.warn("Failed to load asset",this.url);return null}tryGetActualGameObjectRoot(t){if(t&&t.scene){const e=t.scene;return e.isGroup&&e.children.length===1&&e.children[0].name+"glb"===e.name?e.children[0]:e}return null}};r(to,"currentlyInstantiating",new Map);let te=to;class f1 extends Qi{constructor(){super([te],"AssetReferenceSerializer")}onSerialize(t,e){if(t&&t.uri!==void 0&&typeof t.uri=="string")return t.uri}onDeserialize(t,e){if(typeof t=="string")return e.context?e.gltfId?te.getOrCreate(e.gltfId,t,e.context):(console.error("Missing source id"),null):(console.error("Missing context"),null);if(t instanceof d.Object3D){if(!e.context)return console.error("Missing context"),null;if(!e.gltfId)return console.error("Missing source id"),null;const i=t,n=e.context,s=i.guid??i.uuid,a=n.addressables.findAssetReference(s);if(a)return a;const l=new te(s,void 0,i);return n.addressables.registerAssetReference(l),l}return null}}new f1;const p1=Promise.resolve(null),ba=class ba{constructor(t){r(this,"url");r(this,"_bitmap");r(this,"_bitmapObject");r(this,"loader",null);this.url=t}static getOrCreate(t){let e=ba.imageReferences.get(t);return e||(e=new ba(t),ba.imageReferences.set(t,e)),e}dispose(){this._bitmapObject&&this._bitmapObject.close(),this._bitmap=void 0}createHTMLImage(){const t=new Image;return t.src=this.url,t}createTexture(){return this.url?(this.loader||(this.loader=new d.TextureLoader),this.loader.setCrossOrigin("anonymous"),this.loader.loadAsync(this.url).then(t=>{var e;return t&&!((e=t.name)!=null&&e.length)&&(t.name=this.url.split("/").pop()??this.url),t})):(console.error("Can not load texture without url"),p1)}getBitmap(){return this._bitmap?this._bitmap:(this._bitmap=new Promise((t,e)=>{const i=document.createElement("img");i.addEventListener("load",()=>{this._bitmap=createImageBitmap(i).then(n=>(this._bitmapObject=n,t(n),n))}),i.addEventListener("error",n=>{console.error("Failed to load image:"+this.url,n),t(null)}),i.src=this.url}),this._bitmap)}};r(ba,"imageReferences",new Map);let Cc=ba;class Sv extends Qi{constructor(){super([Cc],"ImageReferenceSerializer")}onSerialize(t,e){return null}onDeserialize(t,e){if(typeof t=="string"){const i=Po(e.gltfId,t);return Cc.getOrCreate(i)}}}new Sv;const va=class va{constructor(t){r(this,"url");r(this,"res");this.url=t}static getOrCreate(t){let e=va.cache.get(t);return e||(e=new va(t),va.cache.set(t,e)),e}async loadRaw(){return this.res||(this.res=fetch(this.url)),this.res.then(t=>t.blob())}async loadText(){return this.res||(this.res=fetch(this.url)),this.res.then(t=>t.text())}};r(va,"cache",new Map);let Pc=va;class Cv extends Qi{constructor(){super([Pc],"FileReferenceSerializer")}onSerialize(t,e){return null}onDeserialize(t,e){if(typeof t=="string"){const i=Po(e.gltfId,t);return Pc.getOrCreate(i)}}}new Cv;class m1{constructor(t){r(this,"context");r(this,"mixers",[]);this.context=t}onDestroy(){this.mixers.forEach(t=>t.stopAllAction()),this.mixers.length=0}registerAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(t)||this.mixers.push(t)}unregisterAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const e=this.mixers.indexOf(t);e!==-1&&this.mixers.splice(e,1)}}class Ua{static tryGetActionsFromMixer(t){const e=t._actions;return e||null}static tryGetAnimationClipsFromObjectHierarchy(t,e){if(e||(e=new Array),t)t.animations&&e.push(...t.animations);else return e;if(t.children)for(const i of t.children)this.tryGetAnimationClipsFromObjectHierarchy(i,e);return e}static assignAnimationsFromFile(t,e){if(!t||!t.animations){console.debug("No animations found in file");return}for(let n=0;n<t.animations.length;n++){const s=t.animations[n];if(!s.tracks||s.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const a in s.tracks){const l=s.tracks[a],c=d.PropertyBinding.parseTrackName(l.name);let h=d.PropertyBinding.findNode(t.scene,c.nodeName);if(!h){const f=l.__objectName??l.name.substring(0,l.name.indexOf("."));if(h=t.scene.getObjectByProperty("uuid",f),!h)continue}let u=i(h);if(!u){if(!(e!=null&&e.createAnimationComponent)){console.warn("No AnimationComponent found in parent hierarchy of object and no 'createAnimationComponent' callback was provided in options.");continue}u=e.createAnimationComponent(t.scene,s)}u.addClip&&u.addClip(s)}}function i(n){var a;if(!n)return null;const s=(a=n.userData)==null?void 0:a.components;if(s&&s.length>0){for(let l=0;l<s.length;l++)if(s[l].isAnimationComponent===!0)return n}return i(n.parent)}}}function*lg(o,t=null){const e=t?t.time:Q.Current.time,i=e.time;for(;e.time-i<o;)yield}function*g1(o){for(let t=0;t<o;t++)yield}function*Pv(o){let t=!0;for(o.then(()=>t=!1),o.catch(()=>t=!1);t;)yield}const E_="NEEDLE_lightmaps",Cl=x("debuglightmapsextension")||x("debuglightmaps");var ho=(o=>(o[o.Lightmap=0]="Lightmap",o[o.Skybox=1]="Skybox",o[o.Reflection=2]="Reflection",o))(ho||{});class y1{constructor(t,e,i){r(this,"parser");r(this,"registry");r(this,"source");this.parser=t,this.registry=e,this.source=i}get name(){return E_}afterRoot(t){const e=this.parser.json.extensions;if(e){const i=e[E_];if(i){const n=i.textures;return n!=null&&n.length?(Cl&&console.log(i),new Promise(async(s,a)=>{const l=[];for(const h of n)if(h.pointer){Cl&&console.log(h);let u=null;if(h.pointer.startsWith("/textures/"))Cl&&console.log("Load texture from gltf",h.pointer),u=sg(this.parser,h.pointer).then(f=>this.resolveTexture(h,f));else if(typeof h.pointer=="string"){Cl&&console.log("Load texture from path",h.pointer);const f=Po(this.source,h.pointer);let m;f.endsWith(".exr")?m=new G.EXRLoader(this.parser.options.manager):f.endsWith(".hdr")?m=new G.RGBELoader(this.parser.options.manager):m=new d.TextureLoader(this.parser.options.manager),u=m.loadAsync(f,void 0).then(g=>this.resolveTexture(h,g))}else h.pointer;u&&l.push(u)}const c=await Em(l);c!=null&&c.anyFailed&&F()&&console.error("Failed to load lightmap extension",c),s()})):null}}return null}resolveTexture(t,e){const i=e;Cl&&console.log("Lightmap loaded:",i),i!=null&&i.isTexture&&(this.registry?(i.colorSpace=d.LinearSRGBColorSpace,this.registry.registerTexture(this.source,t.type,i,t.index)):console.log(ho[t.type],t.pointer,i))}}const T_=!!x("debuglightmaps");class _1{constructor(t){r(this,"_context");r(this,"_lightmaps",new Map);this._context=t}clear(){this._lightmaps.clear()}registerTexture(t,e,i,n){T_&&console.log("Registering ",ho[e]+' "'+t+'"',i),this._lightmaps.has(t)||this._lightmaps.set(t,new Map);const s=this._lightmaps.get(t),a=(s==null?void 0:s.get(e))??[];a.length<n&&(a.length=n+1),a[n]=i,s==null||s.set(e,a)}tryGetLightmap(t,e=0){return this.tryGet(t,ho.Lightmap,e)}tryGetSkybox(t){return this.tryGet(t,ho.Skybox,0)}tryGetReflection(t){return this.tryGet(t,ho.Reflection,0)}tryGet(t,e,i){if(!t)return T_&&console.warn("Missing source id"),null;const n=this._lightmaps.get(t);if(!n)return null;const s=n.get(e);return s===void 0||!(s!=null&&s.length)||s.length<=i?null:s[i]}}d.ShaderChunk.lights_fragment_maps=d.ShaderChunk.lights_fragment_maps.replace("vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );",`
|
|
180
180
|
vec2 lUv = vLightMapUv.xy * lightmapScaleOffset.xy + vec2(lightmapScaleOffset.z, (1. - (lightmapScaleOffset.y + lightmapScaleOffset.w)));
|
|
181
181
|
vec4 lightMapTexel = texture2D( lightMap, lUv);
|
|
182
182
|
// The range of RGBM lightmaps goes from 0 to 34.49 (5^2.2) in linear space, and from 0 to 5 in gamma space.
|
|
@@ -1556,4 +1556,4 @@ Error:`,l),null}}updateColliderCollisionGroups(t){const e=t[Ft],i=t.membership;l
|
|
|
1556
1556
|
justify-content: center;
|
|
1557
1557
|
gap: .5rem;
|
|
1558
1558
|
}
|
|
1559
|
-
`),he(this,hr).innerHTML=he(this,zt).innerHTML,he(this,hr).style.cssText="display: flex; align-items: center; justify-content: center;",he(this,zt).innerHTML=he(this,hr).outerHTML,he(this,cr).innerHTML=he(this,zt).outerHTML,he(this,cr).prepend(he(this,dr)),qd(nm,{element:he(this,cr)}),(n=he(this,Aa))==null||n.disconnect(),he(this,Aa)??nn(this,Aa,new MutationObserver(()=>wl(this,Ka,kx).call(this))),he(this,Aa).observe(he(this,zt),{attributes:!0}),Tp&&console.log("Needle Button updated")},kx=function(){he(this,zt)&&(he(this,zt).style.display==="none"?this.style.display="none":this.style.display==="none"&&(this.style.display=""))},zc=new WeakMap,r(By,"observedAttributes",["ar","vr","quicklook"]);typeof window<"u"&&!window.customElements.get(Nb)&&window.customElements.define(Nb,By);const Fl=x("debugavatar");class Fy{constructor(t,e,i,n){r(this,"root");r(this,"head");r(this,"leftHand");r(this,"rigthHand");var s;this.root=t,this.head=e,this.leftHand=i,this.rigthHand=n,(s=this.root)==null||s.traverse(a=>a.layers.set(2))}get isValid(){return this.head!==null&&this.head!==void 0}}class Rx{constructor(){r(this,"avatarRegistryUrl",null)}async getOrCreateNewAvatarInstance(t,e){if(!e)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof e=="string"){if(i=await this.loadAvatar(t,e),!i){const s=new vn;i=C.instantiate(La(e,t.scene),s)}}else i=e;if(!i)return null;const n=this.findAvatar(i);return n.isValid?(Fl&&console.log("[Custom Avatar] valid config",e,Fl?n:""),n):(console.warn("[Custom Avatar] config isn't valid",e,Fl?n:""),null)}async loadAvatar(t,e){if(console.assert(e!=null&&typeof e=="string","Avatar id must not be null"),e.length<=0||!e)return null;if(Fl&&console.log("[Custom Avatar] "+e+", loading..."),e.endsWith(".glb")||(e+=".glb"),this.avatarRegistryUrl===null){const n=await fetch("./"+e);let s=null;if(n.ok){const l=await n.blob();l&&(s=await l.arrayBuffer())}if(!s)return null;const a=await gn().parseSync(t,s,null,0);return(a==null?void 0:a.scene)??null}const i=new G.GLTFLoader;return dg(i,t),new Promise((n,s)=>{const a=this.avatarRegistryUrl+"/"+e;i.load(a,async l=>{await gn().createBuiltinComponents(t,a,l,null,void 0),n(l.scene)},l=>{Fl&&console.log("[Custom Avatar] "+l.loaded/l.total*100+"% loaded of "+l.total/1024+"kB")},l=>{console.error("[Custom Avatar] Error when loading: "+l),n(null)})})}cacheModel(t,e){}findAvatar(t){const e=t;let i=e;i.children.length==1&&(i=t.children[0]);let n=this.findAvatarPart(i,["head"]);const s=this.findAvatarPart(i,["left","hand"]),a=this.findAvatarPart(i,["right","hand"]);if(!n){n=e;const c=new d.Vector3;new d.Box3().setFromObject(n).getSize(c);const h=Math.max(c.x,c.y,c.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 Fy(e,n,s,a)}findAvatarPart(t,e){const i=t.name.toLowerCase();let n=!0;for(const s of e){if(!n)break;i.indexOf(s)===-1&&(n=!1)}if(n)return t;if(t.children)for(const s of t.children){const a=this.findAvatarPart(s,e);if(a)return a}return null}handleCustomAvatarErrors(t){if(!t.ok)throw Error(t.statusText);return t}}class Ex{get extensionName(){return"DocumentExtension"}onAfterBuildDocument(t){}}class Tx{}const qE=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:fe,ActionCollection:Fw,ActionModel:vi,AlignmentConstraint:ih,Animation:Ot,AnimationCurve:wh,AnimationExtension:Gu,AnimationTrackHandler:gf,Animator:bt,AnimatorController:Wi,Antialiasing:Sh,AudioExtension:Br,AudioListener:ws,AudioSource:Gi,AudioTrackHandler:Qa,Avatar:So,AvatarBlink_Simple:Lr,AvatarEyeLook_Rotation:vg,AvatarLoader:Rx,AvatarMarker:kt,AvatarModel:Fy,Avatar_Brain_LookAt:Rc,Avatar_MouthShapes:rh,Avatar_MustacheShake:_g,Avatar_POI:Ms,AxesHelper:el,BaseUIComponent:qi,BasicIKConstraint:xg,BehaviorExtension:Kg,BehaviorModel:yt,BloomEffect:af,BoxCollider:Nu,BoxGizmo:Nr,BoxHelperComponent:Kn,Button:Fs,CallInfo:bs,Camera:si,CameraTargetReachedEvent:kc,Canvas:Ga,CanvasGroup:Co,CapsuleCollider:Os,ChangeMaterialOnClick:Vg,ChangeTransformOnClick:Fr,CharacterController:Dr,CharacterControllerInput:Es,ChromaticAberration:Ch,Collider:ci,ColorAdjustments:Bo,ColorBySpeedModule:ul,ColorOverLifetimeModule:sf,ContactShadows:ah,ControlTrackHandler:yf,CustomBranding:zr,Deletable:Mg,DeleteBox:Na,DepthOfField:Sn,DeviceFlag:Vu,DocumentExtension:Ex,DragControls:nr,DropListener:Ts,Duplicatable:Rg,EffectWrapper:Dc,EmissionModule:js,EmphasizeOnClick:sl,EnvironmentScene:xf,EventList:ye,EventListEvent:ju,EventSystem:Gt,EventTrigger:Wu,FieldWithDefault:xw,FixedJoint:dy,Fog:cl,GltfExport:Fg,GltfExportBox:jg,Gradient:$r,Graphic:gh,GraphicRaycaster:Bu,GridHelper:hl,GridLayoutGroup:ny,GroundProjectedEnv:es,GroupActionModel:uo,HideOnStart:$a,HingeJoint:_h,HorizontalLayoutGroup:iy,Image:ml,InheritVelocityModule:my,InputField:Ry,InstanceHandle:Ec,InstancingHandler:Va,Interactable:Pg,Keyframe:oi,LODGroup:vh,LODModel:dl,Light:ui,LimitVelocityOverLifetimeModule:ot,LogStats:Cg,LookAt:Ey,LookAtConstraint:Ar,MainModule:Tt,MaskableGraphic:yh,MeshCollider:Eo,MeshRenderer:ch,MinMaxCurve:q,MinMaxGradient:Wr,NeedleMenu:is,NestedGltf:ef,Networking:fy,NoiseModule:be,ObjectRaycaster:ki,OffsetConstraint:Vr,OpenURL:gl,OrbitControls:ge,Outline:ll,Padding:Ur,ParticleBurst:lu,ParticleSubEmitter:gy,ParticleSystem:Lc,ParticleSystemRenderer:Zi,PhysicsExtension:Zg,PixelationEffect:Ph,PlayAnimationOnClick:Tc,PlayAudioOnClick:xo,PlayableDirector:Ya,PlayerColor:qa,PointerEventData:sh,PostProcessingHandler:wy,PreliminaryAction:ol,PreliminaryTrigger:uh,RawImage:vf,Rect:$w,RectTransform:bn,ReflectionProbe:Hu,RegisteredAnimationInfo:fo,RemoteSkybox:cf,Renderer:Ri,RendererLightmap:ou,Rigidbody:it,RotationBySpeedModule:Ki,RotationOverLifetimeModule:xn,SceneSwitcher:We,ScreenCapture:Fo,ScreenSpaceAmbientOcclusion:Bs,ScreenSpaceAmbientOcclusionN8:Cn,SetActiveOnClick:$g,ShadowCatcher:Rh,ShapeModule:py,SharpeningEffect:Oh,SignalAsset:mf,SignalReceiver:Dh,SignalReceiverEvent:Lh,SignalTrackHandler:Ic,Size:Vw,SizeBySpeedModule:fi,SizeOverLifetimeModule:Hr,SkinnedMeshRenderer:Ig,SmoothFollow:df,SpatialGrabRaycaster:Cr,SpatialHtml:Bh,SpatialTrigger:uf,SpatialTriggerReceiver:Xn,SpectatorCamera:ff,SphereCollider:tl,Sprite:Ls,SpriteData:Ta,SpriteRenderer:hi,SpriteSheet:Ha,SubEmitterSystem:cu,SyncedCamera:Sy,SyncedRoom:Pn,SyncedTransform:Yn,TapGestureTrigger:Hg,TeleportTarget:Ku,TestRunner:Cy,TestSimulateUserData:Py,Text:Et,TextBuilder:ey,TextExtension:Ju,TextureSheetAnimationModule:At,TiltShiftEffect:os,ToneMappingEffect:Xa,TrailModule:je,TransformData:$e,TransformGizmo:Qr,TriggerBuilder:_t,TriggerModel:vo,UIRaycastUtils:pg,UIRootComponent:ph,USDZExporter:qn,USDZText:sr,USDZUIExtension:oy,UsageMarker:lh,VariantAction:Ng,VelocityOverLifetimeModule:Ue,VerticalLayoutGroup:ty,VideoPlayer:nt,Vignette:Xr,VisibilityAction:fh,Voip:Ro,Volume:pl,VolumeParameter:U,VolumeProfile:of,WebARCameraBackground:Uh,WebARSessionRoot:Zn,WebXR:Zu,WebXRImageTracking:Bc,WebXRImageTrackingModel:zs,WebXRPlaneTracking:Ns,WebXRTrackedImage:jc,XRControllerFollow:Us,XRControllerModel:Jn,XRControllerMovement:Ei,XRFlag:Ni,XRRig:Cf,XRState:Ht,__Ignore:Tx},Symbol.toStringTag,{value:"Module"})),pu=x("debugmissingcamera");re.registerCallback(de.MissingCamera,o=>{var l,c,h,u;pu&&console.warn("Creating missing camera");const t=o.context.scene,e=new d.PerspectiveCamera;e.name="Default Fallback Camera",t.add(e);const i=new si;if(i.sourceId=((c=(l=o.files)==null?void 0:l[0])==null?void 0:c.src)??"unknown",i.fieldOfView=35,o.context.domElement.getAttribute("transparent")!=null)i.clearFlags=bo.Uninitialized;else if((h=o.context.domElement.getAttribute("skybox-image"))!=null&&h.length||(u=o.context.domElement.getAttribute("background-image"))!=null&&u.length||o.context.lightmaps.tryGetSkybox(i.sourceId))i.clearFlags=bo.Skybox,i.backgroundBlurriness=.2;else{if(i.clearFlags=bo.SolidColor,!o.context.domElement.getAttribute("background-color")){let f="#efefef";typeof window!==void 0&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(f="#1f1f1f"),t.background=new d.Color(f)}if(!t.environment){const f=new d.PMREMGenerator$1(o.context.renderer),m=new xf("neutral");t.environment=f.fromScene(m,.025).texture}}const s=mr(e,i,!0);e.position.x=0,e.position.y=1,e.position.z=2;const a=o.context.domElement;return(a==null?void 0:a.cameraControls)!=!1&&Ax(o.context,s),s});re.registerCallback(de.ContextCreated,o=>{if(!o.context.mainCamera){pu&&console.log("Will not auto-fit because a default camera exists");return}const t=o.context.domElement;if((t==null?void 0:t.cameraControls)==!0){const e=o0(o.context.mainCamera);if((e==null?void 0:e.isCameraController)==!0){pu&&console.log("Will not auto-fit because a camera controller exists");return}Ax(o.context)}});function Ax(o,t){t=t??o.mainCameraComponent;const e=t==null?void 0:t.gameObject;if(pu&&console.log("Creating default camera controls",t==null?void 0:t.name),e){const i=Yc(e,ge);i.sourceId=(t==null?void 0:t.sourceId)??"unknown";const n=o.domElement.getAttribute("auto-rotate");if(i.autoRotate=n!=null&&n!="0"&&(n==null?void 0:n.toLowerCase())!="false",i.autoRotateSpeed=.5,i.autoFit=!0,i.autoRotate&&n){const s=parseFloat(n);isNaN(s)||(i.autoRotateSpeed=s)}}else console.warn("Missing camera object, can not add orbit controls")}re.registerCallback(de.ContextCreated,o=>{const t=o.context.domElement.getAttribute("autoplay");if(t!==void 0&&(t===""||t==="true"||t==="1")&&o.files)for(const e of o.files)C.foreachComponent(e.file.scene,n=>{if(n.enabled!==!1){if(n instanceof Ot&&n.playAutomatically||n instanceof bt||n instanceof Ya&&n.playOnAwake===!0)return!0;if(n instanceof Ot)return n.playAutomatically=!0,!0;if(n instanceof Ya)return n.playOnAwake=!0,!0}},!0)!==!0&&Ua.assignAnimationsFromFile(e.file,{createAnimationComponent:(n,s)=>Pi(n,Ot)})});class XE extends ae.WorkerBase{constructor(){super(new Worker(new URL("/generateMeshBVH.worker-Cdfpaq5W.js",typeof document>"u"?require("url").pathToFileURL(__filename).href:Mf&&Mf.tagName.toUpperCase()==="SCRIPT"&&Mf.src||new URL("needle-engine.bundle-D2L7sMfH.umd.cjs",document.baseURI).href),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(t,e,i={}){return new Promise((n,s)=>{if(e.getAttribute("position").isInterleavedBufferAttribute||e.index&&e.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");t.onerror=h=>{s(new Error(`[GenerateMeshBVHWorker] ${h.message||"Unknown error. Please check the server console. If you're using vite try adding 'three-mesh-bvh' to 'optimizeDeps.exclude' in your vite.config.js"}`))},t.onmessage=h=>{const{data:u}=h;if(u.error)s(new Error(u.error)),t.onmessage=null;else if(u.serialized){const{serialized:f,position:m}=u,g=ae.MeshBVH.deserialize(f,e,{setIndex:!1}),y=Object.assign({setBoundingBox:!0},i);if(e.attributes.position.array=m,f.index)if(e.index)e.index.array=f.index;else{const _=new d.BufferAttribute(f.index,1,!1);e.setIndex(_)}y.setBoundingBox&&(e.boundingBox=g.getBoundingBox(new d.Box3)),i.onProgress&&i.onProgress(u.progress),n(g),t.onmessage=null}else i.onProgress&&i.onProgress(u.progress)};const a=e.index?e.index.array:null,l=e.attributes.position.array,c=[l];a&&c.push(a),t.postMessage({index:a,position:l,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...e.groups]}},c.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const QE=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:XE},Symbol.toStringTag,{value:"Module"}));exports.$physicsKey=$P;exports.ActionBuilder=fe;exports.ActionCollection=Fw;exports.ActionModel=vi;exports.Addressables=xv;exports.AlignmentConstraint=ih;exports.AmbientMode=ka;exports.Animation=Ot;exports.AnimationCurve=wh;exports.AnimationExtension=Gu;exports.AnimationTrackHandler=gf;exports.AnimationUtils=Ua;exports.Animator=bt;exports.AnimatorConditionMode=Js;exports.AnimatorController=Wi;exports.AnimatorControllerParameterType=ug;exports.AnimatorStateInfo=Hl;exports.Antialiasing=Sh;exports.Application=yn;exports.AssetDatabase=U0;exports.AssetReference=te;exports.AudioExtension=Br;exports.AudioListener=ws;exports.AudioSource=Gi;exports.AudioTrackHandler=Qa;exports.Avatar=So;exports.AvatarBlink_Simple=Lr;exports.AvatarEyeLook_Rotation=vg;exports.AvatarLoader=Rx;exports.AvatarMarker=kt;exports.AvatarModel=Fy;exports.Avatar_Brain_LookAt=Rc;exports.Avatar_MouthShapes=rh;exports.Avatar_MustacheShake=_g;exports.Avatar_POI=Ms;exports.Axes=ma;exports.AxesHelper=el;exports.BUILD_TIME=zm;exports.BaseUIComponent=qi;exports.BasicIKConstraint=xg;exports.BehaviorExtension=Kg;exports.BehaviorModel=yt;exports.BloomEffect=af;exports.BoxCollider=Nu;exports.BoxGizmo=Nr;exports.BoxHelperComponent=Kn;exports.Button=Fs;exports.ButtonsFactory=jn;exports.CallDirection=nw;exports.CallInfo=bs;exports.Camera=si;exports.CameraTargetReachedEvent=kc;exports.Canvas=Ga;exports.CanvasGroup=Co;exports.CapsuleCollider=Os;exports.ChangeMaterialOnClick=Vg;exports.ChangeTransformOnClick=Fr;exports.CharacterController=Dr;exports.CharacterControllerInput=Es;exports.ChromaticAberration=Ch;exports.CircularBuffer=Mi;exports.ClearFlags=bo;exports.ClipExtrapolation=Rn;exports.Collider=ci;exports.Collision=ew;exports.CollisionDetectionMode=Iu;exports.ColorAdjustments=Bo;exports.ColorBySpeedModule=ul;exports.ColorOverLifetimeModule=sf;exports.Component=X1;exports.Component$1=L;exports.ComponentLifecycleEvents=qc;exports.Components=qE;exports.ConnectionEvents=L0;exports.ContactPoint=Jv;exports.ContactShadows=ah;exports.Context=Q;exports.ContextArgs=B1;exports.ContextEvent=de;exports.ContextRegistry=re;exports.ControlTrackHandler=yf;exports.CustomBranding=zr;exports.CustomShader=iu;exports.DefaultReflectionMode=Gd;exports.Deletable=Mg;exports.DeleteBox=Na;exports.DepthOfField=Sn;exports.DeviceFlag=Vu;exports.DocumentExtension=Ex;exports.DragControls=nr;exports.DragMode=Og;exports.DropListener=Ts;exports.Duplicatable=Rg;exports.EffectWrapper=Dc;exports.EmissionModule=js;exports.EmphasizeOnClick=sl;exports.EngineLoadingView=uu;exports.EnvironmentScene=xf;exports.EventList=ye;exports.EventListEvent=ju;exports.EventSystem=Gt;exports.EventTrigger=Wu;exports.FieldWithDefault=xw;exports.FileReference=Pc;exports.FileReferenceSerializer=Cv;exports.FileSpawnModel=uM;exports.File_Event=lw;exports.FixedJoint=dy;exports.Fog=cl;exports.FrameEvent=we;exports.GENERATOR=Cu;exports.GameObject=C;exports.Gizmos=V;exports.GltfExport=Fg;exports.GltfExportBox=jg;exports.Gradient=$r;exports.Graphic=gh;exports.GraphicRaycaster=Bu;exports.Graphics=Ui;exports.GridHelper=hl;exports.GridLayoutGroup=ny;exports.GroundProjectedEnv=es;exports.GroupActionModel=uo;exports.HideFlags=Fu;exports.HideOnStart=$a;exports.HingeJoint=_h;exports.HorizontalLayoutGroup=iy;exports.HostData=NC;exports.Image=ml;exports.ImageReference=Cc;exports.ImageReferenceSerializer=Sv;exports.InheritVelocityModule=my;exports.Input=O0;exports.InputEventQueue=ni;exports.InputEvents=Ee;exports.InputField=Ry;exports.InstanceHandle=Ec;exports.InstancingHandler=Va;exports.InstancingUtil=$i;exports.InstantiateEvent=Y0;exports.InstantiateIdProvider=gt;exports.InstantiateOptions=vn;exports.Interactable=Pg;exports.JoinedRoomResponse=uC;exports.KeyEventArgs=tC;exports.Keyframe=oi;exports.LODGroup=vh;exports.LODModel=dl;exports.LeftRoomResponse=fC;exports.Light=ui;exports.LightData=Rv;exports.LimitVelocityOverLifetimeModule=ot;exports.LoadingElementOptions=LE;exports.LogStats=Cg;exports.LogType=Ci;exports.LookAt=Ey;exports.LookAtConstraint=Ar;exports.MainModule=Tt;exports.MarkerType=My;exports.MaskableGraphic=yh;exports.Mathf=z;exports.MeshCollider=Eo;exports.MeshRenderer=ch;exports.MinMaxCurve=q;exports.MinMaxGradient=Wr;exports.NEKeyboardEvent=zl;exports.NEPointerEvent=us;exports.NeedleButtonElement=By;exports.NeedleEngineHTMLElement=jy;exports.NeedleMenu=is;exports.NeedlePatchesKey=yd;exports.NeedleXRController=Wm;exports.NeedleXRSession=Z;exports.NeedleXRSync=j0;exports.NeedleXRUtils=F0;exports.NestedGltf=ef;exports.NetworkConnection=I0;exports.NetworkedStreamEvents=Bn;exports.NetworkedStreams=oh;exports.Networking=fy;exports.NewInstanceModel=Z0;exports.NoiseModule=be;exports.ObjectRaycaster=ki;exports.ObjectUtils=ko;exports.OffsetConstraint=Vr;exports.OneEuroFilter=md;exports.OneEuroFilterXYZ=Am;exports.OpenURL=gl;exports.OrbitControls=ge;exports.Outline=ll;exports.OwnershipEvent=D0;exports.OwnershipModel=Xm;exports.PUBLIC_KEY=ua;exports.Padding=Ur;exports.ParticleBurst=lu;exports.ParticleSubEmitter=gy;exports.ParticleSystem=Lc;exports.ParticleSystemBaseBehaviour=jo;exports.ParticleSystemRenderer=Zi;exports.ParticleSystemShapeType=au;exports.PeerHandle=Ra;exports.PeerNetworking=A0;exports.Physics=vc;exports.PhysicsExtension=Zg;exports.PhysicsMaterialCombine=at;exports.PixelationEffect=Ph;exports.PlayAnimationOnClick=Tc;exports.PlayAudioOnClick=xo;exports.PlayableDirector=Ya;exports.PlayerColor=qa;exports.PlayerState=fn;exports.PlayerStateEvent=Nw;exports.PlayerSync=Qg;exports.PlayerView=Mv;exports.PlayerViewManager=Ov;exports.PointerEventData=sh;exports.PointerType=Ou;exports.PostProcessingEffect=Xe;exports.PostProcessingHandler=wy;exports.PreliminaryAction=ol;exports.PreliminaryTrigger=uh;exports.PrimitiveType=vr;exports.Progress=oe;exports.PromiseAllWithErrors=Em;exports.PromiseErrorResult=Dp;exports.RGBAColor=ie;exports.RapierPhysics=fu;exports.RawImage=vf;exports.RaycastOptions=Qn;exports.Rect=$w;exports.RectTransform=bn;exports.ReflectionProbe=Hu;exports.RegisteredAnimationInfo=fo;exports.RemoteSkybox=cf;exports.RenderTexture=yr;exports.RenderTextureSerializer=Qv;exports.Renderer=Ri;exports.RendererData=kv;exports.RendererLightmap=ou;exports.Rigidbody=it;exports.RigidbodyConstraints=ze;exports.RoomEvents=J;exports.RotationBySpeedModule=Ki;exports.RotationOverLifetimeModule=xn;exports.SceneLightSettings=eu;exports.SceneSwitcher=We;exports.ScreenCapture=Fo;exports.ScreenSpaceAmbientOcclusion=Bs;exports.ScreenSpaceAmbientOcclusionN8=Cn;exports.SendQueue=cn;exports.SerializationContext=og;exports.SetActiveOnClick=$g;exports.ShadowCatcher=Rh;exports.ShapeModule=py;exports.SharpeningEffect=Oh;exports.SignalAsset=mf;exports.SignalReceiver=Dh;exports.SignalReceiverEvent=Lh;exports.SignalTrackHandler=Ic;exports.Size=Vw;exports.SizeBySpeedModule=fi;exports.SizeOverLifetimeModule=Hr;exports.SkinnedMeshRenderer=Ig;exports.SmoothFollow=df;exports.SpatialGrabRaycaster=Cr;exports.SpatialHtml=Bh;exports.SpatialTrigger=uf;exports.SpatialTriggerReceiver=Xn;exports.SpectatorCamera=ff;exports.SphereCollider=tl;exports.SphereIntersection=Km;exports.SphereOverlapResult=tw;exports.Sprite=Ls;exports.SpriteData=Ta;exports.SpriteRenderer=hi;exports.SpriteSheet=Ha;exports.StateMachineBehaviour=eP;exports.StreamEndedEvent=gg;exports.StreamReceivedEvent=iw;exports.SubEmitterSystem=cu;exports.SyncedCamera=Sy;exports.SyncedRoom=Pn;exports.SyncedTransform=Yn;exports.TapGestureTrigger=Hg;exports.TeleportTarget=Ku;exports.TestRunner=Cy;exports.TestSceneUtils=NE;exports.TestSimulateUserData=Py;exports.Text=Et;exports.TextBuilder=ey;exports.TextExtension=Ju;exports.TextureSheetAnimationModule=At;exports.TiltShiftEffect=os;exports.Time=Ev;exports.ToneMappingEffect=Xa;exports.TrackHandler=Ih;exports.TrackType=gi;exports.TrailModule=je;exports.TransformData=$e;exports.TransformGizmo=Qr;exports.TriggerBuilder=_t;exports.TriggerModel=vo;exports.TypeStore=O;exports.UIRaycastUtils=pg;exports.UIRootComponent=ph;exports.USDDocument=Ug;exports.USDObject=Mt;exports.USDWriter=kw;exports.USDZExporter=qn;exports.USDZExporter$1=Rw;exports.USDZText=sr;exports.USDZUIExtension=oy;exports.UriSerializer=Yv;exports.UsageMarker=lh;exports.UserJoinedOrLeftRoomModel=pC;exports.VERSION=pn;exports.VariantAction=Ng;exports.VelocityOverLifetimeModule=Ue;exports.VerticalLayoutGroup=ty;exports.VideoPlayer=nt;exports.ViewDevice=go;exports.Vignette=Xr;exports.VisibilityAction=fh;exports.Voip=Ro;exports.Volume=pl;exports.VolumeParameter=U;exports.VolumeProfile=of;exports.WaitForFrames=g1;exports.WaitForPromise=Pv;exports.WaitForSeconds=lg;exports.Watch=Cs;exports.WebARCameraBackground=Uh;exports.WebARSessionRoot=Zn;exports.WebXR=Zu;exports.WebXRButtonFactory=wo;exports.WebXRImageTracking=Bc;exports.WebXRImageTrackingModel=zs;exports.WebXRPlaneTracking=Ns;exports.WebXRTrackedImage=jc;exports.XRControllerFollow=Us;exports.XRControllerModel=Jn;exports.XRControllerMovement=Ei;exports.XRFlag=Ni;exports.XRRig=Cf;exports.XRState=Ht;exports.XRStateFlag=Ln;exports.__Ignore=Tx;exports.__internalNotifyObjectDestroyed=W0;exports.activeInHierarchyFieldName=Ps;exports.addAttributeChangeCallback=Yb;exports.addComponent=Pi;exports.addCustomExtensionPlugin=DM;exports.addNewComponent=mr;exports.addPatch=Pu;exports.apply=Eu;exports.applyHMRChanges=q1;exports.applyPrototypeExtensions=hv;exports.beginListenDestroy=K0;exports.beginListenInstantiate=ev;exports.binaryIdentifierCasts=Hm;exports.build_scene_functions=j1;exports.builtinComponentKeyName=Qo;exports.calculateProgress01=Iy;exports.clearMessages=mS;exports.colorSerializer=wP;exports.compareAssociation=sv;exports.componentSerializer=Pd;exports.copyTexture=u0;exports.createMotion=Vv;exports.debugNet=Kt;exports.debugOwner=Nl;exports.decompressGpuTexture=Lw;exports.deepClone=Vc;exports.delay=mn;exports.delayForFrames=$c;exports.deserializeObject=Wd;exports.destroy=Oi;exports.destroyComponentInstance=fv;exports.determineMimeTypeFromExtension=cw;exports.disposeObjectResources=Se;exports.disposeStream=Fn;exports.editorGuidKeyName=Jl;exports.enableSpatialConsole=fr;exports.euler=SP;exports.eventListSerializer=OP;exports.exportAsGLTF=WE;exports.findByGuid=ag;exports.findObjectOfType=Jc;exports.findObjectsOfType=mv;exports.findResourceUsers=Jm;exports.fitObjectIntoVolume=p0;exports.foreachComponent=xr;exports.foreachComponentEnumerator=Au;exports.forward=ES;exports.generateQRCode=Zb;exports.generateSeed=J0;exports.getBoundingBox=ri;exports.getCameraController=o0;exports.getComponent=Rr;exports.getComponentInChildren=Zc;exports.getComponentInParent=Sc;exports.getComponents=Kc;exports.getComponentsInChildren=Za;exports.getComponentsInParent=Ru;exports.getFormattedDate=Cw;exports.getIconElement=mt;exports.getIconTexture=im;exports.getLoader=gn;exports.getOrAddComponent=Yc;exports.getParam=x;exports.getParentHierarchyPath=LS;exports.getPath=Xx;exports.getPeerOptions=lC;exports.getPeerjsInstance=T0;exports.getResourceUserCount=AC;exports.getTempColor=l0;exports.getTempQuaternion=ln;exports.getTempVector=$;exports.getUrlParams=Nc;exports.getVisibleInCustomShadowRendering=f0;exports.getWorldDirection=c0;exports.getWorldEuler=Im;exports.getWorldPosition=K;exports.getWorldQuaternion=_e;exports.getWorldRotation=Su;exports.getWorldScale=Fe;exports.hasCommercialLicense=Gn;exports.hasIndieLicense=th;exports.hasPointerEventComponent=Yd;exports.hasProLicense=Hn;exports.hideDebugConsole=_0;exports.imageToCanvas=Dw;exports.instantiate=Sr;exports.invokeLoadedImportPluginHooks=_w;exports.invokeXRSessionEnd=M0;exports.invokeXRSessionStart=P0;exports.isActiveInHierarchy=gv;exports.isActiveSelf=Ja;exports.isAndroidDevice=eS;exports.isAnimationAction=d0;exports.isComponent=Zv;exports.isDebugMode=Wx;exports.isDesktop=Yx;exports.isDestroyed=wr;exports.isDevEnvironment=F;exports.isDisposed=EC;exports.isExporting=VE;exports.isGLTFModel=Kv;exports.isHostedOnGlitch=$b;exports.isHotReloadEnabled=rm;exports.isHotReloading=H1;exports.isIPad=Zx;exports.isIconElement=Av;exports.isLocalNetwork=qt;exports.isMacOS=iS;exports.isMobileDevice=Kx;exports.isMozillaXR=tS;exports.isQuest=oS;exports.isResourceTrackingEnabled=N0;exports.isSafari=sS;exports.isUsingInstancing=Tu;exports.isiOS=nS;exports.isiPad=Jx;exports.loadAsset=OE;exports.loadSync=Dy;exports.logHierarchy=jd;exports.lookAtInverse=xS;exports.lookAtObject=Wc;exports.lookAtScreenPoint=SS;exports.makeId=Gx;exports.makeIdFromRandomWords=qb;exports.makeNameSafe=_n;exports.markAsInstancedRendered=yv;exports.microphonePermissionsGranted=rS;exports.nameof=$x;exports.nameofFactory=Hb;exports.objectSerializer=Xv;exports.offXRSessionEnd=eC;exports.offXRSessionStart=JS;exports.onAfterRender=fP;exports.onBeforeRender=uP;exports.onClear=hP;exports.onDestroy=dP;exports.onInitialized=$v;exports.onStart=Wv;exports.onUpdate=Hv;exports.onXRSessionEnd=$m;exports.onXRSessionStart=Mu;exports.parseSync=xx;exports.placeOnSurface=m0;exports.postprocessFBXMaterials=Fm;exports.prefix=mP;exports.pushState=Gb;exports.randomNumber=qx;exports.registerBinaryType=Gm;exports.registerComponent=Lu;exports.registerComponentExtension=Ag;exports.registerCustomEffectType=Ji;exports.registerExportExtensions=Lg;exports.registerExtensions=su;exports.registerHotReloadType=Fv;exports.registerLoader=Nm;exports.registerPrefabProvider=iv;exports.registerPrototypeExtensions=dv;exports.registerType=GC;exports.relativePathPrefix=Qb;exports.removeAttributeChangeCallback=Kb;exports.removeComponent=rg;exports.removeCustomImportExtensionType=IM;exports.removePatch=KS;exports.resolveUrl=Po;exports.sanitizeString=Xb;exports.saveImage=_x;exports.screenshot=hE;exports.screenshot2=Ay;exports.sendDestroyed=tg;exports.serializable=p;exports.serializeObject=rv;exports.serializeable=Er;exports.setActive=ic;exports.setAllowBalloonMessages=i0;exports.setAllowOverlayMessages=dS;exports.setAutoFitEnabled=Dd;exports.setCameraController=Bp;exports.setDestroyed=bv;exports.setDevEnvironment=NS;exports.setDisposable=Zm;exports.setDontDestroy=aa;exports.setOrAddParamsToUrl=Lp;exports.setParam=Hx;exports.setParamWithoutReload=yc;exports.setPeerOptions=cC;exports.setResourceTrackingEnabled=RC;exports.setState=km;exports.setVisibleInCustomShadowRendering=Bm;exports.setWorldEuler=jm;exports.setWorldPosition=tt;exports.setWorldPositionXYZ=br;exports.setWorldQuaternion=Hi;exports.setWorldQuaternionXYZW=Dm;exports.setWorldRotation=h0;exports.setWorldRotationXYZ=Hc;exports.setWorldScale=Da;exports.showBalloonError=Gc;exports.showBalloonMessage=Te;exports.showBalloonWarning=me;exports.showDebugConsole=Um;exports.slerp=wS;exports.syncDestroy=Xc;exports.syncField=Xg;exports.syncInstantiate=ig;exports.textureToCanvas=DS;exports.tryCastBinary=R0;exports.tryDetermineMimetypeFromBinary=dw;exports.tryDetermineMimetypeFromURL=hw;exports.tryFindObject=La;exports.tryGetGuid=E0;exports.unregisterHotReloadType=Uv;exports.unwatchWrite=Rm;exports.useForAutoFit=r0;exports.validate=vt;exports.watchWrite=xu;
|
|
1559
|
+
`),he(this,hr).innerHTML=he(this,zt).innerHTML,he(this,hr).style.cssText="display: flex; align-items: center; justify-content: center;",he(this,zt).innerHTML=he(this,hr).outerHTML,he(this,cr).innerHTML=he(this,zt).outerHTML,he(this,cr).prepend(he(this,dr)),qd(nm,{element:he(this,cr)}),(n=he(this,Aa))==null||n.disconnect(),he(this,Aa)??nn(this,Aa,new MutationObserver(()=>wl(this,Ka,kx).call(this))),he(this,Aa).observe(he(this,zt),{attributes:!0}),Tp&&console.log("Needle Button updated")},kx=function(){he(this,zt)&&(he(this,zt).style.display==="none"?this.style.display="none":this.style.display==="none"&&(this.style.display=""))},zc=new WeakMap,r(By,"observedAttributes",["ar","vr","quicklook"]);typeof window<"u"&&!window.customElements.get(Nb)&&window.customElements.define(Nb,By);const Fl=x("debugavatar");class Fy{constructor(t,e,i,n){r(this,"root");r(this,"head");r(this,"leftHand");r(this,"rigthHand");var s;this.root=t,this.head=e,this.leftHand=i,this.rigthHand=n,(s=this.root)==null||s.traverse(a=>a.layers.set(2))}get isValid(){return this.head!==null&&this.head!==void 0}}class Rx{constructor(){r(this,"avatarRegistryUrl",null)}async getOrCreateNewAvatarInstance(t,e){if(!e)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof e=="string"){if(i=await this.loadAvatar(t,e),!i){const s=new vn;i=C.instantiate(La(e,t.scene),s)}}else i=e;if(!i)return null;const n=this.findAvatar(i);return n.isValid?(Fl&&console.log("[Custom Avatar] valid config",e,Fl?n:""),n):(console.warn("[Custom Avatar] config isn't valid",e,Fl?n:""),null)}async loadAvatar(t,e){if(console.assert(e!=null&&typeof e=="string","Avatar id must not be null"),e.length<=0||!e)return null;if(Fl&&console.log("[Custom Avatar] "+e+", loading..."),e.endsWith(".glb")||(e+=".glb"),this.avatarRegistryUrl===null){const n=await fetch("./"+e);let s=null;if(n.ok){const l=await n.blob();l&&(s=await l.arrayBuffer())}if(!s)return null;const a=await gn().parseSync(t,s,null,0);return(a==null?void 0:a.scene)??null}const i=new G.GLTFLoader;return dg(i,t),new Promise((n,s)=>{const a=this.avatarRegistryUrl+"/"+e;i.load(a,async l=>{await gn().createBuiltinComponents(t,a,l,null,void 0),n(l.scene)},l=>{Fl&&console.log("[Custom Avatar] "+l.loaded/l.total*100+"% loaded of "+l.total/1024+"kB")},l=>{console.error("[Custom Avatar] Error when loading: "+l),n(null)})})}cacheModel(t,e){}findAvatar(t){const e=t;let i=e;i.children.length==1&&(i=t.children[0]);let n=this.findAvatarPart(i,["head"]);const s=this.findAvatarPart(i,["left","hand"]),a=this.findAvatarPart(i,["right","hand"]);if(!n){n=e;const c=new d.Vector3;new d.Box3().setFromObject(n).getSize(c);const h=Math.max(c.x,c.y,c.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 Fy(e,n,s,a)}findAvatarPart(t,e){const i=t.name.toLowerCase();let n=!0;for(const s of e){if(!n)break;i.indexOf(s)===-1&&(n=!1)}if(n)return t;if(t.children)for(const s of t.children){const a=this.findAvatarPart(s,e);if(a)return a}return null}handleCustomAvatarErrors(t){if(!t.ok)throw Error(t.statusText);return t}}class Ex{get extensionName(){return"DocumentExtension"}onAfterBuildDocument(t){}}class Tx{}const qE=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:fe,ActionCollection:Fw,ActionModel:vi,AlignmentConstraint:ih,Animation:Ot,AnimationCurve:wh,AnimationExtension:Gu,AnimationTrackHandler:gf,Animator:bt,AnimatorController:Wi,Antialiasing:Sh,AudioExtension:Br,AudioListener:ws,AudioSource:Gi,AudioTrackHandler:Qa,Avatar:So,AvatarBlink_Simple:Lr,AvatarEyeLook_Rotation:vg,AvatarLoader:Rx,AvatarMarker:kt,AvatarModel:Fy,Avatar_Brain_LookAt:Rc,Avatar_MouthShapes:rh,Avatar_MustacheShake:_g,Avatar_POI:Ms,AxesHelper:el,BaseUIComponent:qi,BasicIKConstraint:xg,BehaviorExtension:Kg,BehaviorModel:yt,BloomEffect:af,BoxCollider:Nu,BoxGizmo:Nr,BoxHelperComponent:Kn,Button:Fs,CallInfo:bs,Camera:si,CameraTargetReachedEvent:kc,Canvas:Ga,CanvasGroup:Co,CapsuleCollider:Os,ChangeMaterialOnClick:Vg,ChangeTransformOnClick:Fr,CharacterController:Dr,CharacterControllerInput:Es,ChromaticAberration:Ch,Collider:ci,ColorAdjustments:Bo,ColorBySpeedModule:ul,ColorOverLifetimeModule:sf,ContactShadows:ah,ControlTrackHandler:yf,CustomBranding:zr,Deletable:Mg,DeleteBox:Na,DepthOfField:Sn,DeviceFlag:Vu,DocumentExtension:Ex,DragControls:nr,DropListener:Ts,Duplicatable:Rg,EffectWrapper:Dc,EmissionModule:js,EmphasizeOnClick:sl,EnvironmentScene:xf,EventList:ye,EventListEvent:ju,EventSystem:Gt,EventTrigger:Wu,FieldWithDefault:xw,FixedJoint:dy,Fog:cl,GltfExport:Fg,GltfExportBox:jg,Gradient:$r,Graphic:gh,GraphicRaycaster:Bu,GridHelper:hl,GridLayoutGroup:ny,GroundProjectedEnv:es,GroupActionModel:uo,HideOnStart:$a,HingeJoint:_h,HorizontalLayoutGroup:iy,Image:ml,InheritVelocityModule:my,InputField:Ry,InstanceHandle:Ec,InstancingHandler:Va,Interactable:Pg,Keyframe:oi,LODGroup:vh,LODModel:dl,Light:ui,LimitVelocityOverLifetimeModule:ot,LogStats:Cg,LookAt:Ey,LookAtConstraint:Ar,MainModule:Tt,MaskableGraphic:yh,MeshCollider:Eo,MeshRenderer:ch,MinMaxCurve:q,MinMaxGradient:Wr,NeedleMenu:is,NestedGltf:ef,Networking:fy,NoiseModule:be,ObjectRaycaster:ki,OffsetConstraint:Vr,OpenURL:gl,OrbitControls:ge,Outline:ll,Padding:Ur,ParticleBurst:lu,ParticleSubEmitter:gy,ParticleSystem:Lc,ParticleSystemRenderer:Zi,PhysicsExtension:Zg,PixelationEffect:Ph,PlayAnimationOnClick:Tc,PlayAudioOnClick:xo,PlayableDirector:Ya,PlayerColor:qa,PointerEventData:sh,PostProcessingHandler:wy,PreliminaryAction:ol,PreliminaryTrigger:uh,RawImage:vf,Rect:$w,RectTransform:bn,ReflectionProbe:Hu,RegisteredAnimationInfo:fo,RemoteSkybox:cf,Renderer:Ri,RendererLightmap:ou,Rigidbody:it,RotationBySpeedModule:Ki,RotationOverLifetimeModule:xn,SceneSwitcher:We,ScreenCapture:Fo,ScreenSpaceAmbientOcclusion:Bs,ScreenSpaceAmbientOcclusionN8:Cn,SetActiveOnClick:$g,ShadowCatcher:Rh,ShapeModule:py,SharpeningEffect:Oh,SignalAsset:mf,SignalReceiver:Dh,SignalReceiverEvent:Lh,SignalTrackHandler:Ic,Size:Vw,SizeBySpeedModule:fi,SizeOverLifetimeModule:Hr,SkinnedMeshRenderer:Ig,SmoothFollow:df,SpatialGrabRaycaster:Cr,SpatialHtml:Bh,SpatialTrigger:uf,SpatialTriggerReceiver:Xn,SpectatorCamera:ff,SphereCollider:tl,Sprite:Ls,SpriteData:Ta,SpriteRenderer:hi,SpriteSheet:Ha,SubEmitterSystem:cu,SyncedCamera:Sy,SyncedRoom:Pn,SyncedTransform:Yn,TapGestureTrigger:Hg,TeleportTarget:Ku,TestRunner:Cy,TestSimulateUserData:Py,Text:Et,TextBuilder:ey,TextExtension:Ju,TextureSheetAnimationModule:At,TiltShiftEffect:os,ToneMappingEffect:Xa,TrailModule:je,TransformData:$e,TransformGizmo:Qr,TriggerBuilder:_t,TriggerModel:vo,UIRaycastUtils:pg,UIRootComponent:ph,USDZExporter:qn,USDZText:sr,USDZUIExtension:oy,UsageMarker:lh,VariantAction:Ng,VelocityOverLifetimeModule:Ue,VerticalLayoutGroup:ty,VideoPlayer:nt,Vignette:Xr,VisibilityAction:fh,Voip:Ro,Volume:pl,VolumeParameter:U,VolumeProfile:of,WebARCameraBackground:Uh,WebARSessionRoot:Zn,WebXR:Zu,WebXRImageTracking:Bc,WebXRImageTrackingModel:zs,WebXRPlaneTracking:Ns,WebXRTrackedImage:jc,XRControllerFollow:Us,XRControllerModel:Jn,XRControllerMovement:Ei,XRFlag:Ni,XRRig:Cf,XRState:Ht,__Ignore:Tx},Symbol.toStringTag,{value:"Module"})),pu=x("debugmissingcamera");re.registerCallback(de.MissingCamera,o=>{var l,c,h,u;pu&&console.warn("Creating missing camera");const t=o.context.scene,e=new d.PerspectiveCamera;e.name="Default Fallback Camera",t.add(e);const i=new si;if(i.sourceId=((c=(l=o.files)==null?void 0:l[0])==null?void 0:c.src)??"unknown",i.fieldOfView=35,o.context.domElement.getAttribute("transparent")!=null)i.clearFlags=bo.Uninitialized;else if((h=o.context.domElement.getAttribute("skybox-image"))!=null&&h.length||(u=o.context.domElement.getAttribute("background-image"))!=null&&u.length||o.context.lightmaps.tryGetSkybox(i.sourceId))i.clearFlags=bo.Skybox,i.backgroundBlurriness=.2;else{if(i.clearFlags=bo.SolidColor,!o.context.domElement.getAttribute("background-color")){let f="#efefef";typeof window!==void 0&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(f="#1f1f1f"),t.background=new d.Color(f)}if(!t.environment){const f=new d.PMREMGenerator$1(o.context.renderer),m=new xf("neutral");t.environment=f.fromScene(m,.025).texture}}const s=mr(e,i,!0);e.position.x=0,e.position.y=1,e.position.z=2;const a=o.context.domElement;return(a==null?void 0:a.cameraControls)!=!1&&Ax(o.context,s),s});re.registerCallback(de.ContextCreated,o=>{if(!o.context.mainCamera){pu&&console.log("Will not auto-fit because a default camera exists");return}const t=o.context.domElement;if((t==null?void 0:t.cameraControls)==!0){const e=o0(o.context.mainCamera);if((e==null?void 0:e.isCameraController)==!0){pu&&console.log("Will not auto-fit because a camera controller exists");return}Ax(o.context)}});function Ax(o,t){t=t??o.mainCameraComponent;const e=t==null?void 0:t.gameObject;if(pu&&console.log("Creating default camera controls",t==null?void 0:t.name),e){const i=Yc(e,ge);i.sourceId=(t==null?void 0:t.sourceId)??"unknown";const n=o.domElement.getAttribute("auto-rotate");if(i.autoRotate=n!=null&&n!="0"&&(n==null?void 0:n.toLowerCase())!="false",i.autoRotateSpeed=.5,i.autoFit=!0,i.autoRotate&&n){const s=parseFloat(n);isNaN(s)||(i.autoRotateSpeed=s)}}else console.warn("Missing camera object, can not add orbit controls")}re.registerCallback(de.ContextCreated,o=>{const t=o.context.domElement.getAttribute("autoplay");if(t!==void 0&&(t===""||t==="true"||t==="1")&&o.files)for(const e of o.files)C.foreachComponent(e.file.scene,n=>{if(n.enabled!==!1){if(n instanceof Ot&&n.playAutomatically||n instanceof bt||n instanceof Ya&&n.playOnAwake===!0)return!0;if(n instanceof Ot)return n.playAutomatically=!0,!0;if(n instanceof Ya)return n.playOnAwake=!0,!0}},!0)!==!0&&Ua.assignAnimationsFromFile(e.file,{createAnimationComponent:(n,s)=>Pi(n,Ot)})});class XE extends ae.WorkerBase{constructor(){super(new Worker(new URL("/generateMeshBVH.worker-Cdfpaq5W.js",typeof document>"u"?require("url").pathToFileURL(__filename).href:Mf&&Mf.tagName.toUpperCase()==="SCRIPT"&&Mf.src||new URL("needle-engine.bundle-BAC1t3iE.umd.cjs",document.baseURI).href),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(t,e,i={}){return new Promise((n,s)=>{if(e.getAttribute("position").isInterleavedBufferAttribute||e.index&&e.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");t.onerror=h=>{s(new Error(`[GenerateMeshBVHWorker] ${h.message||"Unknown error. Please check the server console. If you're using vite try adding 'three-mesh-bvh' to 'optimizeDeps.exclude' in your vite.config.js"}`))},t.onmessage=h=>{const{data:u}=h;if(u.error)s(new Error(u.error)),t.onmessage=null;else if(u.serialized){const{serialized:f,position:m}=u,g=ae.MeshBVH.deserialize(f,e,{setIndex:!1}),y=Object.assign({setBoundingBox:!0},i);if(e.attributes.position.array=m,f.index)if(e.index)e.index.array=f.index;else{const _=new d.BufferAttribute(f.index,1,!1);e.setIndex(_)}y.setBoundingBox&&(e.boundingBox=g.getBoundingBox(new d.Box3)),i.onProgress&&i.onProgress(u.progress),n(g),t.onmessage=null}else i.onProgress&&i.onProgress(u.progress)};const a=e.index?e.index.array:null,l=e.attributes.position.array,c=[l];a&&c.push(a),t.postMessage({index:a,position:l,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...e.groups]}},c.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const QE=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:XE},Symbol.toStringTag,{value:"Module"}));exports.$physicsKey=$P;exports.ActionBuilder=fe;exports.ActionCollection=Fw;exports.ActionModel=vi;exports.Addressables=xv;exports.AlignmentConstraint=ih;exports.AmbientMode=ka;exports.Animation=Ot;exports.AnimationCurve=wh;exports.AnimationExtension=Gu;exports.AnimationTrackHandler=gf;exports.AnimationUtils=Ua;exports.Animator=bt;exports.AnimatorConditionMode=Js;exports.AnimatorController=Wi;exports.AnimatorControllerParameterType=ug;exports.AnimatorStateInfo=Hl;exports.Antialiasing=Sh;exports.Application=yn;exports.AssetDatabase=U0;exports.AssetReference=te;exports.AudioExtension=Br;exports.AudioListener=ws;exports.AudioSource=Gi;exports.AudioTrackHandler=Qa;exports.Avatar=So;exports.AvatarBlink_Simple=Lr;exports.AvatarEyeLook_Rotation=vg;exports.AvatarLoader=Rx;exports.AvatarMarker=kt;exports.AvatarModel=Fy;exports.Avatar_Brain_LookAt=Rc;exports.Avatar_MouthShapes=rh;exports.Avatar_MustacheShake=_g;exports.Avatar_POI=Ms;exports.Axes=ma;exports.AxesHelper=el;exports.BUILD_TIME=zm;exports.BaseUIComponent=qi;exports.BasicIKConstraint=xg;exports.BehaviorExtension=Kg;exports.BehaviorModel=yt;exports.BloomEffect=af;exports.BoxCollider=Nu;exports.BoxGizmo=Nr;exports.BoxHelperComponent=Kn;exports.Button=Fs;exports.ButtonsFactory=jn;exports.CallDirection=nw;exports.CallInfo=bs;exports.Camera=si;exports.CameraTargetReachedEvent=kc;exports.Canvas=Ga;exports.CanvasGroup=Co;exports.CapsuleCollider=Os;exports.ChangeMaterialOnClick=Vg;exports.ChangeTransformOnClick=Fr;exports.CharacterController=Dr;exports.CharacterControllerInput=Es;exports.ChromaticAberration=Ch;exports.CircularBuffer=Mi;exports.ClearFlags=bo;exports.ClipExtrapolation=Rn;exports.Collider=ci;exports.Collision=ew;exports.CollisionDetectionMode=Iu;exports.ColorAdjustments=Bo;exports.ColorBySpeedModule=ul;exports.ColorOverLifetimeModule=sf;exports.Component=X1;exports.Component$1=L;exports.ComponentLifecycleEvents=qc;exports.Components=qE;exports.ConnectionEvents=L0;exports.ContactPoint=Jv;exports.ContactShadows=ah;exports.Context=Q;exports.ContextArgs=B1;exports.ContextEvent=de;exports.ContextRegistry=re;exports.ControlTrackHandler=yf;exports.CustomBranding=zr;exports.CustomShader=iu;exports.DefaultReflectionMode=Gd;exports.Deletable=Mg;exports.DeleteBox=Na;exports.DepthOfField=Sn;exports.DeviceFlag=Vu;exports.DocumentExtension=Ex;exports.DragControls=nr;exports.DragMode=Og;exports.DropListener=Ts;exports.Duplicatable=Rg;exports.EffectWrapper=Dc;exports.EmissionModule=js;exports.EmphasizeOnClick=sl;exports.EngineLoadingView=uu;exports.EnvironmentScene=xf;exports.EventList=ye;exports.EventListEvent=ju;exports.EventSystem=Gt;exports.EventTrigger=Wu;exports.FieldWithDefault=xw;exports.FileReference=Pc;exports.FileReferenceSerializer=Cv;exports.FileSpawnModel=uM;exports.File_Event=lw;exports.FixedJoint=dy;exports.Fog=cl;exports.FrameEvent=we;exports.GENERATOR=Cu;exports.GameObject=C;exports.Gizmos=V;exports.GltfExport=Fg;exports.GltfExportBox=jg;exports.Gradient=$r;exports.Graphic=gh;exports.GraphicRaycaster=Bu;exports.Graphics=Ui;exports.GridHelper=hl;exports.GridLayoutGroup=ny;exports.GroundProjectedEnv=es;exports.GroupActionModel=uo;exports.HideFlags=Fu;exports.HideOnStart=$a;exports.HingeJoint=_h;exports.HorizontalLayoutGroup=iy;exports.HostData=NC;exports.Image=ml;exports.ImageReference=Cc;exports.ImageReferenceSerializer=Sv;exports.InheritVelocityModule=my;exports.Input=O0;exports.InputEventQueue=ni;exports.InputEvents=Ee;exports.InputField=Ry;exports.InstanceHandle=Ec;exports.InstancingHandler=Va;exports.InstancingUtil=$i;exports.InstantiateEvent=Y0;exports.InstantiateIdProvider=gt;exports.InstantiateOptions=vn;exports.Interactable=Pg;exports.JoinedRoomResponse=uC;exports.KeyEventArgs=tC;exports.Keyframe=oi;exports.LODGroup=vh;exports.LODModel=dl;exports.LeftRoomResponse=fC;exports.Light=ui;exports.LightData=Rv;exports.LimitVelocityOverLifetimeModule=ot;exports.LoadingElementOptions=LE;exports.LogStats=Cg;exports.LogType=Ci;exports.LookAt=Ey;exports.LookAtConstraint=Ar;exports.MainModule=Tt;exports.MarkerType=My;exports.MaskableGraphic=yh;exports.Mathf=z;exports.MeshCollider=Eo;exports.MeshRenderer=ch;exports.MinMaxCurve=q;exports.MinMaxGradient=Wr;exports.NEKeyboardEvent=zl;exports.NEPointerEvent=us;exports.NeedleButtonElement=By;exports.NeedleEngineHTMLElement=jy;exports.NeedleMenu=is;exports.NeedlePatchesKey=yd;exports.NeedleXRController=Wm;exports.NeedleXRSession=Z;exports.NeedleXRSync=j0;exports.NeedleXRUtils=F0;exports.NestedGltf=ef;exports.NetworkConnection=I0;exports.NetworkedStreamEvents=Bn;exports.NetworkedStreams=oh;exports.Networking=fy;exports.NewInstanceModel=Z0;exports.NoiseModule=be;exports.ObjectRaycaster=ki;exports.ObjectUtils=ko;exports.OffsetConstraint=Vr;exports.OneEuroFilter=md;exports.OneEuroFilterXYZ=Am;exports.OpenURL=gl;exports.OrbitControls=ge;exports.Outline=ll;exports.OwnershipEvent=D0;exports.OwnershipModel=Xm;exports.PUBLIC_KEY=ua;exports.Padding=Ur;exports.ParticleBurst=lu;exports.ParticleSubEmitter=gy;exports.ParticleSystem=Lc;exports.ParticleSystemBaseBehaviour=jo;exports.ParticleSystemRenderer=Zi;exports.ParticleSystemShapeType=au;exports.PeerHandle=Ra;exports.PeerNetworking=A0;exports.Physics=vc;exports.PhysicsExtension=Zg;exports.PhysicsMaterialCombine=at;exports.PixelationEffect=Ph;exports.PlayAnimationOnClick=Tc;exports.PlayAudioOnClick=xo;exports.PlayableDirector=Ya;exports.PlayerColor=qa;exports.PlayerState=fn;exports.PlayerStateEvent=Nw;exports.PlayerSync=Qg;exports.PlayerView=Mv;exports.PlayerViewManager=Ov;exports.PointerEventData=sh;exports.PointerType=Ou;exports.PostProcessingEffect=Xe;exports.PostProcessingHandler=wy;exports.PreliminaryAction=ol;exports.PreliminaryTrigger=uh;exports.PrimitiveType=vr;exports.Progress=oe;exports.PromiseAllWithErrors=Em;exports.PromiseErrorResult=Dp;exports.RGBAColor=ie;exports.RapierPhysics=fu;exports.RawImage=vf;exports.RaycastOptions=Qn;exports.Rect=$w;exports.RectTransform=bn;exports.ReflectionProbe=Hu;exports.RegisteredAnimationInfo=fo;exports.RemoteSkybox=cf;exports.RenderTexture=yr;exports.RenderTextureSerializer=Qv;exports.Renderer=Ri;exports.RendererData=kv;exports.RendererLightmap=ou;exports.Rigidbody=it;exports.RigidbodyConstraints=ze;exports.RoomEvents=J;exports.RotationBySpeedModule=Ki;exports.RotationOverLifetimeModule=xn;exports.SceneLightSettings=eu;exports.SceneSwitcher=We;exports.ScreenCapture=Fo;exports.ScreenSpaceAmbientOcclusion=Bs;exports.ScreenSpaceAmbientOcclusionN8=Cn;exports.SendQueue=cn;exports.SerializationContext=og;exports.SetActiveOnClick=$g;exports.ShadowCatcher=Rh;exports.ShapeModule=py;exports.SharpeningEffect=Oh;exports.SignalAsset=mf;exports.SignalReceiver=Dh;exports.SignalReceiverEvent=Lh;exports.SignalTrackHandler=Ic;exports.Size=Vw;exports.SizeBySpeedModule=fi;exports.SizeOverLifetimeModule=Hr;exports.SkinnedMeshRenderer=Ig;exports.SmoothFollow=df;exports.SpatialGrabRaycaster=Cr;exports.SpatialHtml=Bh;exports.SpatialTrigger=uf;exports.SpatialTriggerReceiver=Xn;exports.SpectatorCamera=ff;exports.SphereCollider=tl;exports.SphereIntersection=Km;exports.SphereOverlapResult=tw;exports.Sprite=Ls;exports.SpriteData=Ta;exports.SpriteRenderer=hi;exports.SpriteSheet=Ha;exports.StateMachineBehaviour=eP;exports.StreamEndedEvent=gg;exports.StreamReceivedEvent=iw;exports.SubEmitterSystem=cu;exports.SyncedCamera=Sy;exports.SyncedRoom=Pn;exports.SyncedTransform=Yn;exports.TapGestureTrigger=Hg;exports.TeleportTarget=Ku;exports.TestRunner=Cy;exports.TestSceneUtils=NE;exports.TestSimulateUserData=Py;exports.Text=Et;exports.TextBuilder=ey;exports.TextExtension=Ju;exports.TextureSheetAnimationModule=At;exports.TiltShiftEffect=os;exports.Time=Ev;exports.ToneMappingEffect=Xa;exports.TrackHandler=Ih;exports.TrackType=gi;exports.TrailModule=je;exports.TransformData=$e;exports.TransformGizmo=Qr;exports.TriggerBuilder=_t;exports.TriggerModel=vo;exports.TypeStore=O;exports.UIRaycastUtils=pg;exports.UIRootComponent=ph;exports.USDDocument=Ug;exports.USDObject=Mt;exports.USDWriter=kw;exports.USDZExporter=qn;exports.USDZExporter$1=Rw;exports.USDZText=sr;exports.USDZUIExtension=oy;exports.UriSerializer=Yv;exports.UsageMarker=lh;exports.UserJoinedOrLeftRoomModel=pC;exports.VERSION=pn;exports.VariantAction=Ng;exports.VelocityOverLifetimeModule=Ue;exports.VerticalLayoutGroup=ty;exports.VideoPlayer=nt;exports.ViewDevice=go;exports.Vignette=Xr;exports.VisibilityAction=fh;exports.Voip=Ro;exports.Volume=pl;exports.VolumeParameter=U;exports.VolumeProfile=of;exports.WaitForFrames=g1;exports.WaitForPromise=Pv;exports.WaitForSeconds=lg;exports.Watch=Cs;exports.WebARCameraBackground=Uh;exports.WebARSessionRoot=Zn;exports.WebXR=Zu;exports.WebXRButtonFactory=wo;exports.WebXRImageTracking=Bc;exports.WebXRImageTrackingModel=zs;exports.WebXRPlaneTracking=Ns;exports.WebXRTrackedImage=jc;exports.XRControllerFollow=Us;exports.XRControllerModel=Jn;exports.XRControllerMovement=Ei;exports.XRFlag=Ni;exports.XRRig=Cf;exports.XRState=Ht;exports.XRStateFlag=Ln;exports.__Ignore=Tx;exports.__internalNotifyObjectDestroyed=W0;exports.activeInHierarchyFieldName=Ps;exports.addAttributeChangeCallback=Yb;exports.addComponent=Pi;exports.addCustomExtensionPlugin=DM;exports.addNewComponent=mr;exports.addPatch=Pu;exports.apply=Eu;exports.applyHMRChanges=q1;exports.applyPrototypeExtensions=hv;exports.beginListenDestroy=K0;exports.beginListenInstantiate=ev;exports.binaryIdentifierCasts=Hm;exports.build_scene_functions=j1;exports.builtinComponentKeyName=Qo;exports.calculateProgress01=Iy;exports.clearMessages=mS;exports.colorSerializer=wP;exports.compareAssociation=sv;exports.componentSerializer=Pd;exports.copyTexture=u0;exports.createMotion=Vv;exports.debugNet=Kt;exports.debugOwner=Nl;exports.decompressGpuTexture=Lw;exports.deepClone=Vc;exports.delay=mn;exports.delayForFrames=$c;exports.deserializeObject=Wd;exports.destroy=Oi;exports.destroyComponentInstance=fv;exports.determineMimeTypeFromExtension=cw;exports.disposeObjectResources=Se;exports.disposeStream=Fn;exports.editorGuidKeyName=Jl;exports.enableSpatialConsole=fr;exports.euler=SP;exports.eventListSerializer=OP;exports.exportAsGLTF=WE;exports.findByGuid=ag;exports.findObjectOfType=Jc;exports.findObjectsOfType=mv;exports.findResourceUsers=Jm;exports.fitObjectIntoVolume=p0;exports.foreachComponent=xr;exports.foreachComponentEnumerator=Au;exports.forward=ES;exports.generateQRCode=Zb;exports.generateSeed=J0;exports.getBoundingBox=ri;exports.getCameraController=o0;exports.getComponent=Rr;exports.getComponentInChildren=Zc;exports.getComponentInParent=Sc;exports.getComponents=Kc;exports.getComponentsInChildren=Za;exports.getComponentsInParent=Ru;exports.getFormattedDate=Cw;exports.getIconElement=mt;exports.getIconTexture=im;exports.getLoader=gn;exports.getOrAddComponent=Yc;exports.getParam=x;exports.getParentHierarchyPath=LS;exports.getPath=Xx;exports.getPeerOptions=lC;exports.getPeerjsInstance=T0;exports.getResourceUserCount=AC;exports.getTempColor=l0;exports.getTempQuaternion=ln;exports.getTempVector=$;exports.getUrlParams=Nc;exports.getVisibleInCustomShadowRendering=f0;exports.getWorldDirection=c0;exports.getWorldEuler=Im;exports.getWorldPosition=K;exports.getWorldQuaternion=_e;exports.getWorldRotation=Su;exports.getWorldScale=Fe;exports.hasCommercialLicense=Gn;exports.hasIndieLicense=th;exports.hasPointerEventComponent=Yd;exports.hasProLicense=Hn;exports.hideDebugConsole=_0;exports.imageToCanvas=Dw;exports.instantiate=Sr;exports.invokeLoadedImportPluginHooks=_w;exports.invokeXRSessionEnd=M0;exports.invokeXRSessionStart=P0;exports.isActiveInHierarchy=gv;exports.isActiveSelf=Ja;exports.isAndroidDevice=eS;exports.isAnimationAction=d0;exports.isComponent=Zv;exports.isDebugMode=Wx;exports.isDesktop=Yx;exports.isDestroyed=wr;exports.isDevEnvironment=F;exports.isDisposed=EC;exports.isExporting=VE;exports.isGLTFModel=Kv;exports.isHostedOnGlitch=$b;exports.isHotReloadEnabled=rm;exports.isHotReloading=H1;exports.isIPad=Zx;exports.isIconElement=Av;exports.isLocalNetwork=qt;exports.isMacOS=iS;exports.isMobileDevice=Kx;exports.isMozillaXR=tS;exports.isQuest=oS;exports.isResourceTrackingEnabled=N0;exports.isSafari=sS;exports.isUsingInstancing=Tu;exports.isiOS=nS;exports.isiPad=Jx;exports.loadAsset=OE;exports.loadSync=Dy;exports.logHierarchy=jd;exports.lookAtInverse=xS;exports.lookAtObject=Wc;exports.lookAtScreenPoint=SS;exports.makeId=Gx;exports.makeIdFromRandomWords=qb;exports.makeNameSafe=_n;exports.markAsInstancedRendered=yv;exports.microphonePermissionsGranted=rS;exports.nameof=$x;exports.nameofFactory=Hb;exports.objectSerializer=Xv;exports.offXRSessionEnd=eC;exports.offXRSessionStart=JS;exports.onAfterRender=fP;exports.onBeforeRender=uP;exports.onClear=hP;exports.onDestroy=dP;exports.onInitialized=$v;exports.onStart=Wv;exports.onUpdate=Hv;exports.onXRSessionEnd=$m;exports.onXRSessionStart=Mu;exports.parseSync=xx;exports.placeOnSurface=m0;exports.postprocessFBXMaterials=Fm;exports.prefix=mP;exports.pushState=Gb;exports.randomNumber=qx;exports.registerBinaryType=Gm;exports.registerComponent=Lu;exports.registerComponentExtension=Ag;exports.registerCustomEffectType=Ji;exports.registerExportExtensions=Lg;exports.registerExtensions=su;exports.registerHotReloadType=Fv;exports.registerLoader=Nm;exports.registerPrefabProvider=iv;exports.registerPrototypeExtensions=dv;exports.registerType=GC;exports.relativePathPrefix=Qb;exports.removeAttributeChangeCallback=Kb;exports.removeComponent=rg;exports.removeCustomImportExtensionType=IM;exports.removePatch=KS;exports.resolveUrl=Po;exports.sanitizeString=Xb;exports.saveImage=_x;exports.screenshot=hE;exports.screenshot2=Ay;exports.sendDestroyed=tg;exports.serializable=p;exports.serializeObject=rv;exports.serializeable=Er;exports.setActive=ic;exports.setAllowBalloonMessages=i0;exports.setAllowOverlayMessages=dS;exports.setAutoFitEnabled=Dd;exports.setCameraController=Bp;exports.setDestroyed=bv;exports.setDevEnvironment=NS;exports.setDisposable=Zm;exports.setDontDestroy=aa;exports.setOrAddParamsToUrl=Lp;exports.setParam=Hx;exports.setParamWithoutReload=yc;exports.setPeerOptions=cC;exports.setResourceTrackingEnabled=RC;exports.setState=km;exports.setVisibleInCustomShadowRendering=Bm;exports.setWorldEuler=jm;exports.setWorldPosition=tt;exports.setWorldPositionXYZ=br;exports.setWorldQuaternion=Hi;exports.setWorldQuaternionXYZW=Dm;exports.setWorldRotation=h0;exports.setWorldRotationXYZ=Hc;exports.setWorldScale=Da;exports.showBalloonError=Gc;exports.showBalloonMessage=Te;exports.showBalloonWarning=me;exports.showDebugConsole=Um;exports.slerp=wS;exports.syncDestroy=Xc;exports.syncField=Xg;exports.syncInstantiate=ig;exports.textureToCanvas=DS;exports.tryCastBinary=R0;exports.tryDetermineMimetypeFromBinary=dw;exports.tryDetermineMimetypeFromURL=hw;exports.tryFindObject=La;exports.tryGetGuid=E0;exports.unregisterHotReloadType=Uv;exports.unwatchWrite=Rm;exports.useForAutoFit=r0;exports.validate=vt;exports.watchWrite=xu;
|
|
@@ -1778,11 +1778,11 @@ $o('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"]
|
|
|
1778
1778
|
$o('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');
|
|
1779
1779
|
$o('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');
|
|
1780
1780
|
$o('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');
|
|
1781
|
-
$o('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.5.
|
|
1781
|
+
$o('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.5.7";');
|
|
1782
1782
|
$o('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
|
|
1783
|
-
$o('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "
|
|
1783
|
+
$o('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Tue Jun 10 2025 10:04:56 GMT+0000 (Coordinated Universal Time)";');
|
|
1784
1784
|
$o('globalThis["__NEEDLE_PUBLIC_KEY__"] = "' + NEEDLE_PUBLIC_KEY + '";');
|
|
1785
|
-
const Qn = "4.5.
|
|
1785
|
+
const Qn = "4.5.7", fg = "undefined", H0 = "Tue Jun 10 2025 10:04:56 GMT+0000 (Coordinated Universal Time)";
|
|
1786
1786
|
V0 && console.log(`Engine version: ${Qn} (generator: ${fg})
|
|
1787
1787
|
Project built at ${H0}`);
|
|
1788
1788
|
const tc = NEEDLE_PUBLIC_KEY, Lo = "needle_isActiveInHierarchy", _a = "builtin_components", hd = "needle_editor_guid";
|
|
@@ -7768,10 +7768,10 @@ function Rv(o, t, e, i, n, s) {
|
|
|
7768
7768
|
}), g[hd] !== void 0 && (y[hd] = g[hd]), p.push(y), y.gameObject = c, i.push(y), n[g.guid] = { original: g, clone: y }, Iu.dispatchComponentLifecycleEvent("component-added", y);
|
|
7769
7769
|
}
|
|
7770
7770
|
}
|
|
7771
|
-
e && (e.position = void 0, e.rotation = void 0, e.scale = void 0, e.parent = void 0);
|
|
7771
|
+
e && (e.position = void 0, e.rotation = void 0, e.scale = void 0, e.parent = void 0, e.visible = void 0);
|
|
7772
7772
|
for (const u in t.children) {
|
|
7773
7773
|
const p = t.children[u], m = Rv(o, p, e, i, n, s);
|
|
7774
|
-
m && c.add(m);
|
|
7774
|
+
m && (n[m.uuid] = { original: p, clone: m }, c.add(m));
|
|
7775
7775
|
}
|
|
7776
7776
|
return c;
|
|
7777
7777
|
}
|
|
@@ -8142,11 +8142,11 @@ const Yf = Symbol("assetReference"), go = class go {
|
|
|
8142
8142
|
return this._progressListeners.length = 0, this._glbRoot = this.tryGetActualGameObjectRoot(i), this._loading = void 0, i ? (i[Yf] = this, this._glbRoot && (this._glbRoot[Yf] = this), this.asset && (this.asset[Yf] = this), Bd(e), i.scene !== void 0 && (this.asset = i), this.asset) : null;
|
|
8143
8143
|
}
|
|
8144
8144
|
/** loads and returns a new instance of `asset` */
|
|
8145
|
-
|
|
8145
|
+
instantiate(t) {
|
|
8146
8146
|
return this.onInstantiate(t, !1);
|
|
8147
8147
|
}
|
|
8148
8148
|
/** loads and returns a new instance of `asset` - this call is networked so an instance will be created on all connected users */
|
|
8149
|
-
|
|
8149
|
+
instantiateSynced(t, e = !0) {
|
|
8150
8150
|
return this.onInstantiate(t, !0, e);
|
|
8151
8151
|
}
|
|
8152
8152
|
beginListenDownload(t) {
|
|
@@ -8162,7 +8162,7 @@ const Yf = Symbol("assetReference"), go = class go {
|
|
|
8162
8162
|
}
|
|
8163
8163
|
async onInstantiate(t, e = !1, i) {
|
|
8164
8164
|
const n = ee.Current, s = new ns();
|
|
8165
|
-
if (t instanceof I ? s.parent = t : t && (Object.assign(s, t), s.cloneAssign(t)), s.parent
|
|
8165
|
+
if (t instanceof I ? s.parent = t : t && (Object.assign(s, t), s.cloneAssign(t)), s.parent === void 0 && (s.parent = n.scene), this.mustLoad && await this.loadAssetAsync(), no && console.log("Instantiate", this.url, "parent:", t), this.asset) {
|
|
8166
8166
|
no && console.log("Add to scene", this.asset);
|
|
8167
8167
|
let a = go.currentlyInstantiating.get(this.url);
|
|
8168
8168
|
if (a !== void 0 && a >= 1e4)
|