@needle-tools/engine 4.7.0-next.8717e33 → 4.7.0-next.a507c47

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.
@@ -142,7 +142,7 @@ Open this page to get the console: `+e.toString())}const n=X.isMobileDevice()||X
142
142
  #__vconsole .vc-mask {
143
143
  overflow: hidden;
144
144
  }
145
- `,Ki?.prepend(s),n===!0&&tg()<=0&&Hb(),console.log("\u{1F335} Debug console has loaded")}},e.onerror=()=>{console.warn("\u{1F335} Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),sc=!1,ni=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.9.1/dist/vconsole.min.js",document.body.appendChild(e)}function Wk(){if(!globalThis.VConsole)return;const n=new VConsole.VConsolePlugin("needle-console","\u{1F335} Inspect glTF"),e=()=>document.querySelector("#__vc_plug_"+n._id+" iframe");return n.on("renderTab",function(t){const s=globalThis["needle:codegen_files"];if(!s||s.length===0)return;let o=globalThis["needle:codegen_files"][0];const r=o.indexOf("?");r>-1&&(o=o.substring(0,r));const l=location.protocol+"//"+location.host+location.pathname+"/"+o,c=encodeURIComponent(l);n.fullUrl="https://viewer.needle.tools?inspect&file="+c;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';t(h)}),n.on("show",function(){const t=e();t&&t.src!==n.fullUrl&&(t.src=n.fullUrl)}),n.on("hide",function(){const t=e();t&&(t.src="")}),n.on("addTopBar",function(t){var s=new Array;s.push({name:"Open in new window \u2197",onClick:function(o){window.open(n.fullUrl,"_blank"),ni?.hide()}}),s.push({name:"Reload",onClick:function(o){const r=e();r&&(r.src=n.fullUrl)}}),s.push({name:"Fullscreen",onClick:function(o){const r=e();r.requestFullscreen?r.requestFullscreen():r.webkitRequestFullscreen instanceof Function&&r.webkitRequestFullscreen()}}),t(s)}),n}function Vk(){return document.querySelector("#__vconsole .vc-switch")||null}function $k(){return document.querySelector("#__vconsole")||null}const Qb=C("debugdefines");bo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),bo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),bo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),bo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),bo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.7.0-alpha";'),bo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),bo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Jul 24 2025 15:34:20 GMT+0000 (Coordinated Universal Time)";'),bo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const ws="4.7.0-alpha",jd="undefined",_g="Thu Jul 24 2025 15:34:20 GMT+0000 (Coordinated Universal Time)";Qb&&console.log(`Engine version: ${ws} (generator: ${jd})
145
+ `,Ki?.prepend(s),n===!0&&tg()<=0&&Hb(),console.log("\u{1F335} Debug console has loaded")}},e.onerror=()=>{console.warn("\u{1F335} Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),sc=!1,ni=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.9.1/dist/vconsole.min.js",document.body.appendChild(e)}function Wk(){if(!globalThis.VConsole)return;const n=new VConsole.VConsolePlugin("needle-console","\u{1F335} Inspect glTF"),e=()=>document.querySelector("#__vc_plug_"+n._id+" iframe");return n.on("renderTab",function(t){const s=globalThis["needle:codegen_files"];if(!s||s.length===0)return;let o=globalThis["needle:codegen_files"][0];const r=o.indexOf("?");r>-1&&(o=o.substring(0,r));const l=location.protocol+"//"+location.host+location.pathname+"/"+o,c=encodeURIComponent(l);n.fullUrl="https://viewer.needle.tools?inspect&file="+c;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';t(h)}),n.on("show",function(){const t=e();t&&t.src!==n.fullUrl&&(t.src=n.fullUrl)}),n.on("hide",function(){const t=e();t&&(t.src="")}),n.on("addTopBar",function(t){var s=new Array;s.push({name:"Open in new window \u2197",onClick:function(o){window.open(n.fullUrl,"_blank"),ni?.hide()}}),s.push({name:"Reload",onClick:function(o){const r=e();r&&(r.src=n.fullUrl)}}),s.push({name:"Fullscreen",onClick:function(o){const r=e();r.requestFullscreen?r.requestFullscreen():r.webkitRequestFullscreen instanceof Function&&r.webkitRequestFullscreen()}}),t(s)}),n}function Vk(){return document.querySelector("#__vconsole .vc-switch")||null}function $k(){return document.querySelector("#__vconsole")||null}const Qb=C("debugdefines");bo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),bo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),bo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),bo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),bo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.7.0-alpha";'),bo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),bo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Jul 25 2025 10:04:19 GMT+0000 (Coordinated Universal Time)";'),bo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const ws="4.7.0-alpha",jd="undefined",_g="Fri Jul 25 2025 10:04:19 GMT+0000 (Coordinated Universal Time)";Qb&&console.log(`Engine version: ${ws} (generator: ${jd})
146
146
  Project built at ${_g}`);const Ea=NEEDLE_PUBLIC_KEY,En="needle_isActiveInHierarchy",xr="builtin_components",oc="needle_editor_guid";function bo(n){try{(0,eval)(n)}catch(e){Qb&&console.error(e)}}let Yb,Kb=null;function xs(){return Yb}function wg(n){if(n==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}Kb!==n&&(Kb=n,Yb=new n)}const Mi=Symbol("shadowDomOwner"),Hk=C("debugpatch");function Dd(n,e,t,s){const o=Hk===e;if(!t&&!s)return;const r=e+"___needle";qk(n,e,t,s);const l=Object.getOwnPropertyDescriptor(n,e),c=n[e];o&&console.log("Patch",n.constructor.name,e,l,c),l?(o&&console.log("Apply patch with existing descriptor",n.constructor.name,e,l),typeof l.value=="function"&&(n[e]=Jb(l.value,n,e))):(o&&console.log("Create patch with new property",n.constructor.name,e,l),Object.defineProperty(n,e,{set:function(h){if(typeof h=="function")this[r]=Jb(h,n,e);else{const d=this[r];e_(n,e,this,d,h),this[r]=h,t_(n,e,this,d,h)}},get:function(){const h=this[r];return typeof h=="function"&&h[r]?h[r]:h}}))}function Gk(n,e,t){const s=Sg(n,e);if(s)for(let o=s.length-1;o>=0;o--){const r=s[o];r.prefix===t&&(r.prefix=null),r.postfix===t&&(r.postfix=null),!r.prefix&&!r.postfix&&s.splice(o,1)}}const Zb=Symbol("Needle:Patches:WrappedFunction");function Jb(n,e,t){if(n[Zb])return n;const s=function(...o){e_(e,t,this,...o);const r=n.apply(this,o);return t_(e,t,this,r,...o),r};return s[Zb]=!0,s}const Bd="Needle:Patches";function xg(){return globalThis[Bd]||(globalThis[Bd]=new WeakMap),globalThis[Bd]}function Sg(n,e){const t=xg().get(n);return t?t.get(e):null}function qk(n,e,t,s){let o=xg().get(n);o||(o=new Map,xg().set(n,o));let r=o.get(e);r||(r=[],o.set(e,r)),r.push({prefix:t,postfix:s})}function e_(n,e,t,...s){var o;if(!t)return;const r=Sg(n,e);if(r)for(const l of r)(o=l.prefix)==null||o.call(t,...s)}function t_(n,e,t,s,...o){var r;if(!t)return;const l=Sg(n,e);if(l)for(const c of l)(r=c.postfix)==null||r.call(t,s,...o)}const Aa=[];function Fd(n){Aa.indexOf(n)===-1&&Aa.push(n)}function Xk(n){const e=Aa.indexOf(n);e!==-1&&Aa.splice(e,1)}const Ia=[];function Cg(n){Ia.indexOf(n)===-1&&Ia.push(n)}function Qk(n){const e=Ia.indexOf(n);e!==-1&&Ia.splice(e,1)}function i_(n){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-start",{detail:n}));for(let e=0;e<Aa.length;e++)Aa[e](n)}function s_(n){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-end",{detail:n}));for(let e=0;e<Ia.length;e++)Ia[e](n)}const ct=C("debuginput");var Ud=(n=>(n.Mouse="mouse",n.Touch="touch",n.Controller="controller",n.Hand="hand",n))(Ud||{}),Be=(n=>(n.PointerDown="pointerdown",n.PointerUp="pointerup",n.PointerMove="pointermove",n.KeyDown="keydown",n.KeyUp="keyup",n.KeyPressed="keypress",n))(Be||{});class An extends PointerEvent{constructor(e,t,s){super(e,s),a(this,"clientZ"),a(this,"deviceIndex"),a(this,"origin"),a(this,"source"),a(this,"mode"),a(this,"_ray"),a(this,"space"),a(this,"isClick",!1),a(this,"isDoubleClick",!1),a(this,"_used",!1),a(this,"_pointerid"),a(this,"_pointerType"),a(this,"_type"),a(this,"metadata",{}),a(this,"intersections",new Array),a(this,"_immediatePropagationStopped",!1),a(this,"_propagationStopped",!1),this.clientZ=s.clientZ,this._pointerid=s.pointerId,this._pointerType=s.pointerType,this._type=e,this.deviceIndex=s.deviceIndex,this.origin=s.origin,this.source=t,this.mode=s.mode,this._ray=s.ray,this.space=s.device}get isSpatial(){return this.mode!="screen"}get ray(){return this._ray||(this._ray=new po(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(),ct&&console.warn("Stop propagation...",this.pointerId,this.pointerType)}}class rc extends KeyboardEvent{constructor(e,t,s){super(e,s),a(this,"source"),this.source=t}stopImmediatePropagation(){var e;super.stopImmediatePropagation(),(e=this.source)==null||e.stopImmediatePropagation()}}class Yk{constructor(e){a(this,"key"),a(this,"keyType"),a(this,"source"),this.key=e.key,this.keyType=e.type,this.source=e}}var oi=(n=>(n[n.Early=-100]="Early",n[n.Default=0]="Default",n[n.Late=100]="Late",n))(oi||{});class n_{constructor(e){a(this,"_eventListeners",{}),a(this,"_doubleClickTimeThreshold",.2),a(this,"_longPressTimeThreshold",1),a(this,"_setCursorTypes",[]),a(this,"context"),a(this,"_pointerDown",[!1]),a(this,"_pointerUp",[!1]),a(this,"_pointerClick",[!1]),a(this,"_pointerDoubleClick",[!1]),a(this,"_pointerPressed",[!1]),a(this,"_pointerPositions",[new re]),a(this,"_pointerPositionsLastFrame",[new re]),a(this,"_pointerPositionsDelta",[new re]),a(this,"_pointerPositionsRC",[new re]),a(this,"_pointerPositionDown",[new S]),a(this,"_pointerDownTime",[]),a(this,"_pointerUpTime",[]),a(this,"_pointerUpTimestamp",[]),a(this,"_pointerIds",[]),a(this,"_pointerTypes",[""]),a(this,"_mouseWheelChanged",[!1]),a(this,"_mouseWheelDeltaY",[0]),a(this,"_pointerEvent",[]),a(this,"_pointerEventsPressed",[]),a(this,"_pointerSpace",[]),a(this,"_pressedStack",new Map),a(this,"_htmlEventSource"),a(this,"onLostFocus",()=>{for(const t in this.keysPressed)this.keysPressed[t].pressed=!1}),a(this,"_receivedPointerMoveEventsThisFrame",new Array),a(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}),a(this,"onContextMenu",t=>{this.canReceiveInput(t)!==!1&&t instanceof PointerEvent&&t.pointerType}),a(this,"keysPressed",{}),a(this,"onKeyDown",t=>{if(ct&&console.log(`key down ${t.code}, ${this.context.application.hasFocus}`,t),!this.context.application.hasFocus)return;const s=this.keysPressed[t.code];if(s&&s.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 o=new rc("keydown",t,t);this.onDispatchEvent(o)}),a(this,"onKeyPressed",t=>{if(!this.context.application.hasFocus)return;const s=this.keysPressed[t.code];if(!s)return;s.pressed=!0,s.frame=this.context.time.frameCount+1;const o=new rc("keypress",t,t);this.onDispatchEvent(o)}),a(this,"onKeyUp",t=>{if(!this.context.application.hasFocus)return;const s=this.keysPressed[t.code];if(!s)return;s.pressed=!1,s.frame=this.context.time.frameCount+1;const o=new rc("keyup",t,t);this.onDispatchEvent(o)}),a(this,"onWheelWindow",t=>{document.pointerLockElement&&this.onMouseWheel(t)}),a(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 s=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=s+t.deltaY}),a(this,"onPointerDown",t=>{if(this.context.isInAR||this.canReceiveInput(t)===!1)return;t.target instanceof HTMLElement&&t.target.setPointerCapture(t.pointerId);const s=this.getPointerId(t);ct&&De(`pointer down #${s}, identifier:${t.pointerId}`);const o=this.getAndUpdateSpatialObjectForScreenPosition(s,t.clientX,t.clientY),r=new An("pointerdown",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:s,button:t.button,clientX:t.clientX,clientY:t.clientY,pointerType:t.pointerType,buttonName:this.getButtonName(t),device:o,pressure:t.pressure});this.onDown(r)}),a(this,"onPointerMove",t=>{if(this.context.isInAR||this._receivedPointerMoveEventsThisFrame.includes(t.pointerId))return;this._receivedPointerMoveEventsThisFrame.push(t.pointerId);let s=t.button;t.pointerType==="mouse"&&(s=this.getFirstPressedButtonForPointer(0)??0);const o=this.getPointerId(t,s);s===-1&&(s=o);const r=this.getAndUpdateSpatialObjectForScreenPosition(o,t.clientX,t.clientY),l=new An("pointermove",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:o,button:s,clientX:t.clientX,clientY:t.clientY,pointerType:t.pointerType,buttonName:this.getButtonName(t),device:r,pressure:t.pressure});this.onMove(l)}),a(this,"onPointerCancel",t=>{this.context.isInAR||(ct&&console.log("Pointer cancel",t),this.onPointerUp(t))}),a(this,"onPointerUp",t=>{if(this.context.isInAR)return;t.target instanceof HTMLElement&&t.target.releasePointerCapture(t.pointerId);const s=this.getPointerId(t),o=new An("pointerup",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:s,button:t.button,clientX:t.clientX,clientY:t.clientY,pointerType:t.pointerType,buttonName:this.getButtonName(t),device:this.getAndUpdateSpatialObjectForScreenPosition(s,t.clientX,t.clientY),pressure:t.pressure});this.onUp(o),this._pointerIds[s]=-1,ct&&console.log("ID="+s,"PointerId="+t.pointerId,"ALL:",[...this._pointerIds])}),a(this,"onTouchStart",t=>{if(this.context.isInAR)for(let s=0;s<t.changedTouches.length;s++){const o=t.changedTouches[s],r=this.getPointerIndex(o.identifier),l=this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),c=new An("pointerdown",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:l,pressure:o.force});this.onDown(c)}}),a(this,"onTouchMove",t=>{if(this.context.isInAR)for(let s=0;s<t.changedTouches.length;s++){const o=t.changedTouches[s],r=this.getPointerIndex(o.identifier),l=this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),c=new An("pointermove",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:l,pressure:o.force});this.onMove(c)}}),a(this,"onTouchEnd",t=>{if(this.context.isInAR)for(let s=0;s<t.changedTouches.length;s++){const o=t.changedTouches[s],r=this.getPointerIndex(o.identifier),l=new An("pointerup",t,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),pressure:o.force});this.onUp(l),this._pointerIds[r]=-1}}),a(this,"tempNearPlaneVector",new S),a(this,"tempFarPlaneVector",new S),a(this,"tempLookMatrix",new se),this.context=e,this.context.post_render_callbacks.push(this.onEndOfFrame)}addEventListener(e,t,s){if(this._eventListeners[e]||(this._eventListeners[e]=[]),!t||typeof t!="function"){console.error("Invalid call to addEventListener: callback is required and must be a function!");return}s?s={...s}:s={};let o=0;s?.queue!=null&&(o=s.queue);const r=this._eventListeners[e],l=r.find(c=>c.priority===o);l?l.listeners.push({callback:t,options:s}):(r.push({priority:o,listeners:[{callback:t,options:s}]}),r.sort((c,h)=>c.priority-h.priority))}removeEventListener(e,t,s){if(!this._eventListeners[e]||!t)return;const o=this._eventListeners[e];if(s?.queue!=null){const r=o.find(c=>c.priority===s.queue);if(!r)return;const l=r.listeners.findIndex(c=>c.callback===t);l>=0&&r.listeners.splice(l,1)}else for(const r of o){const l=r.listeners.findIndex(c=>c.callback===t);l>=0&&r.listeners.splice(l,1)}}dispatchEvent(e){var t,s,o,r;let l=!1;if(e instanceof rc){const c=this._eventListeners[e.type];if(c)for(const h of c)for(let d=0;d<h.listeners.length;d++){const u=h.listeners[d];if((s=(t=u.options)==null?void 0:t.signal)!=null&&s.aborted){h.listeners.splice(d,1),d--;continue}u.options.once&&(h.listeners.splice(d,1),d--),u.callback(e)}}if(e instanceof An){const c=this._eventListeners[e.type];if(c)for(const h of c){if(l)break;for(let d=0;d<h.listeners.length;d++){const u=h.listeners[d];if((r=(o=u.options)==null?void 0:o.signal)!=null&&r.aborted){h.listeners.splice(d,1),d--;continue}if(e.immediatePropagationStopped){l=!0,ct&&console.log("immediatePropagationStopped",e.type);break}else e.propagationStopped&&(l=!0,ct&&console.log("propagationStopped",e.type));u.options.once&&(h.listeners.splice(d,1),d--),u.callback(e)}}}}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(e=0){return typeof navigator<"u"&&"getGamepads"in navigator&&navigator.getGamepads()[e]||null}setCursorPointer(){this.setCursor("pointer")}setCursorNormal(){this.unsetCursor("pointer")}setCursor(e){this._setCursorTypes.push(e),this._setCursorTypes.length>10&&this._setCursorTypes.shift(),this.updateCursor()}unsetCursor(e){for(let t=this._setCursorTypes.length-1;t>=0;t--)if(this._setCursorTypes[t]===e){this._setCursorTypes.splice(t,1),this.updateCursor();break}}updateCursor(){var e;((e=this._setCursorTypes)==null?void 0:e.length)==0?this.context.domElement.style.cursor="default":this.context.domElement.style.cursor=this._setCursorTypes[this._setCursorTypes.length-1]}getIsPointerIdInUse(e){for(const t of this._pointerEventsPressed)if(t.pointerId===e&&t.used)return!0;return!1}getPointerPressedCount(){let e=0;for(let t=0;t<this._pointerPressed.length;t++)this._pointerPressed[t]&&e++;return e}getPointerPosition(e){return e>=this._pointerPositions.length?null:this._pointerPositions[e]}getPointerPositionLastFrame(e){return e>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[e]}getPointerPositionDelta(e){return e>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[e]}getPointerPositionRC(e){return e>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[e]}getPointerDown(e){return e>=this._pointerDown.length?!1:this._pointerDown[e]}getPointerUp(e){return e>=this._pointerUp.length?!1:this._pointerUp[e]}getPointerPressed(e){return e>=this._pointerPressed.length?!1:this._pointerPressed[e]}getPointerClicked(e){return e>=this._pointerClick.length?!1:this._pointerClick[e]}getPointerDoubleClicked(e){return e>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[e]}getPointerDownTime(e){return e>=this._pointerDownTime.length?-1:this._pointerDownTime[e]}getPointerUpTime(e){return e>=this._pointerUpTime.length?-1:this._pointerUpTime[e]}getPointerLongPress(e){return e>=this._pointerDownTime.length?!1:this.getPointerPressed(e)&&this.context.time.time-this._pointerDownTime[e]>this._longPressTimeThreshold}getIsMouse(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]==="mouse"}getIsTouch(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]==="touch"}getTouchesPressedCount(){let e=0;for(let t=0;t<this._pointerPressed.length;t++)this._pointerPressed[t]&&this.getIsTouch(t)&&e++;return e}getMouseWheelChanged(e=0){return e>=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[e]}getMouseWheelDeltaY(e=0){return e>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[e]}getPointerEvent(e){if(!(e>=this._pointerEvent.length))return this._pointerEvent[e]??void 0}*foreachPointerId(e){for(let t=0;t<this._pointerTypes.length;t++)if(this._pointerIsActive(t)){if(e!==void 0){const s=this._pointerTypes[t];if(Array.isArray(e)){let o=!1;for(const r of e)if(s===r){o=!0;break}if(!o)continue}else if(e!==s)continue}yield t}}*foreachTouchId(){for(let e=0;e<this._pointerTypes.length;e++)this._pointerTypes[e]==="touch"&&this._pointerIsActive[e]&&(yield e)}_pointerIsActive(e){return e<0?!1:this._pointerPressed[e]||this._pointerDown[e]||this._pointerUp[e]}onDownButton(e,t){let s=this._pressedStack.get(e);s||(s=[],this._pressedStack.set(e,s)),s.push(t)}onReleaseButton(e,t){const s=this._pressedStack.get(e);if(!s)return;const o=s.indexOf(t);o>=0&&s.splice(o,1)}getFirstPressedButtonForPointer(e){const t=this._pressedStack.get(e);if(t)return t[0]}getLatestPressedButtonForPointer(e){const t=this._pressedStack.get(e);if(t)return t[t.length-1]}getKeyDown(e){if(e!==void 0)return this.isKeyDown(e);for(const t in this.keysPressed){const s=this.keysPressed[t];if(s.startFrame===this.context.time.frameCount)return s.key}return null}getKeyPressed(e){if(e!==void 0)return this.isKeyPressed(e);for(const t in this.keysPressed){const s=this.keysPressed[t];if(s.pressed)return s.key}return null}getKeyUp(e){if(e!==void 0)return this.isKeyUp(e);for(const t in this.keysPressed){const s=this.keysPressed[t];return s.pressed===!1&&s.frame===this.context.time.frameCount}return null}isKeyDown(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const t=this.getCodeForCommonKeyName(e);if(t!==null){for(const o of t)if(this.isKeyDown(o))return!0;return!1}const s=this.keysPressed[e];return s?s.startFrame===this.context.time.frameCount&&s.pressed:!1}isKeyUp(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const t=this.getCodeForCommonKeyName(e);if(t!==null){for(const o of t)if(this.isKeyUp(o))return!0;return!1}const s=this.keysPressed[e];return s?s.frame===this.context.time.frameCount&&s.pressed===!1:!1}isKeyPressed(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const t=this.getCodeForCommonKeyName(e);if(t!==null){for(const o of t)if(this.isKeyPressed(o))return!0;return!1}const s=this.keysPressed[e];return s&&s.pressed||!1}getCodeForCommonKeyName(e){if(e.length===1){if(e>="0"&&e<="9")return["Digit"+e];if(e>="a"&&e<="z")return["Key"+e.toUpperCase()];if(e==" ")return["Space"]}switch(e){case"shift":case"Shift":return["ShiftLeft","ShiftRight"];case"control":case"Control":return["ControlLeft","ControlRight"];case"alt":case"Alt":return["AltLeft","AltRight"]}return null}createInputEvent(e){switch(e.type){case"pointerdown":ct&&De("Create Pointer down"),this.onDownButton(e.deviceIndex,e.button),this.onDown(e);break;case"pointermove":ct&&De("Create Pointer move"),this.onMove(e);break;case"pointerup":ct&&De("Create Pointer up"),this.onUp(e),this.onReleaseButton(e.deviceIndex,e.button);break}}convertScreenspaceToRaycastSpace(e){return e.x=(e.x-this.context.domX)/this.context.domWidth*2-1,e.y=-((e.y-this.context.domY)/this.context.domHeight)*2+1,e}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 e,t;window.removeEventListener("contextmenu",this.onContextMenu),(e=this._htmlEventSource)==null||e.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),(t=this._htmlEventSource)==null||t.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 e=this.context.post_render_callbacks.indexOf(this.onEndOfFrame);e>=0&&this.context.post_render_callbacks.splice(e,1),this.unbindEvents()}canReceiveInput(e){var t;return e.target===((t=this.context.renderer)==null?void 0:t.domElement)||e.target===this.context.domElement||this.context.isInAR||this.context.isInAR&&e.target===document.body&&X.isMozillaXR()?!0:(ct&&console.warn("CanReceiveInput:False for",e.target),!1)}getPointerId(e,t){return e.pointerType==="mouse"?0+(t??e.button):this.getPointerIndex(e.pointerId)}getButtonName(e){const t=e.button;if(e.pointerType==="mouse")switch(t){case 0:return"left";case 1:return"middle";case 2:return"right"}return"unknown"}getAndUpdateSpatialObjectForScreenPosition(e,t,s){let o=this._pointerSpace[e];o||(o=new E,this._pointerSpace[e]=o),this._pointerSpace[e]=o;const r=this.context.mainCamera;if(r){const l=this.tempNearPlaneVector.set(t,s,-1);this.convertScreenspaceToRaycastSpace(l);const c=this.tempFarPlaneVector.set(l.x,l.y,1);l.unproject(r),c.unproject(r);const h=r.worldUp||q(0,1,0).applyQuaternion(Se(r));this.tempLookMatrix.lookAt(c,l,h),o.position.set(l.x,l.y,l.z),o.quaternion.setFromRotationMatrix(this.tempLookMatrix)}return o}isInRect(e){if(this.context.isInXR)return!0;const t=this.context.domElement.getBoundingClientRect(),s=e.clientX,o=e.clientY,r=s>=t.x&&s<=t.right&&o>=t.y&&o<=t.bottom;return ct&&!r&&console.log("Not in rect",t,s,o),r}onDown(e){const t=e.pointerId;if(this.getPointerPressed(t)&&console.warn(`Received pointerDown for pointerId that is already pressed: ${t}`,ct?e:""),ct&&console.log(e.pointerType,"DOWN",t),!!this.isInRect(e)){for(this.setPointerState(t,this._pointerPressed,!0),this.setPointerState(t,this._pointerDown,!0),this.setPointerStateT(t,this._pointerEvent,e.source);t>=this._pointerTypes.length;)this._pointerTypes.push(e.pointerType);for(this._pointerTypes[t]=e.pointerType;t>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new S);for(this._pointerPositionDown[t].set(e.clientX,e.clientY,e.clientZ??0);t>=this._pointerPositions.length;)this._pointerPositions.push(new re);this._pointerPositions[t].set(e.clientX,e.clientY),t>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[t]=this.context.time.realtimeSinceStartup,this.updatePointerPosition(e),this._pointerEventsPressed.push(e),this.onDispatchEvent(e)}}onMove(e){const t=e.pointerId,s=this.getPointerPressed(t);s===!1&&!this.isInRect(e)||e.pointerType==="touch"&&!s||(this.updatePointerPosition(e),this.setPointerStateT(t,this._pointerEvent,e.source),this.onDispatchEvent(e))}onUp(e){const t=e.pointerId;if(!this.getPointerPressed(t)){ct&&console.log(e.pointerType,"UP",t,"was not down");return}ct&&console.log(e.pointerType,"UP",t),this.setPointerState(t,this._pointerPressed,!1),this.setPointerStateT(t,this._pointerEvent,e.source),this.setPointerState(t,this._pointerUp,!0),this.updatePointerPosition(e);for(let c=this._pointerEventsPressed.length-1;c>=0;c--)if(this._pointerEventsPressed[c].pointerId===t){this._pointerEventsPressed.splice(c,1);break}if(!this._pointerPositionDown[t]){ct&&be("Received pointer up event without matching down event for button: "+t),console.warn("Received pointer up event without matching down event for button: "+t);return}const s=this._pointerUpTime[t],o=this._pointerDownTime[t],r=this.context.time.realtimeSinceStartup,l=r-o;if(t>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),this._pointerUpTime[t]=r,l<1){let c=e.clientX-this._pointerPositionDown[t].x,h=e.clientY-this._pointerPositionDown[t].y,d=0;if(e.isSpatial&&e.clientZ!=null&&(d=e.clientZ-this._pointerPositionDown[t].z,c*=200,h*=200,d*=200),Math.abs(c)<5&&Math.abs(h)<5&&Math.abs(d)<5){this.setPointerState(t,this._pointerClick,!0),e.isClick=!0;const u=r-s;ct&&console.log("CLICK",t,c,h,d,u),u<this._doubleClickTimeThreshold&&u>0&&(this.setPointerState(t,this._pointerDoubleClick,!0),e.isDoubleClick=!0)}}this.onDispatchEvent(e)}updatePointerPosition(e){const t=e.pointerId;for(;t>=this._pointerPositions.length;)this._pointerPositions.push(new re);for(;t>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new re);for(;t>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new re);const s=this._pointerPositionsLastFrame[t];s.copy(this._pointerPositions[t]);const o=this._pointerPositionsDelta[t];let r=e.clientX-s.x,l=e.clientY-s.y;if(e.source instanceof MouseEvent||e.source instanceof TouchEvent){const u=e.source;r===0&&u.movementX!==0&&(r=u.movementX||0),l===0&&u.movementY!==0&&(l=u.movementY||0)}o.x+=r,o.y+=l,this._pointerPositions[t].x=e.clientX,this._pointerPositions[t].y=e.clientY;const c=e.clientX,h=e.clientY;for(;t>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new re);const d=this._pointerPositionsRC[t];d.set(c,h),this.convertScreenspaceToRaycastSpace(d)}getPointerIndex(e){let t=-1;for(let s=0;s<this._pointerIds.length;s++){if(this._pointerIds[s]===e)return s;t===-1&&this._pointerIds[s]===-1&&(t=s)}return t!==-1?(this._pointerIds[t]=e,t):(ct&&console.log("PUSH pointerId:",e),this._pointerIds.push(e),this._pointerIds.length-1)}setPointerState(e,t,s){t[e]=s}setPointerStateT(e,t,s){return t[e]=s,s}onDispatchEvent(e){const t=J.Current;try{J.Current=this.context,this.dispatchEvent(e)}finally{J.Current=t}}}const La=new se().makeRotationY(Math.PI),Zi=new V().setFromAxisAngle(new S(0,1,0),Math.PI),Kk=C("debugwebxr");class Zk{constructor(){if(a(this,"priority",-1e5),a(this,"gameObject"),this.gameObject=new E,this.gameObject.name="Implicit XR Rig",Kk){const e=Vg(16733661);e.position.y+=.5,this.gameObject.add(e)}}isXRRig(){return!0}get isActive(){return this.gameObject.visible}}const In=C("debugwebxr"),zd=C("debugcustomgesture"),Jk="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",eM="generic-trigger",tM=new V().setFromEuler(new Dt(Cn.degToRad(0),Cn.degToRad(-90),Cn.degToRad(-90))),iM=new S(.04,-.04,0);class Pg{constructor(e,t,s){a(this,"xr"),a(this,"inputSource"),a(this,"index",0),a(this,"emitEvents",!0),a(this,"_connected",!0),a(this,"_isTracking",!1),a(this,"__gamepad"),a(this,"__hand"),a(this,"__side"),a(this,"_hitTestSource"),a(this,"_hasSelectEvent",!1),a(this,"_isMxInk",!1),a(this,"_isMetaQuestTouchController",!1),a(this,"_handJointPoses",new Map),a(this,"_gripMatrix",new se),a(this,"_gripPosition",new S),a(this,"_gripQuaternion",new V),a(this,"_linearVelocity",new S),a(this,"_rayPositionRaw",new S),a(this,"_rayRotationRaw",new V),a(this,"_rayMatrix",new se),a(this,"_rayPosition",new S),a(this,"_rayQuaternion",new V),a(this,"_gripWorldPosition",new S),a(this,"_gripWorldQuaternion",new V),a(this,"_rayWorldPosition",new S),a(this,"_rayWorldQuaternion",new V),a(this,"_pinchPosition",new S),a(this,"_ray"),a(this,"_hand_wristDotUp"),a(this,"_object"),a(this,"_gripSpaceObject"),a(this,"_raySpaceObject"),a(this,"model",null),a(this,"_debugAxesHelper",new Ci(.15)),a(this,"_debugGripAxesHelper",new Ci(.07)),a(this,"_debugRayAxesHelper",new Ci(.07)),a(this,"_hitTestSourcePromise",null),a(this,"onPointerHits",o=>{}),a(this,"_needleGamepadButtons",{}),a(this,"_buttonMap",new Map),a(this,"_motioncontroller"),a(this,"_layout"),a(this,"getMotionController"),a(this,"emitPointerDownEvent",!0),a(this,"emitPointerUpEvent",!0),a(this,"emitPointerMoveEvent",!0),a(this,"pointerMoveDistanceThreshold",.03),a(this,"pointerMoveAngleThreshold",.05),a(this,"_selectButtonIndex"),a(this,"_squeezeButtonIndex"),a(this,"onSelectStart",o=>{var r,l,c,h;if(!this.emitPointerDownEvent||this.inputSource!==o.inputSource)return;this.onUpdateFrame(o.frame),this._hasSelectEvent=!0;const d=(r=this._layout)==null?void 0:r.selectComponentId,u=(h=(c=(l=this._layout)==null?void 0:l.components[d])==null?void 0:c.gamepadIndices)==null?void 0:h.button;u!==void 0&&(this._selectButtonIndex=u),!zd&&(In&&$.DrawDirection(this.rayWorldPosition,q(0,.01,1).applyQuaternion(this.rayWorldQuaternion),16711680,10),this.emitPointerEvent(Be.PointerDown,this._selectButtonIndex||0,"xr-standard-trigger",!0,o))}),a(this,"onSelectEnd",o=>{this.emitPointerUpEvent&&(zd||this.inputSource===o.inputSource&&this.emitPointerEvent(Be.PointerUp,this._selectButtonIndex||0,"xr-standard-trigger",!0,o))}),a(this,"onSequeezeStart",o=>{var r,l,c;this.emitPointerDownEvent&&this.inputSource===o.inputSource&&(this._squeezeButtonIndex=(c=(l=(r=this._layout)==null?void 0:r.components["xr-standard-squeeze"])==null?void 0:l.gamepadIndices)==null?void 0:c.button,this._squeezeButtonIndex!==void 0&&(In&&$.DrawDirection(this.rayWorldPosition,q(0,.01,1).applyQuaternion(this.rayWorldQuaternion),255,10),this.emitPointerEvent(Be.PointerDown,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,o)))}),a(this,"onSequeezeEnd",o=>{this.emitPointerUpEvent&&this.inputSource===o.inputSource&&this._squeezeButtonIndex!==void 0&&this.emitPointerEvent(Be.PointerUp,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,o)}),a(this,"states",{}),a(this,"_didMoveLastFrame",!1),a(this,"_lastPointerMovePosition",new S),a(this,"_lastPointerMoveQuaternion",new V),a(this,"pointerInit"),this.xr=e,this.inputSource=t,this.index=s,this._object=new E,this._object.name=`NeedleXRController_${s}`,In&&(this._object.add(this._debugAxesHelper),this._gripSpaceObject=new E,this._raySpaceObject=new E,this._gripSpaceObject.name=`NeedleXRController_${s}_gripSpace`,this._raySpaceObject.name=`NeedleXRController_${s}_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 po,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(e,t){var s;if(t=t||this.xr.frame,!this.hand||!(t!=null&&t.getJointPose)||!this.xr.referenceSpace)return null;let o=(s=this._handJointPoses)==null?void 0:s.get(e);return o||(o=t.getJointPose(e,this.xr.referenceSpace),o&&this._handJointPoses.set(e,o),o)}get gripPosition(){return q(this._gripPosition)}get gripQuaternion(){return bs(this._gripQuaternion)}get gripMatrix(){return this._gripMatrix}get gripLinearVelocity(){return q(this._linearVelocity).applyQuaternion(Zi)}get rayPosition(){return q(this._rayPosition)}get rayQuaternion(){return bs(this._rayQuaternion)}get gripWorldPosition(){return q(this._gripWorldPosition)}get gripWorldQuaternion(){return bs(this._gripWorldQuaternion)}get rayWorldPosition(){return q(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 bs(this._rayWorldQuaternion)}get pinchPosition(){return q(this._pinchPosition)}updateRayWorldQuaternion(){var e;const t=(e=this.xr.context.mainCamera)==null?void 0:e.parent,s=t?Se(t):void 0;this._rayWorldQuaternion.copy(this._rayRotationRaw).multiply(Zi),s&&this._rayWorldQuaternion.premultiply(s)}get ray(){return this._ray.origin.copy(this.rayWorldPosition),this._ray.direction.copy(q(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 s=q(0,1,0).applyQuaternion(t.quaternion),o=q(0,1,0).dot(s);return this._hand_wristDotUp=o}}get isHandUpsideDown(){return this.handWristDotUp!==void 0?this.handWristDotUp<-.7:!1}get isTeleportGesture(){var e;return this.isHandUpsideDown&&((e=this.getGesture("pinch"))==null?void 0:e.isDown)}get object(){return this._object}async getModelUrl(){var e;return(e=this.getMotionController)==null?void 0:e.then(t=>t?.assetUrl||null)}_requestHitTestSource(){var e;return this._hitTestSourcePromise?this._hitTestSourcePromise:this.xr.mode==="immersive-ar"&&this.inputSource.targetRayMode==="tracked-pointer"&&this.xr.session.requestHitTestSourceForTransientInput?this._hitTestSourcePromise=((e=this.xr.session.requestHitTestSourceForTransientInput({profile:this.inputSource.profiles[0],offsetRay:new XRRay}))==null?void 0:e.then(t=>(this._hitTestSourcePromise=null,this.connected?this._hitTestSource=t:(t.cancel(),null))))??null:null}onUpdate(e){this.onUpdateFrame(e),this.updateInputEvents(),this.onUpdateMove()}onRenderDebug(){var e;$.DrawSphere(this.rayWorldPosition,.003),$.DrawDirection(this.rayWorldPosition,q(0,0,10).applyQuaternion(this.rayWorldQuaternion));const t=(this.inputSource.gripSpace?this.gripWorldPosition:this.object.worldPosition).sub(this.object.worldForward.multiplyScalar(.1)),s=this.inputSource.profiles.join(`
147
147
  `);let o=`Controller[${this.index}] (${this.inputSource.targetRayMode}, ${this.side})
148
148
  C:${this.connected?"x":"-"} T:${this.isTracking?"x":"-"} Hand:${this.inputSource.hand?"x":"-"} Pen: ${this._isMxInk?"x":"-"}`;if(this.inputSource.hand&&(o+=`
@@ -1270,7 +1270,7 @@ dateFormat X
1270
1270
  axisFormat %s
1271
1271
  `;const g=Array.from(r),f=new Set;for(const _ of g)if(_.affectedObjects&&typeof _.affectedObjects!="string"){if(Array.isArray(_.affectedObjects))for(const w of _.affectedObjects)f.add(w);else f.add(_.affectedObjects);l&&(p+=`section ${_.animationName} (${_.id})
1272
1272
  `,p+=`${_.id} : ${_.start}, ${_.duration}s
1273
- `)}l&&r.size&&console.log(p);const y=new Set;for(const _ of f){_.getPath||console.error("USDZExporter: Animation target object has no getPath method. This is likely a bug",_);let w=_.getPath();w.startsWith("<")&&(w=w.substring(1)),w.endsWith(">")&&(w=w.substring(0,w.length-1)),y.add({path:w,obj:_})}const v=Array.from(y).sort((_,w)=>_.path.length-w.path.length),b=new Array;for(let _=0;_<v.length;_++)for(let w=_+1;w<v.length;w++)if(v[w].path.startsWith(v[_].path)){const x=v[w],k=v[_];b.push({child:x.obj.displayName+" ("+x.path+")",parent:k.obj.displayName+" ("+k.path+")"})}b.length&&console.warn("USDZExporter: There are overlapping PlayAnimation actions. This can lead to undefined runtime behaviour when playing multiple animations. Please restructure the hierarchy so that animations don't overlap.",{overlappingTargets:b,playAnimationActions:r})}for(const p of new Set([...t,...s]))if(Array.isArray(p))for(const g of p)o.add(g.uuid);else o.add(p.uuid);xp&&console.log("All Behavior trigger sources and action targets",t,s,o),this.targetUuids=new Set(o)}onAfterHierarchy(e,t){var s;if((s=this.behaviours)!=null&&s.length){t.beginBlock('def Scope "Behaviors"');for(const o of this.behaviours)o.writeTo(this,e.document,t);t.closeBlock()}}async onAfterSerialize(e){xp&&console.log("onAfterSerialize behaviours",this.behaviourComponentsCopy);for(const t of this.behaviourComponentsCopy)typeof t.afterSerialize=="function"&&(t.afterSerialize.constructor.name==="AsyncFunction"?await t.afterSerialize(this,e):t.afterSerialize(this,e));for(const{clipUrl:t,filesKey:s}of this.audioClipsCopy){if(e.files[s])return;const o=await(await(await fetch(t)).blob()).arrayBuffer(),r=new Uint8Array(o);e.files[s]=r}this.behaviourComponentsCopy.length=0,this.audioClipsCopy.length=0}}class J0{get extensionName(){return"Physics"}onExportObject(e,t,s){const o=P.getComponents(e,dt).filter(h=>h.enabled),r=P.getComponents(e,ui).filter(h=>h.enabled&&!h.isTrigger);let l=o.length>0?o[0]:null;const c=r.length>0?r[0]:null;c&&!l&&(l=new dt,l.isKinematic=!0),l&&t.addEventListener("serialize",(h,d)=>{var u,p,g;if(l){if(h.appendLine(),h.beginBlock('def RealityKitComponent "RigidBody"',"{",!0),l.useGravity||h.appendLine("bool gravityEnabled = 0"),h.appendLine('uniform token info:id = "RealityKit.RigidBody"'),l.isKinematic&&h.appendLine('token motionType = "Kinematic"'),h.beginBlock('def RealityKitStruct "massFrame"',"{",!0),h.appendLine(`float m_mass = ${l.mass}`),h.beginBlock('def RealityKitStruct "m_pose"',"{",!0),h.appendLine(`float3 position = (${l.centerOfMass.x}, ${l.centerOfMass.y}, ${l.centerOfMass.z})`),h.closeBlock("}"),h.closeBlock("}"),r.length>0){const f=r[0];h.beginBlock('def RealityKitStruct "material"',"{",!0);const y=f.sharedMaterial;y&&y.dynamicFriction!==void 0&&h.appendLine(`double dynamicFriction = ${(u=f.sharedMaterial)==null?void 0:u.dynamicFriction}`),y&&y.bounciness!==void 0&&h.appendLine(`double restitution = ${(p=f.sharedMaterial)==null?void 0:p.bounciness}`),y&&y.staticFriction!==void 0&&h.appendLine(`double staticFriction = ${(g=f.sharedMaterial)==null?void 0:g.staticFriction}`),h.closeBlock("}")}h.closeBlock("}")}}),c&&(t.addEventListener("serialize",(h,d)=>{var u;h.beginBlock('def RealityKitComponent "Collider"',"{",!0),h.appendLine("uint group = 1"),h.appendLine('uniform token info:id = "RealityKit.Collider"'),h.appendLine("uint mask = 4294967295");const p=c.isTrigger?"Trigger":"Default";if(h.appendLine(`token type = "${p}"`),h.beginBlock('def RealityKitStruct "Shape"',"{",!0),c instanceof el){const g=c;h.appendLine('token shapeType = "Sphere"'),h.appendLine(`float radius = ${g.radius}`)}else if(c instanceof Nu){const g=c;h.appendLine('token shapeType = "Box"'),h.appendLine(`float3 extent = (${g.size.x}, ${g.size.y}, ${g.size.z})`)}else if(c instanceof Wn){const g=c;h.appendLine('token shapeType = "Capsule"'),h.appendLine(`float radius = ${g.radius}`),h.appendLine(`float height = ${g.height}`)}else if(c instanceof Fo&&(u=c.sharedMesh)!=null&&u.geometry){const g=c.sharedMesh.geometry;g.boundingBox||g.computeBoundingBox();const f=c.sharedMesh.geometry.boundingBox;f&&(h.appendLine('token shapeType = "Box"'),h.appendLine(`float3 extent = (${f.max.x-f.min.x}, ${f.max.y-f.min.y}, ${f.max.z-f.min.z})`),console.log("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. MeshCollider will be exported as Box",c))}else console.warn("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. Ignoring collider:",c);h.beginBlock('def RealityKitStruct "pose"',"{",!0),h.closeBlock("}"),h.closeBlock("}"),h.closeBlock("}")}),r.length>1&&console.log("WARNING: Multiple colliders detected. visionOS / iOS can only support objects with a single collider, only exporting the first collider: ",c))}}const RA=C("debugshadowcomponents");eb.prototype.interactable={get(){return this.interactive},set(n){this.interactable=n}};class ps extends I{constructor(){super(...arguments),a(this,"_shadowComponent",null),a(this,"_controlsChildLayout",!0),a(this,"_root"),a(this,"_parentComponent")}isRoot(){var e;return((e=this.Root)==null?void 0:e.gameObject)===this.gameObject}get canvas(){const e=this.Root;return e!=null&&e.isCanvas?e:null}get Canvas(){return this.canvas}markDirty(){ii.markUIDirty(this.context)}get shadowComponent(){return this._shadowComponent}set shadowComponent(e){this._shadowComponent=e}get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}get Root(){return this._root===void 0&&(this._root=P.getComponentInParent(this.gameObject,oh)),this._root}__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this.shadowComponent=null,this._root=void 0,this._parentComponent=void 0,this}onEnable(){super.onEnable()}addShadowComponent(e,t){var s;if(!e)return;this.removeShadowComponent();const o=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=P.getComponentInParent(o,ps),!this._parentComponent){console.warn(`Component "${this.name}" doesn't have a UI parent anywhere. Do you have an UI element outside a Canvas? UI components must be a child of a Canvas component`,this);return}e.name=this.name+" ("+(this.constructor.name??"UI")+")",e.autoLayout=this._parentComponent.controlsChildLayout,e[Mi]=this,this.setShadowComponentOwner(e);let r=!1;if(((s=this.Root)==null?void 0:s.gameObject)===this.gameObject)this.gameObject.add(e);else{const l=this._parentComponent.shadowComponent;l&&(l?.add(e),r=!0)}this.shadowComponent=e,t&&t.shadowComponent&&this.shadowComponent&&t.shadowComponent.add(this.shadowComponent),yc&&e.add(new Ci(.5)),this.onAfterAddedToScene(),r&&kO(),RA&&console.warn("Added shadow component",this.shadowComponent)}setShadowComponentOwner(e){if(e&&(e[Mi]===void 0||e[Mi]===this)&&(e[Mi]=this,e.children))for(const t of e.children)this.setShadowComponentOwner(t)}traverseOwnedShadowComponents(e,t,s){if(e&&e[Mi]===t){s(e);for(const o of e.children)this.traverseOwnedShadowComponents(o,t,s)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}}class oh extends ps{awake(){super.awake()}}var TA=Object.defineProperty,EA=Object.getOwnPropertyDescriptor,rh=(n,e,t,s)=>{for(var o=s>1?void 0:s?EA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&TA(e,t,o),o};const ey=C("debugui"),ty=C("debuguilayout");class K1{constructor(){a(this,"width"),a(this,"height")}}class Z1{constructor(){a(this,"x"),a(this,"y"),a(this,"width"),a(this,"height")}}const Rs=new S,ah=new se,Sp=new V,vl=class OC extends ps{constructor(){super(...arguments),a(this,"_anchoredPosition"),a(this,"sizeDelta",new re(100,100)),a(this,"pivot",new re(.5,.5)),a(this,"anchorMin",new re(0,0)),a(this,"anchorMax",new re(1,1)),a(this,"minWidth"),a(this,"minHeight"),a(this,"lastMatrix"),a(this,"rectBlock"),a(this,"_transformNeedsUpdate",!1),a(this,"_initialPosition"),a(this,"_parentRectTransform"),a(this,"_lastUpdateFrame",-1),a(this,"_lastAnchoring"),a(this,"_createdBlocks",[]),a(this,"_createdTextBlocks",[])}get parent(){return this._parentRectTransform}get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}get anchoredPosition(){return this._anchoredPosition||(this._anchoredPosition=new re),this._anchoredPosition}set anchoredPosition(e){this._anchoredPosition=e}get width(){let e=this.sizeDelta.x;if(this.anchorMin.x!==this.anchorMax.x&&this._parentRectTransform){const t=this._parentRectTransform.width,s=this.anchorMax.x-this.anchorMin.x;e=t*s,e+=this.sizeDelta.x}return this.minWidth!==void 0&&e<this.minWidth?this.minWidth:e}get height(){let e=this.sizeDelta.y;if(this.anchorMin.y!==this.anchorMax.y&&this._parentRectTransform){const t=this._parentRectTransform.height,s=this.anchorMax.y-this.anchorMin.y;e=t*s,e+=this.sizeDelta.y}return this.minHeight!==void 0&&e<this.minHeight?this.minHeight:e}awake(){super.awake(),this._lastUpdateFrame=-1,this._parentRectTransform=void 0,this.rectBlock=new E,this.rectBlock.name=this.name,this.lastMatrix=new se,this._lastAnchoring=null,this._initialPosition=this.gameObject.position.clone(),this._initialPosition.z=0,this._anchoredPosition||(this._anchoredPosition=new re),Ka(this,"_anchoredPosition",()=>{this.markDirty()}),Ka(this,"sizeDelta",()=>{this.markDirty()}),Ka(this,"pivot",()=>{this.markDirty()}),Ka(this,"anchorMin",()=>{this.markDirty()}),Ka(this,"anchorMax",()=>{this.markDirty()})}onEnable(){var e;super.onEnable(),this.rectBlock||(this.rectBlock=new E),this.lastMatrix||(this.lastMatrix=new se),this._lastAnchoring||(this._lastAnchoring=new re),this._initialPosition||(this._initialPosition=new S),this._anchoredPosition||(this._anchoredPosition=new re),this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0,(e=this.canvas)==null||e.registerTransform(this)}onDisable(){var e;super.onDisable(),this.removeShadowComponent(),(e=this.canvas)==null||e.unregisterTransform(this)}onParentRectTransformChanged(e){this._transformNeedsUpdate||this.onApplyTransform(ty?`${e.name} changed`:void 0)}get isDirty(){return this._transformNeedsUpdate||(this._transformNeedsUpdate=!this.lastMatrix.equals(this.gameObject.matrix)),this._transformNeedsUpdate}markDirty(){this._transformNeedsUpdate||(ty&&console.warn("RectTransform markDirty()",this.name),this._transformNeedsUpdate=!0,this._lastUpdateFrame=-1)}updateTransform(){(this._transformNeedsUpdate||!this.lastMatrix.equals(this.gameObject.matrix))&&this.canUpdate()&&this.onApplyTransform(this._transformNeedsUpdate?"Marked dirty":"Matrix changed")}canUpdate(){return this._transformNeedsUpdate&&this.activeAndEnabled&&this._lastUpdateFrame!==this.context.time.frame}onApplyTransform(e){var t;if(this.context.time.frameCount===this._lastUpdateFrame)return;this._lastUpdateFrame=this.context.time.frameCount;const s=this.shadowComponent;if(!s)return;this.gameObject.parent?this._parentRectTransform=P.getComponentInParent(this.gameObject.parent,OC):this._parentRectTransform=void 0,this._transformNeedsUpdate=!1,ty&&console.warn("RectTransform \u2192 ApplyTransform",this.name+" because "+e),this.isRoot()?this.Root.screenspace||(s.rotation.y=Math.PI):(s.matrix.identity(),s.matrixAutoUpdate=!1,Rs.set(0,0,0),this.applyPivot(Rs),s.matrix.setPosition(Rs.x,Rs.y,0),(this.gameObject.quaternion.x||this.gameObject.quaternion.y||this.gameObject.quaternion.z)&&(Sp.copy(this.gameObject.quaternion),Sp.x*=-1,Sp.z*=-1,ah.makeRotationFromQuaternion(Sp),s.matrix.premultiply(ah)),Rs.set(0,0,0),this.applyAnchoring(Rs),(t=this.canvas)!=null&&t.screenspace?Rs.z+=.1:Rs.z+=.01,ah.identity(),ah.setPosition(Rs.x,Rs.y,Rs.z),s.matrix.premultiply(ah),s.matrix.scale(this.gameObject.scale)),this.lastMatrix.copy(this.gameObject.matrix);const o=!0;for(const r of hu(this.gameObject,ps,o,1)){if(r===this||!r.activeAndEnabled)continue;const l=r;l.onParentRectTransformChanged&&l.onParentRectTransformChanged(this)}}applyAnchoring(e){this._lastAnchoring||(this._lastAnchoring=new re);const t=this._lastAnchoring.sub(this._anchoredPosition);this.gameObject.position.x+=t.x,this.gameObject.position.y+=t.y,this._lastAnchoring.copy(this._anchoredPosition),e.x+=this._initialPosition.x-this.gameObject.position.x,e.y+=this._initialPosition.y-this.gameObject.position.y,e.z+=this._initialPosition.z-this.gameObject.position.z;const s=this._parentRectTransform;if(s){let o=0;const r=1-this.anchorMax.y-this.anchorMin.y;o-=s.height*.5*r,e.y+=o;let l=0;const c=1-this.anchorMax.x-this.anchorMin.x;l-=s.width*.5*c,e.x+=l}}applyPivot(e){if(this.pivot&&!this.isRoot()){const t=this.pivot.x-.5;e.x-=t*this.sizeDelta.x*this.gameObject.scale.x;const s=this.pivot.y-.5;e.y-=s*this.sizeDelta.y*this.gameObject.scale.y}}getBasicOptions(){const e={width:this.sizeDelta.x,height:this.sizeDelta.y,offset:0,backgroundOpacity:0,borderWidth:0,borderRadius:0,borderOpacity:0,letterSpacing:-.03};return this.ensureValidSize(e),e}ensureValidSize(e,t=1e-4){return e.width<=0&&(e.width=t),e.height<=0&&(e.height=1e-4),e}createNewBlock(e){e={...this.getBasicOptions(),...e},ey&&console.log(this.name,e);const t=new eb(e);return this._createdBlocks.push(t),t}createNewText(e){ey&&console.log(e),e={...this.getBasicOptions(),...e},ey&&console.log(this.name,e);const t=new Jv(e);return this._createdTextBlocks.push(t),t}};rh([m(re)],vl.prototype,"anchoredPosition",1),rh([m(re)],vl.prototype,"sizeDelta",2),rh([m(re)],vl.prototype,"pivot",2),rh([m(re)],vl.prototype,"anchorMin",2),rh([m(re)],vl.prototype,"anchorMax",2);let Ts=vl;var AA=Object.defineProperty,J1=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&AA(e,t,o),o};class bl extends I{constructor(){super(...arguments),a(this,"effectColor"),a(this,"effectDistance")}}J1([m(he)],bl.prototype,"effectColor"),J1([m(re)],bl.prototype,"effectDistance");var IA=Object.defineProperty,LA=Object.getOwnPropertyDescriptor,eS=(n,e,t,s)=>{for(var o=s>1?void 0:s?LA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&IA(e,t,o),o};const Cp={backgroundColor:new oe(1,1,1),backgroundOpacity:1,borderColor:new oe(1,1,1),borderOpacity:1};var Qr;const iy=(Qr=class extends ps{constructor(){super(...arguments),a(this,"_alphaFactor",1),a(this,"sRGBColor",new oe(1,0,1)),a(this,"raycastTarget",!0),a(this,"uiObject",null),a(this,"_color",null),a(this,"_rect",null),a(this,"_stateManager",null),a(this,"_currentlyCreatingPanel",!1)}get isGraphic(){return!0}get color(){return this._color||(this._color=new he(1,1,1,1)),this._color}set color(n){(!this._color||this._color.r!==n.r||this._color.g!==n.g||this._color.b!==n.b||this._color.alpha!==n.alpha)&&(this._color||(this._color=new he(1,1,1,1)),this._color.copy(n),this.onColorChanged())}setAlphaFactor(n){this._alphaFactor=n,this.onColorChanged()}get alphaFactor(){return this._alphaFactor}onColorChanged(){this.uiObject&&(this.sRGBColor.copy(this._color),this.sRGBColor.convertLinearToSRGB(),Cp.backgroundColor=this.sRGBColor,Cp.backgroundOpacity=this._color.alpha*this._alphaFactor,this.applyEffects(Cp,this._alphaFactor),this.uiObject.set(Cp),this.markDirty())}get m_Color(){return this._color}get rectTransform(){if(this._rect||(this._rect=P.getComponent(this.gameObject,Ts)),!this._rect)throw new Error("Not Supported: Make sure to add a RectTransform component before adding a UI Graphic component.");return this._rect}onParentRectTransformChanged(){var n;(n=this.uiObject)==null||n.set({width:this.rectTransform.width,height:this.rectTransform.height}),this.markDirty()}__internalNewInstanceCreated(n){return super.__internalNewInstanceCreated(n),this._rect=null,this.uiObject=null,this._stateManager=null,this._color&&(this._color=this._color.clone()),this}setState(n){this.makePanel(),this.uiObject&&(this.uiObject.setState(n),this==null||this.markDirty())}setupState(n){this.makePanel(),this.uiObject&&(this._stateManager||(this._stateManager=new MO(this.uiObject)),this.uiObject.setupState(n.state,n.attributes))}setOptions(n){this.makePanel(),this.uiObject&&this.uiObject.set(n)}awake(){super.awake(),this.makePanel(),Ka(this,"_color",()=>RT(this,this.onColorChanged))}onEnable(){var n;super.onEnable(),this.uiObject&&((n=this.rectTransform.shadowComponent)==null||n.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;const n={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:.015};this.onBeforeCreate(n),this.applyEffects(n),this.onCreate(n),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated(),this.onColorChanged()}onBeforeCreate(n){}onCreate(n){this.uiObject=this.rectTransform.createNewBlock(n),this.uiObject.name=this.name}onAfterCreated(){}applyEffects(n,e=1){var t;const s=(t=this.gameObject)==null?void 0:t.getComponent(bl);s&&(s.effectDistance&&(n.borderWidth=Math.max(Math.abs(s.effectDistance.x),Math.abs(s.effectDistance.y))),s.effectColor&&(n.borderColor=s.effectColor,n.borderOpacity=s.effectColor.alpha*e))}async setTexture(n){if(this.setOptions({backgroundOpacity:0}),n){if(Qr.textureCache.has(n))n=Qr.textureCache.get(n);else if(!n.isRenderTargetTexture){const e=n.clone();e.colorSpace=On,Qr.textureCache.set(n,e),n=e}this.setOptions({backgroundImage:n,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:"stretch"}),Xe.assignTextureLOD(n,0).then(e=>{e instanceof je&&(n&&Qr.textureCache.set(n,e),this.setOptions({backgroundImage:e}),this.markDirty())})}else this.setOptions({backgroundImage:void 0,borderRadius:0,backgroundOpacity:this.color.alpha});this.markDirty()}onAfterAddedToScene(){super.onAfterAddedToScene(),this.shadowComponent&&(this.shadowComponent.offset=this.shadowComponent.position.z)}},a(Qr,"textureCache",new Map),Qr);eS([m(he)],iy.prototype,"color",1),eS([m()],iy.prototype,"raycastTarget",2);let lh=iy;class ch extends lh{constructor(){super(...arguments),a(this,"_flippedObject",!1)}onAfterCreated(){this.uiObject&&!this._flippedObject&&(this._flippedObject=!0,this.uiObject.scale.y*=-1)}}var jA=Object.defineProperty,DA=Object.getOwnPropertyDescriptor,Kn=(n,e,t,s)=>{for(var o=s>1?void 0:s?DA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&jA(e,t,o),o};const Yr=C("debugtext");var mt=(n=>(n[n.UpperLeft=0]="UpperLeft",n[n.UpperCenter=1]="UpperCenter",n[n.UpperRight=2]="UpperRight",n[n.MiddleLeft=3]="MiddleLeft",n[n.MiddleCenter=4]="MiddleCenter",n[n.MiddleRight=5]="MiddleRight",n[n.LowerLeft=6]="LowerLeft",n[n.LowerCenter=7]="LowerCenter",n[n.LowerRight=8]="LowerRight",n))(mt||{}),tS=(n=>(n[n.Normal=0]="Normal",n[n.Bold=1]="Bold",n[n.Italic=2]="Italic",n[n.BoldAndItalic=3]="BoldAndItalic",n))(tS||{});class Nt extends lh{constructor(){super(...arguments),a(this,"alignment",0),a(this,"verticalOverflow",0),a(this,"horizontalOverflow",0),a(this,"lineSpacing",1),a(this,"supportRichText",!1),a(this,"font"),a(this,"fontStyle",0),a(this,"sRGBTextColor",new oe(1,0,1)),a(this,"_text",""),a(this,"_fontSize",12),a(this,"_textMeshUi",null),a(this,"_didHandleTextRenderOnTop",!1)}setAlphaFactor(e){var t;super.setAlphaFactor(e),(t=this.uiObject)==null||t.set({fontOpacity:this.color.alpha*this.alphaFactor}),this.markDirty()}get text(){return this._text}set text(e){e!==this._text&&(this._text=e,this.feedText(this.text,this.supportRichText),this.markDirty())}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){var t;this._fontSize=e,(t=this.uiObject)==null||t.set({fontSize:e})}onColorChanged(){var e;this.sRGBTextColor.copy(this.color),this.sRGBTextColor.convertLinearToSRGB(),(e=this.uiObject)==null||e.set({color:this.sRGBTextColor,fontOpacity:this.color.alpha})}onParentRectTransformChanged(){super.onParentRectTransformChanged(),this.uiObject&&this.updateOverflow()}onBeforeCanvasRender(e){this.updateOverflow()}updateOverflow(){var e;const t=(e=this.uiObject)==null?void 0:e._overflow;t&&(t._needsUpdate=!0)}onCreate(e){Yr&&console.log(this),this.horizontalOverflow==1&&(e.whiteSpace="pre"),this.verticalOverflow==0&&(this.context.renderer.localClippingEnabled=!0,e.overflow="hidden"),this.horizontalOverflow==1&&this.verticalOverflow==0,e.lineHeight=this.lineSpacing,delete e.backgroundOpacity,delete e.backgroundColor,Yr&&(e.backgroundColor=16750848,e.backgroundOpacity=.5);const t=this.rectTransform;e={...e,...this.getTextOpts()},this.getAlignment(e),Yr&&(e.backgroundColor=Math.random()*16777215,e.backgroundOpacity=.1),this.uiObject=t.createNewText(e),this.feedText(this.text,this.supportRichText)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}getTextOpts(){const e=this.fontSize,t={color:this.color,fontOpacity:this.color.alpha,fontSize:e,fontKerning:"normal"};return this.setFont(t,this.fontStyle),t}onEnable(){var e;super.onEnable(),this._didHandleTextRenderOnTop=!1,this.uiObject&&this.uiObject.addAfterUpdate(()=>{this.setShadowComponentOwner(this.uiObject),this.markDirty()}),setTimeout(()=>this.markDirty(),10),(e=this.canvas)==null||e.registerEventReceiver(this)}onDisable(){var e;super.onDisable(),(e=this.canvas)==null||e.unregisterEventReceiver(this)}getAlignment(e){switch(e.flexDirection="column",this.alignment){case 0:case 3:case 6:e.textAlign="left";break;case 1:case 4:case 7:e.textAlign="center";break;case 2:case 5:case 8:e.textAlign="right";break}switch(this.alignment){default:case 0:case 1:case 2:e.alignItems="start";break;case 3:case 4:case 5:e.alignItems="center";break;case 6:case 7:case 8:e.alignItems="end";break}return e}feedText(e,t){var s,o,r;if(Yr&&console.log("feedText",this.uiObject,e,t),!!this.uiObject)if(this._textMeshUi||(this._textMeshUi=[]),this.uiObject.children.length=0,!t||e.length===0)this.uiObject.textContent=e;else{let l=this.getNextTag(e);if(l){if(l.startIndex>0){for(let d=this.uiObject.children.length-1;d>=0;d--){const u=this.uiObject.children[d];u.isUI&&(this.uiObject.remove(u),u.clear())}const h=new Gm({textContent:e.substring(0,l.startIndex),color:"inherit"});this.uiObject.add(h)}}else{this.uiObject.textContent="",this.setOptions({textContent:e});return}const c=[];for(;l;){const h=this.getNextTag(e,l.endIndex),d={fontFamily:(s=this.uiObject)==null?void 0:s.get("fontFamily"),color:"inherit",textContent:""};if(h){d.textContent=this.getText(e,l,h),this.handleTag(l,d,c);const u=new Gm(d);(o=this.uiObject)==null||o.add(u)}else{d.textContent=e.substring(l.endIndex),this.handleTag(l,d,c);const u=new Gm(d);(r=this.uiObject)==null||r.add(u)}l=h}}}handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;const e=[],t=this.canvas,s={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let o=!1;if(this._textMeshUi)for(let r=0;r<this._textMeshUi.length;r++){if(e[r]===!0)continue;o=!0;const l=this._textMeshUi[r];l.textContent&&(Iu(l,s),e[r]=!0)}if(!o)break;yield}}handleTag(e,t,s){if(!e.isEndTag){if(e.type.includes("color")){const o=new sy(e,{color:t.color});if(s.push(o),e.type.length>6){const r=parseInt("0x"+e.type.substring(7));t.color=r}else t.color=new oe(1,1,1)}else if(e.type=="b"){this.setFont(t,1);const o=new sy(e,{fontWeight:700});s.push(o)}else if(e.type=="i"){this.setFont(t,2);const o=new sy(e,{fontStyle:"italic"});s.push(o)}}}getText(e,t,s){return e.substring(t.endIndex,s.startIndex)}getNextTag(e,t=0){const s=e.indexOf("<",t),o=e.indexOf(">",s);if(s>=0&&o>=0){const r=e.substring(s+1,o);return{type:r,startIndex:s,endIndex:o+1,isEndTag:r.startsWith("/")}}return null}setFont(e,t){if(!this.font)return;const s=this.font,o=this.getFamilyNameWithCorrectSuffix(s,t);Yr&&console.log("Selected font family:"+o);let r=tb.getFontFamily(o);switch(r||(r=tb.addFontFamily(o)),e.fontFamily=r,t){default:case 0:e.fontWeight=400,e.fontStyle="normal";break;case 1:e.fontWeight=700,e.fontStyle="normal";break;case 2:e.fontWeight=400,e.fontStyle="italic";break;case 3:e.fontStyle="italic",e.fontWeight=400}let l=r.getVariant(e.fontWeight,e.fontStyle);if(!l){let c=o;c!=null&&c.endsWith("-msdf.json")||(c+="-msdf.json");let h=o;h!=null&&h.endsWith(".png")||(h+=".png"),l=r.addVariant(e.fontWeight,e.fontStyle,c,h),l?.addEventListener("ready",()=>{this.markDirty()})}}getFamilyNameWithCorrectSuffix(e,t){var s;const o=e.lastIndexOf("-");if(o<0)return e;const r=(s=e.substring(o+1))==null?void 0:s.toLowerCase();if(BA.includes(r))return Yr&&console.warn("Unsupported font style: "+r),e;const l=e.lastIndexOf("/");let c=e;l>=0&&(c=c.substring(l+1));const h=c[0]===c[0].toUpperCase(),d=e.substring(0,o);switch(Yr&&console.log("Select font: ",e,tS[t],c,h,d),t){case 0:return h?d+"-Regular":d+"-regular";case 1:return h?d+"-Bold":d+"-bold";case 2:return h?d+"-Italic":d+"-italic";case 3:return h?d+"-BoldItalic":d+"-bolditalic";default:return e}}}Kn([m()],Nt.prototype,"alignment",2),Kn([m()],Nt.prototype,"verticalOverflow",2),Kn([m()],Nt.prototype,"horizontalOverflow",2),Kn([m()],Nt.prototype,"lineSpacing",2),Kn([m()],Nt.prototype,"supportRichText",2),Kn([m(URL)],Nt.prototype,"font",2),Kn([m()],Nt.prototype,"fontStyle",2),Kn([m()],Nt.prototype,"text",1),Kn([m()],Nt.prototype,"fontSize",1);class sy{constructor(e,t){a(this,"tag"),a(this,"previousValues"),this.tag=e,this.previousValues=t}}const BA=["medium","mediumitalic","black","blackitalic","thin","thinitalic","extrabold","light","lightitalic","semibold"];class Kr{constructor(e){a(this,"id"),a(this,"content",""),a(this,"font",[]),a(this,"pointSize",144),a(this,"width"),a(this,"height"),a(this,"depth"),a(this,"wrapMode"),a(this,"horizontalAlignment"),a(this,"verticalAlignment"),a(this,"material"),this.id=e}static getId(){return this.global_id++}setDepth(e){return this.depth=e,this}setPointSize(e){return this.pointSize=e,this}setHorizontalAlignment(e){return this.horizontalAlignment=e,this}setVerticalAlignment(e){return this.verticalAlignment=e,this}writeTo(e,t){var s;t.beginBlock(`def Preliminary_Text "${this.id}"`,"(",!1),t.appendLine('prepend apiSchemas = ["MaterialBindingAPI"]'),t.closeBlock(")"),t.beginBlock(),this.content&&t.appendLine(`string content = "${this.content}"`),(!this.font||this.font.length<=0)&&(this.font||(this.font=[]),(s=this.font)==null||s.push("sans-serif"));const o=this.font.map(r=>`"${r}"`).join(", ");t.appendLine(`string[] font = [ ${o} ]`),t.appendLine(`double pointSize = ${this.pointSize}`),typeof this.width=="number"&&t.appendLine(`double width = ${this.width}`),typeof this.height=="number"&&t.appendLine(`double height = ${this.height}`),typeof this.depth=="number"&&t.appendLine(`double depth = ${this.depth}`),this.wrapMode&&t.appendLine(`token wrapMode = "${this.wrapMode}"`),this.horizontalAlignment&&t.appendLine(`token horizontalAlignment = "${this.horizontalAlignment}"`),this.verticalAlignment&&t.appendLine(`token verticalAlignment = "${this.verticalAlignment}"`),this.material!==void 0&&t.appendLine(`rel material:binding = </StageRoot/Materials/${ap(this.material)}>`),t.closeBlock()}}a(Kr,"global_id",0);class ny{static singleLine(e,t,s){const o=new Kr("text_"+Kr.getId());return o.content=e,t&&(o.pointSize=t),s&&(o.depth=s),o}static multiLine(e,t,s,o,r,l){const c=new Kr("text_"+Kr.getId());return c.content=e,c.width=t,c.height=s,c.horizontalAlignment=o,c.verticalAlignment=r,l!==void 0&&(c.wrapMode=l),c}}const FA=new se().makeRotationY(Math.PI),UA=new se().makeScale(-1,1,-1);class Pp{get extensionName(){return"text"}exportText(e,t,s){const o=P.getComponent(e,Nt);if(!o)return;const r=P.getComponent(e,Ts);let l=100,c=100;r&&(l=r.width,c=r.height);const h=FA.clone();r&&h.premultiply(UA),t.setMatrix(h);const d=o.color.clone();t.material=new bt({color:d,emissive:d}),t.addEventListener("serialize",(u,p)=>{let g=o.text;g=g.replace(/\r/g,""),g=g.replace(/\n/g,"\\n");const f=ny.multiLine(g,l,c,"center","bottom","flowing");this.setTextAlignment(f,o.alignment),this.setOverflow(f,o),t.material&&(f.material=t.material),f.pointSize=this.convertToTextSize(o.fontSize),f.depth=.001,f.writeTo(void 0,u)})}convertToTextSize(e){return 1/.0502*144*e}setOverflow(e,t){t.horizontalOverflow?e.wrapMode="singleLine":e.wrapMode="flowing"}setTextAlignment(e,t){switch(t){case mt.LowerLeft:case mt.MiddleLeft:case mt.UpperLeft:e.horizontalAlignment="left";break;case mt.LowerCenter:case mt.MiddleCenter:case mt.UpperCenter:e.horizontalAlignment="center";break;case mt.LowerRight:case mt.MiddleRight:case mt.UpperRight:e.horizontalAlignment="right";break}switch(t){case mt.LowerLeft:case mt.LowerCenter:case mt.LowerRight:e.verticalAlignment="bottom";break;case mt.MiddleLeft:case mt.MiddleCenter:case mt.MiddleRight:e.verticalAlignment="middle";break;case mt.UpperLeft:case mt.UpperCenter:case mt.UpperRight:e.verticalAlignment="top";break}}}var zA=Object.defineProperty,it=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&zA(e,t,o),o};const iS=C("debuguilayout");class Zr{constructor(){a(this,"left",0),a(this,"right",0),a(this,"top",0),a(this,"bottom",0)}get vertical(){return this.top+this.bottom}get horizontal(){return this.left+this.right}}it([m()],Zr.prototype,"left"),it([m()],Zr.prototype,"right"),it([m()],Zr.prototype,"top"),it([m()],Zr.prototype,"bottom");class Wi extends I{constructor(){super(...arguments),a(this,"_rectTransform",null),a(this,"_needsUpdate",!1),a(this,"childAlignment",0),a(this,"reverseArrangement",!1),a(this,"spacing",0),a(this,"padding"),a(this,"minWidth",0),a(this,"minHeight",0),a(this,"flexibleHeight",0),a(this,"flexibleWidth",0),a(this,"preferredHeight",0),a(this,"preferredWidth",0)}get rectTransform(){return this._rectTransform}onParentRectTransformChanged(e){this._needsUpdate=!0}get isDirty(){return this._needsUpdate}get isLayoutGroup(){return!0}updateLayout(){this._rectTransform&&(iS&&console.warn("Layout Update",this.context.time.frame,this.name),this._needsUpdate=!1,this.onCalculateLayout(this._rectTransform))}start(){this._needsUpdate=!0}onEnable(){iS&&console.log(this.name,this),this._rectTransform=this.gameObject.getComponent(Ts);const e=this.gameObject.getComponentInParent(_l);e&&e.registerLayoutGroup(this),this._needsUpdate=!0}onDisable(){const e=this.gameObject.getComponentInParent(_l);e&&e.unregisterLayoutGroup(this)}set m_Spacing(e){e!==this.spacing&&(this._needsUpdate=!0,this.spacing=e)}get m_Spacing(){return this.spacing}}it([m()],Wi.prototype,"childAlignment"),it([m()],Wi.prototype,"reverseArrangement"),it([m()],Wi.prototype,"spacing"),it([m(Zr)],Wi.prototype,"padding"),it([m()],Wi.prototype,"minWidth"),it([m()],Wi.prototype,"minHeight"),it([m()],Wi.prototype,"flexibleHeight"),it([m()],Wi.prototype,"flexibleWidth"),it([m()],Wi.prototype,"preferredHeight"),it([m()],Wi.prototype,"preferredWidth");class Yo extends Wi{constructor(){super(...arguments),a(this,"childControlHeight",!0),a(this,"childControlWidth",!0),a(this,"childForceExpandHeight",!1),a(this,"childForceExpandWidth",!1),a(this,"childScaleHeight",!1),a(this,"childScaleWidth",!1)}onCalculateLayout(e){var t;const s=this.primaryAxis,o=e.width;let r=o;const l=e.height;let c=l;r-=this.padding.horizontal,c-=this.padding.vertical,s==="x"?this.padding.horizontal:this.padding.vertical;const h=s==="x",d=h?"y":"x",u=h?this.childControlWidth:this.childControlHeight,p=h?this.childControlHeight:this.childControlWidth,g=h?this.childForceExpandWidth:this.childForceExpandHeight,f=h?this.childForceExpandHeight:this.childForceExpandWidth,y=h?c:r,v=h?o:l,b=.5*(h?this.childAlignment%3:Math.floor(this.childAlignment/3));let _=0;h?_+=this.padding.left:_+=this.padding.top;let w=0,x=0;for(let D=0;D<this.gameObject.children.length;D++){const z=this.gameObject.children[D],j=P.getComponent(z,Ts);j!=null&&j.activeAndEnabled&&(x+=1,h?w+=j.width:w+=j.height)}let k=0;const M=this.spacing*(x-1);if(g||u){let D=0;h?D=r-=M:D=c-=M,x>0&&(k=D/x)}let T=0;T+=this.padding.left,T-=this.padding.right,b!==0&&(_=v-w,_*=b,_-=M*b,h?(_-=this.padding.right*b,_+=this.padding.left*(1-b),_<this.padding.left&&(_=this.padding.left)):(_-=this.padding.bottom*b,_+=this.padding.top*(1-b),_<this.padding.top&&(_=this.padding.top)));let L=1;for(let D=0;D<this.gameObject.children.length;D++){const z=this.gameObject.children[D],j=P.getComponent(z,Ts);if(j!=null&&j.activeAndEnabled){(t=j.pivot)==null||t.set(.5,.5),j.anchorMin.set(0,1),j.anchorMax.set(0,1);const H=o*.5+T*.5;j.anchoredPosition.x!==H&&(j.anchoredPosition.x=H);const K=l*-.5;j.anchoredPosition.y!==K&&(j.anchoredPosition.y=K),f&&p&&j.sizeDelta[d]!==y&&(j.sizeDelta[d]=y),g&&u&&j.sizeDelta[s]!==k&&(j.sizeDelta[s]=k);const U=h?j.width:j.height,B=U*.5;if(_+=B,g){const te=k*L-k*.5;te>_&&(_=te-k*.5+U+this.padding.left,_-=B)}let Q=_;s==="y"&&(Q=-Q),j.anchoredPosition[s]!==Q&&(j.anchoredPosition[s]=Q),_+=B,_+=this.spacing,L+=1}}}}it([m()],Yo.prototype,"childControlHeight"),it([m()],Yo.prototype,"childControlWidth"),it([m()],Yo.prototype,"childForceExpandHeight"),it([m()],Yo.prototype,"childForceExpandWidth"),it([m()],Yo.prototype,"childScaleHeight"),it([m()],Yo.prototype,"childScaleWidth");class oy extends Yo{get primaryAxis(){return"y"}}class ry extends Yo{get primaryAxis(){return"x"}}class ay extends Wi{onCalculateLayout(){}}var NA=Object.defineProperty,WA=Object.getOwnPropertyDescriptor,mn=(n,e,t,s)=>{for(var o=s>1?void 0:s?WA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&NA(e,t,o),o},sS=(n=>(n[n.ScreenSpaceOverlay=0]="ScreenSpaceOverlay",n[n.ScreenSpaceCamera=1]="ScreenSpaceCamera",n[n.WorldSpace=2]="WorldSpace",n[n.Undefined=-1]="Undefined",n))(sS||{});const ly=C("debuguilayout"),cs=class kC extends oh{constructor(){super(...arguments),a(this,"_renderOnTop"),a(this,"_depthWrite",!1),a(this,"_doubleSided",!0),a(this,"_castShadows",!1),a(this,"_receiveShadows",!1),a(this,"_renderMode",-1),a(this,"_rootCanvas"),a(this,"_scaleFactor",1),a(this,"worldCamera"),a(this,"planeDistance",-1),a(this,"_boundRenderSettingsChanged",this.onRenderSettingsChanged.bind(this)),a(this,"previousParent",null),a(this,"_lastMatrixWorld",null),a(this,"_rectTransforms",[]),a(this,"_layoutGroups",new Map),a(this,"_receivers",[]),a(this,"onBeforeRenderRoutine",()=>{var e,t,s,o;if(this.previousParent=this.gameObject.parent,((e=this.context.xr)!=null&&e.isVR||(t=this.context.xr)!=null&&t.isPassThrough)&&this.screenspace){this.gameObject.visible=!1,this.gameObject.removeFromParent();return}this.renderOnTop||this.screenspace?this.gameObject.removeFromParent():(this.onUpdateRenderMode(),this.handleLayoutUpdates(),(s=this.shadowComponent)==null||s.updateMatrixWorld(!0),(o=this.shadowComponent)==null||o.updateWorldMatrix(!0,!0),this.invokeBeforeRenderEvents(),ii.ensureUpdateMeshUI(ib,this.context))}),a(this,"onAfterRenderRoutine",()=>{var e,t,s,o,r;if(((e=this.context.xr)!=null&&e.isVR||(t=this.context.xr)!=null&&t.isPassThrough)&&this.screenspace){(s=this.previousParent)==null||s.add(this.gameObject);return}if((this.screenspace||this.renderOnTop)&&this.previousParent&&this.context.mainCamera){if(this.screenspace){const h=this.context.mainCamera;h?.add(this.gameObject)}else this.previousParent.add(this.gameObject);const l=this.context.renderer.autoClear,c=this.context.renderer.autoClearColor;this.context.renderer.autoClear=!1,this.context.renderer.autoClearColor=!1,this.context.renderer.clearDepth(),this.onUpdateRenderMode(!0),this.handleLayoutUpdates(),(o=this.shadowComponent)==null||o.updateMatrixWorld(!0),this.invokeBeforeRenderEvents(),ii.ensureUpdateMeshUI(ib,this.context,!0),this.context.renderer.render(this.gameObject,this.context.mainCamera),this.context.renderer.autoClear=l,this.context.renderer.autoClearColor=c,this.previousParent.add(this.gameObject)}(r=this._lastMatrixWorld)==null||r.copy(this.gameObject.matrixWorld)}),a(this,"_updateRenderSettingsRoutine"),a(this,"_activeRenderMode",-1),a(this,"_lastWidth",-1),a(this,"_lastHeight",-1)}get isCanvas(){return!0}get screenspace(){return this.renderMode!==2}set renderOnTop(e){e!==this._renderOnTop&&(this._renderOnTop=e,this.onRenderSettingsChanged())}get renderOnTop(){return this._renderOnTop!==void 0?this._renderOnTop:!!(this.screenspace&&this._renderMode===0)}set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}set rootCanvas(e){this._rootCanvas instanceof kC||(this._rootCanvas=e)}get rootCanvas(){return this._rootCanvas}get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}awake(){var e;this.shadowComponent=this.gameObject,this.previousParent=this.gameObject.parent,ly&&console.log("Canvas.Awake()",((e=this.previousParent)==null?void 0:e.name)+"/"+this.gameObject.name),super.awake()}start(){this.applyRenderSettings()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this._lastMatrixWorld=new se,this.applyRenderSettings(),document.addEventListener("resize",this._boundRenderSettingsChanged),this.context.pre_render_callbacks.push(this.onBeforeRenderRoutine),this.context.post_render_callbacks.push(this.onAfterRenderRoutine)}onDisable(){super.onDisable(),document.removeEventListener("resize",this._boundRenderSettingsChanged);const e=this.context.pre_render_callbacks.indexOf(this.onBeforeRenderRoutine);e!==-1&&this.context.pre_render_callbacks.splice(e,1);const t=this.context.post_render_callbacks.indexOf(this.onAfterRenderRoutine);t!==-1&&this.context.post_render_callbacks.splice(t,1)}registerTransform(e){this._rectTransforms.push(e)}unregisterTransform(e){const t=this._rectTransforms.indexOf(e);t!==-1&&this._rectTransforms.splice(t,1)}registerLayoutGroup(e){const t=e.gameObject;this._layoutGroups.set(t,e)}unregisterLayoutGroup(e){const t=e.gameObject;this._layoutGroups.delete(t)}registerEventReceiver(e){this._receivers.push(e)}unregisterEventReceiver(e){const t=this._receivers.indexOf(e);t!==-1&&this._receivers.splice(t,1)}async onEnterXR(e){this.screenspace?(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!1):(this.gameObject.visible=!1,await Xl(1).then(()=>{this.gameObject.visible=!0}))}onLeaveXR(e){this.screenspace&&(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!0)}invokeBeforeRenderEvents(){var e;for(const t of this._receivers)(e=t.onBeforeCanvasRender)==null||e.call(t,this)}handleLayoutUpdates(){this._lastMatrixWorld===null&&(this._lastMatrixWorld=new se);const e=!this._lastMatrixWorld.equals(this.gameObject.matrixWorld);ly&&e&&console.log("Canvas Layout changed",this.context.time.frameCount,this.name);for(const t of this._rectTransforms){e&&t.markDirty();let s=this._layoutGroups.get(t.gameObject);t.isDirty&&!s&&(s=t.gameObject.getComponentInParent(Wi)),(t.isDirty||s!=null&&s.isDirty)&&(ly&&console.log("CANVAS UPDATE ### "+t.name+" ##################################### "+this.context.time.frame),s?.updateLayout(),t.updateTransform())}}applyRenderSettings(){this.onRenderSettingsChanged()}onRenderSettingsChanged(){this._updateRenderSettingsRoutine||(this._updateRenderSettingsRoutine=this.startCoroutine(this._updateRenderSettingsDelayed(),Oe.OnBeforeRender))}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.onUpdateRenderMode(),Iu(this.shadowComponent,this);for(const e of P.getComponentsInChildren(this.gameObject,ps))Iu(e.shadowComponent,this)}}onUpdateRenderMode(e=!1){if(!e&&this._renderMode===this._activeRenderMode&&this._lastWidth===this.context.domWidth&&this._lastHeight===this.context.domHeight)return;this._activeRenderMode=this._renderMode;let t=this.context.mainCameraComponent,s=10;switch(t&&t.nearClipPlane>0&&t.farClipPlane>0&&(s=W.lerp(t.nearClipPlane,t.farClipPlane,.01)),this._renderMode===1&&(this.worldCamera&&(t=this.worldCamera),this.planeDistance>0&&(s=this.planeDistance)),this._renderMode){case 0:case 1:if(this._lastWidth=this.context.domWidth,this._lastHeight=this.context.domHeight,!t)return;const o=s+.01;this.gameObject.position.x=0,this.gameObject.position.y=0,this.gameObject.position.z=-o,this.gameObject.quaternion.identity();const r=this.gameObject.getComponent(Ts);let l=!1;r.sizeDelta.x!==this.context.domWidth&&(l=!0),r.sizeDelta.y!==this.context.domHeight&&(l=!0);const c=t.fieldOfView*Math.PI/180,h=2*Math.tan(c/2)*Math.abs(o);this.gameObject.scale.x=h/this.context.domHeight,this.gameObject.scale.y=h/this.context.domHeight,this.gameObject.scale.z=.01,l&&(r.sizeDelta.x=this.context.domWidth,r.sizeDelta.y=this.context.domHeight,r?.markDirty());break;case 2:this._lastWidth=-1,this._lastHeight=-1;break}}};mn([m()],cs.prototype,"renderOnTop",1),mn([m()],cs.prototype,"depthWrite",1),mn([m()],cs.prototype,"doubleSided",1),mn([m()],cs.prototype,"castShadows",1),mn([m()],cs.prototype,"receiveShadows",1),mn([m()],cs.prototype,"renderMode",1),mn([m(cs)],cs.prototype,"rootCanvas",1),mn([m()],cs.prototype,"scaleFactor",1),mn([m(ci)],cs.prototype,"worldCamera",2),mn([m()],cs.prototype,"planeDistance",2);let _l=cs;var VA=Object.defineProperty,$A=Object.getOwnPropertyDescriptor,cy=(n,e,t,s)=>{for(var o=s>1?void 0:s?$A(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&VA(e,t,o),o};class Ko extends I{constructor(){super(...arguments),a(this,"_alpha",1),a(this,"interactable",!0),a(this,"blocksRaycasts",!0),a(this,"_isDirty",!1),a(this,"_buffer",[])}get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),Oe.OnBeforeRender))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}applyChangesNow(){this._buffer.length=0;for(const e of P.getComponentsInChildren(this.gameObject,ps,this._buffer)){const t=e;t.setAlphaFactor&&t.setAlphaFactor(this._alpha)}}}cy([m()],Ko.prototype,"alpha",1),cy([m()],Ko.prototype,"interactable",2),cy([m()],Ko.prototype,"blocksRaycasts",2);class hy{get extensionName(){return"tmui"}onExportObject(e,t,s){const o=P.getComponent(e,_l);if(o&&o.enabled&&o.renderMode===sS.WorldSpace){const r=new Pp,l=P.getComponent(e,Ts),c=P.getComponent(e,Ko),h=new Array;if(l){if(!P.isActiveSelf(e)){const p=P.isActiveSelf(e);P.setActive(e,!0),l.onEnable(),l.updateTransform(),h.push(()=>{l.onDisable(),P.setActive(e,p)})}e.traverse(p=>{if(!P.isActiveInHierarchy(p)){const g=P.isActiveSelf(p);P.setActive(p,!0);const f=P.getComponent(p,ps);f&&(f.onEnable(),h.push(()=>{f.onDisable()}));const y=P.getComponent(p,Ts);y&&(y.onEnable(),y.updateTransform(),y.onApplyTransform(),h.push(()=>{y.onDisable()}));const v=P.getComponent(p,Nt);v&&(v.onEnable(),h.push(()=>{v.onDisable()})),h.push(()=>{P.setActive(p,g)})}}),l.width,l.height;const d=mi.createEmpty(),u=l.shadowComponent;if(t.add(d),u){const p=u.matrix;d.setMatrix(p);const g=new Map,f=new Map;g.set(u,d),f.set(u,c?c.alpha:1),u.traverse(y=>{if(y===u)return;const v=mi.createEmpty();v.setMatrix(y.matrix);const b=y.parent,_=!!b&&typeof b.textContent=="string"&&b.textContent.length>0;let w=f.get(b)||1;const x=P.getComponent(y,Ko);if(x&&(w*=x.alpha),y instanceof G&&_){const M=y[Mi];M?r.exportText(M.gameObject,v,s):console.error("Error when exporting UI: shadow component owner not found. This is likely a bug.",y)}if(y instanceof G&&!_){const M=y.geometry.clone();M.scale(1,1,-1),this.flipWindingOrder(M),v.geometry=M;const T=new oe,L=y.material.opacity;T.copy(y.material.color),v.material=new Me({color:T,opacity:L*w,map:y.material.map,transparent:!0})}g.set(y,v),f.set(y,w);const k=g.get(b);if(!k){console.error("Error when exporting UI: shadow component parent not found!",y,y.parent);return}k.add(v)})}}for(const d of h)d()}}flipWindingOrder(e){const t=e.index.array;for(let s=0,o=t.length/3;s<o;s++){const r=t[s*3];t[s*3]=t[s*3+2],t[s*3+2]=r}e.index.needsUpdate=!0}}const hh=C("debugusdz");function HA(n,e){var t;const s=[],o=P.getComponentsInChildren(n,Rt),r=P.getComponentsInChildren(n,Ft),l=new Array,c=new Array;if(e.injectImplicitBehaviours)for(const h of o){if(!h||!h.runtimeAnimatorController||!h.enabled)continue;const d=h.runtimeAnimatorController.activeState;if(!d||!d.motion||!d.motion.clip||((t=d.motion.clip.tracks)==null?void 0:t.length)<1||l.includes(h))continue;const u=new Jc;u.animator=h,u.stateName=d.name,u.trigger="start",u.name="PlayAnimationOnClick_implicitAtStart_"+u.stateName;const p=new E;P.addComponent(p,u),c.push(p),l.push(h),n.add(p)}else for(const h of o){if(!h||!h.runtimeAnimatorController||!h.enabled)continue;hh&&console.log(h);const d=[];for(const u of h.runtimeAnimatorController.enumerateActions()){hh&&console.log(u);const p=u.getClip();d.includes(p)||d.push(p)}s.push({root:h.gameObject,clips:d})}if(e.injectImplicitBehaviours)for(const h of r){if(!h||!h.clip||!h.enabled||!h.playAutomatically||l.includes(h))continue;const d=new Jc;d.animation=h,d.stateName=h.clip.name,d.trigger="start",d.name="PlayAnimationOnClick_implicitAtStart_"+d.stateName;const u=new E;P.addComponent(u,d),c.push(u),l.push(h),n.add(u)}else for(const h of r){hh&&console.log(h);const d=[];for(const u of h.animations)d.includes(u)||d.push(u);s.push({root:h.gameObject,clips:d})}hh&&s?.length>0&&console.log("USDZ Animation Clips without behaviours",s);for(const h of s)for(const d of h.clips)e.registerAnimation(h.root,d);return c}function GA(n,e){const t=P.getComponentsInChildren(n,ns),s=P.getComponentsInChildren(n,Vo),o=new Array,r=new Array;hh&&console.log({audioSources:t,playAudioOnClicks:s});for(const l of s){if(!l.target)continue;const c=t.indexOf(l.target);c>-1&&t.splice(c,1)}for(const l of t){if(!l||!l.clip||l.volume<=0||o.includes(l))continue;const c=new Vo;c.target=l,c.name="PlayAudioOnClick_implicitAtStart_",c.trigger="start";const h=new E;P.addComponent(h,c),console.log("implicit PlayAudioOnStart",h,c),r.push(h),o.push(l),n.add(h)}return r}function qA(n){return new Jt("DisableAtStart",At.sceneStartTrigger(),ve.fadeAction(n,0,!1))}function nS(n,e){const t=n.domElement.shadowRoot.querySelector("link[rel='ar']");if(t)return t;const s=document.createElement("div");s.classList.add("menu"),s.classList.add("quicklook-menu"),s.style.display="none",s.style.visibility="hidden";const o=document.createElement("button");o.id="open-in-ar",e?(o.innerText="View in AR",o.title="View this scene in AR. The scene will be exported to USDZ and opened with Apple's QuickLook."):(o.innerText="View in AR",o.title="Download this scene for AR. Open the downloaded USDZ file to view it in AR using Apple's QuickLook."),s.appendChild(o);const r=document.createElement("a");r.id="needle-usdz-link",r.style.display="none",r.rel="ar",r.href="",r.target="_blank",s.appendChild(r);const l=document.createElement("img");return l.id="button",r.appendChild(l),n.domElement.shadowRoot.appendChild(s),r}var XA=Object.defineProperty,It=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&XA(e,t,o),o};const Vi=C("debugusdz"),QA=C("debugusdzpruning");class Jr{constructor(){a(this,"callToAction"),a(this,"checkoutTitle"),a(this,"checkoutSubtitle"),a(this,"callToActionURL")}}It([m()],Jr.prototype,"callToAction"),It([m()],Jr.prototype,"checkoutTitle"),It([m()],Jr.prototype,"checkoutSubtitle"),It([m()],Jr.prototype,"callToActionURL");var wl;const fi=(wl=class extends I{constructor(){super(...arguments),a(this,"objectToExport"),a(this,"autoExportAnimations",!0),a(this,"autoExportAudioSources",!0),a(this,"exportFileName"),a(this,"customUsdzFile"),a(this,"customBranding"),a(this,"anchoringType","plane"),a(this,"maxTextureSize",2048),a(this,"planeAnchoringAlignment","horizontal"),a(this,"interactive",!0),a(this,"physics",!0),a(this,"allowCreateQuicklookButton",!0),a(this,"quickLookCompatible",!0),a(this,"extensions",[]),a(this,"link"),a(this,"button"),a(this,"onClickedOpenInARElement",n=>{n.preventDefault(),this.exportAndOpen()}),a(this,"_currentExportTasks",new Map),a(this,"_previousTimeScale",1),a(this,"lastCallback"),a(this,"_rootSessionRootWasAppliedTo",null),a(this,"_rootPositionBeforeExport",new S),a(this,"_rootRotationBeforeExport",new V),a(this,"_rootScaleBeforeExport",new S)}start(){var n,e,t;Vi&&(console.log("USDZExporter",this),console.log("Debug USDZ Mode. Press 'T' to export"),window.addEventListener("keydown",s=>{switch(s.key){case"t":this.exportAndOpen();break}})),this.objectToExport||(this.objectToExport=this.gameObject),!((e=(n=this.objectToExport)==null?void 0:n.children)!=null&&e.length)&&!((t=this.objectToExport)!=null&&t.isMesh)&&(this.objectToExport=this.context.scene)}onEnable(){var n;const e=X.supportsQuickLookAR(),t=X.isiOS()||X.isiPad();!this.button&&(Vi||e||t)&&(this.allowCreateQuicklookButton&&(this.button=this.createQuicklookButton()),this.lastCallback=this.quicklookCallback.bind(this),this.link=nS(this.context,e),this.link.addEventListener("message",this.lastCallback)),Vi&&De("USDZ Exporter enabled: "+this.name),(n=document.getElementById("open-in-ar"))==null||n.addEventListener("click",this.onClickedOpenInARElement),cc.registerExporter(this)}onDisable(){var n,e,t;(n=this.button)==null||n.remove(),(e=this.link)==null||e.removeEventListener("message",this.lastCallback),Vi&&De("USDZ Exporter disabled: "+this.name),(t=document.getElementById("open-in-ar"))==null||t.removeEventListener("click",this.onClickedOpenInARElement),cc.unregisterExporter(this)}async exportAsync(){return this.exportAndOpen()}async exportAndOpen(){var n;let e=this.exportFileName??((n=this.objectToExport)==null?void 0:n.name)??this.name;if(e+="-"+b1(),Zs()||(e!==""&&(e+="-"),e+="MadeWithNeedle"),this.link||(this.link=nS(this.context,X.supportsQuickLookAR())),this.customUsdzFile)return Vi&&console.log("Exporting custom usdz",this.customUsdzFile),this.openInQuickLook(this.customUsdzFile,e),null;if(!this.objectToExport)return console.warn("No object to export",this),null;const t=await this.export(this.objectToExport);return t?(Vi&&console.log("USDZ generation done. Downloading as "+e),this.openInQuickLook(t,e),t):(console.error("USDZ generation failed. Please report a bug",this),null)}async export(n){if(!n)return console.warn("No object to export"),null;const e=this._currentExportTasks.get(n);if(e)return e;const t=this.internalExport(n);return t instanceof Promise?(this._currentExportTasks.set(n,t),t.then(s=>(this._currentExportTasks.delete(n),s)).catch(s=>(this._currentExportTasks.delete(n),console.error("Error during USDZ export \u2013 please report a bug!",s),null))):t}async internalExport(n){de.start("export-usdz",{onProgress:x=>{this.dispatchEvent(new CustomEvent("export-progress",{detail:{progress:x}}))}}),de.report("export-usdz",{message:"Starting export",totalSteps:40,currentStep:0}),de.report("export-usdz",{message:"Load progressive textures",autoStep:5}),de.start("export-usdz-textures","export-usdz");const e=P.getComponentsInChildren(n,gi);for(const x of e)x&&x.enabled&&x.updateSprite(!0);const t=P.getComponentsInChildren(n,Ui),s=new Array;let o=0;for(const x of t){for(const k of x.sharedMeshes)if(k){const M=Xe.assignMeshLOD(k,0);M instanceof Promise&&s.push(new Promise((T,L)=>{M.then(()=>{o++,de.report("export-usdz-textures",{message:"Loaded progressive mesh",currentStep:o,totalSteps:s.length}),T()}).catch(D=>L(D))}))}for(const k of x.sharedMaterials)if(k){const M=Xe.assignTextureLOD(k,0);M instanceof Promise&&s.push(new Promise((T,L)=>{M.then(()=>{o++,de.report("export-usdz-textures",{message:"Loaded progressive texture",currentStep:o,totalSteps:s.length}),T()}).catch(D=>L(D))}))}}Vi&&De("Progressive Loading: "+s.length),await Promise.all(s),Vi&&De("Progressive Loading: done"),de.end("export-usdz-textures");const r=Di.Global.Mask;Di.Global.Set(rn.AR);const l=new P1,c=new dp(this.quickLookCompatible);let h;const d=[];this.interactive&&(d.push(new Z0),d.push(new _a),globalThis.NEEDLE_USE_RAPIER&&P.getComponentsInChildren(n,dt).length>0&&(this.physics?(h=new J0,d.push(h)):F()&&console.warn("USDZExporter: Physics export is disabled, but there are active Rigidbody components in the scene. They will not be exported.")),d.push(new Pp),d.push(new hy));const u=[c,...d,...this.extensions],p={self:this,exporter:l,extensions:u,object:n};de.report("export-usdz","Invoking before-export"),this.dispatchEvent(new CustomEvent("before-export",{detail:p})),this.applyWebARSessionRoot(),this._previousTimeScale=this.context.time.timeScale,this.context.time.timeScale=0,de.report("export-usdz","auto export animations and audio sources");const g=new Array;this.autoExportAnimations&&g.push(...HA(n,c)),u.find(x=>x.extensionName==="Audio")&&this.autoExportAudioSources&&g.push(...GA(n)),l.debug=Vi,l.pruneUnusedNodes=!QA;const f=Ju.instance.objs.map(x=>x.batchedMesh);l.keepObject=x=>{let k=!0;const M=P.getComponent(x,Ui);return M&&!M.enabled&&(k=!1),k&&f.includes(x)&&(k=!1),k&&P.getComponentInParent(x,Vc)&&(k=!1),k&&P.getComponentInParent(x,en)&&(k=!1),Vi&&!k&&console.log("USDZExporter: Discarding object",x),k},l.beforeWritingDocument=()=>{if(F()&&c&&h){const x=c.animatedRoots;for(const k of x){const M=P.getComponentsInChildren(k,dt).filter(L=>L.enabled),T=P.getComponents(k,ui).filter(L=>L.enabled&&!L.isTrigger);(M.length>0||T.length>0)&&console.error("An animated object has physics components in its child hierarchy. This can lead to undefined behaviour due to a bug in Apple's QuickLook (FB15925487). Remove the physics components from child objects or verify that you get the expected results.",k)}}};const y=new Array;this.objectToExport&&this.quickLookCompatible&&this.interactive&&this.objectToExport.traverse(x=>{x.visible||y.push(x)});const v=u.find(x=>x.extensionName==="Behaviour");this.interactive&&v&&y.length>0&&v.addBehavior(qA(y));let b=!0;this.quickLookCompatible&&!this.interactive&&(b=!1),this.anchoringType!=="plane"&&this.anchoringType!=="none"&&this.anchoringType!=="image"&&this.anchoringType!=="face"&&(this.anchoringType="plane"),this.planeAnchoringAlignment!=="horizontal"&&this.planeAnchoringAlignment!=="vertical"&&this.planeAnchoringAlignment!=="any"&&(this.planeAnchoringAlignment="horizontal"),de.report("export-usdz","Invoking exporter.parse");const _=await l.parse(this.objectToExport,{ar:{anchoring:{type:this.anchoringType},planeAnchoring:{alignment:this.planeAnchoringAlignment}},extensions:u,quickLookCompatible:this.quickLookCompatible,maxTextureSize:this.maxTextureSize,exportInvisible:b}),w=new Blob([_],{type:"model/vnd.usdz+zip"});this.revertWebARSessionRoot(),this.context.time.timeScale=this._previousTimeScale,de.report("export-usdz","Invoking after-export"),this.dispatchEvent(new CustomEvent("after-export",{detail:p}));for(const x of g)P.destroy(x);return Di.Global.Set(r),de.end("export-usdz"),w}openInQuickLook(n,e){const t=n instanceof Blob?URL.createObjectURL(n):n,s=this.buildQuicklookOverlay();Vi&&console.log("QuickLook Overlay",s);const o=s.callToAction?encodeURIComponent(s.callToAction):"",r=s.checkoutTitle?encodeURIComponent(s.checkoutTitle):"",l=s.checkoutSubtitle?encodeURIComponent(s.checkoutSubtitle):"";this.link.href=t+`#callToAction=${o}&checkoutTitle=${r}&checkoutSubtitle=${l}&callToActionURL=${s.callToActionURL}`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener("message",this.lastCallback)),this.link.download=e+".usdz",this.link.click()}download(n,e){wl.save(n,e)}static save(n,e){const t=document.createElement("a");t.style.display="none",document.body.appendChild(t),typeof n=="string"?t.href=n:t.href=URL.createObjectURL(n),t.download=e,t.click(),t.remove()}quicklookCallback(n){if(n?.data=="_apple_ar_quicklook_button_tapped"){Vi&&be("Quicklook closed via call to action button");var e=new CustomEvent("quicklook-button-tapped",{detail:this});if(this.dispatchEvent(e),!e.defaultPrevented){const t=new URLSearchParams(this.link.href);if(t){const s=t.get("callToActionURL");Vi&&De("Quicklook url: "+s),s&&(Zs()?globalThis.open(s,"_blank"):console.warn("Quicklook closed: custom redirects require a Needle Engine Pro license: https://needle.tools/pricing",s))}}}}buildQuicklookOverlay(){var n,e,t,s,o,r;const l={};return this.customBranding&&Object.assign(l,this.customBranding),Zs()||(console.log("Custom Quicklook banner text requires pro license: https://needle.tools/pricing"),l.callToAction="Close",l.checkoutTitle="\u{1F335} Made with Needle",l.checkoutSubtitle="_"),(((n=l.callToAction)==null?void 0:n.length)||((e=l.checkoutTitle)==null?void 0:e.length)||((t=l.checkoutSubtitle)==null?void 0:t.length))&&((s=l.callToAction)!=null&&s.length||(l.callToAction="\0"),(o=l.checkoutTitle)!=null&&o.length||(l.checkoutTitle="\0"),(r=l.checkoutSubtitle)!=null&&r.length||(l.checkoutSubtitle="\0")),this.dispatchEvent(new CustomEvent("quicklook-overlay",{detail:l})),l}getARScaleAndTarget(){if(!this.objectToExport)return{scale:1,_invertForward:!1,target:this.gameObject,sessionRoot:null};const n=P.findObjectOfType(wp);let e=P.getComponentInParent(this.objectToExport,$o);e||(e=P.getComponentInChildren(this.objectToExport,$o));let t=1,s=!1;const o=this.objectToExport;return n?t=n.arScale:e&&(t=e.arScale,s=e.invertForward),{scale:1/t,_invertForward:s,target:o,sessionRoot:e?.gameObject??null}}applyWebARSessionRoot(){if(!this.objectToExport)return;const{scale:n,_invertForward:e,target:t,sessionRoot:s}=this.getARScaleAndTarget(),o=s?.matrixWorld.clone().invert();this._rootSessionRootWasAppliedTo=t,this._rootPositionBeforeExport.copy(t.position),this._rootRotationBeforeExport.copy(t.quaternion),this._rootScaleBeforeExport.copy(t.scale),t.scale.multiplyScalar(n),e&&t.quaternion.multiply(wl.invertForwardQuaternion),t.updateMatrix(),t.updateMatrixWorld(!0),s&&o&&t.matrix.premultiply(o)}revertWebARSessionRoot(){if(!this.objectToExport||!this._rootSessionRootWasAppliedTo)return;const n=this._rootSessionRootWasAppliedTo;n.position.copy(this._rootPositionBeforeExport),n.quaternion.copy(this._rootRotationBeforeExport),n.scale.copy(this._rootScaleBeforeExport),n.updateMatrix(),n.updateMatrixWorld(!0),this._rootSessionRootWasAppliedTo=null}createQuicklookButton(){const n=ml.getOrCreate().createQuicklookButton();return n.parentNode||this.context.menu.appendChild(n),n}},a(wl,"invertForwardMatrix",new se().makeRotationY(Math.PI)),a(wl,"invertForwardQuaternion",new V().setFromEuler(new Dt(0,Math.PI,0))),wl);It([m(E)],fi.prototype,"objectToExport"),It([m()],fi.prototype,"autoExportAnimations"),It([m()],fi.prototype,"autoExportAudioSources"),It([m()],fi.prototype,"exportFileName"),It([m(URL)],fi.prototype,"customUsdzFile"),It([m(Jr)],fi.prototype,"customBranding"),It([m()],fi.prototype,"anchoringType"),It([m()],fi.prototype,"maxTextureSize"),It([m()],fi.prototype,"planeAnchoringAlignment"),It([m()],fi.prototype,"interactive"),It([m()],fi.prototype,"physics"),It([m()],fi.prototype,"allowCreateQuicklookButton"),It([m()],fi.prototype,"quickLookCompatible");let gn=fi;var YA=Object.defineProperty,KA=Object.getOwnPropertyDescriptor,dy=(n,e,t,s)=>{for(var o=KA(e,t),r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&YA(e,t,o),o};class xl extends I{constructor(){super(...arguments),a(this,"_fog")}get fog(){return this._fog||(this._fog=new Tv(0,0,50)),this._fog}get mode(){return 1}set near(e){this.fog.near=e}get near(){return this.fog.near}set far(e){this.fog.far=e}get far(){return this.fog.far}set color(e){this.fog.color.copy(e)}get color(){return this.fog.color}onEnable(){this.scene.fog=this.fog}onDisable(){this.scene.fog===this._fog&&(this.scene.fog=null)}}dy([m()],xl.prototype,"near"),dy([m()],xl.prototype,"far"),dy([m(oe)],xl.prototype,"color");var ZA=Object.defineProperty,uy=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&ZA(e,t,o),o};class ea extends I{constructor(){super(...arguments),a(this,"objectBounds",!1),a(this,"color"),a(this,"isGizmo",!0),a(this,"_gizmoObject",null),a(this,"_boxHelper",null)}onEnable(){this.isGizmo&&!yc||(this._gizmoObject||(this.objectBounds?this._gizmoObject=new RP(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=Vg(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),Oe.OnBeforeRender)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(var e;this._boxHelper;)(e=this._boxHelper)==null||e.update(),yield}}uy([m()],ea.prototype,"objectBounds"),uy([m(oe)],ea.prototype,"color"),uy([m()],ea.prototype,"isGizmo");var JA=Object.defineProperty,py=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&JA(e,t,o),o};class Sl extends I{constructor(){super(...arguments),a(this,"isGizmo",!1),a(this,"color0"),a(this,"color1"),a(this,"gridHelper"),a(this,"size"),a(this,"divisions"),a(this,"offset")}onEnable(){if(this.isGizmo&&!yc)return;const e=this.size,t=this.divisions;this.gridHelper||(this.gridHelper=new Mm(e,t,this.color0??new oe(.4,.4,.4),this.color1??new oe(.6,.6,.6)),this.offset!==void 0&&(this.gridHelper.position.y+=this.offset)),this.gridHelper&&this.gameObject.add(this.gridHelper)}onDisable(){this.gridHelper&&(this.gameObject.remove(this.gridHelper),this.gridHelper=null)}}py([m()],Sl.prototype,"isGizmo"),py([m(oe)],Sl.prototype,"color0"),py([m(oe)],Sl.prototype,"color1");var e2=Object.defineProperty,my=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&e2(e,t,o),o};class gy extends I{constructor(){super(...arguments),a(this,"connectedBody"),a(this,"_rigidBody",null)}get rigidBody(){return this._rigidBody}onEnable(){this._rigidBody||(this._rigidBody=this.gameObject.getComponent(dt)),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.activeAndEnabled&&this.createJoint(this.rigidBody,this.connectedBody)}}my([m(dt)],gy.prototype,"connectedBody");class fy extends gy{createJoint(e,t){var s;(s=this.context.physics.engine)==null||s.addFixedJoint(e,t)}}class dh extends gy{constructor(){super(...arguments),a(this,"anchor"),a(this,"axis")}createJoint(e,t){var s;this.axis&&this.anchor&&((s=this.context.physics.engine)==null||s.addHingeJoint(e,t,this.anchor,this.axis))}}my([m(S)],dh.prototype,"anchor"),my([m(S)],dh.prototype,"axis");var t2=Object.defineProperty,i2=Object.getOwnPropertyDescriptor,fn=(n,e,t,s)=>{for(var o=s>1?void 0:s?i2(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&t2(e,t,o),o};function yy(n){return n*Math.PI/180}const oS=300,Zo=C("debuglights");class yi extends I{constructor(){super(...arguments),a(this,"type",0),a(this,"range",1),a(this,"spotAngle",1),a(this,"innerSpotAngle",1),a(this,"_color",new oe(16777215)),a(this,"_shadowNearPlane",.1),a(this,"_shadowBias",0),a(this,"_shadowNormalBias",0),a(this,"_overrideShadowBiasSettings",!1),a(this,"_shadows",1),a(this,"lightmapBakeType",4),a(this,"_intensity",-1),a(this,"_shadowDistance"),a(this,"shadowWidth"),a(this,"shadowHeight"),a(this,"_shadowResolution"),a(this,"light"),a(this,"_webXRStartedListener"),a(this,"_webXREndedListener"),a(this,"_webARRoot")}set color(e){this._color=e,this.light!==void 0&&(this.light.color=e)}get color(){return this.light?this.light.color:this._color}set shadowNearPlane(e){var t,s;if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,((s=(t=this.light)==null?void 0:t.shadow)==null?void 0:s.camera)!==void 0)){const o=this.light.shadow.camera;o.near=e}}get shadowNearPlane(){return this._shadowNearPlane}set shadowBias(e){var t,s;e!==this._shadowBias&&(this._shadowBias=e,((s=(t=this.light)==null?void 0:t.shadow)==null?void 0:s.bias)!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}set shadowNormalBias(e){var t,s;e!==this._shadowNormalBias&&(this._shadowNormalBias=e,((s=(t=this.light)==null?void 0:t.shadow)==null?void 0:s.normalBias)!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==0,this.updateShadowSoftHard())}get shadows(){return this._shadows}set intensity(e){var t;if(this._intensity=e,this.light){let s=1;if(this.context.isInXR&&this._webARRoot){const o=(t=this._webARRoot)==null?void 0:t.arScale;typeof o=="number"&&o>0&&(s/=o)}this.light.intensity=e*s}Zo&&console.log("Set light intensity to "+this._intensity,e,this)}get intensity(){return this._intensity}get shadowDistance(){const e=this.light;return e!=null&&e.shadow?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;const t=this.light;if(t!=null&&t.shadow){const s=t.shadow.camera;s.far=e,s.updateProjectionMatrix()}}get shadowResolution(){const e=this.light;return e!=null&&e.shadow?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;const t=this.light;t!=null&&t.shadow&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}get isBaked(){return this.lightmapBakeType===2}get selfIsLight(){if(this.gameObject.isLight===!0)return!0;switch(this.gameObject.type){case"SpotLight":case"PointLight":case"DirectionalLight":return!0}return!1}getWorldPosition(e){return this.light?this.type===1?this.light.getWorldPosition(e).multiplyScalar(1):this.light.getWorldPosition(e):e}awake(){this.color=new oe(this.color??16777215),Zo&&console.log(this.name,this)}onEnable(){Zo&&console.log("ENABLE LIGHT",this.name),this.createLight(),!this.isBaked&&(this.light&&(this.light.visible=!0,this.light.intensity=this._intensity,Zo&&console.log("Set light intensity to "+this.light.intensity,this.name),this.selfIsLight||this.light.parent!==this.gameObject&&this.gameObject.add(this.light)),this.type===1&&this.startCoroutine(this.updateMainLightRoutine(),Oe.LateUpdate))}onDisable(){Zo&&console.log("DISABLE LIGHT",this.name),this.light&&(this.selfIsLight?this.light.intensity=0:this.light.visible=!1)}onEnterXR(e){this._webARRoot=P.getComponentInParent(this.gameObject,$o)??void 0}onLeaveXR(e){}createLight(){const e=this.selfIsLight;if(e&&!this.light)switch(this.light=this.gameObject,this.light.name=this.name,this._intensity=this.light.intensity,this.type){case 1:this.setDirectionalLight(this.light);break}else if(!this.light)switch(this.type){case 1:const t=new Rm(this.color,this.intensity*Math.PI);if(t.position.set(0,0,-oS*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(t.target),br(t.target,0,0,0),this.light=t,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),Zo){const l=new EP(this.light,.2,this.color);this.context.scene.add(l)}break;case 0:const s=new TP(this.color,this.intensity*Math.PI,this.range,yy(this.spotAngle/2),1-yy(this.innerSpotAngle/2)/yy(this.spotAngle/2),2);s.position.set(0,0,0),s.rotation.set(0,0,0),this.light=s;const o=s.target;s.add(o),o.position.set(0,0,this.range),o.rotation.set(0,0,0);break;case 2:const r=new Tm(this.color,this.intensity*Math.PI,this.range);this.light=r;break}if(this.light){if(this._intensity>=0?this.light.intensity=this._intensity:this._intensity=this.light.intensity,this.shadows!==0?this.light.castShadow=!0:this.light.castShadow=!1,this.light.shadow){this._shadowResolution!==void 0&&this._shadowResolution>4?(this.light.shadow.mapSize.width=this._shadowResolution,this.light.shadow.mapSize.height=this._shadowResolution):(this.light.shadow.mapSize.width=2048,this.light.shadow.mapSize.height=2048),Zo&&console.log("Override shadow bias?",this._overrideShadowBiasSettings,this.shadowBias,this.shadowNormalBias),this.light.shadow.bias=this.shadowBias,this.light.shadow.normalBias=this.shadowNormalBias,this.updateShadowSoftHard();const t=this.light.shadow.camera;if(t.near=this.shadowNearPlane,this._shadowDistance!==void 0&&typeof this._shadowDistance=="number"?t.far=this._shadowDistance:t.far=oS*Math.abs(this.gameObject.scale.z),this.gameObject.scale.set(1,1,1),this.shadowWidth!==void 0)t.left=-this.shadowWidth/2,t.right=this.shadowWidth/2;else{const s=this.gameObject.scale.x;t.left*=s,t.right*=s}if(this.shadowHeight!==void 0)t.top=this.shadowHeight/2,t.bottom=-this.shadowHeight/2;else{const s=this.gameObject.scale.y;t.top*=s,t.bottom*=s}this.light.shadow.needsUpdate=!0,Zo&&this.context.scene.add(new AP(t))}this.isBaked?this.light.removeFromParent():e||this.gameObject.add(this.light)}}*updateMainLightRoutine(){for(;;){this.type===1&&((!this.context.mainLight||this.intensity>this.context.mainLight.intensity)&&(this.context.mainLight=this),yield);break}}updateShadowSoftHard(){this.light&&this.light.shadow&&(this.shadows===2||(this.light.shadow.radius=1,this.light.shadow.blurSamples=1))}setDirectionalLight(e){e.add(e.target),e.target.position.set(0,0,-1)}}a(yi,"allowChangingRendererShadowMapType",!0),fn([m()],yi.prototype,"type",2),fn([m(oe)],yi.prototype,"color",1),fn([m()],yi.prototype,"shadowNearPlane",1),fn([m()],yi.prototype,"shadowBias",1),fn([m()],yi.prototype,"shadowNormalBias",1),fn([m()],yi.prototype,"shadows",1),fn([m()],yi.prototype,"lightmapBakeType",2),fn([m()],yi.prototype,"intensity",1),fn([m()],yi.prototype,"shadowDistance",1),fn([m()],yi.prototype,"shadowResolution",1),new S(0,0,0);var s2=Object.defineProperty,uh=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&s2(e,t,o),o};const vy=C("debuglods"),n2=C("nolods");class Cl{constructor(){a(this,"screenRelativeTransitionHeight"),a(this,"distance"),a(this,"renderers")}}uh([m()],Cl.prototype,"screenRelativeTransitionHeight"),uh([m()],Cl.prototype,"distance"),uh([m(Ui)],Cl.prototype,"renderers");class o2{constructor(e){a(this,"model"),this.model=e}get renderers(){return this.model.renderers}}class ph extends I{constructor(){super(...arguments),a(this,"fadeMode",0),a(this,"localReferencePoint"),a(this,"lodCount",0),a(this,"size",0),a(this,"animateCrossFading",!1),a(this,"lodModels"),a(this,"_lods",[]),a(this,"_settings",[]),a(this,"_lodsHandler"),a(this,"_distanceFactor",1)}start(){if(vy&&console.log("LODGROUP",this.name,this.lodModels,this),!n2&&!this._lodsHandler&&this.gameObject&&this.lodModels&&Array.isArray(this.lodModels)){const e=[];for(const s of this.lodModels){const o=new o2(s);this._lods.push(o);for(const r of o.renderers)e.includes(r)||e.push(r)}this._lodsHandler=new Array;for(let s=0;s<e.length;s++){const o=new IP;this._lodsHandler.push(o),this.gameObject.add(o)}const t=new E;t.name="Cull "+this.name;for(let s=0;s<e.length;s++){const o=e[s],r=this._lodsHandler[s],l=o.gameObject;vy&&console.log(s,l.name);for(const c of this._lods){const h=c.model.distance;let d=null;if(c.renderers.includes(o)?d=l:d=t,d.type==="Group"){console.warn(`LODGroup ${this.name}: Group or MultiMaterial object's are not supported as LOD object: ${d.name}`);continue}vy&&console.log("LEVEL",d.name,h),r.autoUpdate=!1,this.onAddLodLevel(r,d,c.model.distance)}}}}onAfterRender(){if(!this.gameObject||!this._lodsHandler)return;const e=this.context.mainCamera;if(e)for(const t of this._lodsHandler){t.update(e);const s=t.getCurrentLevel(),o=t.levels[s];t.layers.mask=o.object.layers.mask}}onAddLodLevel(e,t,s){if(t===this.gameObject){console.warn("LODGroup component must be on parent object and not mesh directly at the moment",t.name,t);return}e.addLevel(t,s*this._distanceFactor,.01);const o={lod:e,levelIndex:e.levels.length-1,distance:s};this._settings.push(o)}distanceFactor(e){if(e!==this._distanceFactor){this._distanceFactor=e;for(const t of this._settings){const s=t.lod.levels[t.levelIndex];s.distance=t.distance*e}}}}uh([m(S)],ph.prototype,"localReferencePoint"),uh([m(Cl)],ph.prototype,"lodModels");var r2=Object.defineProperty,a2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&r2(e,t,o),o};const Op=C("debugnestedgltf");class kp extends I{constructor(){super(...arguments),a(this,"filePath"),a(this,"loadAssetInParent",!0),a(this,"_isLoadingOrDoneLoading",!1)}listenToProgress(e){var t;(t=this.filePath)==null||t.beginListenDownload(e)}preload(){var e;(e=this.filePath)==null||e.preload()}async start(){var e,t,s,o,r;if(this._isLoadingOrDoneLoading)return;Op&&console.log(this,this.guid);const l=this.gameObject.parent;if(l){this._isLoadingOrDoneLoading=!0;const c=new Fs;c.idProvider=new jt(this.hash(this.guid)),c.parent=this.loadAssetInParent!==!1?l:this.gameObject,this.gameObject.updateMatrix();const h=this.gameObject.matrix;Op&&console.log("Load nested:",((e=this.filePath)==null?void 0:e.url)??this.filePath,this.gameObject.position);const d=await((s=(t=this.filePath)==null?void 0:t.instantiate)==null?void 0:s.call(this.filePath,c));Op&&console.log("Nested loaded:",((o=this.filePath)==null?void 0:o.url)??this.filePath,d),d&&this.loadAssetInParent!==!1&&(d.matrixAutoUpdate=!1,d.matrix.identity(),d.applyMatrix4(h),d.matrixAutoUpdate=!0,d.layers.disableAll(),d.layers.set(this.layer),this.dispatchEvent(new CustomEvent("loaded",{detail:{instance:d,assetReference:this.filePath}}))),Op&&console.log("Nested loading done:",((r=this.filePath)==null?void 0:r.url)??this.filePath,d)}}onDestroy(){var e;(e=this.filePath)==null||e.unload()}hash(e){let t=0;for(let s=0;s<e.length;s++)t=e.charCodeAt(s)+((t<<5)-t);return t}}a2([m(ce)],kp.prototype,"filePath");var l2=Object.defineProperty,by=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&l2(e,t,o),o};const c2=C("debugnet"),Mp=class Sv extends I{constructor(){super(...arguments),a(this,"url",null),a(this,"urlParameterName",null),a(this,"localhost",null)}awake(){c2&&console.log(this),this.context.connection.registerProvider(this)}getWebsocketUrl(){let e=this.url?Sv.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){const s=C(this.urlParameterName);s&&typeof s=="string"&&(e=s)}if(!e)return null;const t=new RegExp("(((https?)|(?<socket_prefix>wss?))://)?(www.)?(?<url>.+)","gm").exec(e);return t!=null&&t.groups?t?.groups.socket_prefix?e:"wss://"+t?.groups.url:null}static GetUrl(e,t){let s=e;const o=Sv.IsLocalNetwork()&&t;if(o&&(s=t),e!=null&&e.startsWith("/")){const r=o?s:window.location.origin;r!=null&&r.endsWith("/")&&e.startsWith("/")&&(e=e.substring(1)),s=r+e}return s}static IsLocalNetwork(e=window.location.hostname){return Xt(e)}};by([m()],Mp.prototype,"url"),by([m()],Mp.prototype,"urlParameterName"),by([m()],Mp.prototype,"localhost");let _y=Mp;var h2=Object.defineProperty,Rp=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&h2(e,t,o),o};class ta extends I{constructor(){super(...arguments),a(this,"referenceSpace"),a(this,"from"),a(this,"affectPosition",!1),a(this,"affectRotation",!1),a(this,"alignLookDirection",!1),a(this,"levelLookDirection",!1),a(this,"levelPosition",!1),a(this,"positionOffset",new S(0,0,0)),a(this,"rotationOffset",new S(0,0,0)),a(this,"offset",new S(0,0,0))}update(){if(!this.from)return;var e=ee(this.from),t=Se(this.from);this.offset.copy(this.positionOffset);const s=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(s),e.add(this.offset),this.levelPosition&&this.referenceSpace){const c=new yr(this.gameObject.up,0),h=ee(this.referenceSpace);c.setFromNormalAndCoplanarPoint(this.gameObject.up,h);const d=new S(0,0,0);c.projectPoint(e,d),e.copy(d)}this.affectPosition&&lt(this.gameObject,e);const o=new Dt(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),r=new V().setFromEuler(o);this.affectRotation&&Yi(this.gameObject,t.multiply(r));const l=new S;this.from.getWorldDirection(l).multiplyScalar(50),this.levelLookDirection&&(l.y=0),this.alignLookDirection&&this.gameObject.lookAt(l)}}Rp([m(P)],ta.prototype,"referenceSpace"),Rp([m(P)],ta.prototype,"from"),Rp([m(S)],ta.prototype,"positionOffset"),Rp([m(S)],ta.prototype,"rotationOffset");var d2=Object.defineProperty,Jo=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&d2(e,t,o),o};class vi{constructor(e=0,t=0){a(this,"time",0),a(this,"value",0),a(this,"inTangent",1/0),a(this,"inWeight"),a(this,"outTangent",1/0),a(this,"outWeight"),a(this,"weightedMode"),this.time=e,this.value=t}}Jo([m()],vi.prototype,"time"),Jo([m()],vi.prototype,"value"),Jo([m()],vi.prototype,"inTangent"),Jo([m()],vi.prototype,"inWeight"),Jo([m()],vi.prototype,"outTangent"),Jo([m()],vi.prototype,"outWeight"),Jo([m()],vi.prototype,"weightedMode");const rS=class rd{constructor(){a(this,"keys",[])}static linearFromTo(e,t,s){const o=new rd,r=new vi;r.time=0,r.value=e;const l=new vi;return l.time=s,l.value=t,o.keys.push(r,l),o}static constant(e){const t=new rd,s=new vi;return s.time=0,s.value=e,t.keys.push(s),t}clone(){var e;const t=new rd;return t.keys=((e=this.keys)==null?void 0:e.map(s=>{const o=new vi;return o.time=s.time,o.value=s.value,o.inTangent=s.inTangent,o.inWeight=s.inWeight,o.outTangent=s.outTangent,o.outWeight=s.outWeight,o.weightedMode=s.weightedMode,o}))||[],t}get duration(){return!this.keys||this.keys.length==0?0:this.keys[this.keys.length-1].time}evaluate(e){if(!this.keys||this.keys.length==0)return 0;if(this.keys.length===1)return this.keys[0].value;if(this.keys[0].time>=e)return this.keys[0].value;for(let t=0;t<this.keys.length;t++){const s=this.keys[t];if(s.time<=e)if(t+1<this.keys.length){const o=this.keys[t+1];if(o.time<e)continue;return!isFinite(s.outTangent)||!isFinite(o.inTangent)?s.value:rd.interpolateValue(e,s,o)}else return s.value}return this.keys[this.keys.length-1].value}static interpolateValue(e,t,s){const o=t.time,r=t.value,l=t.outTangent,c=s.time,h=s.value,d=s.inTangent,u=c-o,p=u*u,g=p*u,f=((l+d)*u-2*(h-r))/g,y=(3*(h-r)-(d+2*l)*u)/p,v=l,b=r,_=e-o,w=_*_,x=w*_;return f*x+y*w+v*_+b}};Jo([m(vi)],rS.prototype,"keys");let mh=rS;var u2=Object.defineProperty,O=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&u2(e,t,o),o};const Tp=C("debugparticles");var Zn=(n=>(n[n.Billboard=0]="Billboard",n[n.Stretch=1]="Stretch",n[n.HorizontalBillboard=2]="HorizontalBillboard",n[n.VerticalBillboard=3]="VerticalBillboard",n[n.Mesh=4]="Mesh",n))(Zn||{});class ia{constructor(){a(this,"alphaKeys",[]),a(this,"colorKeys",[])}get duration(){return 1}evaluate(e,t){let s,o=0,r=null,l=0;for(let c=0;c<this.alphaKeys.length;c++){const h=this.alphaKeys[c];(h.time<e||!s)&&(s=h,o=c)}for(let c=0;c<this.colorKeys.length;c++){const h=this.colorKeys[c];(h.time<e||!r)&&(r=h,l=c)}if(r)if(l+1<this.colorKeys.length){const c=this.colorKeys[l+1],h=W.remap(e,r.time,c.time,0,1);t.r=W.lerp(r.color.r,c.color.r,h),t.g=W.lerp(r.color.g,c.color.g,h),t.b=W.lerp(r.color.b,c.color.b,h)}else t.r=r.color.r,t.g=r.color.g,t.b=r.color.b;if(s)if(o+1<this.alphaKeys.length){const c=this.alphaKeys[o+1],h=W.remap(e,s.time,c.time,0,1);t.alpha=W.lerp(s.alpha,c.alpha,h)}else t.alpha=s.alpha;return t}}O([m()],ia.prototype,"alphaKeys"),O([m()],ia.prototype,"colorKeys");var gh=(n=>(n[n.Local=0]="Local",n[n.World=1]="World",n[n.Custom=2]="Custom",n))(gh||{}),Ep=(n=>(n[n.Sphere=0]="Sphere",n[n.SphereShell=1]="SphereShell",n[n.Hemisphere=2]="Hemisphere",n[n.HemisphereShell=3]="HemisphereShell",n[n.Cone=4]="Cone",n[n.Box=5]="Box",n[n.Mesh=6]="Mesh",n[n.ConeShell=7]="ConeShell",n[n.ConeVolume=8]="ConeVolume",n[n.ConeVolumeShell=9]="ConeVolumeShell",n[n.Circle=10]="Circle",n[n.CircleEdge=11]="CircleEdge",n[n.SingleSidedEdge=12]="SingleSidedEdge",n[n.MeshRenderer=13]="MeshRenderer",n[n.SkinnedMeshRenderer=14]="SkinnedMeshRenderer",n[n.BoxShell=15]="BoxShell",n[n.BoxEdge=16]="BoxEdge",n[n.Donut=17]="Donut",n[n.Rectangle=18]="Rectangle",n[n.Sprite=19]="Sprite",n[n.SpriteRenderer=20]="SpriteRenderer",n))(Ep||{});const Jn=class ad{constructor(){a(this,"mode","Constant"),a(this,"constant"),a(this,"constantMin"),a(this,"constantMax"),a(this,"curve"),a(this,"curveMin"),a(this,"curveMax"),a(this,"curveMultiplier")}static constant(e){const t=new ad;return t.setConstant(e),t}static betweenTwoConstants(e,t){const s=new ad;return s.setMinMaxConstant(e,t),s}static curve(e,t=1){const s=new ad;return s.setCurve(e,t),s}setConstant(e){this.mode=0,this.constant=e}setMinMaxConstant(e,t){this.mode=3,this.constantMin=e,this.constantMax=t}setCurve(e,t=1){this.mode=1,this.curve=e,this.curveMultiplier=t}clone(){var e,t,s;const o=new ad;return o.mode=this.mode,o.constant=this.constant,o.constantMin=this.constantMin,o.constantMax=this.constantMax,o.curve=(e=this.curve)==null?void 0:e.clone(),o.curveMin=(t=this.curveMin)==null?void 0:t.clone(),o.curveMax=(s=this.curveMax)==null?void 0:s.clone(),o.curveMultiplier=this.curveMultiplier,o}evaluate(e,t){const s=t===void 0?Math.random():t;switch(this.mode){case 0:case"Constant":return this.constant;case 1:case"Curve":return e=W.clamp01(e),this.curve.evaluate(e)*this.curveMultiplier;case 2:case"TwoCurves":const o=e*this.curveMin.duration,r=e*this.curveMax.duration;return W.lerp(this.curveMin.evaluate(o),this.curveMax.evaluate(r),s%1)*this.curveMultiplier;case 3:case"TwoConstants":return W.lerp(this.constantMin,this.constantMax,s%1);default:this.curveMax.evaluate(e)*this.curveMultiplier;break}return 0}getMax(){switch(this.mode){case 0:case"Constant":return this.constant;case 1:case"Curve":return this.getMaxFromCurve(this.curve)*this.curveMultiplier;case 2:case"TwoCurves":return Math.max(this.getMaxFromCurve(this.curveMin),this.getMaxFromCurve(this.curveMax))*this.curveMultiplier;case 3:case"TwoConstants":return Math.max(this.constantMin,this.constantMax);default:return 0}}getMaxFromCurve(e){if(!e)return 0;let t=Number.MIN_VALUE;for(let s=0;s<e.keys.length;s++){const o=e.keys[s];o.value>t&&(t=o.value)}return t}};O([m()],Jn.prototype,"mode"),O([m()],Jn.prototype,"constant"),O([m()],Jn.prototype,"constantMin"),O([m()],Jn.prototype,"constantMax"),O([m(mh)],Jn.prototype,"curve"),O([m(mh)],Jn.prototype,"curveMin"),O([m(mh)],Jn.prototype,"curveMax"),O([m()],Jn.prototype,"curveMultiplier");let Z=Jn;var st;const er=(st=class{constructor(){a(this,"mode",0),a(this,"color"),a(this,"colorMin"),a(this,"colorMax"),a(this,"gradient"),a(this,"gradientMin"),a(this,"gradientMax")}static constant(n){const e=new st;return e.constant(n),e}static betweenTwoColors(n,e){const t=new st;return t.betweenTwoColors(n,e),t}constant(n){return this.mode=0,this.color=n,this}betweenTwoColors(n,e){return this.mode=2,this.colorMin=n,this.colorMax=e,this}evaluate(n,e){const t=e===void 0?Math.random():e;switch(this.mode){case 0:case"Color":return this.color;case 1:case"Gradient":return this.gradient.evaluate(n,st._temp),st._temp;case 2:case"TwoColors":return st._temp.lerpColors(this.colorMin,this.colorMax,t);case 3:case"TwoGradients":return this.gradientMin.evaluate(n,st._temp),this.gradientMax.evaluate(n,st._temp2),st._temp.lerp(st._temp2,t);case 4:case"RandomColor":const s=Math.random();return this.gradientMin.evaluate(n,st._temp),this.gradientMax.evaluate(n,st._temp2),st._temp.lerp(st._temp2,s)}return st._temp.set(16777215),st._temp.alpha=1,st._temp}},a(st,"_temp",new he(0,0,0,1)),a(st,"_temp2",new he(0,0,0,1)),st);O([m()],er.prototype,"mode"),O([m(he)],er.prototype,"color"),O([m(he)],er.prototype,"colorMin"),O([m(he)],er.prototype,"colorMax"),O([m(ia)],er.prototype,"gradient"),O([m(ia)],er.prototype,"gradientMin"),O([m(ia)],er.prototype,"gradientMax");let sa=er;var wy=(n=>(n[n.Hierarchy=0]="Hierarchy",n[n.Local=1]="Local",n[n.Shape=2]="Shape",n))(wy||{});class Wt{constructor(){a(this,"cullingMode"),a(this,"duration"),a(this,"emitterVelocityMode"),a(this,"flipRotation"),a(this,"gravityModifier"),a(this,"gravityModifierMultiplier"),a(this,"loop"),a(this,"maxParticles"),a(this,"playOnAwake"),a(this,"prewarm"),a(this,"ringBufferLoopRange"),a(this,"ringBufferMode"),a(this,"scalingMode"),a(this,"simulationSpace"),a(this,"simulationSpeed"),a(this,"startColor"),a(this,"startDelay"),a(this,"startDelayMultiplier"),a(this,"startLifetime"),a(this,"startLifetimeMultiplier"),a(this,"startRotation"),a(this,"startRotationMultiplier"),a(this,"startRotation3D"),a(this,"startRotationX"),a(this,"startRotationXMultiplier"),a(this,"startRotationY"),a(this,"startRotationYMultiplier"),a(this,"startRotationZ"),a(this,"startRotationZMultiplier"),a(this,"startSize"),a(this,"startSize3D"),a(this,"startSizeMultiplier"),a(this,"startSizeX"),a(this,"startSizeXMultiplier"),a(this,"startSizeY"),a(this,"startSizeYMultiplier"),a(this,"startSizeZ"),a(this,"startSizeZMultiplier"),a(this,"startSpeed"),a(this,"startSpeedMultiplier"),a(this,"stopAction"),a(this,"useUnscaledTime")}}O([m(Z)],Wt.prototype,"gravityModifier"),O([m(sa)],Wt.prototype,"startColor"),O([m(Z)],Wt.prototype,"startDelay"),O([m(Z)],Wt.prototype,"startLifetime"),O([m(Z)],Wt.prototype,"startRotation"),O([m(Z)],Wt.prototype,"startRotationX"),O([m(Z)],Wt.prototype,"startRotationY"),O([m(Z)],Wt.prototype,"startRotationZ"),O([m(Z)],Wt.prototype,"startSize"),O([m(Z)],Wt.prototype,"startSizeX"),O([m(Z)],Wt.prototype,"startSizeY"),O([m(Z)],Wt.prototype,"startSizeZ"),O([m(Z)],Wt.prototype,"startSpeed");class Ap{constructor(){a(this,"cycleCount"),a(this,"maxCount"),a(this,"minCount"),a(this,"probability"),a(this,"repeatInterval"),a(this,"time"),a(this,"count"),a(this,"_performed",0)}reset(){this._performed=0}run(e){if(e<=this.time)return 0;let t=0;if(this.cycleCount===0||this._performed<this.cycleCount){const s=this.time+this.repeatInterval*this._performed;if(e>=s&&(this._performed+=1,Math.random()<this.probability))switch(this.count.mode){case 0:t=this.count.constant;break;case 3:t=W.lerp(this.count.constantMin,this.count.constantMax,Math.random());break;case 1:t=this.count.curve.evaluate(Math.random());break;case 2:const o=Math.random();t=W.lerp(this.count.curveMin.evaluate(o),this.count.curveMax.evaluate(o),Math.random());break}}return t}}class eo{constructor(){a(this,"enabled"),a(this,"bursts"),a(this,"rateOverTime"),a(this,"rateOverTimeMultiplier"),a(this,"rateOverDistance"),a(this,"rateOverDistanceMultiplier"),a(this,"system")}get burstCount(){var e;return((e=this.bursts)==null?void 0:e.length)??0}reset(){var e;(e=this.bursts)==null||e.forEach(t=>t.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t<this.burstCount;t++){const s=this.bursts[t];this.system.main.loop&&s.time>=this.system.time&&s.reset(),e+=Math.round(s.run(this.system.time))}return e}}O([m()],eo.prototype,"enabled"),O([m()],eo.prototype,"bursts"),O([m(Z)],eo.prototype,"rateOverTime"),O([m()],eo.prototype,"rateOverTimeMultiplier"),O([m(Z)],eo.prototype,"rateOverDistance"),O([m()],eo.prototype,"rateOverDistanceMultiplier");class Ip{constructor(){a(this,"enabled"),a(this,"color")}}O([m(sa)],Ip.prototype,"color");class na{constructor(){a(this,"enabled"),a(this,"separateAxes"),a(this,"size"),a(this,"sizeMultiplier"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier"),a(this,"_time",0),a(this,"_temp",new S)}evaluate(e,t,s){if(t||(t=this._temp),!this.enabled)return t.x=t.y=t.z=1,t;if(this.separateAxes)t.x=this.x.evaluate(e,s)*this.xMultiplier,t.y=this.y.evaluate(e,s)*this.yMultiplier,t.z=this.z.evaluate(e,s)*this.zMultiplier;else{const o=this.size.evaluate(e,s)*this.sizeMultiplier;t.x=o}return t}}O([m(Z)],na.prototype,"size"),O([m(Z)],na.prototype,"x"),O([m(Z)],na.prototype,"y"),O([m(Z)],na.prototype,"z");var tr;const nt=(tr=class{constructor(){a(this,"shapeType",5),a(this,"enabled",!0),a(this,"alignToDirection",!1),a(this,"angle",0),a(this,"arc",360),a(this,"arcSpread"),a(this,"arcSpeedMultiplier"),a(this,"arcMode"),a(this,"boxThickness"),a(this,"position"),a(this,"rotation"),a(this,"_rotation",new Dt),a(this,"scale"),a(this,"radius"),a(this,"radiusThickness"),a(this,"sphericalDirectionAmount"),a(this,"randomDirectionAmount"),a(this,"randomPositionAmount"),a(this,"meshShapeType"),a(this,"meshRenderer"),a(this,"_meshObj"),a(this,"_meshGeometry"),a(this,"system"),a(this,"_space"),a(this,"_worldSpaceMatrix",new se),a(this,"_worldSpaceMatrixInverse",new se),a(this,"_vector",new S(0,0,0)),a(this,"_temp",new S(0,0,0)),a(this,"_triangle",new LP),a(this,"_dir",new S),a(this,"_loopTime",0),a(this,"_loopDirection",1),Tp&&console.log(this)}get type(){return Ep[this.shapeType]}initialize(n){this.onInitialize(n),n.position.x=this._vector.x,n.position.y=this._vector.y,n.position.z=this._vector.z}toJSON(){return this}clone(){return new tr}setMesh(n){this.meshRenderer=n,n?(this._meshObj=n.sharedMeshes[Math.floor(Math.random()*n.sharedMeshes.length)],this._meshGeometry=this._meshObj.geometry):(this._meshObj=void 0,this._meshGeometry=void 0)}update(n,e){}onUpdate(n,e,t,s){this.system=n,this._space=t,t===1&&(this._worldSpaceMatrix.copy(s.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}applyRotation(n){const e=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return e&&(this._rotation.x=W.toRadians(this.rotation.x),this._rotation.y=W.toRadians(this.rotation.y),this._rotation.z=W.toRadians(this.rotation.z),this._rotation.order="ZYX",n.applyEuler(this._rotation)),e}onInitialize(n){this._vector.set(0,0,0),n.mesh=void 0,n.mesh_geometry=void 0;const e=this._temp.copy(this.position),t=this._space===1;t&&e.applyQuaternion(this.system.worldQuaternion);let s=this.radius;if(t&&(s*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case 5:Tp&&$.DrawWireBox(this.position,this.scale,14540253,1),this._vector.x=Math.random()*this.scale.x-this.scale.x/2,this._vector.y=Math.random()*this.scale.y-this.scale.y/2,this._vector.z=Math.random()*this.scale.z-this.scale.z/2,this._vector.add(e);break;case 4:this.randomConePoint(this.position,this.angle,s,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case 0:this.randomSpherePoint(this.position,s,this.radiusThickness,this.arc,this._vector);break;case 10:this.randomCirclePoint(this.position,s,this.radiusThickness,this.arc,this._vector);break;case 13:const o=this.meshRenderer;o?.destroyed==!1&&this.setMesh(o);const r=n.mesh=this._meshObj,l=n.mesh_geometry=this._meshGeometry;if(r&&l)switch(this.meshShapeType){case 0:{const c=l.getAttribute("position"),h=Math.floor(Math.random()*c.count);this._vector.fromBufferAttribute(c,h),this._vector.applyMatrix4(r.matrixWorld),n.mesh_normal=h}break;case 1:break;case 2:{const c=l.index;if(c){let h=Math.random(),d=Math.random();h+d>1&&(h=1-h,d=1-d);const u=Math.floor(Math.random()*(c.count/3));let p=u*3,g=u*3+1,f=u*3+2;p=c.getX(p),g=c.getX(g),f=c.getX(f);const y=l.getAttribute("position");this._triangle.a.fromBufferAttribute(y,p),this._triangle.b.fromBufferAttribute(y,g),this._triangle.c.fromBufferAttribute(y,f),this._vector.set(0,0,0).addScaledVector(this._triangle.a,h).addScaledVector(this._triangle.b,d).addScaledVector(this._triangle.c,1-(h+d)),this._vector.applyMatrix4(r.matrixWorld),n.mesh_normal=u}}break}break;default:this._vector.set(0,0,0),F()&&!globalThis.__particlesystem_shapetype_unsupported&&(console.warn("ParticleSystem ShapeType is not supported:",Ep[this.shapeType]),globalThis.__particlesystem_shapetype_unsupported=!0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.applyRotation(this._vector),t&&(this._vector.applyQuaternion(this.system.worldQuaternion),this._vector.add(this.system.worldPos)),Tp&&$.DrawSphere(this._vector,.03,16711680,.5,!0)}getDirection(n,e){var t;if(!this.enabled)return this._dir.set(0,0,1),this._dir;switch(this.shapeType){case 5:this._dir.set(0,0,1);break;case 4:this._dir.set(0,0,1);break;case 10:case 0:const s=e.x,o=e.y,r=e.z;this._dir.set(s,o,r),(t=this.system)!=null&&t.worldspace?this._dir.sub(this.system.worldPos):this._dir.sub(this.position);break;case 13:const l=n.mesh,c=n.mesh_geometry;if(l&&c)switch(this.meshShapeType){case 0:{const h=c.getAttribute("normal"),d=n.mesh_normal;this._dir.fromBufferAttribute(h,d)}break;case 1:break;case 2:{const h=c.index;if(h){const d=n.mesh_normal,u=h.getX(d*3),p=h.getX(d*3+1),g=h.getX(d*3+2),f=c.getAttribute("position"),y=q(),v=q(),b=q();y.fromBufferAttribute(f,u),v.fromBufferAttribute(f,p),b.fromBufferAttribute(f,g),y.sub(v),b.sub(v),y.cross(b),this._dir.copy(y).multiplyScalar(-1);const _=Se(l);this._dir.applyQuaternion(_)}}break}break;default:this._dir.set(0,0,1);break}return this._space===1&&this._dir.applyQuaternion(this.system.worldQuaternion),this.applyRotation(this._dir),this._dir.normalize(),this.spherizeDirection(this._dir,this.sphericalDirectionAmount),this.randomizeDirection(this._dir,this.randomDirectionAmount),Tp&&($.DrawSphere(e,.01,8925952,.5,!0),$.DrawDirection(e,this._dir,8925952,.5,!0)),this._dir}randomizePosition(n,e){if(e<=0)return;const t=tr._tempVec;t.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),t.x*=e*this.scale.x,t.y*=e*this.scale.y,t.z*=e*this.scale.z,n.add(t)}randomizeDirection(n,e){if(e===0)return;const t=tr._randomQuat,s=tr._tempVec;s.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),t.setFromAxisAngle(s,e*Math.random()*Math.PI),n.applyQuaternion(t)}spherizeDirection(n,e){if(e===0)return;const t=Math.random()*Math.PI*2,s=Math.acos(1-Math.random()*2),o=Math.sin(s)*Math.cos(t),r=Math.sin(s)*Math.sin(t),l=Math.cos(s),c=new S(o,r,l);n.lerp(c,e)}randomSpherePoint(n,e,t,s,o){const r=Math.random(),l=Math.random(),c=2*Math.PI*r*(s/360),h=Math.acos(2*l-1),d=W.lerp(1,1-Math.pow(1-Math.random(),Math.PI),t)*e,u=n.x+this.scale.x*(-d*Math.sin(h)*Math.cos(c)),p=n.y+this.scale.y*(d*Math.sin(h)*Math.sin(c)),g=n.z+this.scale.z*(d*Math.cos(h));o.x=u,o.y=p,o.z=g}randomCirclePoint(n,e,t,s,o){const r=Math.random(),l=2*Math.PI*r*(s/360),c=W.lerp(1,1-Math.pow(1-Math.random(),Math.PI),t)*e,h=n.x+this.scale.x*c*Math.cos(l),d=n.y+this.scale.y*c*Math.sin(l),u=n.z;o.x=h,o.y=d,o.z=u}randomConePoint(n,e,t,s,o,r,l){let c=0,h=0;switch(r){case 0:c=Math.random(),h=Math.random();break;case 2:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case 1:c=.5,h=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let d=2*Math.PI*c*(o/360);switch(r){case 2:case 1:d+=Math.PI+.5,d+=this._loopTime*Math.PI*2,d%=W.toRadians(o);break}const u=Math.acos(2*h-1),p=W.lerp(1,1-Math.pow(1-Math.random(),Math.PI),s)*t,g=n.x+-p*Math.sin(u)*Math.cos(d),f=n.y+p*Math.sin(u)*Math.sin(d),y=n.z;l.x=g*this.scale.x,l.y=f*this.scale.y,l.z=y*this.scale.z}},a(tr,"_randomQuat",new V),a(tr,"_tempVec",new S),tr);O([m()],nt.prototype,"shapeType"),O([m()],nt.prototype,"enabled"),O([m()],nt.prototype,"alignToDirection"),O([m()],nt.prototype,"angle"),O([m()],nt.prototype,"arc"),O([m()],nt.prototype,"arcSpread"),O([m()],nt.prototype,"arcSpeedMultiplier"),O([m()],nt.prototype,"arcMode"),O([m(S)],nt.prototype,"boxThickness"),O([m(S)],nt.prototype,"position"),O([m(S)],nt.prototype,"rotation"),O([m(S)],nt.prototype,"scale"),O([m()],nt.prototype,"radius"),O([m()],nt.prototype,"radiusThickness"),O([m()],nt.prototype,"sphericalDirectionAmount"),O([m()],nt.prototype,"randomDirectionAmount"),O([m()],nt.prototype,"randomPositionAmount"),O([m()],nt.prototype,"meshShapeType"),O([m(Qc)],nt.prototype,"meshRenderer");let xy=nt;class Ce{constructor(){a(this,"damping"),a(this,"enabled"),a(this,"frequency"),a(this,"octaveCount"),a(this,"octaveMultiplier"),a(this,"octaveScale"),a(this,"positionAmount"),a(this,"quality"),a(this,"remap"),a(this,"remapEnabled"),a(this,"remapMultiplier"),a(this,"remapX"),a(this,"remapXMultiplier"),a(this,"remapY"),a(this,"remapYMultiplier"),a(this,"remapZ"),a(this,"remapZMultiplier"),a(this,"scrollSpeedMultiplier"),a(this,"separateAxes"),a(this,"strengthMultiplier"),a(this,"strengthX"),a(this,"strengthXMultiplier"),a(this,"strengthY"),a(this,"strengthYMultiplier"),a(this,"strengthZ"),a(this,"strengthZMultiplier"),a(this,"_noise"),a(this,"_time",0),a(this,"_temp",new S)}update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}apply(e,t,s,o,r,l){if(!this.enabled)return;this._noise||(this._noise=bO(()=>0));const c=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),h=this._noise(c.x,c.y,c.z,this._time),d=this._noise(c.x,c.y,c.z,this._time+1e3*this.frequency),u=this._noise(c.x,c.y,c.z,this._time+2e3*this.frequency);this._temp.set(h,d,u).normalize();const p=r/l;let g=this.positionAmount.evaluate(p);this.separateAxes?(this._temp.x*=g*this.strengthXMultiplier,this._temp.y*=g*this.strengthYMultiplier,this._temp.z*=g*this.strengthZMultiplier):(this.strengthX&&(g*=this.strengthX.evaluate(p)*1.5),this._temp.multiplyScalar(g)),s.x+=this._temp.x,s.y+=this._temp.y,s.z+=this._temp.z}}O([m()],Ce.prototype,"damping"),O([m()],Ce.prototype,"enabled"),O([m()],Ce.prototype,"frequency"),O([m()],Ce.prototype,"octaveCount"),O([m()],Ce.prototype,"octaveMultiplier"),O([m()],Ce.prototype,"octaveScale"),O([m(Z)],Ce.prototype,"positionAmount"),O([m()],Ce.prototype,"quality"),O([m(Z)],Ce.prototype,"remap"),O([m()],Ce.prototype,"remapEnabled"),O([m()],Ce.prototype,"remapMultiplier"),O([m(Z)],Ce.prototype,"remapX"),O([m()],Ce.prototype,"remapXMultiplier"),O([m(Z)],Ce.prototype,"remapY"),O([m()],Ce.prototype,"remapYMultiplier"),O([m(Z)],Ce.prototype,"remapZ"),O([m()],Ce.prototype,"remapZMultiplier"),O([m()],Ce.prototype,"scrollSpeedMultiplier"),O([m()],Ce.prototype,"separateAxes"),O([m()],Ce.prototype,"strengthMultiplier"),O([m(Z)],Ce.prototype,"strengthX"),O([m()],Ce.prototype,"strengthXMultiplier"),O([m(Z)],Ce.prototype,"strengthY"),O([m()],Ce.prototype,"strengthYMultiplier"),O([m(Z)],Ce.prototype,"strengthZ"),O([m()],Ce.prototype,"strengthZMultiplier");class We{constructor(){a(this,"enabled"),a(this,"attachRibbonToTransform",!1),a(this,"colorOverLifetime"),a(this,"colorOverTrail"),a(this,"dieWithParticles",!0),a(this,"inheritParticleColor",!0),a(this,"lifetime"),a(this,"lifetimeMultiplier"),a(this,"minVertexDistance",.2),a(this,"mode",0),a(this,"ratio",1),a(this,"ribbonCount",1),a(this,"shadowBias",0),a(this,"sizeAffectsLifetime",!1),a(this,"sizeAffectsWidth",!1),a(this,"splitSubEmitterRibbons",!1),a(this,"textureMode",0),a(this,"widthOverTrail"),a(this,"widthOverTrailMultiplier"),a(this,"worldSpace",!1)}getWidth(e,t,s,o){const r=this.widthOverTrail.evaluate(s,o);return e*=r,e}getColor(e,t,s){const o=this.colorOverTrail.evaluate(s),r=this.colorOverLifetime.evaluate(t);e.x*=o.r*r.r,e.y*=o.g*r.g,e.z*=o.b*r.b,"alpha"in o&&"alpha"in r&&(e.w*=o.alpha*r.alpha)}}O([m()],We.prototype,"enabled"),O([m()],We.prototype,"attachRibbonToTransform"),O([m(sa)],We.prototype,"colorOverLifetime"),O([m(sa)],We.prototype,"colorOverTrail"),O([m()],We.prototype,"dieWithParticles"),O([m()],We.prototype,"inheritParticleColor"),O([m(Z)],We.prototype,"lifetime"),O([m()],We.prototype,"lifetimeMultiplier"),O([m()],We.prototype,"minVertexDistance"),O([m()],We.prototype,"mode"),O([m()],We.prototype,"ratio"),O([m()],We.prototype,"ribbonCount"),O([m()],We.prototype,"shadowBias"),O([m()],We.prototype,"sizeAffectsLifetime"),O([m()],We.prototype,"sizeAffectsWidth"),O([m()],We.prototype,"splitSubEmitterRibbons"),O([m()],We.prototype,"textureMode"),O([m(Z)],We.prototype,"widthOverTrail"),O([m()],We.prototype,"widthOverTrailMultiplier"),O([m()],We.prototype,"worldSpace");class qe{constructor(){a(this,"enabled"),a(this,"space",0),a(this,"orbitalX"),a(this,"orbitalY"),a(this,"orbitalZ"),a(this,"orbitalXMultiplier"),a(this,"orbitalYMultiplier"),a(this,"orbitalZMultiplier"),a(this,"orbitalOffsetX"),a(this,"orbitalOffsetY"),a(this,"orbitalOffsetZ"),a(this,"speedModifier"),a(this,"speedModifierMultiplier"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier"),a(this,"_system"),a(this,"_temp",new S),a(this,"_temp2",new S),a(this,"_temp3",new S),a(this,"_hasOrbital",!1),a(this,"_index",0),a(this,"_orbitalMatrix",new se)}update(e){this._system=e}init(e){this._index==0&&(e.debug=!0),this._index+=1,e.orbitx=this.orbitalX.evaluate(Math.random()),e.orbity=this.orbitalY.evaluate(Math.random()),e.orbitz=this.orbitalZ.evaluate(Math.random()),this._hasOrbital=e.orbitx!=0||e.orbity!=0||e.orbitz!=0}apply(e,t,s,o,r,l,c){var h;if(!this.enabled)return;const d=l/c,u=this.speedModifier.evaluate(d)*this.speedModifierMultiplier,p=this.x.evaluate(d),g=this.y.evaluate(d),f=this.z.evaluate(d);if(this._temp.set(-p,g,f),this._system&&this._system.main.simulationSpace===1&&this._temp.applyQuaternion(this._system.worldQuaternion),this._hasOrbital&&((h=this._system)==null?void 0:h.worldPos)){const y=this._temp2.set(s.x,s.y,s.z),v=this.orbitalXMultiplier,b=this.orbitalYMultiplier,_=this.orbitalZMultiplier,w=u*Math.PI*2*10,x=Math.cos(w*v),k=Math.sin(w*v),M=Math.cos(w*b),T=Math.sin(w*b),L=Math.cos(w*_),D=Math.sin(w*_),z=y.x*(M*L)+y.y*(M*D)+y.z*-T,j=y.x*(k*T*L-x*D)+y.y*(k*T*D+x*L)+y.z*(k*M),H=y.x*(x*T*L+k*D)+y.y*(x*T*D-k*L)+y.z*(x*M),K=this._temp3.set(y.x-z,y.y-j,y.z-H);K.normalize(),K.multiplyScalar(.2/r*Math.max(this.orbitalXMultiplier,this.orbitalYMultiplier,this.orbitalZMultiplier)),o.x+=K.x,o.y+=K.y,o.z+=K.z}o.x+=this._temp.x,o.y+=this._temp.y,o.z+=this._temp.z,o.x*=u,o.y*=u,o.z*=u}}O([m()],qe.prototype,"enabled"),O([m()],qe.prototype,"space"),O([m(Z)],qe.prototype,"orbitalX"),O([m(Z)],qe.prototype,"orbitalY"),O([m(Z)],qe.prototype,"orbitalZ"),O([m()],qe.prototype,"orbitalXMultiplier"),O([m()],qe.prototype,"orbitalYMultiplier"),O([m()],qe.prototype,"orbitalZMultiplier"),O([m()],qe.prototype,"orbitalOffsetX"),O([m()],qe.prototype,"orbitalOffsetY"),O([m()],qe.prototype,"orbitalOffsetZ"),O([m(Z)],qe.prototype,"speedModifier"),O([m()],qe.prototype,"speedModifierMultiplier"),O([m(Z)],qe.prototype,"x"),O([m()],qe.prototype,"xMultiplier"),O([m(Z)],qe.prototype,"y"),O([m()],qe.prototype,"yMultiplier"),O([m(Z)],qe.prototype,"z"),O([m()],qe.prototype,"zMultiplier");class Vt{constructor(){a(this,"animation"),a(this,"enabled"),a(this,"cycleCount"),a(this,"frameOverTime"),a(this,"frameOverTimeMultiplier"),a(this,"numTilesX"),a(this,"numTilesY"),a(this,"startFrame"),a(this,"startFrameMultiplier"),a(this,"rowMode"),a(this,"rowIndex"),a(this,"spriteCount"),a(this,"timeMode")}sampleOnceAtStart(){if(this.timeMode===0)switch(this.frameOverTime.mode){case 0:case 3:case 2:case 1:return!0}return!1}getStartIndex(){return this.sampleOnceAtStart()?Math.random()*(this.numTilesX*this.numTilesY):0}evaluate(e){if(!this.sampleOnceAtStart())return this.getIndex(e)}getIndex(e){const t=this.numTilesX*this.numTilesY;e=e*this.cycleCount;let s=this.frameOverTime.evaluate(e%1);return s*=this.frameOverTimeMultiplier,s*=t,s=s%t,s=Math.floor(s),s}}O([m()],Vt.prototype,"animation"),O([m()],Vt.prototype,"enabled"),O([m()],Vt.prototype,"cycleCount"),O([m(Z)],Vt.prototype,"frameOverTime"),O([m()],Vt.prototype,"frameOverTimeMultiplier"),O([m()],Vt.prototype,"numTilesX"),O([m()],Vt.prototype,"numTilesY"),O([m(Z)],Vt.prototype,"startFrame"),O([m()],Vt.prototype,"startFrameMultiplier"),O([m()],Vt.prototype,"rowMode"),O([m()],Vt.prototype,"rowIndex"),O([m()],Vt.prototype,"spriteCount"),O([m()],Vt.prototype,"timeMode");class Es{constructor(){a(this,"enabled"),a(this,"separateAxes"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier")}evaluate(e,t){return this.enabled?this.separateAxes?0:this.z.evaluate(e,t)*-1:0}}O([m()],Es.prototype,"enabled"),O([m()],Es.prototype,"separateAxes"),O([m(Z)],Es.prototype,"x"),O([m()],Es.prototype,"xMultiplier"),O([m(Z)],Es.prototype,"y"),O([m()],Es.prototype,"yMultiplier"),O([m(Z)],Es.prototype,"z"),O([m()],Es.prototype,"zMultiplier");class hs{constructor(){a(this,"enabled"),a(this,"range"),a(this,"separateAxes"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier")}evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){const s=W.lerp(this.range.x,this.range.y,t);return this.z.evaluate(s)*-1}return 0}}O([m()],hs.prototype,"enabled"),O([m()],hs.prototype,"range"),O([m()],hs.prototype,"separateAxes"),O([m(Z)],hs.prototype,"x"),O([m()],hs.prototype,"xMultiplier"),O([m(Z)],hs.prototype,"y"),O([m()],hs.prototype,"yMultiplier"),O([m(Z)],hs.prototype,"z"),O([m()],hs.prototype,"zMultiplier");class gt{constructor(){a(this,"enabled"),a(this,"dampen"),a(this,"drag"),a(this,"dragMultiplier"),a(this,"limit"),a(this,"limitMultiplier"),a(this,"separateAxes"),a(this,"limitX"),a(this,"limitXMultiplier"),a(this,"limitY"),a(this,"limitYMultiplier"),a(this,"limitZ"),a(this,"limitZMultiplier"),a(this,"multiplyDragByParticleSize",!1),a(this,"multiplyDragByParticleVelocity",!1),a(this,"space"),a(this,"_temp",new S),a(this,"_temp2",new S)}apply(e,t,s,o,r,l,c){if(this.enabled){const h=this.limit.evaluate(r)*this.limitMultiplier;if(t.length()>h){this._temp.copy(t).normalize().multiplyScalar(h);const d=this.dampen*.5;t.x=W.lerp(t.x,this._temp.x,d),t.y=W.lerp(t.y,this._temp.y,d),t.z=W.lerp(t.z,this._temp.z,d),s.x=W.lerp(s.x,this._temp.x,d),s.y=W.lerp(s.y,this._temp.y,d),s.z=W.lerp(s.z,this._temp.z,d)}}}}O([m()],gt.prototype,"enabled"),O([m()],gt.prototype,"dampen"),O([m(Z)],gt.prototype,"drag"),O([m()],gt.prototype,"dragMultiplier"),O([m(Z)],gt.prototype,"limit"),O([m()],gt.prototype,"limitMultiplier"),O([m()],gt.prototype,"separateAxes"),O([m(Z)],gt.prototype,"limitX"),O([m()],gt.prototype,"limitXMultiplier"),O([m(Z)],gt.prototype,"limitY"),O([m()],gt.prototype,"limitYMultiplier"),O([m(Z)],gt.prototype,"limitZ"),O([m()],gt.prototype,"limitZMultiplier"),O([m()],gt.prototype,"multiplyDragByParticleSize"),O([m()],gt.prototype,"multiplyDragByParticleVelocity"),O([m()],gt.prototype,"space");const fh=class MC{constructor(){a(this,"enabled"),a(this,"curve"),a(this,"curveMultiplier"),a(this,"mode"),a(this,"system"),a(this,"_temp",new S),a(this,"_firstUpdate",!0),a(this,"_frames",0)}clone(){var e;const t=new MC;return t.enabled=this.enabled,t.curve=(e=this.curve)==null?void 0:e.clone(),t.curveMultiplier=this.curveMultiplier,t.mode=this.mode,t}get _lastWorldPosition(){return this.system._iv_lastWorldPosition||(this.system._iv_lastWorldPosition=new S),this.system._iv_lastWorldPosition}get _velocity(){return this.system._iv_velocity||(this.system._iv_velocity=new S),this.system._iv_velocity}awake(e){this.system=e,this.reset()}reset(){this._firstUpdate=!0}update(e){this.enabled&&this.system.worldspace!==!1&&(this._firstUpdate?(this._firstUpdate=!1,this._velocity.set(0,0,0),this._lastWorldPosition.copy(this.system.worldPos)):this._lastWorldPosition&&(this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1/this.system.deltaTime),this._lastWorldPosition.copy(this.system.worldPos)))}applyInitial(e){if(this.enabled&&this.system.worldspace!==!1&&this.mode===0){const t=this.curve.evaluate(Math.random(),Math.random());this._temp.copy(this._velocity).multiplyScalar(t),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}applyCurrent(e,t,s){if(this.enabled&&this.system&&this.system.worldspace!==!1&&this.mode===1){const o=this.curve.evaluate(t,s);this._temp.copy(this._velocity).multiplyScalar(o),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}};O([m()],fh.prototype,"enabled"),O([m(Z)],fh.prototype,"curve"),O([m()],fh.prototype,"curveMultiplier"),O([m()],fh.prototype,"mode");let Sy=fh;class bi{constructor(){a(this,"enabled"),a(this,"range"),a(this,"separateAxes"),a(this,"size"),a(this,"sizeMultiplier"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier")}evaluate(e,t,s,o){const r=e.length(),l=W.remap(r,this.range.x,this.range.y,0,1),c=this.size.evaluate(l,s);return o.x*=c,o.y*=c,o.z*=c,o}}O([m()],bi.prototype,"enabled"),O([m(re)],bi.prototype,"range"),O([m()],bi.prototype,"separateAxes"),O([m(Z)],bi.prototype,"size"),O([m()],bi.prototype,"sizeMultiplier"),O([m(Z)],bi.prototype,"x"),O([m()],bi.prototype,"xMultiplier"),O([m(Z)],bi.prototype,"y"),O([m()],bi.prototype,"yMultiplier"),O([m(Z)],bi.prototype,"z"),O([m()],bi.prototype,"zMultiplier");class Pl{constructor(){a(this,"enabled"),a(this,"range"),a(this,"color")}evaluate(e,t,s){const o=e.length(),r=W.remap(o,this.range.x,this.range.y,0,1),l=this.color.evaluate(r,t);s.x*=l.r,s.y*=l.g,s.z*=l.b,"alpha"in l&&(s.w*=l.alpha)}}O([m()],Pl.prototype,"enabled"),O([m(re)],Pl.prototype,"range"),O([m(sa)],Pl.prototype,"color"),new S(1,1,1),new S(0,0,1);class Cy{constructor(e,t,s,o){a(this,"type","NeedleParticleSubEmitter"),a(this,"emitterType"),a(this,"emitterProbability"),a(this,"q_",new V),a(this,"v_",new S),a(this,"v2_",new S),a(this,"_emitterMatrix",new Hm),a(this,"_circularBuffer"),this.system=e,this.particleSystem=t,this.subSystem=s,this.subParticleSystem=o,this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0);const r=1e3;this._circularBuffer=new Oi(()=>new Hm,r)}clone(){throw new Error("Method not implemented.")}initialize(e){e.emissionState={burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0},this._emitterMatrix.copy(this.subSystem.matrixWorld).invert().premultiply(this.system.matrixWorld),this._emitterMatrix.setPosition(0,0,0),this.emitterType===Py.Birth&&this.run(e)}update(e,t){this.run(e)}frameUpdate(e){}toJSON(){}reset(){}run(e){if(this.subSystem.currentParticles>=this.subSystem.main.maxParticles||!this.subParticleSystem||!e.emissionState||this.emitterProbability&&Math.random()>this.emitterProbability)return;const t=this.system.deltaTime;if(this.emitterType===Py.Death){let o=e.life;if(e[Ol]!==void 0&&(o=e[Ol]),!(e.age+t*1.2>=o))return;const r=this.subSystem.main.maxParticles-this.subSystem.currentParticles;e.emissionState.waitEmiting=r}const s=new Hm;s.set(1,0,0,e.position.x,0,1,0,e.position.y,0,0,1,e.position.z,0,0,0,1),this.particleSystem.worldSpace||s.multiplyMatrices(this._emitterMatrix,s),this.subParticleSystem.emit(t,e.emissionState,s)}}var p2=Object.defineProperty,Ve=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&p2(e,t,o),o};const ir=C("debugparticles"),m2=C("noprogressive"),g2=C("debugprogressive");var Py=(n=>(n[n.Birth=0]="Birth",n[n.Collision=1]="Collision",n[n.Death=2]="Death",n[n.Trigger=3]="Trigger",n[n.Manual=4]="Manual",n))(Py||{});class ds extends I{constructor(){super(...arguments),a(this,"renderMode"),a(this,"particleMaterial"),a(this,"trailMaterial"),a(this,"particleMesh"),a(this,"maxParticleSize"),a(this,"minParticleSize"),a(this,"velocityScale"),a(this,"cameraVelocityScale"),a(this,"lengthScale")}start(){if(this.maxParticleSize!==.5&&this.minParticleSize!==0&&F()){const e=`ParticleSystem "${this.name}" has non-default min/max particle size. This may not render correctly. Please set min size to 0 and the max size to 0.5 and use the "StartSize" setting instead`;console.warn(e)}}get transparent(){var e;return((e=this.particleMaterial)==null?void 0:e.transparent)??!1}getMaterial(e=!1){let t=e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial;if(t){if(t.type==="MeshStandardMaterial"){ir&&console.debug("ParticleSystemRenderer.getMaterial: MeshStandardMaterial detected, converting to MeshBasicMaterial. See https://github.com/Alchemist0823/three.quarks/issues/101"),"map"in t&&t.map&&(t.map.colorSpace=On,t.map.premultiplyAlpha=!1);const s=new Me;s.copy(t),e?this.trailMaterial=s:this.particleMaterial=s}t.map&&(t.map.colorSpace=On,t.map.premultiplyAlpha=!1),e&&t.side===fo&&(t=t.clone(),t.side=wd,e?this.trailMaterial=t:this.particleMaterial=t)}return t&&!m2&&t._didRequestTextureLOD===void 0&&(t._didRequestTextureLOD=0,g2&&console.log("Load material LOD",t.name),Xe.assignTextureLOD(t,0)),t}getMesh(e){let t=null;if(!t&&(this.particleMesh instanceof G&&(t=this.particleMesh.geometry),t===null)){t=new Ns(1,1);const s=t.attributes.uv;for(let o=0;o<s.count;o++)s.setX(o,1-s.getX(o))}return new G(t,this.getMaterial())}}Ve([m()],ds.prototype,"renderMode"),Ve([m(Pe)],ds.prototype,"particleMaterial"),Ve([m(Pe)],ds.prototype,"trailMaterial"),Ve([m()],ds.prototype,"maxParticleSize"),Ve([m()],ds.prototype,"minParticleSize"),Ve([m()],ds.prototype,"velocityScale"),Ve([m()],ds.prototype,"cameraVelocityScale"),Ve([m()],ds.prototype,"lengthScale");class Lp{constructor(e,t=1){a(this,"_curve"),a(this,"_factor"),a(this,"type","function"),this._curve=e,this._factor=t}startGen(e){}genValue(e,t){return this._curve.evaluate(t,Math.random())*this._factor}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}}class Oy{constructor(e){a(this,"type","value"),a(this,"system"),this.system=e}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}startGen(e){}}class f2 extends Oy{genValue(){return this.system.textureSheetAnimation.getStartIndex()}}class y2 extends Oy{constructor(){super(...arguments),a(this,"_lastPosition",new S),a(this,"_lastDistance",0)}update(){const e=ee(this.system.gameObject);this._lastDistance=this._lastPosition.distanceTo(e),this._lastPosition.copy(e)}genValue(){if(!this.system.isPlaying||!this.system.emission.enabled||this.system.currentParticles>=this.system.maxParticles)return 0;let e=this.system.emission.rateOverTime.evaluate(this.system.time/this.system.duration,Math.random());if(this.system.deltaTime>0){const o=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random());let r=this._lastDistance/this.system.deltaTime*o;Number.isFinite(r)||(r=0),e+=r}const t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);const s=this.system.maxParticles-this.system.currentParticles;return W.clamp(e,0,s/this.system.deltaTime)}}class v2 extends Oy{genValue(){return this.system.isPlaying,0}}class sr{constructor(e){a(this,"system"),a(this,"type"),this.type=Object.getPrototypeOf(this).constructor.name||"ParticleSystemBaseBehaviour",e&&(this.system=e)}get context(){return this.system.context}initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}reset(){}}class b2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleTextureSheet")}update(e,t){const s=this.system.textureSheetAnimation;if(s.enabled){const o=e.age/e.life,r=s.evaluate(o);r!==void 0&&(e.uvTile=r)}}}const aS=Symbol("particleRotation");class _2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleRotation")}initialize(e){e[aS]=Math.random()}update(e,t){if(e.rotation===void 0)return;const s=e.age/e.life;if(typeof e.rotation=="number"&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(s,e[aS])*t:this.system.renderer.renderMode===Zn.Billboard&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){const o=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(s,o)*t}}}const lS=Symbol("sizeLerpFactor"),w2=new S;class x2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleSize"),a(this,"_minSize",0),a(this,"_maxSize",1)}initialize(e){e[lS]=Math.random(),this._minSize=this.system.renderer.minParticleSize,this._maxSize=this.system.renderer.maxParticleSize}update(e,t){const s=e.age/e.life;let o=1;this.system.sizeOverLifetime.enabled&&(o*=this.system.sizeOverLifetime.evaluate(s,void 0,e[lS]).x);let r=1;this.system.renderer.renderMode!==Zn.Mesh&&(r=this.system.worldScale.x/this.system.cameraScale);const l=q(e.startSize).multiplyScalar(o*r);if(e.size.set(l.x,l.y,l.z),this.system.localspace){const c=pS(this.system,w2);e.size.x*=c.x,e.size.y*=c.y,e.size.z*=c.z}}}const Ol=Symbol("particleLife"),ky=Symbol("trailLifetime"),cS=Symbol("trailStartLength"),My=Symbol("trailWidthRandom");class S2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleTrail")}initialize(e){e instanceof Zv&&(e[Ol]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[ky]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[ky]),e[cS]=e.length,e[My]=Math.random())}update(e){var t;if((t=this.system.trails)!=null&&t.enabled&&e instanceof Zv){const s=e,o=e.age/e[Ol],r=e.previous.values(),l=e.previous.length;for(let c=0;c<l;c++){const h=r.next().value,d=1-c/(l-1),u=e.size;if(u.x<=0&&!this.system.trails.sizeAffectsWidth){const p=20*this.system.trails.widthOverTrail.evaluate(.5,s[My]);u.x=p,u.y=p,u.z=p}h.size=this.system.trails.getWidth(u.x,o,d,s[My]),h.color.copy(e.color),this.system.trails.getColor(h.color,o,d)}if(e.age>e[Ol]){e.velocity.set(0,0,0);const c=(e.age-e[Ol])/e[ky];s.length=W.lerp(e[cS],0,c)}}}}const jp=Symbol("startVelocity"),hS=Symbol("gravityModifier"),Ry=Symbol("gravitySpeed"),Dp=Symbol("velocity lerp factor"),Ty=new S;class C2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleVelocity"),a(this,"_gravityDirection",new S)}initialize(e){var t,s;const o=this.system.main.simulationSpeed;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random());const r=this.system.shape.getDirection(e,e.position);e.velocity.x=r.x*e.startSpeed,e.velocity.y=r.y*e.startSpeed,e.velocity.z=r.z*e.startSpeed,(t=this.system.inheritVelocity)!=null&&t.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[jp]?e[jp].copy(e.velocity):e[jp]=e.velocity.clone();const l=this.system.main.gravityModifier.evaluate(Math.random(),Math.random());e[hS]=l*o,e[Ry]=l*o*.5,e[Dp]=Math.random(),(s=this.system.velocityOverLifetime)==null||s.init(e),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===gh.Local&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted).normalize()}update(e,t){var s;const o=e[jp],r=e[hS];if(r!==0){const g=r*e[Ry];Ty.copy(this._gravityDirection).multiplyScalar(g),e[Ry]+=t*.05,o.add(Ty)}e.velocity.copy(o);const l=e.age/e.life;(s=this.system.inheritVelocity)!=null&&s.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,l,e[Dp]);const c=this.system.noise;c.enabled&&c.apply(0,e.position,e.velocity,t,e.age,e.life);const h=this.system.sizeBySpeed;h!=null&&h.enabled&&(e.size=h.evaluate(e.velocity,l,e[Dp],e.size));const d=this.system.colorBySpeed;d!=null&&d.enabled&&d.evaluate(e.velocity,e[Dp],e.color);const u=this.system.velocityOverLifetime;u.enabled&&u.apply(e,0,e.position,e.velocity,t,e.age,e.life);const p=this.system.limitVelocityOverLifetime;if(p.enabled&&p.apply(e.position,o,e.velocity,e.size,l,t,1),this.system.worldspace){const g=this.system.worldScale;e.velocity.x*=g.x,e.velocity.y*=g.y,e.velocity.z*=g.z}}}const dS=Symbol("colorLerpFactor"),uS=new he(1,1,1,1),oa=new he(1,1,1,1);class P2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleColor")}initialize(e){}_init(e){const t=this.system.renderer.particleMaterial;oa.copy(this.system.main.startColor.evaluate(Math.random())),t!=null&&t.color&&(uS.copy(t.color),oa.multiply(uS)),oa.convertLinearToSRGB(),e.startColor.set(oa.r,oa.g,oa.b,oa.alpha),e.color.copy(e.startColor),e[dS]=Math.random()}update(e,t){if(e.age===0&&this._init(e),this.system.colorOverLifetime.enabled){const s=e.age/e.life,o=this.system.colorOverLifetime.color.evaluate(s,e[dS]);e.color.set(o.r,o.g,o.b,"alpha"in o?o.alpha:1).multiply(e.startColor)}else e.color.copy(e.startColor)}}class O2{constructor(e){a(this,"system"),a(this,"emission"),a(this,"autoDestroy"),a(this,"startLength"),a(this,"emissionBursts"),a(this,"onlyUsedByOther"),a(this,"behaviors",[]),a(this,"rendererEmitterSettings",{startLength:new CO(220),followLocalOrigin:!1}),a(this,"flatWhiteTexture"),a(this,"clonedTexture",{original:void 0,clone:void 0}),this.system=e,this.emission=new y2(this.system)}get anim(){return this.system.textureSheetAnimation}get prewarm(){return!1}get material(){return this.system.renderer.getMaterial(this.system.trails.enabled)}get layers(){return this.system.gameObject.layers}update(){this.emission.update()}get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Lp(this.system.main.startLifetime)}get startSpeed(){return new Lp(this.system.main.startSpeed)}get startRotation(){return new Lp(this.system.main.startRotation)}get startSize(){return new Lp(this.system.main.startSize)}get startColor(){return new xO(new SO(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new v2(this.system)}get instancingGeometry(){return this.system.renderer.getMesh(this.system.renderer.renderMode).geometry}get renderMode(){if(this.system.trails.enabled===!0)return Tn.Trail;switch(this.system.renderer.renderMode){case Zn.Billboard:return Tn.BillBoard;case Zn.Stretch:return Tn.StretchedBillBoard;case Zn.HorizontalBillboard:return Tn.HorizontalBillBoard;case Zn.VerticalBillboard:return Tn.VerticalBillBoard;case Zn.Mesh:return Tn.Mesh}return Tn.BillBoard}get speedFactor(){var e;let t=this.system.main.simulationSpeed;return((e=this.system.renderer)==null?void 0:e.renderMode)===Zn.Stretch&&(t*=this.system.renderer.velocityScale??1),t}get texture(){const e=this.material;if(e&&e.map){const t=e.map;if(this.clonedTexture.original!==t||!this.clonedTexture.clone){const s=t.clone();s.premultiplyAlpha=!1,s.colorSpace=On,this.clonedTexture.original=t,this.clonedTexture.clone=s}return this.clonedTexture.clone}return this.flatWhiteTexture||(this.flatWhiteTexture=Sf(new he(1,1,1,1),1)),this.flatWhiteTexture}get startTileIndex(){return new f2(this.system)}get uTileCount(){var e;return this.anim.enabled?(e=this.anim)==null?void 0:e.numTilesX:void 0}get vTileCount(){var e;return this.anim.enabled?(e=this.anim)==null?void 0:e.numTilesY:void 0}get renderOrder(){return 1}get blending(){var e;return((e=this.system.renderer.particleMaterial)==null?void 0:e.blending)??jP}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===gh.World}}class k2{constructor(){a(this,"burstParticleIndex",0),a(this,"burstParticleCount",0),a(this,"isBursting",!1),a(this,"travelDistance",0),a(this,"previousWorldPos"),a(this,"burstIndex",0),a(this,"burstWaveIndex",0),a(this,"time",0),a(this,"waitEmiting",0)}}const $t=class Cm extends I{constructor(){super(...arguments),a(this,"_state"),a(this,"colorOverLifetime"),a(this,"main"),a(this,"emission"),a(this,"sizeOverLifetime"),a(this,"shape"),a(this,"noise"),a(this,"trails"),a(this,"velocityOverLifetime"),a(this,"limitVelocityOverLifetime"),a(this,"inheritVelocity"),a(this,"colorBySpeed"),a(this,"textureSheetAnimation"),a(this,"rotationOverLifetime"),a(this,"rotationBySpeed"),a(this,"sizeBySpeed"),a(this,"_cameraScale",1),a(this,"__worldQuaternion",new V),a(this,"_worldQuaternionInverted",new V),a(this,"_worldScale",new S),a(this,"_worldPositionFrame",-1),a(this,"_worldPos",new S),a(this,"_renderer"),a(this,"_batchSystem"),a(this,"_particleSystem"),a(this,"_interface"),a(this,"_container"),a(this,"_time",0),a(this,"_isPlaying",!0),a(this,"_isUsedAsSubsystem",!1),a(this,"_didPreWarm",!1),a(this,"_bursts"),a(this,"_subEmitterSystems"),a(this,"_lastBatchesCount",-1)}play(e=!1){var t;e&&P.foreachComponent(this.gameObject,s=>{s instanceof Cm&&s!==this&&s.play(!1)},!0),this._isPlaying=!0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),(t=this.emission)==null||t.reset()}pause(e=!0){e&&P.foreachComponent(this.gameObject,t=>{t instanceof Cm&&t!==this&&t.pause(!1)},!0),this._isPlaying=!1}stop(e=!0,t=!1){e&&P.foreachComponent(this.gameObject,s=>{s instanceof Cm&&s!==this&&s.stop(!1,t)},!0),this._isPlaying=!1,this._time=0,t&&this.reset()}reset(){var e;this._time=0,this._particleSystem&&(this._particleSystem.particleNum=0,this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1,(e=this.emission)==null||e.reset())}emit(e){if(this._particleSystem){this.onUpdate(),e=Math.min(e,this.maxParticles-this.currentParticles),this._state||(this._state=new k2),this._state.waitEmiting=e,this._state.time=0;const t=this._particleSystem.emitEnded;this._particleSystem.emitEnded=!1,this._particleSystem.emit(this.deltaTime,this._state,this._particleSystem.emitter.matrixWorld),this._particleSystem.emitEnded=t}}get playOnAwake(){return this.main.playOnAwake}set playOnAwake(e){this.main.playOnAwake=e}get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){var e;return((e=this._particleSystem)==null?void 0:e.particleNum)??0}get maxParticles(){return this.main.maxParticles}get time(){return this._time}get duration(){return this.main.duration}get deltaTime(){return this.context.time.deltaTime*this.main.simulationSpeed}get scale(){return this.gameObject.scale.x}get cameraScale(){return this._cameraScale}get container(){return this._container}get worldspace(){return this.main.simulationSpace===gh.World}get localspace(){return this.main.simulationSpace===gh.Local}get worldQuaternion(){return this.__worldQuaternion}get worldQuaternionInverted(){return this._worldQuaternionInverted}get worldScale(){return this._worldScale}get worldPos(){return this._worldPositionFrame!==this.context.time.frame&&(this._worldPositionFrame=this.context.time.frame,ee(this.gameObject,this._worldPos)),this._worldPos}get matrixWorld(){return this._container.matrixWorld}get isSubsystem(){return this._isUsedAsSubsystem}addBehaviour(e){return this._particleSystem?(e instanceof sr&&(e.system=this),ir&&console.debug("Add custom ParticleSystem Behaviour",e),this._particleSystem.addBehavior(e),!0):!1}removeBehaviour(e){if(!this._particleSystem)return!1;const t=this._particleSystem.behaviors,s=t.indexOf(e);return s!==-1&&((F()||ir)&&console.debug("Remove custom ParticleSystem Behaviour",s,e),t.splice(s,1)),!0}removeAllBehaviours(){return this._particleSystem?(this._particleSystem.behaviors.length=0,!0):!1}get behaviours(){return this._particleSystem?this._particleSystem.behaviors:null}get particleSystem(){return this._particleSystem??null}set bursts(e){for(let t=0;t<e.length;t++){const s=e[t];if(!(s instanceof Ap)){const o=new Ap;Na(o,s),e[t]=o}}this._bursts=e}set subEmitterSystems(e){for(let t=0;t<e.length;t++){const s=e[t];if(!(s instanceof Bp)){const o=new Bp;Na(o,s),e[t]=o}}ir&&e.length>0&&console.log("SubEmitters: ",e,this),this._subEmitterSystems=e}onAfterDeserialize(e){if(this._subEmitterSystems&&Array.isArray(this._subEmitterSystems))for(const t of this._subEmitterSystems)t._deserialize(this.context,this.gameObject)}awake(){if(this._worldPositionFrame=-1,this._renderer=this.gameObject.getComponent(ds),!this.main)throw new Error("Not Supported: ParticleSystem needs a serialized MainModule. Creating new particle systems at runtime is currently not supported.");this._container=new E,this._container.matrixAutoUpdate=!1,this.context.scene.add(this._container),this._batchSystem=new _O,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new O2(this),this._particleSystem=new wO(this._interface),this._particleSystem.addBehavior(new x2(this)),this._particleSystem.addBehavior(new P2(this)),this._particleSystem.addBehavior(new b2(this)),this._particleSystem.addBehavior(new _2(this)),this._particleSystem.addBehavior(new C2(this)),this._particleSystem.addBehavior(new S2(this)),this._batchSystem.addSystem(this._particleSystem);const e=this._particleSystem.emitter;this.context.scene.add(e),this.inheritVelocity.system&&this.inheritVelocity.system!==this&&(this.inheritVelocity=this.inheritVelocity.clone()),this.inheritVelocity.awake(this),ir&&(console.log(this),this.gameObject.add(new Ci(1)))}start(){this.addSubParticleSystems(),this.updateLayers(),this.renderer.particleMesh instanceof G&&this._interface.renderMode==Tn.Mesh&&Xe.assignMeshLOD(this.renderer.particleMesh,0).then(e=>{e&&this.particleSystem&&this._interface.renderMode==Tn.Mesh&&(this.particleSystem.instancingGeometry=e)})}onDestroy(){var e,t,s,o;(e=this._container)==null||e.removeFromParent(),(t=this._batchSystem)==null||t.removeFromParent(),(s=this._particleSystem)==null||s.emitter.removeFromParent(),(o=this._particleSystem)==null||o.dispose()}onEnable(){this.main&&(this.inheritVelocity&&(this.inheritVelocity.system=this),this._batchSystem&&(this._batchSystem.visible=!0),this.playOnAwake&&this.play(),this._isPlaying=this.playOnAwake)}onDisable(){this._batchSystem&&(this._batchSystem.visible=!1)}onBeforeRender(){var e;this.main&&(this._didPreWarm===!1&&((e=this.main)==null?void 0:e.prewarm)===!0&&(this._didPreWarm=!0,this.preWarm()),this.onUpdate(),this.onSimulate(this.deltaTime))}preWarm(){var e;if(!((e=this.emission)!=null&&e.enabled)||this.emission.rateOverTime.getMax()<=0)return;const t=1/60,s=this.main.duration,o=this.main.startLifetime.getMax(),r=Math.min(Math.max(s,o)/Math.max(.01,this.main.simulationSpeed),1e3),l=Math.ceil(r/t),c=Date.now();ir&&console.log(`Particles ${this.name} - Prewarm for ${l} frames (${r} sec). Duration: ${s}, Lifetime: ${o}`);for(let h=0;h<l&&!(this.currentParticles>=this.maxParticles);h++){const d=Date.now()-c;if(d>2e3){console.warn(`Particles ${this.name} - Prewarm took too long. Aborting: ${d}`);break}this.onUpdate(),this.onSimulate(t)}}onSimulate(e){if(this._batchSystem){let t=this.context.time.frameCount%60===0;this._lastBatchesCount!==this._batchSystem.batches.length&&(this._lastBatchesCount=this._batchSystem.batches.length,t=!0),t&&this.updateLayers(),this._batchSystem.update(e)}this._time+=e,this._time>this.duration&&(this._time=0)}updateLayers(){if(this._batchSystem)for(let e=0;e<this._batchSystem.batches.length;e++){const t=this._batchSystem.batches[e];t.layers.disableAll();const s=this.layer;t.layers.mask=1<<s}}onUpdate(){var e,t;if(this._bursts&&(this.emission.bursts=this._bursts,delete this._bursts),!this._isPlaying)return;const s=this.context.mainCamera;if(s){const l=Ge(s);this._cameraScale=l.x}const o=!this.worldspace,r=this.gameObject;if(Se(r,this.__worldQuaternion),this._worldQuaternionInverted.copy(this.__worldQuaternion).invert(),Ge(this.gameObject,this._worldScale),o&&this._container&&(e=this.gameObject)!=null&&e.parent){const l=pS(this,Ty);this._container.matrix.makeScale(l.x,l.y,l.z),this._container.matrix.makeRotationFromQuaternion(this.__worldQuaternion),this._container.matrix.setPosition(this.worldPos),this._container.matrix.scale(this.gameObject.scale)}this.emission.system=this,this._interface.update(),this.shape.onUpdate(this,this.context,this.main.simulationSpace,this.gameObject),this.noise.update(this.context),(t=this.inheritVelocity)==null||t.update(this.context),this.velocityOverLifetime.update(this)}addSubParticleSystems(){var e;if(this._subEmitterSystems&&this._particleSystem)for(const t of this._subEmitterSystems){t.particleSystem&&(t.particleSystem.__internalAwake?t.particleSystem.__internalAwake():F()&&console.warn("SubParticleSystem serialization issue(?)",t.particleSystem,t));const s=(e=t.particleSystem)==null?void 0:e._particleSystem;if(s){t.particleSystem._isUsedAsSubsystem=!0;const o=new Cy(this,this._particleSystem,t.particleSystem,s);o.emitterType=t.type,o.emitterProbability=t.emitProbability,this._particleSystem.addBehavior(o)}else ir&&console.warn("Could not add SubParticleSystem",t,this)}}};Ve([m(Ip)],$t.prototype,"colorOverLifetime"),Ve([m(Wt)],$t.prototype,"main"),Ve([m(eo)],$t.prototype,"emission"),Ve([m(na)],$t.prototype,"sizeOverLifetime"),Ve([m(xy)],$t.prototype,"shape"),Ve([m(Ce)],$t.prototype,"noise"),Ve([m(We)],$t.prototype,"trails"),Ve([m(qe)],$t.prototype,"velocityOverLifetime"),Ve([m(gt)],$t.prototype,"limitVelocityOverLifetime"),Ve([m(Sy)],$t.prototype,"inheritVelocity"),Ve([m(Pl)],$t.prototype,"colorBySpeed"),Ve([m(Vt)],$t.prototype,"textureSheetAnimation"),Ve([m(Es)],$t.prototype,"rotationOverLifetime"),Ve([m(hs)],$t.prototype,"rotationBySpeed"),Ve([m(bi)],$t.prototype,"sizeBySpeed");let yh=$t;class Bp{constructor(){a(this,"particleSystem"),a(this,"emitProbability",1),a(this,"properties"),a(this,"type")}_deserialize(e,t){const s=this.particleSystem;if(s instanceof yh)return;let o="";s&&typeof s.guid=="string"&&(o=s.guid,this.particleSystem=P.findByGuid(o,t)),ir&&!(this.particleSystem instanceof yh)&&console.warn("Could not find particle system for sub emitter",o,t,this)}}function pS(n,e){if(e.set(1,1,1),n.gameObject.parent&&n.localspace)switch(n.main.scalingMode){case wy.Local:e=Ge(n.gameObject.parent,e),e.x=1/e.x,e.y=1/e.y,e.z=1/e.z;break;default:if(!n.unsupported_scaling_mode){n.unsupported_scaling_mode=!0;const t="ParticleSystem scale mode "+wy[n.main.scalingMode]+" is not supported";F()&&be(t),console.warn(t,n.name,n)}e=Ge(n.gameObject,e);break}return e}class Nl extends I{constructor(){super(...arguments),a(this,"_didAssignPlayerColor",!1),a(this,"tryAssignColor",()=>{const e=P.getComponentInParent(this.gameObject,Ms);if(e&&e.owner)return this._didAssignPlayerColor=!0,this.assignUserColor(e.owner),!0;const t=P.getComponentInParent(this.gameObject,hi);return t!=null&&t.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(t.connectionId),!0):!1})}onEnable(){this.context.connection.beginListen(ie.JoinedRoom,this.tryAssignColor),this._didAssignPlayerColor||this.startCoroutine(this.waitForConnection())}onDisable(){this.context.connection.stopListen(ie.JoinedRoom,this.tryAssignColor)}*waitForConnection(){for(;!this.destroyed&&this.activeAndEnabled&&(yield wf(.2),!this.tryAssignColor()););}assignUserColor(e){const t=Nl.hashCode(e),s=Nl.colorFromHashCode(t);if(this.gameObject.type==="Mesh"){const o=this.gameObject;this.assignColor(s,e,o)}else if(this.gameObject.children)for(const o of this.gameObject.children){const r=o;r.material&&r.material.color&&this.assignColor(s,e,r)}}assignColor(e,t,s){let o=s.material;o&&(o._playerMaterial!==t&&(o=o.clone(),o._playerMaterial=t,s.material=o),o.color=e)}static hashCode(e){var t=0,s,o;if(e.length===0)return t;for(s=0;s<e.length;s++)o=e.charCodeAt(s),t=(t<<5)-t+o,t|=0;return t}static colorFromHashCode(e){const t=(e&16711680)>>16,s=(e&65280)>>8,o=e&255;return new oe(t/255,s/255,o/255)}}const vh=C("debugpost");let Ey=null;function M2(n){Ey=n}function mS(n){let e=n.gameObject;for(;e;){for(const t of hu(e))if(t.isPostProcessingManager===!0)return t;e=e.parent}return null}function R2(n){let e=mS(n);if(!e)if(Ey){vh&&console.warn("Adding postprocessing manager to the scene.");const t=n.scene;e=Ei(t,Ey)}else F()&&console.warn("No post processing manager found");return e}const ft={AT_START:-1e4,NormalPass:0,DepthDownsamplingPass:10,SSAO:20,SMAA:30,TiltShift:40,DepthOfField:50,ChromaticAberration:60,Bloom:70,Vignette:80,Pixelation:90,ToneMapping:100,HueSaturation:110,BrightnessContrast:120,Sharpening:130,AT_END:1e4};let ot=null;function T2(n){vh==="verbose"&&console.debug("Before ordering effects",[...n]),ot||(ot=new Map,ot.set(A.POSTPROCESSING.MODULE.NormalPass,ft.NormalPass),ot.set(A.POSTPROCESSING.MODULE.DepthDownsamplingPass,ft.DepthDownsamplingPass),ot.set(A.POSTPROCESSING.MODULE.SMAAEffect,ft.SMAA),ot.set(A.POSTPROCESSING.MODULE.SSAOEffect,ft.SSAO),ot.set(A.POSTPROCESSING_AO.MODULE.N8AOPostPass,ft.SSAO),ot.set(A.POSTPROCESSING_AO.MODULE.N8AOPass,ft.SSAO),ot.set(A.POSTPROCESSING.MODULE.TiltShiftEffect,ft.TiltShift),ot.set(A.POSTPROCESSING.MODULE.DepthOfFieldEffect,ft.DepthOfField),ot.set(A.POSTPROCESSING.MODULE.ChromaticAberrationEffect,ft.ChromaticAberration),ot.set(A.POSTPROCESSING.MODULE.BloomEffect,ft.Bloom),ot.set(A.POSTPROCESSING.MODULE.SelectiveBloomEffect,ft.Bloom),ot.set(A.POSTPROCESSING.MODULE.VignetteEffect,ft.Vignette),ot.set(A.POSTPROCESSING.MODULE.PixelationEffect,ft.Pixelation),ot.set(A.POSTPROCESSING.MODULE.ToneMappingEffect,ft.ToneMapping),ot.set(A.POSTPROCESSING.MODULE.HueSaturationEffect,ft.HueSaturation),ot.set(A.POSTPROCESSING.MODULE.BrightnessContrastEffect,ft.BrightnessContrast)),n.sort((e,t)=>{const s=typeof e.priority=="number"?e.priority:ot.get(e.effect.constructor)??Number.NEGATIVE_INFINITY,o=typeof t.priority=="number"?t.priority:ot.get(t.effect.constructor)??Number.NEGATIVE_INFINITY;return s===Number.NEGATIVE_INFINITY?(vh&&console.warn("Unknown effect found: ",e.constructor.name,e),1):o===Number.NEGATIVE_INFINITY?(vh&&console.warn("Unknown effect found: ",t.constructor.name,t),-1):s-o}),vh==="verbose"&&console.debug("After ordering effects",[...n])}var E2=Object.defineProperty,A2=Object.getOwnPropertyDescriptor,gS=(n,e,t,s)=>{for(var o=A2(e,t),r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&E2(e,t,o),o};const I2=C("debugpost");class N{constructor(e){a(this,"isVolumeParameter",!0),a(this,"_isInitialized",!1),a(this,"_active",!0),a(this,"_value"),a(this,"_valueRaw"),a(this,"_defaultValue"),a(this,"valueProcessor"),a(this,"onValueChanged"),e!==void 0&&this.initialize(e)}get isInitialized(){return this._isInitialized}initialize(e){e!==void 0&&(this._value=e,this._defaultValue=e,this._valueRaw=e,this._isInitialized=!0)}get overrideState(){return this._active}set overrideState(e){if(this._active===e)return;this._active=e;const t=e?this._valueRaw:this._defaultValue;this.processValue(t,!0)}get value(){return this._valueRaw}set value(e){this.isInitialized||this.initialize(e),this.processValue(e,!1)}set defaultValue(e){this._defaultValue=e}__init(){this.processValue(this._valueRaw,!0)}processValue(e,t){if(e==null||!t&&this.testIfValueChanged(e)===!1)return;const s=this._value;I2&&typeof s=="number"&&typeof e=="number"&&(s?.toFixed(4),e?.toFixed(4)),!this._active&&this._defaultValue!==void 0?(this._value=this._defaultValue,e=this._defaultValue,this._valueRaw=e):(this._valueRaw=e,this._active&&this.valueProcessor&&(e=this.valueProcessor(e)),this._value=e),this.onValueChanged&&this.onValueChanged(e,s,this)}testIfValueChanged(e){return this._valueRaw!==e}}gS([m()],N.prototype,"overrideState"),gS([m()],N.prototype,"value");class L2 extends es{constructor(){super([N])}onSerialize(e,t){}onDeserialize(e,t){const s=t.target,o=t.path;let r;if(s&&o&&(r=s[o]),(typeof r!="object"||typeof r=="object"&&r.isVolumeParameter!==!0)&&(r=new N),typeof e=="object"&&"value"in e){const l=e.value;r.initialize(l),r.overrideState=e.overrideState}else r.value=e;return r}}new L2;var j2=Object.defineProperty,D2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&j2(e,t,o),o};const Ay=C("debugpost");class rt extends I{constructor(e=void 0){if(super(),a(this,"order"),a(this,"active",!0),a(this,"_manager",null),a(this,"_result"),a(this,"_postprocessingContext",null),e)for(const t of Object.keys(e)){const s=e[t],o=this[t];o instanceof N?o.initialize(s):o!==void 0&&(this[t]=s)}}get isPostProcessingEffect(){return!0}onEnable(){super.onEnable(),Ay&&console.warn("Enable",this.constructor.name+(this.__internalDidAwakeAndStart?"":" (awake)")),this.__internalDidAwakeAndStart&&(this.active=!0),this.onEffectEnabled()}onDisable(){var e;super.onDisable(),Ay&&console.warn("Disable",this.constructor.name),(e=this._manager)==null||e.removeEffect(this),this.active=!1}onEffectEnabled(e){e&&e.isPostProcessingManager===!0?this._manager=e:this._manager||(this._manager=R2(this)),this._manager.addEffect(this),this._manager.dirty=!0}init(){}get postprocessingContext(){return this._postprocessingContext}apply(e){var t;return this._postprocessingContext=e,this._result||(this.initParameters(),this._result=(t=this.onCreateEffect)==null?void 0:t.call(this)),this._result&&this.initParameters(),this._result}unapply(){}dispose(){Ay&&console.warn("DISPOSE",this),this._result&&(Array.isArray(this._result)?this._result.forEach(e=>e.dispose()):this._result.dispose()),this._result=void 0}initParameters(){const e=Object.keys(this);for(const t of e){const s=this[t];s instanceof N&&s.__init()}}onEditorModification(e){const t=e.propertyName;if(this[t]instanceof N){const s=e.value;return this[t].value=s,!0}}}D2([m()],rt.prototype,"active");var B2=Object.defineProperty,F2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&B2(e,t,o),o};const U2=C("debugpost"),Iy={};function us(n,e){Iy[n]=e}function z2(n){return n.__type in Iy?Iy[n.__type]:(U2&&n.__type&&console.warn("Unknown postprocessing type",n.__type,n),rt)}class Fp{constructor(){a(this,"components",[])}__init(e){var t;(t=this.components)==null||t.forEach(s=>{s.gameObject===void 0&&e.gameObject.addComponent(s),s.init()})}addEffect(e){this.components.push(e)}removeEffect(e){const t=this.components.indexOf(e);t>=0&&this.components.splice(t,1)}}F2([Dr([n=>z2(n),rt])],Fp.prototype,"components");var N2=Object.defineProperty,W2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&N2(e,t,o),o};const V2=C("debugpost");class bh extends rt{constructor(){super(...arguments),a(this,"preset",new N(2))}get typeName(){return"Antialiasing"}onCreateEffect(){var e;const t=new A.POSTPROCESSING.MODULE.SMAAEffect({preset:((e=this.preset)==null?void 0:e.value)??A.POSTPROCESSING.MODULE.SMAAPreset.HIGH,edgeDetectionMode:A.POSTPROCESSING.MODULE.EdgeDetectionMode.LUMA});return this.preset.onValueChanged=s=>{V2&&console.log("Antialiasing preset changed to",s,t),t.applyPreset(s)},t}}W2([m(N)],bh.prototype,"preset"),us("Antialiasing",bh);var $2=Object.defineProperty,Ly=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&$2(e,t,o),o},Up;const zp=(Up=class extends rt{constructor(){super(...arguments),a(this,"threshold",new N(.9)),a(this,"intensity",new N(1)),a(this,"scatter",new N(.7)),a(this,"selectiveBloom")}get typeName(){return"Bloom"}init(){this.threshold.valueProcessor=n=>n,this.intensity.valueProcessor=n=>n,this.scatter.valueProcessor=n=>n}onCreateEffect(){let n;if(this.selectiveBloom==null&&(this.selectiveBloom=Up.useSelectiveBloom),this.selectiveBloom){const e=n=new A.POSTPROCESSING.MODULE.SelectiveBloomEffect(this.context.scene,this.context.mainCamera,{blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});e.inverted=!0}else n=new A.POSTPROCESSING.MODULE.BloomEffect({blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});return this.intensity.onValueChanged=e=>{n.intensity=e},this.threshold.onValueChanged=e=>{n.luminanceMaterial.threshold=Math.pow(e,2.2)},this.scatter.onValueChanged=e=>{n.luminancePass.enabled=!0,n.luminanceMaterial.smoothing=e,n.mipmapBlurPass&&(n.mipmapBlurPass.radius=Cn.lerp(.1,.9,e))},n}},a(Up,"useSelectiveBloom",!1),Up);Ly([m(N)],zp.prototype,"threshold"),Ly([m(N)],zp.prototype,"intensity"),Ly([m(N)],zp.prototype,"scatter");let Np=zp;us("Bloom",Np);var H2=Object.defineProperty,G2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&H2(e,t,o),o};class _h extends rt{constructor(){super(...arguments),a(this,"intensity",new N(0))}get typeName(){return"ChromaticAberration"}onCreateEffect(){const e=new A.POSTPROCESSING.MODULE.ChromaticAberrationEffect;return e.offset=new re(0,0),e.radialModulation=!0,e.modulationOffset=.15,this.intensity.valueProcessor=t=>t*.02,this.intensity.onValueChanged=t=>{e.offset.x=-t,e.offset.y=t},e}}G2([m(N)],_h.prototype,"intensity"),us("ChromaticAberration",_h);var wh=(n=>(n[n.None=0]="None",n[n.Neutral=1]="Neutral",n[n.ACES=2]="ACES",n[n.AgX=3]="AgX",n[n.KhronosNeutral=4]="KhronosNeutral",n))(wh||{});const fS=new Map;function jy(n){switch(n){case 0:return Um;case 1:return Fm;case 2:return vd;case 3:return yd;case 4:return Pa;default:return fS.has(n)||(fS.set(n,!0),console.warn("[Postprocessing] Unknown tone mapping mode",n)),Pa}}function q2(n){switch(n){case Um:return 0;case vd:return 2;case yd:return 3;case Pa:return 1;case Fm:return 1;default:return 0}}function Wp(n){switch(n){case Um:return A.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR;case vd:return A.POSTPROCESSING.MODULE.ToneMappingMode.ACES_FILMIC;case yd:return A.POSTPROCESSING.MODULE.ToneMappingMode.AGX;case Pa:return A.POSTPROCESSING.MODULE.ToneMappingMode.NEUTRAL;case Fm:return A.POSTPROCESSING.MODULE.ToneMappingMode.REINHARD;default:return A.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR}}var X2=Object.defineProperty,yS=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&X2(e,t,o),o};const Dy=C("debugpost");class nr extends rt{constructor(){super(...arguments),a(this,"mode",new N(void 0)),a(this,"exposure",new N(1)),a(this,"_tonemappingEffect",null)}get typeName(){return"ToneMapping"}setMode(e){const t=wh[e];return t===void 0?(console.error("[PostProcessing] Invalid ToneMapping mode",e),this):(this.mode.value=t,this)}get isToneMapping(){return!0}onEffectEnabled(){const e=mS(this);e&&super.onEffectEnabled(e)}onCreateEffect(){var e;if(this.mode.isInitialized==!1){const o=q2(this.context.renderer.toneMapping);Dy&&console.log("[PostProcessing] Initializing ToneMapping mode to renderer.toneMapping",this.context.renderer.toneMapping+" \u2192 "+o),this.mode.initialize(o)}(e=this._tonemappingEffect)==null||e.dispose();const t=jy(this.mode.value),s=this._tonemappingEffect=new A.POSTPROCESSING.MODULE.ToneMappingEffect({mode:Wp(t)});return this.mode.onValueChanged=o=>{if(typeof o=="string")o=Gw(o),s.mode=Wp(o);else{const r=jy(o);s.mode=Wp(r)}s.name="ToneMapping ("+wh[o]+")",Dy&&console.log("[PostProcessing] ToneMapping mode changed to",wh[o],t,s.mode)},Dy&&console.log("[PostProcessing] Use ToneMapping",wh[this.mode.value],t,s.mode,"renderer.tonemapping: "+this.context.renderer.toneMapping),s}onBeforeRender(){var e;if(this._tonemappingEffect&&(e=this.postprocessingContext)!=null&&e.handler.getEffectIsActive(this._tonemappingEffect)&&(this.mode.overrideState&&(this.context.renderer.toneMapping=jy(this.mode.value)),this.exposure.overrideState&&this.exposure.value!==void 0)){const t=Math.max(.01,this.exposure.value);this.context.renderer.toneMappingExposure=t}}}yS([m(N)],nr.prototype,"mode"),yS([m(N)],nr.prototype,"exposure"),us("Tonemapping",nr);var Q2=Object.defineProperty,Vp=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&Q2(e,t,o),o};class or extends rt{constructor(){super(...arguments),a(this,"remap",!0),a(this,"postExposure",new N(1)),a(this,"contrast",new N(0)),a(this,"hueShift",new N(0)),a(this,"saturation",new N(0))}get typeName(){return"ColorAdjustments"}init(){this.postExposure.valueProcessor=e=>(this.remap&&(e=Math.pow(2,e)),e),this.contrast.valueProcessor=e=>{if(!this.remap)return e;let t=1;return e>0?t=200:e<0&&(t=100),e/t},this.contrast.defaultValue=0,this.hueShift.valueProcessor=e=>this.remap?Math.PI*e/180:e,this.hueShift.defaultValue=0,this.saturation.valueProcessor=e=>this.remap?e<0?e/100:e/(100*Math.PI):e,this.saturation.defaultValue=0}onCreateEffect(){var e,t;const s=[];let o=(e=this.postprocessingContext)==null?void 0:e.components.find(c=>c instanceof nr);o||(o=new nr,(t=this.postprocessingContext)==null||t.components.push(o)),this.postExposure.onValueChanged=c=>{this.postExposure.overrideState&&o?o.exposure.value=c:console.warn("[PostProcessing] PostExposure is set to override but no ToneMappingEffect found in the postprocessing stack. Please add a ToneMappingEffect to your postprocessing stack to use PostExposure.")};const r=new A.POSTPROCESSING.MODULE.BrightnessContrastEffect;this.contrast.onValueChanged=c=>r.contrast=c;const l=new A.POSTPROCESSING.MODULE.HueSaturationEffect;return this.hueShift.onValueChanged=c=>l.hue=c,this.saturation.onValueChanged=c=>l.saturation=c,s.push(r),s.push(l),s}}Vp([m(N)],or.prototype,"postExposure"),Vp([m(N)],or.prototype,"contrast"),Vp([m(N)],or.prototype,"hueShift"),Vp([m(N)],or.prototype,"saturation"),us("ColorAdjustments",or);var Y2=Object.defineProperty,ra=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&Y2(e,t,o),o};const K2=C("debugpost");class As extends rt{constructor(){super(...arguments),a(this,"mode"),a(this,"focusDistance",new N(1)),a(this,"focalLength",new N(.2)),a(this,"aperture",new N(20)),a(this,"gaussianMaxRadius",new N),a(this,"resolutionScale",new N(1/window.devicePixelRatio)),a(this,"bokehScale",new N)}get typeName(){return"DepthOfField"}init(){this.focalLength.valueProcessor=t=>{const s=t/300;return W.lerp(2,.01,s)};const e=20;this.aperture.valueProcessor=t=>{const s=1-t/32;return W.lerp(1,e,s)}}onCreateEffect(){if(this.mode===0){K2&&console.warn("DepthOfField: Mode is set to Off");return}const e=new A.POSTPROCESSING.MODULE.DepthOfFieldEffect(this.context.mainCamera,{worldFocusRange:.2,focalLength:1,bokehScale:20,resolutionScale:this.resolutionScale.value});return this.focusDistance.onValueChanged=t=>{e.cocMaterial.worldFocusDistance=t},this.focalLength.onValueChanged=t=>e.cocMaterial.worldFocusRange=t,this.aperture.onValueChanged=t=>e.bokehScale=t,this.resolutionScale&&(this.resolutionScale.onValueChanged=t=>e.resolution.scale=t),[e]}unapply(){}}ra([m()],As.prototype,"mode"),ra([m(N)],As.prototype,"focusDistance"),ra([m(N)],As.prototype,"focalLength"),ra([m(N)],As.prototype,"aperture"),ra([m(N)],As.prototype,"gaussianMaxRadius"),ra([m(N)],As.prototype,"resolutionScale"),ra([m(N)],As.prototype,"bokehScale"),us("DepthOfField",As);class xh extends rt{constructor(e){super(),a(this,"effect"),this.effect=e}get typeName(){return this.effect.constructor.name}onCreateEffect(){return this.effect}}var Z2=Object.defineProperty,J2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&Z2(e,t,o),o};class Sh extends rt{constructor(){super(...arguments),a(this,"granularity",new N(10))}get typeName(){return"PixelationEffect"}onCreateEffect(){const e=new A.POSTPROCESSING.MODULE.PixelationEffect;return this.granularity.onValueChanged=t=>{e.granularity=t},e}}J2([m(N)],Sh.prototype,"granularity"),us("PixelationEffect",Sh);var eI=Object.defineProperty,Ch=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&eI(e,t,o),o};class to extends rt{constructor(){super(...arguments),a(this,"intensity",new N(2)),a(this,"falloff",new N(1)),a(this,"samples",new N(9)),a(this,"color",new N(new oe(0,0,0))),a(this,"luminanceInfluence",new N(.7)),a(this,"_ssao")}get typeName(){return"ScreenSpaceAmbientOcclusion"}onBeforeRender(){if(this._ssao&&this.context.mainCamera instanceof we){const e=this.context.mainCamera.far-this.context.mainCamera.near;this._ssao.ssaoMaterial.worldDistanceFalloff=e*.01,this._ssao.ssaoMaterial.worldDistanceThreshold=this.context.mainCamera.far}}onCreateEffect(){const e=this.context.mainCamera,t=new A.POSTPROCESSING.MODULE.NormalPass(this.context.scene,e),s=new A.POSTPROCESSING.MODULE.DepthDownsamplingPass({normalBuffer:t.texture,resolutionScale:.5}),o=this._ssao=new A.POSTPROCESSING.MODULE.SSAOEffect(e,t.texture,{normalDepthBuffer:s.texture,worldDistanceThreshold:1,worldDistanceFalloff:1,worldProximityThreshold:.1,worldProximityFalloff:2,intensity:1,blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.MULTIPLY,luminanceInfluence:.5});this.intensity.onValueChanged=l=>{o.intensity=l},this.falloff.onValueChanged=l=>{o.ssaoMaterial.radius=l*.1},this.samples.onValueChanged=l=>{o.ssaoMaterial.samples=l},this.color.onValueChanged=l=>{o.color||(o.color=new oe),o.color.copy(l)},this.luminanceInfluence.onValueChanged=l=>{o.luminanceInfluence=l};const r=new Array;return r.push(t),r.push(s),r.push(o),r}}Ch([m(N)],to.prototype,"intensity"),Ch([m(N)],to.prototype,"falloff"),Ch([m(N)],to.prototype,"samples"),Ch([m(N)],to.prototype,"color"),Ch([m(N)],to.prototype,"luminanceInfluence"),us("ScreenSpaceAmbientOcclusion",to);var tI=Object.defineProperty,aa=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&tI(e,t,o),o};const iI=C("debugN8AO");var By=(n=>(n[n.Performance=0]="Performance",n[n.Low=1]="Low",n[n.Medium=2]="Medium",n[n.High=3]="High",n[n.Ultra=4]="Ultra",n))(By||{});class Is extends rt{constructor(){super(...arguments),a(this,"gammaCorrection",!0),a(this,"aoRadius",new N(1)),a(this,"falloff",new N(1)),a(this,"intensity",new N(1)),a(this,"color",new N(new oe(0,0,0))),a(this,"screenspaceRadius",!1),a(this,"quality",2),a(this,"_ssao")}get typeName(){return"ScreenSpaceAmbientOcclusionN8"}get pass(){return this._ssao}onValidate(){this._ssao&&(this._ssao.setQualityMode(By[this.quality]),this._ssao.configuration.gammaCorrection=this.gammaCorrection,this._ssao.configuration.screenSpaceRadius=this.screenspaceRadius)}onCreateEffect(){const e=this.context.mainCamera,t=this.context.domWidth,s=this.context.domHeight,o=this._ssao=new A.POSTPROCESSING_AO.MODULE.N8AOPostPass(this.context.scene,e,t,s);o.name="SSAO N8";const r=By[this.quality];o.setQualityMode(r),o.configuration.transparencyAware=!1;const l=new $s(t,s);return o.configuration.beautyRenderTarget=l,o.configuration.autoRenderBeauty=!1,o.configuration.gammaCorrection=this.gammaCorrection,o.configuration.screenSpaceRadius=this.screenspaceRadius,iI&&(o.enableDebugMode(),console.log(o),setInterval(()=>{console.log("SSAO",o.lastTime)},1e3),setInterval(()=>{console.log("SSAO",o.enabled,{ssao:o,autoRenderBeauty:o.configuration.autoRenderBeauty})},4e3)),this.intensity.onValueChanged=c=>{o.configuration.intensity=c},this.falloff.onValueChanged=c=>{o.configuration.distanceFalloff=c},this.aoRadius.onValueChanged=c=>{o.configuration.aoRadius=c},this.color.onValueChanged=c=>{o.color||(o.color=new oe),o.configuration.color.copy(c)},o}}aa([Tt(),m()],Is.prototype,"gammaCorrection"),aa([m(N)],Is.prototype,"aoRadius"),aa([m(N)],Is.prototype,"falloff"),aa([m(N)],Is.prototype,"intensity"),aa([m(N)],Is.prototype,"color"),aa([Tt(),m()],Is.prototype,"screenspaceRadius"),aa([Tt(),m()],Is.prototype,"quality"),us("ScreenSpaceAmbientOcclusionN8",Is);var sI=Object.defineProperty,nI=Object.getOwnPropertyDescriptor,vS=(n,e,t,s)=>{for(var o=nI(e,t),r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&sI(e,t,o),o};class Ph extends rt{constructor(){super(...arguments),a(this,"order",ft.Sharpening),a(this,"_effect"),a(this,"_amount",1),a(this,"_radius",1)}get typeName(){return"Sharpening"}onCreateEffect(){return this._effect??(this._effect=new(oI())),this.effect}get effect(){return this._effect}set amount(e){this._amount=e,this._effect&&(this._effect.uniforms.get("amount").value=e)}get amount(){return this._effect?this._effect.uniforms.get("amount").value:this._amount}set radius(e){this._radius=e,this._effect&&(this._effect.uniforms.get("radius").value=e)}get radius(){return this._effect?this._effect.uniforms.get("radius").value:this._radius}}vS([m()],Ph.prototype,"amount"),vS([m()],Ph.prototype,"radius");function oI(){const n=`
1273
+ `)}l&&r.size&&console.log(p);const y=new Set;for(const _ of f){_.getPath||console.error("USDZExporter: Animation target object has no getPath method. This is likely a bug",_);let w=_.getPath();w.startsWith("<")&&(w=w.substring(1)),w.endsWith(">")&&(w=w.substring(0,w.length-1)),y.add({path:w,obj:_})}const v=Array.from(y).sort((_,w)=>_.path.length-w.path.length),b=new Array;for(let _=0;_<v.length;_++)for(let w=_+1;w<v.length;w++)if(v[w].path.startsWith(v[_].path)){const x=v[w],k=v[_];b.push({child:x.obj.displayName+" ("+x.path+")",parent:k.obj.displayName+" ("+k.path+")"})}b.length&&console.warn("USDZExporter: There are overlapping PlayAnimation actions. This can lead to undefined runtime behaviour when playing multiple animations. Please restructure the hierarchy so that animations don't overlap.",{overlappingTargets:b,playAnimationActions:r})}for(const p of new Set([...t,...s]))if(Array.isArray(p))for(const g of p)o.add(g.uuid);else o.add(p.uuid);xp&&console.log("All Behavior trigger sources and action targets",t,s,o),this.targetUuids=new Set(o)}onAfterHierarchy(e,t){var s;if((s=this.behaviours)!=null&&s.length){t.beginBlock('def Scope "Behaviors"');for(const o of this.behaviours)o.writeTo(this,e.document,t);t.closeBlock()}}async onAfterSerialize(e){xp&&console.log("onAfterSerialize behaviours",this.behaviourComponentsCopy);for(const t of this.behaviourComponentsCopy)typeof t.afterSerialize=="function"&&(t.afterSerialize.constructor.name==="AsyncFunction"?await t.afterSerialize(this,e):t.afterSerialize(this,e));for(const{clipUrl:t,filesKey:s}of this.audioClipsCopy){if(e.files[s])return;const o=await(await(await fetch(t)).blob()).arrayBuffer(),r=new Uint8Array(o);e.files[s]=r}this.behaviourComponentsCopy.length=0,this.audioClipsCopy.length=0}}class J0{get extensionName(){return"Physics"}onExportObject(e,t,s){const o=P.getComponents(e,dt).filter(h=>h.enabled),r=P.getComponents(e,ui).filter(h=>h.enabled&&!h.isTrigger);let l=o.length>0?o[0]:null;const c=r.length>0?r[0]:null;c&&!l&&(l=new dt,l.isKinematic=!0),l&&t.addEventListener("serialize",(h,d)=>{var u,p,g;if(l){if(h.appendLine(),h.beginBlock('def RealityKitComponent "RigidBody"',"{",!0),l.useGravity||h.appendLine("bool gravityEnabled = 0"),h.appendLine('uniform token info:id = "RealityKit.RigidBody"'),l.isKinematic&&h.appendLine('token motionType = "Kinematic"'),h.beginBlock('def RealityKitStruct "massFrame"',"{",!0),h.appendLine(`float m_mass = ${l.mass}`),h.beginBlock('def RealityKitStruct "m_pose"',"{",!0),h.appendLine(`float3 position = (${l.centerOfMass.x}, ${l.centerOfMass.y}, ${l.centerOfMass.z})`),h.closeBlock("}"),h.closeBlock("}"),r.length>0){const f=r[0];h.beginBlock('def RealityKitStruct "material"',"{",!0);const y=f.sharedMaterial;y&&y.dynamicFriction!==void 0&&h.appendLine(`double dynamicFriction = ${(u=f.sharedMaterial)==null?void 0:u.dynamicFriction}`),y&&y.bounciness!==void 0&&h.appendLine(`double restitution = ${(p=f.sharedMaterial)==null?void 0:p.bounciness}`),y&&y.staticFriction!==void 0&&h.appendLine(`double staticFriction = ${(g=f.sharedMaterial)==null?void 0:g.staticFriction}`),h.closeBlock("}")}h.closeBlock("}")}}),c&&(t.addEventListener("serialize",(h,d)=>{var u;h.beginBlock('def RealityKitComponent "Collider"',"{",!0),h.appendLine("uint group = 1"),h.appendLine('uniform token info:id = "RealityKit.Collider"'),h.appendLine("uint mask = 4294967295");const p=c.isTrigger?"Trigger":"Default";if(h.appendLine(`token type = "${p}"`),h.beginBlock('def RealityKitStruct "Shape"',"{",!0),c instanceof el){const g=c;h.appendLine('token shapeType = "Sphere"'),h.appendLine(`float radius = ${g.radius}`)}else if(c instanceof Nu){const g=c;h.appendLine('token shapeType = "Box"'),h.appendLine(`float3 extent = (${g.size.x}, ${g.size.y}, ${g.size.z})`)}else if(c instanceof Wn){const g=c;h.appendLine('token shapeType = "Capsule"'),h.appendLine(`float radius = ${g.radius}`),h.appendLine(`float height = ${g.height}`)}else if(c instanceof Fo&&(u=c.sharedMesh)!=null&&u.geometry){const g=c.sharedMesh.geometry;g.boundingBox||g.computeBoundingBox();const f=c.sharedMesh.geometry.boundingBox;f&&(h.appendLine('token shapeType = "Box"'),h.appendLine(`float3 extent = (${f.max.x-f.min.x}, ${f.max.y-f.min.y}, ${f.max.z-f.min.z})`),console.log("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. MeshCollider will be exported as Box",c))}else console.warn("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. Ignoring collider:",c);h.beginBlock('def RealityKitStruct "pose"',"{",!0),h.closeBlock("}"),h.closeBlock("}"),h.closeBlock("}")}),r.length>1&&console.log("WARNING: Multiple colliders detected. visionOS / iOS can only support objects with a single collider, only exporting the first collider: ",c))}}const RA=C("debugshadowcomponents");eb.prototype.interactable={get(){return this.interactive},set(n){this.interactable=n}};class ps extends I{constructor(){super(...arguments),a(this,"_shadowComponent",null),a(this,"_controlsChildLayout",!0),a(this,"_root"),a(this,"_parentComponent")}isRoot(){var e;return((e=this.Root)==null?void 0:e.gameObject)===this.gameObject}get canvas(){const e=this.Root;return e!=null&&e.isCanvas?e:null}get Canvas(){return this.canvas}markDirty(){ii.markUIDirty(this.context)}get shadowComponent(){return this._shadowComponent}set shadowComponent(e){this._shadowComponent=e}get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}get Root(){return this._root===void 0&&(this._root=P.getComponentInParent(this.gameObject,oh)),this._root}__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this.shadowComponent=null,this._root=void 0,this._parentComponent=void 0,this}onEnable(){super.onEnable()}addShadowComponent(e,t){var s;if(!e)return;this.removeShadowComponent();const o=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=P.getComponentInParent(o,ps),!this._parentComponent){console.warn(`Component "${this.name}" doesn't have a UI parent anywhere. Do you have an UI element outside a Canvas? UI components must be a child of a Canvas component`,this);return}e.name=this.name+" ("+(this.constructor.name??"UI")+")",e.autoLayout=this._parentComponent.controlsChildLayout,e[Mi]=this,this.setShadowComponentOwner(e);let r=!1;if(((s=this.Root)==null?void 0:s.gameObject)===this.gameObject)this.gameObject.add(e);else{const l=this._parentComponent.shadowComponent;l&&(l?.add(e),r=!0)}this.shadowComponent=e,t&&t.shadowComponent&&this.shadowComponent&&t.shadowComponent.add(this.shadowComponent),yc&&e.add(new Ci(.5)),this.onAfterAddedToScene(),r&&kO(),RA&&console.warn("Added shadow component",this.shadowComponent)}setShadowComponentOwner(e){if(e&&(e[Mi]===void 0||e[Mi]===this)&&(e[Mi]=this,e.children))for(const t of e.children)this.setShadowComponentOwner(t)}traverseOwnedShadowComponents(e,t,s){if(e&&e[Mi]===t){s(e);for(const o of e.children)this.traverseOwnedShadowComponents(o,t,s)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}}class oh extends ps{awake(){super.awake()}}var TA=Object.defineProperty,EA=Object.getOwnPropertyDescriptor,rh=(n,e,t,s)=>{for(var o=s>1?void 0:s?EA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&TA(e,t,o),o};const ey=C("debugui"),ty=C("debuguilayout");class K1{constructor(){a(this,"width"),a(this,"height")}}class Z1{constructor(){a(this,"x"),a(this,"y"),a(this,"width"),a(this,"height")}}const Rs=new S,ah=new se,Sp=new V,vl=class OC extends ps{constructor(){super(...arguments),a(this,"_anchoredPosition"),a(this,"sizeDelta",new re(100,100)),a(this,"pivot",new re(.5,.5)),a(this,"anchorMin",new re(0,0)),a(this,"anchorMax",new re(1,1)),a(this,"minWidth"),a(this,"minHeight"),a(this,"lastMatrix"),a(this,"rectBlock"),a(this,"_transformNeedsUpdate",!1),a(this,"_initialPosition"),a(this,"_parentRectTransform"),a(this,"_lastUpdateFrame",-1),a(this,"_lastAnchoring"),a(this,"_createdBlocks",[]),a(this,"_createdTextBlocks",[])}get parent(){return this._parentRectTransform}get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}get anchoredPosition(){return this._anchoredPosition||(this._anchoredPosition=new re),this._anchoredPosition}set anchoredPosition(e){this._anchoredPosition=e}get width(){let e=this.sizeDelta.x;if(this.anchorMin.x!==this.anchorMax.x&&this._parentRectTransform){const t=this._parentRectTransform.width,s=this.anchorMax.x-this.anchorMin.x;e=t*s,e+=this.sizeDelta.x}return this.minWidth!==void 0&&e<this.minWidth?this.minWidth:e}get height(){let e=this.sizeDelta.y;if(this.anchorMin.y!==this.anchorMax.y&&this._parentRectTransform){const t=this._parentRectTransform.height,s=this.anchorMax.y-this.anchorMin.y;e=t*s,e+=this.sizeDelta.y}return this.minHeight!==void 0&&e<this.minHeight?this.minHeight:e}awake(){super.awake(),this._lastUpdateFrame=-1,this._parentRectTransform=void 0,this.rectBlock=new E,this.rectBlock.name=this.name,this.lastMatrix=new se,this._lastAnchoring=null,this._initialPosition=this.gameObject.position.clone(),this._initialPosition.z=0,this._anchoredPosition||(this._anchoredPosition=new re),Ka(this,"_anchoredPosition",()=>{this.markDirty()}),Ka(this,"sizeDelta",()=>{this.markDirty()}),Ka(this,"pivot",()=>{this.markDirty()}),Ka(this,"anchorMin",()=>{this.markDirty()}),Ka(this,"anchorMax",()=>{this.markDirty()})}onEnable(){var e;super.onEnable(),this.rectBlock||(this.rectBlock=new E),this.lastMatrix||(this.lastMatrix=new se),this._lastAnchoring||(this._lastAnchoring=new re),this._initialPosition||(this._initialPosition=new S),this._anchoredPosition||(this._anchoredPosition=new re),this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0,(e=this.canvas)==null||e.registerTransform(this)}onDisable(){var e;super.onDisable(),this.removeShadowComponent(),(e=this.canvas)==null||e.unregisterTransform(this)}onParentRectTransformChanged(e){this._transformNeedsUpdate||this.onApplyTransform(ty?`${e.name} changed`:void 0)}get isDirty(){return this._transformNeedsUpdate||(this._transformNeedsUpdate=!this.lastMatrix.equals(this.gameObject.matrix)),this._transformNeedsUpdate}markDirty(){this._transformNeedsUpdate||(ty&&console.warn("RectTransform markDirty()",this.name),this._transformNeedsUpdate=!0,this._lastUpdateFrame=-1)}updateTransform(){(this._transformNeedsUpdate||!this.lastMatrix.equals(this.gameObject.matrix))&&this.canUpdate()&&this.onApplyTransform(this._transformNeedsUpdate?"Marked dirty":"Matrix changed")}canUpdate(){return this._transformNeedsUpdate&&this.activeAndEnabled&&this._lastUpdateFrame!==this.context.time.frame}onApplyTransform(e){var t;if(this.context.time.frameCount===this._lastUpdateFrame)return;this._lastUpdateFrame=this.context.time.frameCount;const s=this.shadowComponent;if(!s)return;this.gameObject.parent?this._parentRectTransform=P.getComponentInParent(this.gameObject.parent,OC):this._parentRectTransform=void 0,this._transformNeedsUpdate=!1,ty&&console.warn("RectTransform \u2192 ApplyTransform",this.name+" because "+e),this.isRoot()?this.Root.screenspace||(s.rotation.y=Math.PI):(s.matrix.identity(),s.matrixAutoUpdate=!1,Rs.set(0,0,0),this.applyPivot(Rs),s.matrix.setPosition(Rs.x,Rs.y,0),(this.gameObject.quaternion.x||this.gameObject.quaternion.y||this.gameObject.quaternion.z)&&(Sp.copy(this.gameObject.quaternion),Sp.x*=-1,Sp.z*=-1,ah.makeRotationFromQuaternion(Sp),s.matrix.premultiply(ah)),Rs.set(0,0,0),this.applyAnchoring(Rs),(t=this.canvas)!=null&&t.screenspace?Rs.z+=.1:Rs.z+=.01,ah.identity(),ah.setPosition(Rs.x,Rs.y,Rs.z),s.matrix.premultiply(ah),s.matrix.scale(this.gameObject.scale)),this.lastMatrix.copy(this.gameObject.matrix);const o=!0;for(const r of hu(this.gameObject,ps,o,1)){if(r===this||!r.activeAndEnabled)continue;const l=r;l.onParentRectTransformChanged&&l.onParentRectTransformChanged(this)}}applyAnchoring(e){this._lastAnchoring||(this._lastAnchoring=new re);const t=this._lastAnchoring.sub(this._anchoredPosition);this.gameObject.position.x+=t.x,this.gameObject.position.y+=t.y,this._lastAnchoring.copy(this._anchoredPosition),e.x+=this._initialPosition.x-this.gameObject.position.x,e.y+=this._initialPosition.y-this.gameObject.position.y,e.z+=this._initialPosition.z-this.gameObject.position.z;const s=this._parentRectTransform;if(s){let o=0;const r=1-this.anchorMax.y-this.anchorMin.y;o-=s.height*.5*r,e.y+=o;let l=0;const c=1-this.anchorMax.x-this.anchorMin.x;l-=s.width*.5*c,e.x+=l}}applyPivot(e){if(this.pivot&&!this.isRoot()){const t=this.pivot.x-.5;e.x-=t*this.sizeDelta.x*this.gameObject.scale.x;const s=this.pivot.y-.5;e.y-=s*this.sizeDelta.y*this.gameObject.scale.y}}getBasicOptions(){const e={width:this.sizeDelta.x,height:this.sizeDelta.y,offset:0,backgroundOpacity:0,borderWidth:0,borderRadius:0,borderOpacity:0,letterSpacing:-.03};return this.ensureValidSize(e),e}ensureValidSize(e,t=1e-4){return e.width<=0&&(e.width=t),e.height<=0&&(e.height=1e-4),e}createNewBlock(e){e={...this.getBasicOptions(),...e},ey&&console.log(this.name,e);const t=new eb(e);return this._createdBlocks.push(t),t}createNewText(e){ey&&console.log(e),e={...this.getBasicOptions(),...e},ey&&console.log(this.name,e);const t=new Jv(e);return this._createdTextBlocks.push(t),t}};rh([m(re)],vl.prototype,"anchoredPosition",1),rh([m(re)],vl.prototype,"sizeDelta",2),rh([m(re)],vl.prototype,"pivot",2),rh([m(re)],vl.prototype,"anchorMin",2),rh([m(re)],vl.prototype,"anchorMax",2);let Ts=vl;var AA=Object.defineProperty,J1=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&AA(e,t,o),o};class bl extends I{constructor(){super(...arguments),a(this,"effectColor"),a(this,"effectDistance")}}J1([m(he)],bl.prototype,"effectColor"),J1([m(re)],bl.prototype,"effectDistance");var IA=Object.defineProperty,LA=Object.getOwnPropertyDescriptor,eS=(n,e,t,s)=>{for(var o=s>1?void 0:s?LA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&IA(e,t,o),o};const Cp={backgroundColor:new oe(1,1,1),backgroundOpacity:1,borderColor:new oe(1,1,1),borderOpacity:1};var Qr;const iy=(Qr=class extends ps{constructor(){super(...arguments),a(this,"_alphaFactor",1),a(this,"sRGBColor",new oe(1,0,1)),a(this,"raycastTarget",!0),a(this,"uiObject",null),a(this,"_color",null),a(this,"_rect",null),a(this,"_stateManager",null),a(this,"_currentlyCreatingPanel",!1)}get isGraphic(){return!0}get color(){return this._color||(this._color=new he(1,1,1,1)),this._color}set color(n){(!this._color||this._color.r!==n.r||this._color.g!==n.g||this._color.b!==n.b||this._color.alpha!==n.alpha)&&(this._color||(this._color=new he(1,1,1,1)),this._color.copy(n),this.onColorChanged())}setAlphaFactor(n){this._alphaFactor=n,this.onColorChanged()}get alphaFactor(){return this._alphaFactor}onColorChanged(){this.uiObject&&(this.sRGBColor.copy(this._color),this.sRGBColor.convertLinearToSRGB(),Cp.backgroundColor=this.sRGBColor,Cp.backgroundOpacity=this._color.alpha*this._alphaFactor,this.applyEffects(Cp,this._alphaFactor),this.uiObject.set(Cp),this.markDirty())}get m_Color(){return this._color}get rectTransform(){if(this._rect||(this._rect=P.getComponent(this.gameObject,Ts)),!this._rect)throw new Error("Not Supported: Make sure to add a RectTransform component before adding a UI Graphic component.");return this._rect}onParentRectTransformChanged(){var n;(n=this.uiObject)==null||n.set({width:this.rectTransform.width,height:this.rectTransform.height}),this.markDirty()}__internalNewInstanceCreated(n){return super.__internalNewInstanceCreated(n),this._rect=null,this.uiObject=null,this._stateManager=null,this._color&&(this._color=this._color.clone()),this}setState(n){this.makePanel(),this.uiObject&&(this.uiObject.setState(n),this==null||this.markDirty())}setupState(n){this.makePanel(),this.uiObject&&(this._stateManager||(this._stateManager=new MO(this.uiObject)),this.uiObject.setupState(n.state,n.attributes))}setOptions(n){this.makePanel(),this.uiObject&&this.uiObject.set(n)}awake(){super.awake(),this.makePanel(),Ka(this,"_color",()=>RT(this,this.onColorChanged))}onEnable(){var n;super.onEnable(),this.uiObject&&((n=this.rectTransform.shadowComponent)==null||n.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;const n={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:.015};this.onBeforeCreate(n),this.applyEffects(n),this.onCreate(n),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated(),this.onColorChanged()}onBeforeCreate(n){}onCreate(n){this.uiObject=this.rectTransform.createNewBlock(n),this.uiObject.name=this.name}onAfterCreated(){}applyEffects(n,e=1){var t;const s=(t=this.gameObject)==null?void 0:t.getComponent(bl);s&&(s.effectDistance&&(n.borderWidth=Math.max(Math.abs(s.effectDistance.x),Math.abs(s.effectDistance.y))),s.effectColor&&(n.borderColor=s.effectColor,n.borderOpacity=s.effectColor.alpha*e))}async setTexture(n){if(this.setOptions({backgroundOpacity:0}),n){if(Qr.textureCache.has(n))n=Qr.textureCache.get(n);else if(!n.isRenderTargetTexture){const e=n.clone();e.colorSpace=On,Qr.textureCache.set(n,e),n=e}this.setOptions({backgroundImage:n,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:"stretch"}),Xe.assignTextureLOD(n,0).then(e=>{e instanceof je&&(n&&Qr.textureCache.set(n,e),this.setOptions({backgroundImage:e}),this.markDirty())})}else this.setOptions({backgroundImage:void 0,borderRadius:0,backgroundOpacity:this.color.alpha});this.markDirty()}onAfterAddedToScene(){super.onAfterAddedToScene(),this.shadowComponent&&(this.shadowComponent.offset=this.shadowComponent.position.z)}},a(Qr,"textureCache",new Map),Qr);eS([m(he)],iy.prototype,"color",1),eS([m()],iy.prototype,"raycastTarget",2);let lh=iy;class ch extends lh{constructor(){super(...arguments),a(this,"_flippedObject",!1)}onAfterCreated(){this.uiObject&&!this._flippedObject&&(this._flippedObject=!0,this.uiObject.scale.y*=-1)}}var jA=Object.defineProperty,DA=Object.getOwnPropertyDescriptor,Kn=(n,e,t,s)=>{for(var o=s>1?void 0:s?DA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&jA(e,t,o),o};const Yr=C("debugtext");var mt=(n=>(n[n.UpperLeft=0]="UpperLeft",n[n.UpperCenter=1]="UpperCenter",n[n.UpperRight=2]="UpperRight",n[n.MiddleLeft=3]="MiddleLeft",n[n.MiddleCenter=4]="MiddleCenter",n[n.MiddleRight=5]="MiddleRight",n[n.LowerLeft=6]="LowerLeft",n[n.LowerCenter=7]="LowerCenter",n[n.LowerRight=8]="LowerRight",n))(mt||{}),tS=(n=>(n[n.Normal=0]="Normal",n[n.Bold=1]="Bold",n[n.Italic=2]="Italic",n[n.BoldAndItalic=3]="BoldAndItalic",n))(tS||{});class Nt extends lh{constructor(){super(...arguments),a(this,"alignment",0),a(this,"verticalOverflow",0),a(this,"horizontalOverflow",0),a(this,"lineSpacing",1),a(this,"supportRichText",!1),a(this,"font"),a(this,"fontStyle",0),a(this,"sRGBTextColor",new oe(1,0,1)),a(this,"_text",""),a(this,"_fontSize",12),a(this,"_textMeshUi",null),a(this,"_didHandleTextRenderOnTop",!1)}setAlphaFactor(e){var t;super.setAlphaFactor(e),(t=this.uiObject)==null||t.set({fontOpacity:this.color.alpha*this.alphaFactor}),this.markDirty()}get text(){return this._text}set text(e){e!==this._text&&(this._text=e,this.feedText(this.text,this.supportRichText),this.markDirty())}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){var t;this._fontSize=e,(t=this.uiObject)==null||t.set({fontSize:e})}onColorChanged(){var e;this.sRGBTextColor.copy(this.color),this.sRGBTextColor.convertLinearToSRGB(),(e=this.uiObject)==null||e.set({color:this.sRGBTextColor,fontOpacity:this.color.alpha})}onParentRectTransformChanged(){super.onParentRectTransformChanged(),this.uiObject&&this.updateOverflow()}onBeforeCanvasRender(e){this.updateOverflow()}updateOverflow(){var e;const t=(e=this.uiObject)==null?void 0:e._overflow;t&&(t._needsUpdate=!0)}onCreate(e){Yr&&console.log(this),this.horizontalOverflow==1&&(e.whiteSpace="pre"),this.verticalOverflow==0&&(this.context.renderer.localClippingEnabled=!0,e.overflow="hidden"),this.horizontalOverflow==1&&this.verticalOverflow==0,e.lineHeight=this.lineSpacing,delete e.backgroundOpacity,delete e.backgroundColor,Yr&&(e.backgroundColor=16750848,e.backgroundOpacity=.5);const t=this.rectTransform;e={...e,...this.getTextOpts()},this.getAlignment(e),Yr&&(e.backgroundColor=Math.random()*16777215,e.backgroundOpacity=.1),this.uiObject=t.createNewText(e),this.feedText(this.text,this.supportRichText)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}getTextOpts(){const e=this.fontSize,t={color:this.color,fontOpacity:this.color.alpha,fontSize:e,fontKerning:"normal"};return this.setFont(t,this.fontStyle),t}onEnable(){var e;super.onEnable(),this._didHandleTextRenderOnTop=!1,this.uiObject&&this.uiObject.addAfterUpdate(()=>{this.setShadowComponentOwner(this.uiObject),this.markDirty()}),setTimeout(()=>this.markDirty(),10),(e=this.canvas)==null||e.registerEventReceiver(this)}onDisable(){var e;super.onDisable(),(e=this.canvas)==null||e.unregisterEventReceiver(this)}getAlignment(e){switch(e.flexDirection="column",this.alignment){case 0:case 3:case 6:e.textAlign="left";break;case 1:case 4:case 7:e.textAlign="center";break;case 2:case 5:case 8:e.textAlign="right";break}switch(this.alignment){default:case 0:case 1:case 2:e.alignItems="start";break;case 3:case 4:case 5:e.alignItems="center";break;case 6:case 7:case 8:e.alignItems="end";break}return e}feedText(e,t){var s,o,r;if(Yr&&console.log("feedText",this.uiObject,e,t),!!this.uiObject)if(this._textMeshUi||(this._textMeshUi=[]),this.uiObject.children.length=0,!t||e.length===0)this.uiObject.textContent=e;else{let l=this.getNextTag(e);if(l){if(l.startIndex>0){for(let d=this.uiObject.children.length-1;d>=0;d--){const u=this.uiObject.children[d];u.isUI&&(this.uiObject.remove(u),u.clear())}const h=new Gm({textContent:e.substring(0,l.startIndex),color:"inherit"});this.uiObject.add(h)}}else{this.uiObject.textContent="",this.setOptions({textContent:e});return}const c=[];for(;l;){const h=this.getNextTag(e,l.endIndex),d={fontFamily:(s=this.uiObject)==null?void 0:s.get("fontFamily"),color:"inherit",textContent:""};if(h){d.textContent=this.getText(e,l,h),this.handleTag(l,d,c);const u=new Gm(d);(o=this.uiObject)==null||o.add(u)}else{d.textContent=e.substring(l.endIndex),this.handleTag(l,d,c);const u=new Gm(d);(r=this.uiObject)==null||r.add(u)}l=h}}}handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;const e=[],t=this.canvas,s={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let o=!1;if(this._textMeshUi)for(let r=0;r<this._textMeshUi.length;r++){if(e[r]===!0)continue;o=!0;const l=this._textMeshUi[r];l.textContent&&(Iu(l,s),e[r]=!0)}if(!o)break;yield}}handleTag(e,t,s){if(!e.isEndTag){if(e.type.includes("color")){const o=new sy(e,{color:t.color});if(s.push(o),e.type.length>6){const r=parseInt("0x"+e.type.substring(7));t.color=r}else t.color=new oe(1,1,1)}else if(e.type=="b"){this.setFont(t,1);const o=new sy(e,{fontWeight:700});s.push(o)}else if(e.type=="i"){this.setFont(t,2);const o=new sy(e,{fontStyle:"italic"});s.push(o)}}}getText(e,t,s){return e.substring(t.endIndex,s.startIndex)}getNextTag(e,t=0){const s=e.indexOf("<",t),o=e.indexOf(">",s);if(s>=0&&o>=0){const r=e.substring(s+1,o);return{type:r,startIndex:s,endIndex:o+1,isEndTag:r.startsWith("/")}}return null}setFont(e,t){if(!this.font)return;const s=this.font,o=this.getFamilyNameWithCorrectSuffix(s,t);Yr&&console.log("Selected font family:"+o);let r=tb.getFontFamily(o);switch(r||(r=tb.addFontFamily(o)),e.fontFamily=r,t){default:case 0:e.fontWeight=400,e.fontStyle="normal";break;case 1:e.fontWeight=700,e.fontStyle="normal";break;case 2:e.fontWeight=400,e.fontStyle="italic";break;case 3:e.fontStyle="italic",e.fontWeight=400}let l=r.getVariant(e.fontWeight,e.fontStyle);if(!l){let c=o;c!=null&&c.endsWith("-msdf.json")||(c+="-msdf.json");let h=o;h!=null&&h.endsWith(".png")||(h+=".png"),l=r.addVariant(e.fontWeight,e.fontStyle,c,h),l?.addEventListener("ready",()=>{this.markDirty()})}}getFamilyNameWithCorrectSuffix(e,t){var s;const o=e.lastIndexOf("-");if(o<0)return e;const r=(s=e.substring(o+1))==null?void 0:s.toLowerCase();if(BA.includes(r))return Yr&&console.warn("Unsupported font style: "+r),e;const l=e.lastIndexOf("/");let c=e;l>=0&&(c=c.substring(l+1));const h=c[0]===c[0].toUpperCase(),d=e.substring(0,o);switch(Yr&&console.log("Select font: ",e,tS[t],c,h,d),t){case 0:return h?d+"-Regular":d+"-regular";case 1:return h?d+"-Bold":d+"-bold";case 2:return h?d+"-Italic":d+"-italic";case 3:return h?d+"-BoldItalic":d+"-bolditalic";default:return e}}}Kn([m()],Nt.prototype,"alignment",2),Kn([m()],Nt.prototype,"verticalOverflow",2),Kn([m()],Nt.prototype,"horizontalOverflow",2),Kn([m()],Nt.prototype,"lineSpacing",2),Kn([m()],Nt.prototype,"supportRichText",2),Kn([m(URL)],Nt.prototype,"font",2),Kn([m()],Nt.prototype,"fontStyle",2),Kn([m()],Nt.prototype,"text",1),Kn([m()],Nt.prototype,"fontSize",1);class sy{constructor(e,t){a(this,"tag"),a(this,"previousValues"),this.tag=e,this.previousValues=t}}const BA=["medium","mediumitalic","black","blackitalic","thin","thinitalic","extrabold","light","lightitalic","semibold"];class Kr{constructor(e){a(this,"id"),a(this,"content",""),a(this,"font",[]),a(this,"pointSize",144),a(this,"width"),a(this,"height"),a(this,"depth"),a(this,"wrapMode"),a(this,"horizontalAlignment"),a(this,"verticalAlignment"),a(this,"material"),this.id=e}static getId(){return this.global_id++}setDepth(e){return this.depth=e,this}setPointSize(e){return this.pointSize=e,this}setHorizontalAlignment(e){return this.horizontalAlignment=e,this}setVerticalAlignment(e){return this.verticalAlignment=e,this}writeTo(e,t){var s;t.beginBlock(`def Preliminary_Text "${this.id}"`,"(",!1),t.appendLine('prepend apiSchemas = ["MaterialBindingAPI"]'),t.closeBlock(")"),t.beginBlock(),this.content&&t.appendLine(`string content = "${this.content}"`),(!this.font||this.font.length<=0)&&(this.font||(this.font=[]),(s=this.font)==null||s.push("sans-serif"));const o=this.font.map(r=>`"${r}"`).join(", ");t.appendLine(`string[] font = [ ${o} ]`),t.appendLine(`double pointSize = ${this.pointSize}`),typeof this.width=="number"&&t.appendLine(`double width = ${this.width}`),typeof this.height=="number"&&t.appendLine(`double height = ${this.height}`),typeof this.depth=="number"&&t.appendLine(`double depth = ${this.depth}`),this.wrapMode&&t.appendLine(`token wrapMode = "${this.wrapMode}"`),this.horizontalAlignment&&t.appendLine(`token horizontalAlignment = "${this.horizontalAlignment}"`),this.verticalAlignment&&t.appendLine(`token verticalAlignment = "${this.verticalAlignment}"`),this.material!==void 0&&t.appendLine(`rel material:binding = </StageRoot/Materials/${ap(this.material)}>`),t.closeBlock()}}a(Kr,"global_id",0);class ny{static singleLine(e,t,s){const o=new Kr("text_"+Kr.getId());return o.content=e,t&&(o.pointSize=t),s&&(o.depth=s),o}static multiLine(e,t,s,o,r,l){const c=new Kr("text_"+Kr.getId());return c.content=e,c.width=t,c.height=s,c.horizontalAlignment=o,c.verticalAlignment=r,l!==void 0&&(c.wrapMode=l),c}}const FA=new se().makeRotationY(Math.PI),UA=new se().makeScale(-1,1,-1);class Pp{get extensionName(){return"text"}exportText(e,t,s){const o=P.getComponent(e,Nt);if(!o)return;const r=P.getComponent(e,Ts);let l=100,c=100;r&&(l=r.width,c=r.height);const h=FA.clone();r&&h.premultiply(UA),t.setMatrix(h);const d=o.color.clone();t.material=new bt({color:d,emissive:d}),t.addEventListener("serialize",(u,p)=>{let g=o.text;g=g.replace(/\r/g,""),g=g.replace(/\n/g,"\\n");const f=ny.multiLine(g,l,c,"center","bottom","flowing");this.setTextAlignment(f,o.alignment),this.setOverflow(f,o),t.material&&(f.material=t.material),f.pointSize=this.convertToTextSize(o.fontSize),f.depth=.001,f.writeTo(void 0,u)})}convertToTextSize(e){return 1/.0502*144*e}setOverflow(e,t){t.horizontalOverflow?e.wrapMode="singleLine":e.wrapMode="flowing"}setTextAlignment(e,t){switch(t){case mt.LowerLeft:case mt.MiddleLeft:case mt.UpperLeft:e.horizontalAlignment="left";break;case mt.LowerCenter:case mt.MiddleCenter:case mt.UpperCenter:e.horizontalAlignment="center";break;case mt.LowerRight:case mt.MiddleRight:case mt.UpperRight:e.horizontalAlignment="right";break}switch(t){case mt.LowerLeft:case mt.LowerCenter:case mt.LowerRight:e.verticalAlignment="bottom";break;case mt.MiddleLeft:case mt.MiddleCenter:case mt.MiddleRight:e.verticalAlignment="middle";break;case mt.UpperLeft:case mt.UpperCenter:case mt.UpperRight:e.verticalAlignment="top";break}}}var zA=Object.defineProperty,it=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&zA(e,t,o),o};const iS=C("debuguilayout");class Zr{constructor(){a(this,"left",0),a(this,"right",0),a(this,"top",0),a(this,"bottom",0)}get vertical(){return this.top+this.bottom}get horizontal(){return this.left+this.right}}it([m()],Zr.prototype,"left"),it([m()],Zr.prototype,"right"),it([m()],Zr.prototype,"top"),it([m()],Zr.prototype,"bottom");class Wi extends I{constructor(){super(...arguments),a(this,"_rectTransform",null),a(this,"_needsUpdate",!1),a(this,"childAlignment",0),a(this,"reverseArrangement",!1),a(this,"spacing",0),a(this,"padding"),a(this,"minWidth",0),a(this,"minHeight",0),a(this,"flexibleHeight",0),a(this,"flexibleWidth",0),a(this,"preferredHeight",0),a(this,"preferredWidth",0)}get rectTransform(){return this._rectTransform}onParentRectTransformChanged(e){this._needsUpdate=!0}get isDirty(){return this._needsUpdate}get isLayoutGroup(){return!0}updateLayout(){this._rectTransform&&(iS&&console.warn("Layout Update",this.context.time.frame,this.name),this._needsUpdate=!1,this.onCalculateLayout(this._rectTransform))}start(){this._needsUpdate=!0}onEnable(){iS&&console.log(this.name,this),this._rectTransform=this.gameObject.getComponent(Ts);const e=this.gameObject.getComponentInParent(_l);e&&e.registerLayoutGroup(this),this._needsUpdate=!0}onDisable(){const e=this.gameObject.getComponentInParent(_l);e&&e.unregisterLayoutGroup(this)}set m_Spacing(e){e!==this.spacing&&(this._needsUpdate=!0,this.spacing=e)}get m_Spacing(){return this.spacing}}it([m()],Wi.prototype,"childAlignment"),it([m()],Wi.prototype,"reverseArrangement"),it([m()],Wi.prototype,"spacing"),it([m(Zr)],Wi.prototype,"padding"),it([m()],Wi.prototype,"minWidth"),it([m()],Wi.prototype,"minHeight"),it([m()],Wi.prototype,"flexibleHeight"),it([m()],Wi.prototype,"flexibleWidth"),it([m()],Wi.prototype,"preferredHeight"),it([m()],Wi.prototype,"preferredWidth");class Yo extends Wi{constructor(){super(...arguments),a(this,"childControlHeight",!0),a(this,"childControlWidth",!0),a(this,"childForceExpandHeight",!1),a(this,"childForceExpandWidth",!1),a(this,"childScaleHeight",!1),a(this,"childScaleWidth",!1)}onCalculateLayout(e){var t;const s=this.primaryAxis,o=e.width;let r=o;const l=e.height;let c=l;r-=this.padding.horizontal,c-=this.padding.vertical,s==="x"?this.padding.horizontal:this.padding.vertical;const h=s==="x",d=h?"y":"x",u=h?this.childControlWidth:this.childControlHeight,p=h?this.childControlHeight:this.childControlWidth,g=h?this.childForceExpandWidth:this.childForceExpandHeight,f=h?this.childForceExpandHeight:this.childForceExpandWidth,y=h?c:r,v=h?o:l,b=.5*(h?this.childAlignment%3:Math.floor(this.childAlignment/3));let _=0;h?_+=this.padding.left:_+=this.padding.top;let w=0,x=0;for(let D=0;D<this.gameObject.children.length;D++){const z=this.gameObject.children[D],j=P.getComponent(z,Ts);j!=null&&j.activeAndEnabled&&(x+=1,h?w+=j.width:w+=j.height)}let k=0;const M=this.spacing*(x-1);if(g||u){let D=0;h?D=r-=M:D=c-=M,x>0&&(k=D/x)}let T=0;T+=this.padding.left,T-=this.padding.right,b!==0&&(_=v-w,_*=b,_-=M*b,h?(_-=this.padding.right*b,_+=this.padding.left*(1-b),_<this.padding.left&&(_=this.padding.left)):(_-=this.padding.bottom*b,_+=this.padding.top*(1-b),_<this.padding.top&&(_=this.padding.top)));let L=1;for(let D=0;D<this.gameObject.children.length;D++){const z=this.gameObject.children[D],j=P.getComponent(z,Ts);if(j!=null&&j.activeAndEnabled){(t=j.pivot)==null||t.set(.5,.5),j.anchorMin.set(0,1),j.anchorMax.set(0,1);const H=o*.5+T*.5;j.anchoredPosition.x!==H&&(j.anchoredPosition.x=H);const K=l*-.5;j.anchoredPosition.y!==K&&(j.anchoredPosition.y=K),f&&p&&j.sizeDelta[d]!==y&&(j.sizeDelta[d]=y),g&&u&&j.sizeDelta[s]!==k&&(j.sizeDelta[s]=k);const U=h?j.width:j.height,B=U*.5;if(_+=B,g){const te=k*L-k*.5;te>_&&(_=te-k*.5+U+this.padding.left,_-=B)}let Q=_;s==="y"&&(Q=-Q),j.anchoredPosition[s]!==Q&&(j.anchoredPosition[s]=Q),_+=B,_+=this.spacing,L+=1}}}}it([m()],Yo.prototype,"childControlHeight"),it([m()],Yo.prototype,"childControlWidth"),it([m()],Yo.prototype,"childForceExpandHeight"),it([m()],Yo.prototype,"childForceExpandWidth"),it([m()],Yo.prototype,"childScaleHeight"),it([m()],Yo.prototype,"childScaleWidth");class oy extends Yo{get primaryAxis(){return"y"}}class ry extends Yo{get primaryAxis(){return"x"}}class ay extends Wi{onCalculateLayout(){}}var NA=Object.defineProperty,WA=Object.getOwnPropertyDescriptor,mn=(n,e,t,s)=>{for(var o=s>1?void 0:s?WA(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&NA(e,t,o),o},sS=(n=>(n[n.ScreenSpaceOverlay=0]="ScreenSpaceOverlay",n[n.ScreenSpaceCamera=1]="ScreenSpaceCamera",n[n.WorldSpace=2]="WorldSpace",n[n.Undefined=-1]="Undefined",n))(sS||{});const ly=C("debuguilayout"),cs=class kC extends oh{constructor(){super(...arguments),a(this,"_renderOnTop"),a(this,"_depthWrite",!1),a(this,"_doubleSided",!0),a(this,"_castShadows",!1),a(this,"_receiveShadows",!1),a(this,"_renderMode",-1),a(this,"_rootCanvas"),a(this,"_scaleFactor",1),a(this,"worldCamera"),a(this,"planeDistance",-1),a(this,"_boundRenderSettingsChanged",this.onRenderSettingsChanged.bind(this)),a(this,"previousParent",null),a(this,"_lastMatrixWorld",null),a(this,"_rectTransforms",[]),a(this,"_layoutGroups",new Map),a(this,"_receivers",[]),a(this,"onBeforeRenderRoutine",()=>{var e,t,s,o;if(this.previousParent=this.gameObject.parent,((e=this.context.xr)!=null&&e.isVR||(t=this.context.xr)!=null&&t.isPassThrough)&&this.screenspace){this.gameObject.visible=!1,this.gameObject.removeFromParent();return}this.renderOnTop||this.screenspace?this.gameObject.removeFromParent():(this.onUpdateRenderMode(),this.handleLayoutUpdates(),(s=this.shadowComponent)==null||s.updateMatrixWorld(!0),(o=this.shadowComponent)==null||o.updateWorldMatrix(!0,!0),this.invokeBeforeRenderEvents(),ii.ensureUpdateMeshUI(ib,this.context))}),a(this,"onAfterRenderRoutine",()=>{var e,t,s,o,r;if(((e=this.context.xr)!=null&&e.isVR||(t=this.context.xr)!=null&&t.isPassThrough)&&this.screenspace){(s=this.previousParent)==null||s.add(this.gameObject);return}if((this.screenspace||this.renderOnTop)&&this.previousParent&&this.context.mainCamera){if(this.screenspace){const h=this.context.mainCamera;h?.add(this.gameObject)}else this.previousParent.add(this.gameObject);const l=this.context.renderer.autoClear,c=this.context.renderer.autoClearColor;this.context.renderer.autoClear=!1,this.context.renderer.autoClearColor=!1,this.context.renderer.clearDepth(),this.onUpdateRenderMode(!0),this.handleLayoutUpdates(),(o=this.shadowComponent)==null||o.updateMatrixWorld(!0),this.invokeBeforeRenderEvents(),ii.ensureUpdateMeshUI(ib,this.context,!0),this.context.renderer.render(this.gameObject,this.context.mainCamera),this.context.renderer.autoClear=l,this.context.renderer.autoClearColor=c,this.previousParent.add(this.gameObject)}(r=this._lastMatrixWorld)==null||r.copy(this.gameObject.matrixWorld)}),a(this,"_updateRenderSettingsRoutine"),a(this,"_activeRenderMode",-1),a(this,"_lastWidth",-1),a(this,"_lastHeight",-1)}get isCanvas(){return!0}get screenspace(){return this.renderMode!==2}set renderOnTop(e){e!==this._renderOnTop&&(this._renderOnTop=e,this.onRenderSettingsChanged())}get renderOnTop(){return this._renderOnTop!==void 0?this._renderOnTop:!!(this.screenspace&&this._renderMode===0)}set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}set rootCanvas(e){this._rootCanvas instanceof kC||(this._rootCanvas=e)}get rootCanvas(){return this._rootCanvas}get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}awake(){var e;this.shadowComponent=this.gameObject,this.previousParent=this.gameObject.parent,ly&&console.log("Canvas.Awake()",((e=this.previousParent)==null?void 0:e.name)+"/"+this.gameObject.name),super.awake()}start(){this.applyRenderSettings()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this._lastMatrixWorld=new se,this.applyRenderSettings(),document.addEventListener("resize",this._boundRenderSettingsChanged),this.context.pre_render_callbacks.push(this.onBeforeRenderRoutine),this.context.post_render_callbacks.push(this.onAfterRenderRoutine)}onDisable(){super.onDisable(),document.removeEventListener("resize",this._boundRenderSettingsChanged);const e=this.context.pre_render_callbacks.indexOf(this.onBeforeRenderRoutine);e!==-1&&this.context.pre_render_callbacks.splice(e,1);const t=this.context.post_render_callbacks.indexOf(this.onAfterRenderRoutine);t!==-1&&this.context.post_render_callbacks.splice(t,1)}registerTransform(e){this._rectTransforms.push(e)}unregisterTransform(e){const t=this._rectTransforms.indexOf(e);t!==-1&&this._rectTransforms.splice(t,1)}registerLayoutGroup(e){const t=e.gameObject;this._layoutGroups.set(t,e)}unregisterLayoutGroup(e){const t=e.gameObject;this._layoutGroups.delete(t)}registerEventReceiver(e){this._receivers.push(e)}unregisterEventReceiver(e){const t=this._receivers.indexOf(e);t!==-1&&this._receivers.splice(t,1)}async onEnterXR(e){this.screenspace?(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!1):(this.gameObject.visible=!1,await Xl(1).then(()=>{this.gameObject.visible=!0}))}onLeaveXR(e){this.screenspace&&(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!0)}invokeBeforeRenderEvents(){var e;for(const t of this._receivers)(e=t.onBeforeCanvasRender)==null||e.call(t,this)}handleLayoutUpdates(){this._lastMatrixWorld===null&&(this._lastMatrixWorld=new se);const e=!this._lastMatrixWorld.equals(this.gameObject.matrixWorld);ly&&e&&console.log("Canvas Layout changed",this.context.time.frameCount,this.name);for(const t of this._rectTransforms){e&&t.markDirty();let s=this._layoutGroups.get(t.gameObject);t.isDirty&&!s&&(s=t.gameObject.getComponentInParent(Wi)),(t.isDirty||s!=null&&s.isDirty)&&(ly&&console.log("CANVAS UPDATE ### "+t.name+" ##################################### "+this.context.time.frame),s?.updateLayout(),t.updateTransform())}}applyRenderSettings(){this.onRenderSettingsChanged()}onRenderSettingsChanged(){this._updateRenderSettingsRoutine||(this._updateRenderSettingsRoutine=this.startCoroutine(this._updateRenderSettingsDelayed(),Oe.OnBeforeRender))}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.onUpdateRenderMode(),Iu(this.shadowComponent,this);for(const e of P.getComponentsInChildren(this.gameObject,ps))Iu(e.shadowComponent,this)}}onUpdateRenderMode(e=!1){if(!e&&this._renderMode===this._activeRenderMode&&this._lastWidth===this.context.domWidth&&this._lastHeight===this.context.domHeight)return;this._activeRenderMode=this._renderMode;let t=this.context.mainCameraComponent,s=10;switch(t&&t.nearClipPlane>0&&t.farClipPlane>0&&(s=W.lerp(t.nearClipPlane,t.farClipPlane,.01)),this._renderMode===1&&(this.worldCamera&&(t=this.worldCamera),this.planeDistance>0&&(s=this.planeDistance)),this._renderMode){case 0:case 1:if(this._lastWidth=this.context.domWidth,this._lastHeight=this.context.domHeight,!t)return;const o=s+.01;this.gameObject.position.x=0,this.gameObject.position.y=0,this.gameObject.position.z=-o,this.gameObject.quaternion.identity();const r=this.gameObject.getComponent(Ts);let l=!1;r.sizeDelta.x!==this.context.domWidth&&(l=!0),r.sizeDelta.y!==this.context.domHeight&&(l=!0);const c=t.fieldOfView*Math.PI/180,h=2*Math.tan(c/2)*Math.abs(o);this.gameObject.scale.x=h/this.context.domHeight,this.gameObject.scale.y=h/this.context.domHeight,this.gameObject.scale.z=.01,l&&(r.sizeDelta.x=this.context.domWidth,r.sizeDelta.y=this.context.domHeight,r?.markDirty());break;case 2:this._lastWidth=-1,this._lastHeight=-1;break}}};mn([m()],cs.prototype,"renderOnTop",1),mn([m()],cs.prototype,"depthWrite",1),mn([m()],cs.prototype,"doubleSided",1),mn([m()],cs.prototype,"castShadows",1),mn([m()],cs.prototype,"receiveShadows",1),mn([m()],cs.prototype,"renderMode",1),mn([m(cs)],cs.prototype,"rootCanvas",1),mn([m()],cs.prototype,"scaleFactor",1),mn([m(ci)],cs.prototype,"worldCamera",2),mn([m()],cs.prototype,"planeDistance",2);let _l=cs;var VA=Object.defineProperty,$A=Object.getOwnPropertyDescriptor,cy=(n,e,t,s)=>{for(var o=s>1?void 0:s?$A(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&VA(e,t,o),o};class Ko extends I{constructor(){super(...arguments),a(this,"_alpha",1),a(this,"interactable",!0),a(this,"blocksRaycasts",!0),a(this,"_isDirty",!1),a(this,"_buffer",[])}get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),Oe.OnBeforeRender))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}applyChangesNow(){this._buffer.length=0;for(const e of P.getComponentsInChildren(this.gameObject,ps,this._buffer)){const t=e;t.setAlphaFactor&&t.setAlphaFactor(this._alpha)}}}cy([m()],Ko.prototype,"alpha",1),cy([m()],Ko.prototype,"interactable",2),cy([m()],Ko.prototype,"blocksRaycasts",2);class hy{get extensionName(){return"tmui"}onExportObject(e,t,s){const o=P.getComponent(e,_l);if(o&&o.enabled&&o.renderMode===sS.WorldSpace){const r=new Pp,l=P.getComponent(e,Ts),c=P.getComponent(e,Ko),h=new Array;if(l){if(!P.isActiveSelf(e)){const p=P.isActiveSelf(e);P.setActive(e,!0),l.onEnable(),l.updateTransform(),h.push(()=>{l.onDisable(),P.setActive(e,p)})}e.traverse(p=>{if(!P.isActiveInHierarchy(p)){const g=P.isActiveSelf(p);P.setActive(p,!0);const f=P.getComponent(p,ps);f&&(f.onEnable(),h.push(()=>{f.onDisable()}));const y=P.getComponent(p,Ts);y&&(y.onEnable(),y.updateTransform(),y.onApplyTransform(),h.push(()=>{y.onDisable()}));const v=P.getComponent(p,Nt);v&&(v.onEnable(),h.push(()=>{v.onDisable()})),h.push(()=>{P.setActive(p,g)})}}),l.width,l.height;const d=mi.createEmpty(),u=l.shadowComponent;if(t.add(d),u){const p=u.matrix;d.setMatrix(p);const g=new Map,f=new Map;g.set(u,d),f.set(u,c?c.alpha:1),u.traverse(y=>{if(y===u)return;const v=mi.createEmpty();v.setMatrix(y.matrix);const b=y.parent,_=!!b&&typeof b.textContent=="string"&&b.textContent.length>0;let w=f.get(b)||1;const x=P.getComponent(y,Ko);if(x&&(w*=x.alpha),y instanceof G&&_){const M=y[Mi];M?r.exportText(M.gameObject,v,s):console.error("Error when exporting UI: shadow component owner not found. This is likely a bug.",y)}if(y instanceof G&&!_){const M=y.geometry.clone();M.scale(1,1,-1),this.flipWindingOrder(M),v.geometry=M;const T=new oe,L=y.material.opacity;T.copy(y.material.color),v.material=new Me({color:T,opacity:L*w,map:y.material.map,transparent:!0})}g.set(y,v),f.set(y,w);const k=g.get(b);if(!k){console.error("Error when exporting UI: shadow component parent not found!",y,y.parent);return}k.add(v)})}}for(const d of h)d()}}flipWindingOrder(e){const t=e.index.array;for(let s=0,o=t.length/3;s<o;s++){const r=t[s*3];t[s*3]=t[s*3+2],t[s*3+2]=r}e.index.needsUpdate=!0}}const hh=C("debugusdz");function HA(n,e){var t;const s=[],o=P.getComponentsInChildren(n,Rt),r=P.getComponentsInChildren(n,Ft),l=new Array,c=new Array;if(e.injectImplicitBehaviours)for(const h of o){if(!h||!h.runtimeAnimatorController||!h.enabled)continue;const d=h.runtimeAnimatorController.activeState;if(!d||!d.motion||!d.motion.clip||((t=d.motion.clip.tracks)==null?void 0:t.length)<1||l.includes(h))continue;const u=new Jc;u.animator=h,u.stateName=d.name,u.trigger="start",u.name="PlayAnimationOnClick_implicitAtStart_"+u.stateName;const p=new E;P.addComponent(p,u),c.push(p),l.push(h),n.add(p)}else for(const h of o){if(!h||!h.runtimeAnimatorController||!h.enabled)continue;hh&&console.log(h);const d=[];for(const u of h.runtimeAnimatorController.enumerateActions()){hh&&console.log(u);const p=u.getClip();d.includes(p)||d.push(p)}s.push({root:h.gameObject,clips:d})}if(e.injectImplicitBehaviours)for(const h of r){if(!h||!h.clip||!h.enabled||!h.playAutomatically||l.includes(h))continue;const d=new Jc;d.animation=h,d.stateName=h.clip.name,d.trigger="start",d.name="PlayAnimationOnClick_implicitAtStart_"+d.stateName;const u=new E;P.addComponent(u,d),c.push(u),l.push(h),n.add(u)}else for(const h of r){hh&&console.log(h);const d=[];for(const u of h.animations)d.includes(u)||d.push(u);s.push({root:h.gameObject,clips:d})}hh&&s?.length>0&&console.log("USDZ Animation Clips without behaviours",s);for(const h of s)for(const d of h.clips)e.registerAnimation(h.root,d);return c}function GA(n,e){const t=P.getComponentsInChildren(n,ns),s=P.getComponentsInChildren(n,Vo),o=new Array,r=new Array;hh&&console.log({audioSources:t,playAudioOnClicks:s});for(const l of s){if(!l.target)continue;const c=t.indexOf(l.target);c>-1&&t.splice(c,1)}for(const l of t){if(!l||!l.clip||l.volume<=0||o.includes(l))continue;const c=new Vo;c.target=l,c.name="PlayAudioOnClick_implicitAtStart_",c.trigger="start";const h=new E;P.addComponent(h,c),console.log("implicit PlayAudioOnStart",h,c),r.push(h),o.push(l),n.add(h)}return r}function qA(n){return new Jt("DisableAtStart",At.sceneStartTrigger(),ve.fadeAction(n,0,!1))}function nS(n,e){const t=n.domElement.shadowRoot.querySelector("link[rel='ar']");if(t)return t;const s=document.createElement("div");s.classList.add("menu"),s.classList.add("quicklook-menu"),s.style.display="none",s.style.visibility="hidden";const o=document.createElement("button");o.id="open-in-ar",e?(o.innerText="View in AR",o.title="View this scene in AR. The scene will be exported to USDZ and opened with Apple's QuickLook."):(o.innerText="View in AR",o.title="Download this scene for AR. Open the downloaded USDZ file to view it in AR using Apple's QuickLook."),s.appendChild(o);const r=document.createElement("a");r.id="needle-usdz-link",r.style.display="none",r.rel="ar",r.href="",r.target="_blank",s.appendChild(r);const l=document.createElement("img");return l.id="button",r.appendChild(l),n.domElement.shadowRoot.appendChild(s),r}var XA=Object.defineProperty,It=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&XA(e,t,o),o};const Vi=C("debugusdz"),QA=C("debugusdzpruning");class Jr{constructor(){a(this,"callToAction"),a(this,"checkoutTitle"),a(this,"checkoutSubtitle"),a(this,"callToActionURL")}}It([m()],Jr.prototype,"callToAction"),It([m()],Jr.prototype,"checkoutTitle"),It([m()],Jr.prototype,"checkoutSubtitle"),It([m()],Jr.prototype,"callToActionURL");var wl;const fi=(wl=class extends I{constructor(){super(...arguments),a(this,"objectToExport"),a(this,"autoExportAnimations",!0),a(this,"autoExportAudioSources",!0),a(this,"exportFileName"),a(this,"customUsdzFile"),a(this,"customBranding"),a(this,"anchoringType","plane"),a(this,"maxTextureSize",2048),a(this,"planeAnchoringAlignment","horizontal"),a(this,"interactive",!0),a(this,"physics",!0),a(this,"allowCreateQuicklookButton",!0),a(this,"quickLookCompatible",!0),a(this,"extensions",[]),a(this,"link"),a(this,"button"),a(this,"onClickedOpenInARElement",n=>{n.preventDefault(),this.exportAndOpen()}),a(this,"_currentExportTasks",new Map),a(this,"_previousTimeScale",1),a(this,"lastCallback"),a(this,"_rootSessionRootWasAppliedTo",null),a(this,"_rootPositionBeforeExport",new S),a(this,"_rootRotationBeforeExport",new V),a(this,"_rootScaleBeforeExport",new S)}start(){var n,e,t;Vi&&(console.log("USDZExporter",this),console.log("Debug USDZ Mode. Press 'T' to export"),window.addEventListener("keydown",s=>{switch(s.key){case"t":this.exportAndOpen();break}})),this.objectToExport||(this.objectToExport=this.gameObject),!((e=(n=this.objectToExport)==null?void 0:n.children)!=null&&e.length)&&!((t=this.objectToExport)!=null&&t.isMesh)&&(this.objectToExport=this.context.scene)}onEnable(){var n;const e=X.supportsQuickLookAR(),t=X.isiOS()||X.isiPad();!this.button&&(Vi||e||t)&&(this.allowCreateQuicklookButton&&(this.button=this.createQuicklookButton()),this.lastCallback=this.quicklookCallback.bind(this),this.link=nS(this.context,e),this.link.addEventListener("message",this.lastCallback)),Vi&&De("USDZ Exporter enabled: "+this.name),(n=document.getElementById("open-in-ar"))==null||n.addEventListener("click",this.onClickedOpenInARElement),cc.registerExporter(this)}onDisable(){var n,e,t;(n=this.button)==null||n.remove(),(e=this.link)==null||e.removeEventListener("message",this.lastCallback),Vi&&De("USDZ Exporter disabled: "+this.name),(t=document.getElementById("open-in-ar"))==null||t.removeEventListener("click",this.onClickedOpenInARElement),cc.unregisterExporter(this)}async exportAsync(){return this.exportAndOpen()}async exportAndOpen(){var n;let e=this.exportFileName??((n=this.objectToExport)==null?void 0:n.name)??this.name;if(e+="-"+b1(),Zs()||(e!==""&&(e+="-"),e+="MadeWithNeedle"),this.link||(this.link=nS(this.context,X.supportsQuickLookAR())),this.customUsdzFile)return Vi&&console.log("Exporting custom usdz",this.customUsdzFile),this.openInQuickLook(this.customUsdzFile,e),null;if(!this.objectToExport)return console.warn("No object to export",this),null;const t=await this.export(this.objectToExport);return t?(Vi&&console.log("USDZ generation done. Downloading as "+e),this.openInQuickLook(t,e),t):(console.error("USDZ generation failed. Please report a bug",this),null)}async export(n){if(!n)return console.warn("No object to export"),null;const e=this._currentExportTasks.get(n);if(e)return e;const t=this.internalExport(n);return t instanceof Promise?(this._currentExportTasks.set(n,t),t.then(s=>(this._currentExportTasks.delete(n),s)).catch(s=>(this._currentExportTasks.delete(n),console.error("Error during USDZ export \u2013 please report a bug!",s),null))):t}async internalExport(n){de.start("export-usdz",{onProgress:x=>{this.dispatchEvent(new CustomEvent("export-progress",{detail:{progress:x}}))}}),de.report("export-usdz",{message:"Starting export",totalSteps:40,currentStep:0}),de.report("export-usdz",{message:"Load progressive textures",autoStep:5}),de.start("export-usdz-textures","export-usdz");const e=P.getComponentsInChildren(n,gi);for(const x of e)x&&x.enabled&&x.updateSprite(!0);const t=P.getComponentsInChildren(n,Ui),s=new Array;let o=0;for(const x of t){for(const k of x.sharedMeshes)if(k){const M=Xe.assignMeshLOD(k,0);M instanceof Promise&&s.push(new Promise((T,L)=>{M.then(()=>{o++,de.report("export-usdz-textures",{message:"Loaded progressive mesh",currentStep:o,totalSteps:s.length}),T()}).catch(D=>L(D))}))}for(const k of x.sharedMaterials)if(k){const M=Xe.assignTextureLOD(k,0);M instanceof Promise&&s.push(new Promise((T,L)=>{M.then(()=>{o++,de.report("export-usdz-textures",{message:"Loaded progressive texture",currentStep:o,totalSteps:s.length}),T()}).catch(D=>L(D))}))}}Vi&&De("Progressive Loading: "+s.length),await Promise.all(s),Vi&&De("Progressive Loading: done"),de.end("export-usdz-textures");const r=Di.Global.Mask;Di.Global.Set(rn.AR);const l=new P1,c=new dp(this.quickLookCompatible);let h;const d=[];this.interactive&&(d.push(new Z0),d.push(new _a),globalThis.NEEDLE_USE_RAPIER&&P.getComponentsInChildren(n,dt).length>0&&(this.physics?(h=new J0,d.push(h)):F()&&console.warn("USDZExporter: Physics export is disabled, but there are active Rigidbody components in the scene. They will not be exported.")),d.push(new Pp),d.push(new hy));const u=[c,...d,...this.extensions],p={self:this,exporter:l,extensions:u,object:n};de.report("export-usdz","Invoking before-export"),this.dispatchEvent(new CustomEvent("before-export",{detail:p})),this.applyWebARSessionRoot(),this._previousTimeScale=this.context.time.timeScale,this.context.time.timeScale=0,de.report("export-usdz","auto export animations and audio sources");const g=new Array;this.autoExportAnimations&&g.push(...HA(n,c)),u.find(x=>x.extensionName==="Audio")&&this.autoExportAudioSources&&g.push(...GA(n)),l.debug=Vi,l.pruneUnusedNodes=!QA;const f=Ju.instance.objs.map(x=>x.batchedMesh);l.keepObject=x=>{let k=!0;const M=P.getComponent(x,Ui);return M&&!M.enabled&&(k=!1),k&&f.includes(x)&&(k=!1),k&&P.getComponentInParent(x,Vc)&&(k=!1),k&&P.getComponentInParent(x,en)&&(k=!1),Vi&&!k&&console.log("USDZExporter: Discarding object",x),k},l.beforeWritingDocument=()=>{if(F()&&c&&h){const x=c.animatedRoots;for(const k of x){const M=P.getComponentsInChildren(k,dt).filter(L=>L.enabled),T=P.getComponents(k,ui).filter(L=>L.enabled&&!L.isTrigger);(M.length>0||T.length>0)&&console.error("An animated object has physics components in its child hierarchy. This can lead to undefined behaviour due to a bug in Apple's QuickLook (FB15925487). Remove the physics components from child objects or verify that you get the expected results.",k)}}};const y=new Array;this.objectToExport&&this.quickLookCompatible&&this.interactive&&this.objectToExport.traverse(x=>{x.visible||y.push(x)});const v=u.find(x=>x.extensionName==="Behaviour");this.interactive&&v&&y.length>0&&v.addBehavior(qA(y));let b=!0;this.quickLookCompatible&&!this.interactive&&(b=!1),this.anchoringType!=="plane"&&this.anchoringType!=="none"&&this.anchoringType!=="image"&&this.anchoringType!=="face"&&(this.anchoringType="plane"),this.planeAnchoringAlignment!=="horizontal"&&this.planeAnchoringAlignment!=="vertical"&&this.planeAnchoringAlignment!=="any"&&(this.planeAnchoringAlignment="horizontal"),de.report("export-usdz","Invoking exporter.parse");const _=await l.parse(this.objectToExport,{ar:{anchoring:{type:this.anchoringType},planeAnchoring:{alignment:this.planeAnchoringAlignment}},extensions:u,quickLookCompatible:this.quickLookCompatible,maxTextureSize:this.maxTextureSize,exportInvisible:b}),w=new Blob([_],{type:"model/vnd.usdz+zip"});this.revertWebARSessionRoot(),this.context.time.timeScale=this._previousTimeScale,de.report("export-usdz","Invoking after-export"),this.dispatchEvent(new CustomEvent("after-export",{detail:p}));for(const x of g)P.destroy(x);return Di.Global.Set(r),de.end("export-usdz"),w}openInQuickLook(n,e){const t=n instanceof Blob?URL.createObjectURL(n):n,s=this.buildQuicklookOverlay();Vi&&console.log("QuickLook Overlay",s);const o=s.callToAction?encodeURIComponent(s.callToAction):"",r=s.checkoutTitle?encodeURIComponent(s.checkoutTitle):"",l=s.checkoutSubtitle?encodeURIComponent(s.checkoutSubtitle):"";this.link.href=t+`#callToAction=${o}&checkoutTitle=${r}&checkoutSubtitle=${l}&callToActionURL=${s.callToActionURL}`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener("message",this.lastCallback)),this.link.download=e+".usdz",this.link.click()}download(n,e){wl.save(n,e)}static save(n,e){const t=document.createElement("a");t.style.display="none",document.body.appendChild(t),typeof n=="string"?t.href=n:t.href=URL.createObjectURL(n),t.download=e,t.click(),t.remove()}quicklookCallback(n){if(n?.data=="_apple_ar_quicklook_button_tapped"){Vi&&be("Quicklook closed via call to action button");var e=new CustomEvent("quicklook-button-tapped",{detail:this});if(this.dispatchEvent(e),!e.defaultPrevented){const t=new URLSearchParams(this.link.href);if(t){const s=t.get("callToActionURL");Vi&&De("Quicklook url: "+s),s&&(Zs()?globalThis.open(s,"_blank"):console.warn("Quicklook closed: custom redirects require a Needle Engine Pro license: https://needle.tools/pricing",s))}}}}buildQuicklookOverlay(){var n,e,t,s,o,r;const l={};return this.customBranding&&Object.assign(l,this.customBranding),Zs()||(console.log("Custom Quicklook banner text requires pro license: https://needle.tools/pricing"),l.callToAction="Close",l.checkoutTitle="\u{1F335} Made with Needle",l.checkoutSubtitle="_"),(((n=l.callToAction)==null?void 0:n.length)||((e=l.checkoutTitle)==null?void 0:e.length)||((t=l.checkoutSubtitle)==null?void 0:t.length))&&((s=l.callToAction)!=null&&s.length||(l.callToAction="\0"),(o=l.checkoutTitle)!=null&&o.length||(l.checkoutTitle="\0"),(r=l.checkoutSubtitle)!=null&&r.length||(l.checkoutSubtitle="\0")),this.dispatchEvent(new CustomEvent("quicklook-overlay",{detail:l})),l}getARScaleAndTarget(){if(!this.objectToExport)return{scale:1,_invertForward:!1,target:this.gameObject,sessionRoot:null};const n=P.findObjectOfType(wp);let e=P.getComponentInParent(this.objectToExport,$o);e||(e=P.getComponentInChildren(this.objectToExport,$o));let t=1,s=!1;const o=this.objectToExport;return n?t=n.arScale:e&&(t=e.arScale,s=e.invertForward),{scale:1/t,_invertForward:s,target:o,sessionRoot:e?.gameObject??null}}applyWebARSessionRoot(){if(!this.objectToExport)return;const{scale:n,_invertForward:e,target:t,sessionRoot:s}=this.getARScaleAndTarget(),o=s?.matrixWorld.clone().invert();this._rootSessionRootWasAppliedTo=t,this._rootPositionBeforeExport.copy(t.position),this._rootRotationBeforeExport.copy(t.quaternion),this._rootScaleBeforeExport.copy(t.scale),t.scale.multiplyScalar(n),e&&t.quaternion.multiply(wl.invertForwardQuaternion),t.updateMatrix(),t.updateMatrixWorld(!0),s&&o&&t.matrix.premultiply(o)}revertWebARSessionRoot(){if(!this.objectToExport||!this._rootSessionRootWasAppliedTo)return;const n=this._rootSessionRootWasAppliedTo;n.position.copy(this._rootPositionBeforeExport),n.quaternion.copy(this._rootRotationBeforeExport),n.scale.copy(this._rootScaleBeforeExport),n.updateMatrix(),n.updateMatrixWorld(!0),this._rootSessionRootWasAppliedTo=null}createQuicklookButton(){const n=ml.getOrCreate().createQuicklookButton();return n.parentNode||this.context.menu.appendChild(n),n}},a(wl,"invertForwardMatrix",new se().makeRotationY(Math.PI)),a(wl,"invertForwardQuaternion",new V().setFromEuler(new Dt(0,Math.PI,0))),wl);It([m(E)],fi.prototype,"objectToExport"),It([m()],fi.prototype,"autoExportAnimations"),It([m()],fi.prototype,"autoExportAudioSources"),It([m()],fi.prototype,"exportFileName"),It([m(URL)],fi.prototype,"customUsdzFile"),It([m(Jr)],fi.prototype,"customBranding"),It([m()],fi.prototype,"anchoringType"),It([m()],fi.prototype,"maxTextureSize"),It([m()],fi.prototype,"planeAnchoringAlignment"),It([m()],fi.prototype,"interactive"),It([m()],fi.prototype,"physics"),It([m()],fi.prototype,"allowCreateQuicklookButton"),It([m()],fi.prototype,"quickLookCompatible");let gn=fi;var YA=Object.defineProperty,KA=Object.getOwnPropertyDescriptor,dy=(n,e,t,s)=>{for(var o=KA(e,t),r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&YA(e,t,o),o};class xl extends I{constructor(){super(...arguments),a(this,"_fog")}get fog(){return this._fog||(this._fog=new Tv(0,0,50)),this._fog}get mode(){return 1}set near(e){this.fog.near=e}get near(){return this.fog.near}set far(e){this.fog.far=e}get far(){return this.fog.far}set color(e){this.fog.color.copy(e)}get color(){return this.fog.color}onEnable(){this.scene.fog=this.fog}onDisable(){this.scene.fog===this._fog&&(this.scene.fog=null)}}dy([m()],xl.prototype,"near"),dy([m()],xl.prototype,"far"),dy([m(oe)],xl.prototype,"color");var ZA=Object.defineProperty,uy=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&ZA(e,t,o),o};class ea extends I{constructor(){super(...arguments),a(this,"objectBounds",!1),a(this,"color"),a(this,"isGizmo",!0),a(this,"_gizmoObject",null),a(this,"_boxHelper",null)}onEnable(){this.isGizmo&&!yc||(this._gizmoObject||(this.objectBounds?this._gizmoObject=new RP(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=Vg(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),Oe.OnBeforeRender)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(var e;this._boxHelper;)(e=this._boxHelper)==null||e.update(),yield}}uy([m()],ea.prototype,"objectBounds"),uy([m(oe)],ea.prototype,"color"),uy([m()],ea.prototype,"isGizmo");var JA=Object.defineProperty,py=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&JA(e,t,o),o};class Sl extends I{constructor(){super(...arguments),a(this,"isGizmo",!1),a(this,"color0"),a(this,"color1"),a(this,"gridHelper"),a(this,"size"),a(this,"divisions"),a(this,"offset")}onEnable(){if(this.isGizmo&&!yc)return;const e=this.size,t=this.divisions;this.gridHelper||(this.gridHelper=new Mm(e,t,this.color0??new oe(.4,.4,.4),this.color1??new oe(.6,.6,.6)),this.offset!==void 0&&(this.gridHelper.position.y+=this.offset)),this.gridHelper&&this.gameObject.add(this.gridHelper)}onDisable(){this.gridHelper&&(this.gameObject.remove(this.gridHelper),this.gridHelper=null)}}py([m()],Sl.prototype,"isGizmo"),py([m(oe)],Sl.prototype,"color0"),py([m(oe)],Sl.prototype,"color1");var e2=Object.defineProperty,my=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&e2(e,t,o),o};class gy extends I{constructor(){super(...arguments),a(this,"connectedBody"),a(this,"_rigidBody",null)}get rigidBody(){return this._rigidBody}onEnable(){this._rigidBody||(this._rigidBody=this.gameObject.getComponent(dt)),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.activeAndEnabled&&this.createJoint(this.rigidBody,this.connectedBody)}}my([m(dt)],gy.prototype,"connectedBody");class fy extends gy{createJoint(e,t){var s;(s=this.context.physics.engine)==null||s.addFixedJoint(e,t)}}class dh extends gy{constructor(){super(...arguments),a(this,"anchor"),a(this,"axis")}createJoint(e,t){var s;this.axis&&this.anchor&&((s=this.context.physics.engine)==null||s.addHingeJoint(e,t,this.anchor,this.axis))}}my([m(S)],dh.prototype,"anchor"),my([m(S)],dh.prototype,"axis");var t2=Object.defineProperty,i2=Object.getOwnPropertyDescriptor,fn=(n,e,t,s)=>{for(var o=s>1?void 0:s?i2(e,t):e,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=(s?l(e,t,o):l(o))||o);return s&&o&&t2(e,t,o),o};function yy(n){return n*Math.PI/180}const oS=300,Zo=C("debuglights");class yi extends I{constructor(){super(...arguments),a(this,"type",0),a(this,"range",1),a(this,"spotAngle",1),a(this,"innerSpotAngle",1),a(this,"_color",new oe(16777215)),a(this,"_shadowNearPlane",.1),a(this,"_shadowBias",0),a(this,"_shadowNormalBias",0),a(this,"_overrideShadowBiasSettings",!1),a(this,"_shadows",1),a(this,"lightmapBakeType",4),a(this,"_intensity",-1),a(this,"_shadowDistance"),a(this,"shadowWidth"),a(this,"shadowHeight"),a(this,"_shadowResolution"),a(this,"light"),a(this,"_webXRStartedListener"),a(this,"_webXREndedListener"),a(this,"_webARRoot")}set color(e){this._color=e,this.light!==void 0&&(this.light.color=e)}get color(){return this.light?this.light.color:this._color}set shadowNearPlane(e){var t,s;if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,((s=(t=this.light)==null?void 0:t.shadow)==null?void 0:s.camera)!==void 0)){const o=this.light.shadow.camera;o.near=e}}get shadowNearPlane(){return this._shadowNearPlane}set shadowBias(e){var t,s;e!==this._shadowBias&&(this._shadowBias=e,((s=(t=this.light)==null?void 0:t.shadow)==null?void 0:s.bias)!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}set shadowNormalBias(e){var t,s;e!==this._shadowNormalBias&&(this._shadowNormalBias=e,((s=(t=this.light)==null?void 0:t.shadow)==null?void 0:s.normalBias)!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==0,this.updateShadowSoftHard())}get shadows(){return this._shadows}set intensity(e){var t;if(this._intensity=e,this.light){let s=1;if(this.context.isInXR&&this._webARRoot){const o=(t=this._webARRoot)==null?void 0:t.arScale;typeof o=="number"&&o>0&&(s/=o)}this.light.intensity=e*s}Zo&&console.log("Set light intensity to "+this._intensity,e,this)}get intensity(){return this._intensity}get shadowDistance(){const e=this.light;return e!=null&&e.shadow?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;const t=this.light;if(t!=null&&t.shadow){const s=t.shadow.camera;s.far=e,s.updateProjectionMatrix()}}get shadowResolution(){const e=this.light;return e!=null&&e.shadow?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;const t=this.light;t!=null&&t.shadow&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}get isBaked(){return this.lightmapBakeType===2}get selfIsLight(){if(this.gameObject.isLight===!0)return!0;switch(this.gameObject.type){case"SpotLight":case"PointLight":case"DirectionalLight":return!0}return!1}getWorldPosition(e){return this.light?this.type===1?this.light.getWorldPosition(e).multiplyScalar(1):this.light.getWorldPosition(e):e}awake(){this.color=new oe(this.color??16777215),Zo&&console.log(this.name,this)}onEnable(){Zo&&console.log("ENABLE LIGHT",this.name),this.createLight(),!this.isBaked&&(this.light&&(this.light.visible=!0,this.light.intensity=this._intensity,Zo&&console.log("Set light intensity to "+this.light.intensity,this.name),this.selfIsLight||this.light.parent!==this.gameObject&&this.gameObject.add(this.light)),this.type===1&&this.startCoroutine(this.updateMainLightRoutine(),Oe.LateUpdate))}onDisable(){Zo&&console.log("DISABLE LIGHT",this.name),this.light&&(this.selfIsLight?this.light.intensity=0:this.light.visible=!1)}onEnterXR(e){this._webARRoot=P.getComponentInParent(this.gameObject,$o)??void 0}onLeaveXR(e){}createLight(){const e=this.selfIsLight;if(e&&!this.light)switch(this.light=this.gameObject,this.light.name=this.name,this._intensity=this.light.intensity,this.type){case 1:this.setDirectionalLight(this.light);break}else if(!this.light)switch(this.type){case 1:const t=new Rm(this.color,this.intensity*Math.PI);if(t.position.set(0,0,-oS*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(t.target),br(t.target,0,0,0),this.light=t,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),Zo){const l=new EP(this.light,.2,this.color);this.context.scene.add(l)}break;case 0:const s=new TP(this.color,this.intensity*Math.PI,this.range,yy(this.spotAngle/2),1-yy(this.innerSpotAngle/2)/yy(this.spotAngle/2),2);s.position.set(0,0,0),s.rotation.set(0,0,0),this.light=s;const o=s.target;s.add(o),o.position.set(0,0,this.range),o.rotation.set(0,0,0);break;case 2:const r=new Tm(this.color,this.intensity*Math.PI,this.range);this.light=r;break}if(this.light){if(this._intensity>=0?this.light.intensity=this._intensity:this._intensity=this.light.intensity,this.shadows!==0?this.light.castShadow=!0:this.light.castShadow=!1,this.light.shadow){this._shadowResolution!==void 0&&this._shadowResolution>4?(this.light.shadow.mapSize.width=this._shadowResolution,this.light.shadow.mapSize.height=this._shadowResolution):(this.light.shadow.mapSize.width=2048,this.light.shadow.mapSize.height=2048),Zo&&console.log("Override shadow bias?",this._overrideShadowBiasSettings,this.shadowBias,this.shadowNormalBias),this.light.shadow.bias=this.shadowBias,this.light.shadow.normalBias=this.shadowNormalBias,this.updateShadowSoftHard();const t=this.light.shadow.camera;if(t.near=this.shadowNearPlane,this._shadowDistance!==void 0&&typeof this._shadowDistance=="number"?t.far=this._shadowDistance:t.far=oS*Math.abs(this.gameObject.scale.z),this.gameObject.scale.set(1,1,1),this.shadowWidth!==void 0)t.left=-this.shadowWidth/2,t.right=this.shadowWidth/2;else{const s=this.gameObject.scale.x;t.left*=s,t.right*=s}if(this.shadowHeight!==void 0)t.top=this.shadowHeight/2,t.bottom=-this.shadowHeight/2;else{const s=this.gameObject.scale.y;t.top*=s,t.bottom*=s}this.light.shadow.needsUpdate=!0,Zo&&this.context.scene.add(new AP(t))}this.isBaked?this.light.removeFromParent():e||this.gameObject.add(this.light)}}*updateMainLightRoutine(){for(;;){this.type===1&&((!this.context.mainLight||this.intensity>this.context.mainLight.intensity)&&(this.context.mainLight=this),yield);break}}updateShadowSoftHard(){this.light&&this.light.shadow&&(this.shadows===2||(this.light.shadow.radius=1,this.light.shadow.blurSamples=1))}setDirectionalLight(e){e.add(e.target),e.target.position.set(0,0,-1)}}a(yi,"allowChangingRendererShadowMapType",!0),fn([m()],yi.prototype,"type",2),fn([m(oe)],yi.prototype,"color",1),fn([m()],yi.prototype,"shadowNearPlane",1),fn([m()],yi.prototype,"shadowBias",1),fn([m()],yi.prototype,"shadowNormalBias",1),fn([m()],yi.prototype,"shadows",1),fn([m()],yi.prototype,"lightmapBakeType",2),fn([m()],yi.prototype,"intensity",1),fn([m()],yi.prototype,"shadowDistance",1),fn([m()],yi.prototype,"shadowResolution",1),new S(0,0,0);var s2=Object.defineProperty,uh=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&s2(e,t,o),o};const vy=C("debuglods"),n2=C("nolods");class Cl{constructor(){a(this,"screenRelativeTransitionHeight"),a(this,"distance"),a(this,"renderers")}}uh([m()],Cl.prototype,"screenRelativeTransitionHeight"),uh([m()],Cl.prototype,"distance"),uh([m(Ui)],Cl.prototype,"renderers");class o2{constructor(e){a(this,"model"),this.model=e}get renderers(){return this.model.renderers}}class ph extends I{constructor(){super(...arguments),a(this,"fadeMode",0),a(this,"localReferencePoint"),a(this,"lodCount",0),a(this,"size",0),a(this,"animateCrossFading",!1),a(this,"lodModels"),a(this,"_lods",[]),a(this,"_settings",[]),a(this,"_lodsHandler"),a(this,"_distanceFactor",1)}start(){if(vy&&console.log("LODGROUP",this.name,this.lodModels,this),!n2&&!this._lodsHandler&&this.gameObject&&this.lodModels&&Array.isArray(this.lodModels)){const e=[];for(const s of this.lodModels){const o=new o2(s);this._lods.push(o);for(const r of o.renderers)e.includes(r)||e.push(r)}this._lodsHandler=new Array;for(let s=0;s<e.length;s++){const o=new IP;this._lodsHandler.push(o),this.gameObject.add(o)}const t=new E;t.name="Cull "+this.name;for(let s=0;s<e.length;s++){const o=e[s],r=this._lodsHandler[s],l=o.gameObject;vy&&console.log(s,l.name);for(const c of this._lods){const h=c.model.distance;let d=null;if(c.renderers.includes(o)?d=l:d=t,d.type==="Group"){console.warn(`LODGroup ${this.name}: Group or MultiMaterial object's are not supported as LOD object: ${d.name}`);continue}vy&&console.log("LEVEL",d.name,h),r.autoUpdate=!1,this.onAddLodLevel(r,d,c.model.distance)}}}}onAfterRender(){if(!this.gameObject||!this._lodsHandler)return;const e=this.context.mainCamera;if(e)for(const t of this._lodsHandler){t.update(e);const s=t.getCurrentLevel(),o=t.levels[s];t.layers.mask=o.object.layers.mask}}onAddLodLevel(e,t,s){if(t===this.gameObject){console.warn("LODGroup component must be on parent object and not mesh directly at the moment",t.name,t);return}e.addLevel(t,s*this._distanceFactor,.01);const o={lod:e,levelIndex:e.levels.length-1,distance:s};this._settings.push(o)}distanceFactor(e){if(e!==this._distanceFactor){this._distanceFactor=e;for(const t of this._settings){const s=t.lod.levels[t.levelIndex];s.distance=t.distance*e}}}}uh([m(S)],ph.prototype,"localReferencePoint"),uh([m(Cl)],ph.prototype,"lodModels");var r2=Object.defineProperty,a2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&r2(e,t,o),o};const Op=C("debugnestedgltf");class kp extends I{constructor(){super(...arguments),a(this,"filePath"),a(this,"loadAssetInParent",!0),a(this,"_isLoadingOrDoneLoading",!1)}listenToProgress(e){var t;(t=this.filePath)==null||t.beginListenDownload(e)}preload(){var e;(e=this.filePath)==null||e.preload()}async start(){var e,t,s,o,r;if(this._isLoadingOrDoneLoading)return;Op&&console.log(this,this.guid);const l=this.gameObject.parent;if(l){this._isLoadingOrDoneLoading=!0;const c=new Fs;c.idProvider=new jt(this.hash(this.guid)),c.parent=this.loadAssetInParent!==!1?l:this.gameObject,this.gameObject.updateMatrix();const h=this.gameObject.matrix;Op&&console.log("Load nested:",((e=this.filePath)==null?void 0:e.url)??this.filePath,this.gameObject.position);const d=await((s=(t=this.filePath)==null?void 0:t.instantiate)==null?void 0:s.call(this.filePath,c));Op&&console.log("Nested loaded:",((o=this.filePath)==null?void 0:o.url)??this.filePath,d),d&&this.loadAssetInParent!==!1&&(d.matrixAutoUpdate=!1,d.matrix.identity(),d.applyMatrix4(h),d.matrixAutoUpdate=!0,d.layers.disableAll(),d.layers.set(this.layer),this.dispatchEvent(new CustomEvent("loaded",{detail:{instance:d,assetReference:this.filePath}}))),Op&&console.log("Nested loading done:",((r=this.filePath)==null?void 0:r.url)??this.filePath,d)}}onDestroy(){var e;(e=this.filePath)==null||e.unload()}hash(e){let t=0;for(let s=0;s<e.length;s++)t=e.charCodeAt(s)+((t<<5)-t);return t}}a2([m(ce)],kp.prototype,"filePath");var l2=Object.defineProperty,by=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&l2(e,t,o),o};const c2=C("debugnet"),Mp=class Sv extends I{constructor(){super(...arguments),a(this,"url",null),a(this,"urlParameterName",null),a(this,"localhost",null)}awake(){c2&&console.log(this),this.context.connection.registerProvider(this)}getWebsocketUrl(){let e=this.url?Sv.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){const s=C(this.urlParameterName);s&&typeof s=="string"&&(e=s)}if(!e)return null;const t=new RegExp("(((https?)|(?<socket_prefix>wss?))://)?(www.)?(?<url>.+)","gm").exec(e);return t!=null&&t.groups?t?.groups.socket_prefix?e:"wss://"+t?.groups.url:null}static GetUrl(e,t){let s=e;const o=Sv.IsLocalNetwork()&&t;if(o&&(s=t),e!=null&&e.startsWith("/")){const r=o?s:window.location.origin;r!=null&&r.endsWith("/")&&e.startsWith("/")&&(e=e.substring(1)),s=r+e}return s}static IsLocalNetwork(e=window.location.hostname){return Xt(e)}};by([m()],Mp.prototype,"url"),by([m()],Mp.prototype,"urlParameterName"),by([m()],Mp.prototype,"localhost");let _y=Mp;var h2=Object.defineProperty,Rp=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&h2(e,t,o),o};class ta extends I{constructor(){super(...arguments),a(this,"referenceSpace"),a(this,"from"),a(this,"affectPosition",!1),a(this,"affectRotation",!1),a(this,"alignLookDirection",!1),a(this,"levelLookDirection",!1),a(this,"levelPosition",!1),a(this,"positionOffset",new S(0,0,0)),a(this,"rotationOffset",new S(0,0,0)),a(this,"offset",new S(0,0,0))}update(){if(!this.from)return;var e=ee(this.from),t=Se(this.from);this.offset.copy(this.positionOffset);const s=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(s),e.add(this.offset),this.levelPosition&&this.referenceSpace){const c=new yr(this.gameObject.up,0),h=ee(this.referenceSpace);c.setFromNormalAndCoplanarPoint(this.gameObject.up,h);const d=new S(0,0,0);c.projectPoint(e,d),e.copy(d)}this.affectPosition&&lt(this.gameObject,e);const o=new Dt(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),r=new V().setFromEuler(o);this.affectRotation&&Yi(this.gameObject,t.multiply(r));const l=new S;this.from.getWorldDirection(l).multiplyScalar(50),this.levelLookDirection&&(l.y=0),this.alignLookDirection&&this.gameObject.lookAt(l)}}Rp([m(P)],ta.prototype,"referenceSpace"),Rp([m(P)],ta.prototype,"from"),Rp([m(S)],ta.prototype,"positionOffset"),Rp([m(S)],ta.prototype,"rotationOffset");var d2=Object.defineProperty,Jo=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&d2(e,t,o),o};class vi{constructor(e=0,t=0){a(this,"time",0),a(this,"value",0),a(this,"inTangent",1/0),a(this,"inWeight"),a(this,"outTangent",1/0),a(this,"outWeight"),a(this,"weightedMode"),this.time=e,this.value=t}}Jo([m()],vi.prototype,"time"),Jo([m()],vi.prototype,"value"),Jo([m()],vi.prototype,"inTangent"),Jo([m()],vi.prototype,"inWeight"),Jo([m()],vi.prototype,"outTangent"),Jo([m()],vi.prototype,"outWeight"),Jo([m()],vi.prototype,"weightedMode");const rS=class rd{constructor(){a(this,"keys",[])}static linearFromTo(e,t,s){const o=new rd,r=new vi;r.time=0,r.value=e;const l=new vi;return l.time=s,l.value=t,o.keys.push(r,l),o}static constant(e){const t=new rd,s=new vi;return s.time=0,s.value=e,t.keys.push(s),t}clone(){var e;const t=new rd;return t.keys=((e=this.keys)==null?void 0:e.map(s=>{const o=new vi;return o.time=s.time,o.value=s.value,o.inTangent=s.inTangent,o.inWeight=s.inWeight,o.outTangent=s.outTangent,o.outWeight=s.outWeight,o.weightedMode=s.weightedMode,o}))||[],t}get duration(){return!this.keys||this.keys.length==0?0:this.keys[this.keys.length-1].time}evaluate(e){if(!this.keys||this.keys.length==0)return 0;if(this.keys.length===1)return this.keys[0].value;if(this.keys[0].time>=e)return this.keys[0].value;for(let t=0;t<this.keys.length;t++){const s=this.keys[t];if(s.time<=e)if(t+1<this.keys.length){const o=this.keys[t+1];if(o.time<e)continue;return!isFinite(s.outTangent)||!isFinite(o.inTangent)?s.value:rd.interpolateValue(e,s,o)}else return s.value}return this.keys[this.keys.length-1].value}static interpolateValue(e,t,s){const o=t.time,r=t.value,l=t.outTangent,c=s.time,h=s.value,d=s.inTangent,u=c-o,p=u*u,g=p*u,f=((l+d)*u-2*(h-r))/g,y=(3*(h-r)-(d+2*l)*u)/p,v=l,b=r,_=e-o,w=_*_,x=w*_;return f*x+y*w+v*_+b}};Jo([m(vi)],rS.prototype,"keys");let mh=rS;var u2=Object.defineProperty,O=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&u2(e,t,o),o};const Tp=C("debugparticles");var Zn=(n=>(n[n.Billboard=0]="Billboard",n[n.Stretch=1]="Stretch",n[n.HorizontalBillboard=2]="HorizontalBillboard",n[n.VerticalBillboard=3]="VerticalBillboard",n[n.Mesh=4]="Mesh",n))(Zn||{});class ia{constructor(){a(this,"alphaKeys",[]),a(this,"colorKeys",[])}get duration(){return 1}evaluate(e,t){let s,o=0,r=null,l=0;for(let c=0;c<this.alphaKeys.length;c++){const h=this.alphaKeys[c];(h.time<e||!s)&&(s=h,o=c)}for(let c=0;c<this.colorKeys.length;c++){const h=this.colorKeys[c];(h.time<e||!r)&&(r=h,l=c)}if(r)if(l+1<this.colorKeys.length){const c=this.colorKeys[l+1],h=W.remap(e,r.time,c.time,0,1);t.r=W.lerp(r.color.r,c.color.r,h),t.g=W.lerp(r.color.g,c.color.g,h),t.b=W.lerp(r.color.b,c.color.b,h)}else t.r=r.color.r,t.g=r.color.g,t.b=r.color.b;if(s)if(o+1<this.alphaKeys.length){const c=this.alphaKeys[o+1],h=W.remap(e,s.time,c.time,0,1);t.alpha=W.lerp(s.alpha,c.alpha,h)}else t.alpha=s.alpha;return t}}O([m()],ia.prototype,"alphaKeys"),O([m()],ia.prototype,"colorKeys");var gh=(n=>(n[n.Local=0]="Local",n[n.World=1]="World",n[n.Custom=2]="Custom",n))(gh||{}),Ep=(n=>(n[n.Sphere=0]="Sphere",n[n.SphereShell=1]="SphereShell",n[n.Hemisphere=2]="Hemisphere",n[n.HemisphereShell=3]="HemisphereShell",n[n.Cone=4]="Cone",n[n.Box=5]="Box",n[n.Mesh=6]="Mesh",n[n.ConeShell=7]="ConeShell",n[n.ConeVolume=8]="ConeVolume",n[n.ConeVolumeShell=9]="ConeVolumeShell",n[n.Circle=10]="Circle",n[n.CircleEdge=11]="CircleEdge",n[n.SingleSidedEdge=12]="SingleSidedEdge",n[n.MeshRenderer=13]="MeshRenderer",n[n.SkinnedMeshRenderer=14]="SkinnedMeshRenderer",n[n.BoxShell=15]="BoxShell",n[n.BoxEdge=16]="BoxEdge",n[n.Donut=17]="Donut",n[n.Rectangle=18]="Rectangle",n[n.Sprite=19]="Sprite",n[n.SpriteRenderer=20]="SpriteRenderer",n))(Ep||{});const Jn=class ad{constructor(){a(this,"mode","Constant"),a(this,"constant"),a(this,"constantMin"),a(this,"constantMax"),a(this,"curve"),a(this,"curveMin"),a(this,"curveMax"),a(this,"curveMultiplier")}static constant(e){const t=new ad;return t.setConstant(e),t}static betweenTwoConstants(e,t){const s=new ad;return s.setMinMaxConstant(e,t),s}static curve(e,t=1){const s=new ad;return s.setCurve(e,t),s}setConstant(e){this.mode=0,this.constant=e}setMinMaxConstant(e,t){this.mode=3,this.constantMin=e,this.constantMax=t}setCurve(e,t=1){this.mode=1,this.curve=e,this.curveMultiplier=t}clone(){var e,t,s;const o=new ad;return o.mode=this.mode,o.constant=this.constant,o.constantMin=this.constantMin,o.constantMax=this.constantMax,o.curve=(e=this.curve)==null?void 0:e.clone(),o.curveMin=(t=this.curveMin)==null?void 0:t.clone(),o.curveMax=(s=this.curveMax)==null?void 0:s.clone(),o.curveMultiplier=this.curveMultiplier,o}evaluate(e,t){const s=t===void 0?Math.random():t;switch(this.mode){case 0:case"Constant":return this.constant;case 1:case"Curve":return e=W.clamp01(e),this.curve.evaluate(e)*this.curveMultiplier;case 2:case"TwoCurves":const o=e*this.curveMin.duration,r=e*this.curveMax.duration;return W.lerp(this.curveMin.evaluate(o),this.curveMax.evaluate(r),s%1)*this.curveMultiplier;case 3:case"TwoConstants":return W.lerp(this.constantMin,this.constantMax,s%1);default:this.curveMax.evaluate(e)*this.curveMultiplier;break}return 0}getMax(){switch(this.mode){case 0:case"Constant":return this.constant;case 1:case"Curve":return this.getMaxFromCurve(this.curve)*this.curveMultiplier;case 2:case"TwoCurves":return Math.max(this.getMaxFromCurve(this.curveMin),this.getMaxFromCurve(this.curveMax))*this.curveMultiplier;case 3:case"TwoConstants":return Math.max(this.constantMin,this.constantMax);default:return 0}}getMaxFromCurve(e){if(!e)return 0;let t=Number.MIN_VALUE;for(let s=0;s<e.keys.length;s++){const o=e.keys[s];o.value>t&&(t=o.value)}return t}};O([m()],Jn.prototype,"mode"),O([m()],Jn.prototype,"constant"),O([m()],Jn.prototype,"constantMin"),O([m()],Jn.prototype,"constantMax"),O([m(mh)],Jn.prototype,"curve"),O([m(mh)],Jn.prototype,"curveMin"),O([m(mh)],Jn.prototype,"curveMax"),O([m()],Jn.prototype,"curveMultiplier");let Z=Jn;var st;const er=(st=class{constructor(){a(this,"mode",0),a(this,"color"),a(this,"colorMin"),a(this,"colorMax"),a(this,"gradient"),a(this,"gradientMin"),a(this,"gradientMax")}static constant(n){const e=new st;return e.constant(n),e}static betweenTwoColors(n,e){const t=new st;return t.betweenTwoColors(n,e),t}constant(n){return this.mode=0,this.color=n,this}betweenTwoColors(n,e){return this.mode=2,this.colorMin=n,this.colorMax=e,this}evaluate(n,e){const t=e===void 0?Math.random():e;switch(this.mode){case 0:case"Color":return this.color;case 1:case"Gradient":return this.gradient.evaluate(n,st._temp),st._temp;case 2:case"TwoColors":return st._temp.lerpColors(this.colorMin,this.colorMax,t);case 3:case"TwoGradients":return this.gradientMin.evaluate(n,st._temp),this.gradientMax.evaluate(n,st._temp2),st._temp.lerp(st._temp2,t);case 4:case"RandomColor":const s=Math.random();return this.gradientMin.evaluate(n,st._temp),this.gradientMax.evaluate(n,st._temp2),st._temp.lerp(st._temp2,s)}return st._temp.set(16777215),st._temp.alpha=1,st._temp}},a(st,"_temp",new he(0,0,0,1)),a(st,"_temp2",new he(0,0,0,1)),st);O([m()],er.prototype,"mode"),O([m(he)],er.prototype,"color"),O([m(he)],er.prototype,"colorMin"),O([m(he)],er.prototype,"colorMax"),O([m(ia)],er.prototype,"gradient"),O([m(ia)],er.prototype,"gradientMin"),O([m(ia)],er.prototype,"gradientMax");let sa=er;var wy=(n=>(n[n.Hierarchy=0]="Hierarchy",n[n.Local=1]="Local",n[n.Shape=2]="Shape",n))(wy||{});class Wt{constructor(){a(this,"cullingMode"),a(this,"duration"),a(this,"emitterVelocityMode"),a(this,"flipRotation"),a(this,"gravityModifier"),a(this,"gravityModifierMultiplier"),a(this,"loop"),a(this,"maxParticles"),a(this,"playOnAwake"),a(this,"prewarm"),a(this,"ringBufferLoopRange"),a(this,"ringBufferMode"),a(this,"scalingMode"),a(this,"simulationSpace"),a(this,"simulationSpeed"),a(this,"startColor"),a(this,"startDelay"),a(this,"startDelayMultiplier"),a(this,"startLifetime"),a(this,"startLifetimeMultiplier"),a(this,"startRotation"),a(this,"startRotationMultiplier"),a(this,"startRotation3D"),a(this,"startRotationX"),a(this,"startRotationXMultiplier"),a(this,"startRotationY"),a(this,"startRotationYMultiplier"),a(this,"startRotationZ"),a(this,"startRotationZMultiplier"),a(this,"startSize"),a(this,"startSize3D"),a(this,"startSizeMultiplier"),a(this,"startSizeX"),a(this,"startSizeXMultiplier"),a(this,"startSizeY"),a(this,"startSizeYMultiplier"),a(this,"startSizeZ"),a(this,"startSizeZMultiplier"),a(this,"startSpeed"),a(this,"startSpeedMultiplier"),a(this,"stopAction"),a(this,"useUnscaledTime")}}O([m(Z)],Wt.prototype,"gravityModifier"),O([m(sa)],Wt.prototype,"startColor"),O([m(Z)],Wt.prototype,"startDelay"),O([m(Z)],Wt.prototype,"startLifetime"),O([m(Z)],Wt.prototype,"startRotation"),O([m(Z)],Wt.prototype,"startRotationX"),O([m(Z)],Wt.prototype,"startRotationY"),O([m(Z)],Wt.prototype,"startRotationZ"),O([m(Z)],Wt.prototype,"startSize"),O([m(Z)],Wt.prototype,"startSizeX"),O([m(Z)],Wt.prototype,"startSizeY"),O([m(Z)],Wt.prototype,"startSizeZ"),O([m(Z)],Wt.prototype,"startSpeed");class Ap{constructor(){a(this,"cycleCount"),a(this,"maxCount"),a(this,"minCount"),a(this,"probability"),a(this,"repeatInterval"),a(this,"time"),a(this,"count"),a(this,"_performed",0)}reset(){this._performed=0}run(e){if(e<=this.time)return 0;let t=0;if(this.cycleCount===0||this._performed<this.cycleCount){const s=this.time+this.repeatInterval*this._performed;if(e>=s&&(this._performed+=1,Math.random()<this.probability))switch(this.count.mode){case 0:t=this.count.constant;break;case 3:t=W.lerp(this.count.constantMin,this.count.constantMax,Math.random());break;case 1:t=this.count.curve.evaluate(Math.random());break;case 2:const o=Math.random();t=W.lerp(this.count.curveMin.evaluate(o),this.count.curveMax.evaluate(o),Math.random());break}}return t}}class eo{constructor(){a(this,"enabled"),a(this,"bursts"),a(this,"rateOverTime"),a(this,"rateOverTimeMultiplier"),a(this,"rateOverDistance"),a(this,"rateOverDistanceMultiplier"),a(this,"system")}get burstCount(){var e;return((e=this.bursts)==null?void 0:e.length)??0}reset(){var e;(e=this.bursts)==null||e.forEach(t=>t.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t<this.burstCount;t++){const s=this.bursts[t];this.system.main.loop&&s.time>=this.system.time&&s.reset(),e+=Math.round(s.run(this.system.time))}return e}}O([m()],eo.prototype,"enabled"),O([m()],eo.prototype,"bursts"),O([m(Z)],eo.prototype,"rateOverTime"),O([m()],eo.prototype,"rateOverTimeMultiplier"),O([m(Z)],eo.prototype,"rateOverDistance"),O([m()],eo.prototype,"rateOverDistanceMultiplier");class Ip{constructor(){a(this,"enabled"),a(this,"color")}}O([m(sa)],Ip.prototype,"color");class na{constructor(){a(this,"enabled"),a(this,"separateAxes"),a(this,"size"),a(this,"sizeMultiplier"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier"),a(this,"_time",0),a(this,"_temp",new S)}evaluate(e,t,s){if(t||(t=this._temp),!this.enabled)return t.x=t.y=t.z=1,t;if(this.separateAxes)t.x=this.x.evaluate(e,s)*this.xMultiplier,t.y=this.y.evaluate(e,s)*this.yMultiplier,t.z=this.z.evaluate(e,s)*this.zMultiplier;else{const o=this.size.evaluate(e,s)*this.sizeMultiplier;t.x=o}return t}}O([m(Z)],na.prototype,"size"),O([m(Z)],na.prototype,"x"),O([m(Z)],na.prototype,"y"),O([m(Z)],na.prototype,"z");var tr;const nt=(tr=class{constructor(){a(this,"shapeType",5),a(this,"enabled",!0),a(this,"alignToDirection",!1),a(this,"angle",0),a(this,"arc",360),a(this,"arcSpread"),a(this,"arcSpeedMultiplier"),a(this,"arcMode"),a(this,"boxThickness"),a(this,"position"),a(this,"rotation"),a(this,"_rotation",new Dt),a(this,"scale"),a(this,"radius"),a(this,"radiusThickness"),a(this,"sphericalDirectionAmount"),a(this,"randomDirectionAmount"),a(this,"randomPositionAmount"),a(this,"meshShapeType"),a(this,"meshRenderer"),a(this,"_meshObj"),a(this,"_meshGeometry"),a(this,"system"),a(this,"_space"),a(this,"_worldSpaceMatrix",new se),a(this,"_worldSpaceMatrixInverse",new se),a(this,"_vector",new S(0,0,0)),a(this,"_temp",new S(0,0,0)),a(this,"_triangle",new LP),a(this,"_dir",new S),a(this,"_loopTime",0),a(this,"_loopDirection",1),Tp&&console.log(this)}get type(){return Ep[this.shapeType]}initialize(n){this.onInitialize(n),n.position.x=this._vector.x,n.position.y=this._vector.y,n.position.z=this._vector.z}toJSON(){return this}clone(){return new tr}setMesh(n){this.meshRenderer=n,n?(this._meshObj=n.sharedMeshes[Math.floor(Math.random()*n.sharedMeshes.length)],this._meshGeometry=this._meshObj.geometry):(this._meshObj=void 0,this._meshGeometry=void 0)}update(n,e){}onUpdate(n,e,t,s){this.system=n,this._space=t,t===1&&(this._worldSpaceMatrix.copy(s.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}applyRotation(n){const e=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return e&&(this._rotation.x=W.toRadians(this.rotation.x),this._rotation.y=W.toRadians(this.rotation.y),this._rotation.z=W.toRadians(this.rotation.z),this._rotation.order="ZYX",n.applyEuler(this._rotation)),e}onInitialize(n){this._vector.set(0,0,0),n.mesh=void 0,n.mesh_geometry=void 0;const e=this._temp.copy(this.position),t=this._space===1;t&&e.applyQuaternion(this.system.worldQuaternion);let s=this.radius;if(t&&(s*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case 5:Tp&&$.DrawWireBox(this.position,this.scale,14540253,1),this._vector.x=Math.random()*this.scale.x-this.scale.x/2,this._vector.y=Math.random()*this.scale.y-this.scale.y/2,this._vector.z=Math.random()*this.scale.z-this.scale.z/2,this._vector.add(e);break;case 4:this.randomConePoint(this.position,this.angle,s,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case 0:this.randomSpherePoint(this.position,s,this.radiusThickness,this.arc,this._vector);break;case 10:this.randomCirclePoint(this.position,s,this.radiusThickness,this.arc,this._vector);break;case 13:const o=this.meshRenderer;o?.destroyed==!1&&this.setMesh(o);const r=n.mesh=this._meshObj,l=n.mesh_geometry=this._meshGeometry;if(r&&l)switch(this.meshShapeType){case 0:{const c=l.getAttribute("position"),h=Math.floor(Math.random()*c.count);this._vector.fromBufferAttribute(c,h),this._vector.applyMatrix4(r.matrixWorld),n.mesh_normal=h}break;case 1:break;case 2:{const c=l.index;if(c){let h=Math.random(),d=Math.random();h+d>1&&(h=1-h,d=1-d);const u=Math.floor(Math.random()*(c.count/3));let p=u*3,g=u*3+1,f=u*3+2;p=c.getX(p),g=c.getX(g),f=c.getX(f);const y=l.getAttribute("position");this._triangle.a.fromBufferAttribute(y,p),this._triangle.b.fromBufferAttribute(y,g),this._triangle.c.fromBufferAttribute(y,f),this._vector.set(0,0,0).addScaledVector(this._triangle.a,h).addScaledVector(this._triangle.b,d).addScaledVector(this._triangle.c,1-(h+d)),this._vector.applyMatrix4(r.matrixWorld),n.mesh_normal=u}}break}break;default:this._vector.set(0,0,0),F()&&!globalThis.__particlesystem_shapetype_unsupported&&(console.warn("ParticleSystem ShapeType is not supported:",Ep[this.shapeType]),globalThis.__particlesystem_shapetype_unsupported=!0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.applyRotation(this._vector),t&&(this._vector.applyQuaternion(this.system.worldQuaternion),this._vector.add(this.system.worldPos)),Tp&&$.DrawSphere(this._vector,.03,16711680,.5,!0)}getDirection(n,e){var t;if(!this.enabled)return this._dir.set(0,0,1),this._dir;switch(this.shapeType){case 5:this._dir.set(0,0,1);break;case 4:this._dir.set(0,0,1);break;case 10:case 0:const s=e.x,o=e.y,r=e.z;this._dir.set(s,o,r),(t=this.system)!=null&&t.worldspace?this._dir.sub(this.system.worldPos):this._dir.sub(this.position);break;case 13:const l=n.mesh,c=n.mesh_geometry;if(l&&c)switch(this.meshShapeType){case 0:{const h=c.getAttribute("normal"),d=n.mesh_normal;this._dir.fromBufferAttribute(h,d)}break;case 1:break;case 2:{const h=c.index;if(h){const d=n.mesh_normal,u=h.getX(d*3),p=h.getX(d*3+1),g=h.getX(d*3+2),f=c.getAttribute("position"),y=q(),v=q(),b=q();y.fromBufferAttribute(f,u),v.fromBufferAttribute(f,p),b.fromBufferAttribute(f,g),y.sub(v),b.sub(v),y.cross(b),this._dir.copy(y).multiplyScalar(-1);const _=Se(l);this._dir.applyQuaternion(_)}}break}break;default:this._dir.set(0,0,1);break}return this._space===1&&this._dir.applyQuaternion(this.system.worldQuaternion),this.applyRotation(this._dir),this._dir.normalize(),this.spherizeDirection(this._dir,this.sphericalDirectionAmount),this.randomizeDirection(this._dir,this.randomDirectionAmount),Tp&&($.DrawSphere(e,.01,8925952,.5,!0),$.DrawDirection(e,this._dir,8925952,.5,!0)),this._dir}randomizePosition(n,e){if(e<=0)return;const t=tr._tempVec;t.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),t.x*=e*this.scale.x,t.y*=e*this.scale.y,t.z*=e*this.scale.z,n.add(t)}randomizeDirection(n,e){if(e===0)return;const t=tr._randomQuat,s=tr._tempVec;s.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),t.setFromAxisAngle(s,e*Math.random()*Math.PI),n.applyQuaternion(t)}spherizeDirection(n,e){if(e===0)return;const t=Math.random()*Math.PI*2,s=Math.acos(1-Math.random()*2),o=Math.sin(s)*Math.cos(t),r=Math.sin(s)*Math.sin(t),l=Math.cos(s),c=new S(o,r,l);n.lerp(c,e)}randomSpherePoint(n,e,t,s,o){const r=Math.random(),l=Math.random(),c=2*Math.PI*r*(s/360),h=Math.acos(2*l-1),d=W.lerp(1,1-Math.pow(1-Math.random(),Math.PI),t)*e,u=n.x+this.scale.x*(-d*Math.sin(h)*Math.cos(c)),p=n.y+this.scale.y*(d*Math.sin(h)*Math.sin(c)),g=n.z+this.scale.z*(d*Math.cos(h));o.x=u,o.y=p,o.z=g}randomCirclePoint(n,e,t,s,o){const r=Math.random(),l=2*Math.PI*r*(s/360),c=W.lerp(1,1-Math.pow(1-Math.random(),Math.PI),t)*e,h=n.x+this.scale.x*c*Math.cos(l),d=n.y+this.scale.y*c*Math.sin(l),u=n.z;o.x=h,o.y=d,o.z=u}randomConePoint(n,e,t,s,o,r,l){let c=0,h=0;switch(r){case 0:c=Math.random(),h=Math.random();break;case 2:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case 1:c=.5,h=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let d=2*Math.PI*c*(o/360);switch(r){case 2:case 1:d+=Math.PI+.5,d+=this._loopTime*Math.PI*2,d%=W.toRadians(o);break}const u=Math.acos(2*h-1),p=W.lerp(1,1-Math.pow(1-Math.random(),Math.PI),s)*t,g=n.x+-p*Math.sin(u)*Math.cos(d),f=n.y+p*Math.sin(u)*Math.sin(d),y=n.z;l.x=g*this.scale.x,l.y=f*this.scale.y,l.z=y*this.scale.z}},a(tr,"_randomQuat",new V),a(tr,"_tempVec",new S),tr);O([m()],nt.prototype,"shapeType"),O([m()],nt.prototype,"enabled"),O([m()],nt.prototype,"alignToDirection"),O([m()],nt.prototype,"angle"),O([m()],nt.prototype,"arc"),O([m()],nt.prototype,"arcSpread"),O([m()],nt.prototype,"arcSpeedMultiplier"),O([m()],nt.prototype,"arcMode"),O([m(S)],nt.prototype,"boxThickness"),O([m(S)],nt.prototype,"position"),O([m(S)],nt.prototype,"rotation"),O([m(S)],nt.prototype,"scale"),O([m()],nt.prototype,"radius"),O([m()],nt.prototype,"radiusThickness"),O([m()],nt.prototype,"sphericalDirectionAmount"),O([m()],nt.prototype,"randomDirectionAmount"),O([m()],nt.prototype,"randomPositionAmount"),O([m()],nt.prototype,"meshShapeType"),O([m(Qc)],nt.prototype,"meshRenderer");let xy=nt;class Ce{constructor(){a(this,"damping"),a(this,"enabled"),a(this,"frequency"),a(this,"octaveCount"),a(this,"octaveMultiplier"),a(this,"octaveScale"),a(this,"positionAmount"),a(this,"quality"),a(this,"remap"),a(this,"remapEnabled"),a(this,"remapMultiplier"),a(this,"remapX"),a(this,"remapXMultiplier"),a(this,"remapY"),a(this,"remapYMultiplier"),a(this,"remapZ"),a(this,"remapZMultiplier"),a(this,"scrollSpeedMultiplier"),a(this,"separateAxes"),a(this,"strengthMultiplier"),a(this,"strengthX"),a(this,"strengthXMultiplier"),a(this,"strengthY"),a(this,"strengthYMultiplier"),a(this,"strengthZ"),a(this,"strengthZMultiplier"),a(this,"_noise"),a(this,"_time",0),a(this,"_temp",new S)}update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}apply(e,t,s,o,r,l){if(!this.enabled)return;this._noise||(this._noise=bO(()=>0));const c=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),h=this._noise(c.x,c.y,c.z,this._time),d=this._noise(c.x,c.y,c.z,this._time+1e3*this.frequency),u=this._noise(c.x,c.y,c.z,this._time+2e3*this.frequency);this._temp.set(h,d,u).normalize();const p=r/l;let g=this.positionAmount.evaluate(p);this.separateAxes?(this._temp.x*=g*this.strengthXMultiplier,this._temp.y*=g*this.strengthYMultiplier,this._temp.z*=g*this.strengthZMultiplier):(this.strengthX&&(g*=this.strengthX.evaluate(p)*1.5),this._temp.multiplyScalar(g)),s.x+=this._temp.x,s.y+=this._temp.y,s.z+=this._temp.z}}O([m()],Ce.prototype,"damping"),O([m()],Ce.prototype,"enabled"),O([m()],Ce.prototype,"frequency"),O([m()],Ce.prototype,"octaveCount"),O([m()],Ce.prototype,"octaveMultiplier"),O([m()],Ce.prototype,"octaveScale"),O([m(Z)],Ce.prototype,"positionAmount"),O([m()],Ce.prototype,"quality"),O([m(Z)],Ce.prototype,"remap"),O([m()],Ce.prototype,"remapEnabled"),O([m()],Ce.prototype,"remapMultiplier"),O([m(Z)],Ce.prototype,"remapX"),O([m()],Ce.prototype,"remapXMultiplier"),O([m(Z)],Ce.prototype,"remapY"),O([m()],Ce.prototype,"remapYMultiplier"),O([m(Z)],Ce.prototype,"remapZ"),O([m()],Ce.prototype,"remapZMultiplier"),O([m()],Ce.prototype,"scrollSpeedMultiplier"),O([m()],Ce.prototype,"separateAxes"),O([m()],Ce.prototype,"strengthMultiplier"),O([m(Z)],Ce.prototype,"strengthX"),O([m()],Ce.prototype,"strengthXMultiplier"),O([m(Z)],Ce.prototype,"strengthY"),O([m()],Ce.prototype,"strengthYMultiplier"),O([m(Z)],Ce.prototype,"strengthZ"),O([m()],Ce.prototype,"strengthZMultiplier");class We{constructor(){a(this,"enabled"),a(this,"attachRibbonToTransform",!1),a(this,"colorOverLifetime"),a(this,"colorOverTrail"),a(this,"dieWithParticles",!0),a(this,"inheritParticleColor",!0),a(this,"lifetime"),a(this,"lifetimeMultiplier"),a(this,"minVertexDistance",.2),a(this,"mode",0),a(this,"ratio",1),a(this,"ribbonCount",1),a(this,"shadowBias",0),a(this,"sizeAffectsLifetime",!1),a(this,"sizeAffectsWidth",!1),a(this,"splitSubEmitterRibbons",!1),a(this,"textureMode",0),a(this,"widthOverTrail"),a(this,"widthOverTrailMultiplier"),a(this,"worldSpace",!1)}getWidth(e,t,s,o){const r=this.widthOverTrail.evaluate(s,o);return e*=r,e}getColor(e,t,s){const o=this.colorOverTrail.evaluate(s),r=this.colorOverLifetime.evaluate(t);e.x*=o.r*r.r,e.y*=o.g*r.g,e.z*=o.b*r.b,"alpha"in o&&"alpha"in r&&(e.w*=o.alpha*r.alpha)}}O([m()],We.prototype,"enabled"),O([m()],We.prototype,"attachRibbonToTransform"),O([m(sa)],We.prototype,"colorOverLifetime"),O([m(sa)],We.prototype,"colorOverTrail"),O([m()],We.prototype,"dieWithParticles"),O([m()],We.prototype,"inheritParticleColor"),O([m(Z)],We.prototype,"lifetime"),O([m()],We.prototype,"lifetimeMultiplier"),O([m()],We.prototype,"minVertexDistance"),O([m()],We.prototype,"mode"),O([m()],We.prototype,"ratio"),O([m()],We.prototype,"ribbonCount"),O([m()],We.prototype,"shadowBias"),O([m()],We.prototype,"sizeAffectsLifetime"),O([m()],We.prototype,"sizeAffectsWidth"),O([m()],We.prototype,"splitSubEmitterRibbons"),O([m()],We.prototype,"textureMode"),O([m(Z)],We.prototype,"widthOverTrail"),O([m()],We.prototype,"widthOverTrailMultiplier"),O([m()],We.prototype,"worldSpace");class qe{constructor(){a(this,"enabled"),a(this,"space",0),a(this,"orbitalX"),a(this,"orbitalY"),a(this,"orbitalZ"),a(this,"orbitalXMultiplier"),a(this,"orbitalYMultiplier"),a(this,"orbitalZMultiplier"),a(this,"orbitalOffsetX"),a(this,"orbitalOffsetY"),a(this,"orbitalOffsetZ"),a(this,"speedModifier"),a(this,"speedModifierMultiplier"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier"),a(this,"_system"),a(this,"_temp",new S),a(this,"_temp2",new S),a(this,"_temp3",new S),a(this,"_hasOrbital",!1),a(this,"_index",0),a(this,"_orbitalMatrix",new se)}update(e){this._system=e}init(e){this._index==0&&(e.debug=!0),this._index+=1,e.orbitx=this.orbitalX.evaluate(Math.random()),e.orbity=this.orbitalY.evaluate(Math.random()),e.orbitz=this.orbitalZ.evaluate(Math.random()),this._hasOrbital=e.orbitx!=0||e.orbity!=0||e.orbitz!=0}apply(e,t,s,o,r,l,c){var h;if(!this.enabled)return;const d=l/c,u=this.speedModifier.evaluate(d)*this.speedModifierMultiplier,p=this.x.evaluate(d),g=this.y.evaluate(d),f=this.z.evaluate(d);if(this._temp.set(-p,g,f),this._system&&this._system.main.simulationSpace===1&&this._temp.applyQuaternion(this._system.worldQuaternion),this._hasOrbital&&((h=this._system)==null?void 0:h.worldPos)){const y=this._temp2.set(s.x,s.y,s.z),v=this.orbitalXMultiplier,b=this.orbitalYMultiplier,_=this.orbitalZMultiplier,w=u*Math.PI*2*10,x=Math.cos(w*v),k=Math.sin(w*v),M=Math.cos(w*b),T=Math.sin(w*b),L=Math.cos(w*_),D=Math.sin(w*_),z=y.x*(M*L)+y.y*(M*D)+y.z*-T,j=y.x*(k*T*L-x*D)+y.y*(k*T*D+x*L)+y.z*(k*M),H=y.x*(x*T*L+k*D)+y.y*(x*T*D-k*L)+y.z*(x*M),K=this._temp3.set(y.x-z,y.y-j,y.z-H);K.normalize(),K.multiplyScalar(.2/r*Math.max(this.orbitalXMultiplier,this.orbitalYMultiplier,this.orbitalZMultiplier)),o.x+=K.x,o.y+=K.y,o.z+=K.z}o.x+=this._temp.x,o.y+=this._temp.y,o.z+=this._temp.z,o.x*=u,o.y*=u,o.z*=u}}O([m()],qe.prototype,"enabled"),O([m()],qe.prototype,"space"),O([m(Z)],qe.prototype,"orbitalX"),O([m(Z)],qe.prototype,"orbitalY"),O([m(Z)],qe.prototype,"orbitalZ"),O([m()],qe.prototype,"orbitalXMultiplier"),O([m()],qe.prototype,"orbitalYMultiplier"),O([m()],qe.prototype,"orbitalZMultiplier"),O([m()],qe.prototype,"orbitalOffsetX"),O([m()],qe.prototype,"orbitalOffsetY"),O([m()],qe.prototype,"orbitalOffsetZ"),O([m(Z)],qe.prototype,"speedModifier"),O([m()],qe.prototype,"speedModifierMultiplier"),O([m(Z)],qe.prototype,"x"),O([m()],qe.prototype,"xMultiplier"),O([m(Z)],qe.prototype,"y"),O([m()],qe.prototype,"yMultiplier"),O([m(Z)],qe.prototype,"z"),O([m()],qe.prototype,"zMultiplier");class Vt{constructor(){a(this,"animation"),a(this,"enabled"),a(this,"cycleCount"),a(this,"frameOverTime"),a(this,"frameOverTimeMultiplier"),a(this,"numTilesX"),a(this,"numTilesY"),a(this,"startFrame"),a(this,"startFrameMultiplier"),a(this,"rowMode"),a(this,"rowIndex"),a(this,"spriteCount"),a(this,"timeMode")}sampleOnceAtStart(){if(this.timeMode===0)switch(this.frameOverTime.mode){case 0:case 3:case 2:case 1:return!0}return!1}getStartIndex(){return this.sampleOnceAtStart()?Math.random()*(this.numTilesX*this.numTilesY):0}evaluate(e){if(!this.sampleOnceAtStart())return this.getIndex(e)}getIndex(e){const t=this.numTilesX*this.numTilesY;e=e*this.cycleCount;let s=this.frameOverTime.evaluate(e%1);return s*=this.frameOverTimeMultiplier,s*=t,s=s%t,s=Math.floor(s),s}}O([m()],Vt.prototype,"animation"),O([m()],Vt.prototype,"enabled"),O([m()],Vt.prototype,"cycleCount"),O([m(Z)],Vt.prototype,"frameOverTime"),O([m()],Vt.prototype,"frameOverTimeMultiplier"),O([m()],Vt.prototype,"numTilesX"),O([m()],Vt.prototype,"numTilesY"),O([m(Z)],Vt.prototype,"startFrame"),O([m()],Vt.prototype,"startFrameMultiplier"),O([m()],Vt.prototype,"rowMode"),O([m()],Vt.prototype,"rowIndex"),O([m()],Vt.prototype,"spriteCount"),O([m()],Vt.prototype,"timeMode");class Es{constructor(){a(this,"enabled"),a(this,"separateAxes"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier")}evaluate(e,t){return this.enabled?this.separateAxes?0:this.z.evaluate(e,t)*-1:0}}O([m()],Es.prototype,"enabled"),O([m()],Es.prototype,"separateAxes"),O([m(Z)],Es.prototype,"x"),O([m()],Es.prototype,"xMultiplier"),O([m(Z)],Es.prototype,"y"),O([m()],Es.prototype,"yMultiplier"),O([m(Z)],Es.prototype,"z"),O([m()],Es.prototype,"zMultiplier");class hs{constructor(){a(this,"enabled"),a(this,"range"),a(this,"separateAxes"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier")}evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){const s=W.lerp(this.range.x,this.range.y,t);return this.z.evaluate(s)*-1}return 0}}O([m()],hs.prototype,"enabled"),O([m()],hs.prototype,"range"),O([m()],hs.prototype,"separateAxes"),O([m(Z)],hs.prototype,"x"),O([m()],hs.prototype,"xMultiplier"),O([m(Z)],hs.prototype,"y"),O([m()],hs.prototype,"yMultiplier"),O([m(Z)],hs.prototype,"z"),O([m()],hs.prototype,"zMultiplier");class gt{constructor(){a(this,"enabled"),a(this,"dampen"),a(this,"drag"),a(this,"dragMultiplier"),a(this,"limit"),a(this,"limitMultiplier"),a(this,"separateAxes"),a(this,"limitX"),a(this,"limitXMultiplier"),a(this,"limitY"),a(this,"limitYMultiplier"),a(this,"limitZ"),a(this,"limitZMultiplier"),a(this,"multiplyDragByParticleSize",!1),a(this,"multiplyDragByParticleVelocity",!1),a(this,"space"),a(this,"_temp",new S),a(this,"_temp2",new S)}apply(e,t,s,o,r,l,c){if(this.enabled){const h=this.limit.evaluate(r)*this.limitMultiplier;if(t.length()>h){this._temp.copy(t).normalize().multiplyScalar(h);const d=this.dampen*.5;t.x=W.lerp(t.x,this._temp.x,d),t.y=W.lerp(t.y,this._temp.y,d),t.z=W.lerp(t.z,this._temp.z,d),s.x=W.lerp(s.x,this._temp.x,d),s.y=W.lerp(s.y,this._temp.y,d),s.z=W.lerp(s.z,this._temp.z,d)}}}}O([m()],gt.prototype,"enabled"),O([m()],gt.prototype,"dampen"),O([m(Z)],gt.prototype,"drag"),O([m()],gt.prototype,"dragMultiplier"),O([m(Z)],gt.prototype,"limit"),O([m()],gt.prototype,"limitMultiplier"),O([m()],gt.prototype,"separateAxes"),O([m(Z)],gt.prototype,"limitX"),O([m()],gt.prototype,"limitXMultiplier"),O([m(Z)],gt.prototype,"limitY"),O([m()],gt.prototype,"limitYMultiplier"),O([m(Z)],gt.prototype,"limitZ"),O([m()],gt.prototype,"limitZMultiplier"),O([m()],gt.prototype,"multiplyDragByParticleSize"),O([m()],gt.prototype,"multiplyDragByParticleVelocity"),O([m()],gt.prototype,"space");const fh=class MC{constructor(){a(this,"enabled"),a(this,"curve"),a(this,"curveMultiplier"),a(this,"mode"),a(this,"system"),a(this,"_temp",new S),a(this,"_firstUpdate",!0),a(this,"_frames",0)}clone(){var e;const t=new MC;return t.enabled=this.enabled,t.curve=(e=this.curve)==null?void 0:e.clone(),t.curveMultiplier=this.curveMultiplier,t.mode=this.mode,t}get _lastWorldPosition(){return this.system._iv_lastWorldPosition||(this.system._iv_lastWorldPosition=new S),this.system._iv_lastWorldPosition}get _velocity(){return this.system._iv_velocity||(this.system._iv_velocity=new S),this.system._iv_velocity}awake(e){this.system=e,this.reset()}reset(){this._firstUpdate=!0}update(e){this.enabled&&this.system.worldspace!==!1&&(this._firstUpdate?(this._firstUpdate=!1,this._velocity.set(0,0,0),this._lastWorldPosition.copy(this.system.worldPos)):this._lastWorldPosition&&(this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1/this.system.deltaTime),this._lastWorldPosition.copy(this.system.worldPos)))}applyInitial(e){if(this.enabled&&this.system.worldspace!==!1&&this.mode===0){const t=this.curve.evaluate(Math.random(),Math.random());this._temp.copy(this._velocity).multiplyScalar(t),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}applyCurrent(e,t,s){if(this.enabled&&this.system&&this.system.worldspace!==!1&&this.mode===1){const o=this.curve.evaluate(t,s);this._temp.copy(this._velocity).multiplyScalar(o),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}};O([m()],fh.prototype,"enabled"),O([m(Z)],fh.prototype,"curve"),O([m()],fh.prototype,"curveMultiplier"),O([m()],fh.prototype,"mode");let Sy=fh;class bi{constructor(){a(this,"enabled"),a(this,"range"),a(this,"separateAxes"),a(this,"size"),a(this,"sizeMultiplier"),a(this,"x"),a(this,"xMultiplier"),a(this,"y"),a(this,"yMultiplier"),a(this,"z"),a(this,"zMultiplier")}evaluate(e,t,s,o){const r=e.length(),l=W.remap(r,this.range.x,this.range.y,0,1),c=this.size.evaluate(l,s);return o.x*=c,o.y*=c,o.z*=c,o}}O([m()],bi.prototype,"enabled"),O([m(re)],bi.prototype,"range"),O([m()],bi.prototype,"separateAxes"),O([m(Z)],bi.prototype,"size"),O([m()],bi.prototype,"sizeMultiplier"),O([m(Z)],bi.prototype,"x"),O([m()],bi.prototype,"xMultiplier"),O([m(Z)],bi.prototype,"y"),O([m()],bi.prototype,"yMultiplier"),O([m(Z)],bi.prototype,"z"),O([m()],bi.prototype,"zMultiplier");class Pl{constructor(){a(this,"enabled"),a(this,"range"),a(this,"color")}evaluate(e,t,s){const o=e.length(),r=W.remap(o,this.range.x,this.range.y,0,1),l=this.color.evaluate(r,t);s.x*=l.r,s.y*=l.g,s.z*=l.b,"alpha"in l&&(s.w*=l.alpha)}}O([m()],Pl.prototype,"enabled"),O([m(re)],Pl.prototype,"range"),O([m(sa)],Pl.prototype,"color"),new S(1,1,1),new S(0,0,1);class Cy{constructor(e,t,s,o){a(this,"type","NeedleParticleSubEmitter"),a(this,"emitterType"),a(this,"emitterProbability"),a(this,"q_",new V),a(this,"v_",new S),a(this,"v2_",new S),a(this,"_emitterMatrix",new Hm),a(this,"_circularBuffer"),this.system=e,this.particleSystem=t,this.subSystem=s,this.subParticleSystem=o,this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0);const r=1e3;this._circularBuffer=new Oi(()=>new Hm,r)}clone(){throw new Error("Method not implemented.")}initialize(e){e.emissionState={burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0},this._emitterMatrix.copy(this.subSystem.matrixWorld).invert().premultiply(this.system.matrixWorld),this._emitterMatrix.setPosition(0,0,0),this.emitterType===Py.Birth&&this.run(e)}update(e,t){this.run(e)}frameUpdate(e){}toJSON(){}reset(){}run(e){if(this.subSystem.currentParticles>=this.subSystem.main.maxParticles||!this.subParticleSystem||!e.emissionState||this.emitterProbability&&Math.random()>this.emitterProbability)return;const t=this.system.deltaTime;if(this.emitterType===Py.Death){let o=e.life;if(e[Ol]!==void 0&&(o=e[Ol]),!(e.age+t*1.2>=o))return;const r=this.subSystem.main.maxParticles-this.subSystem.currentParticles;e.emissionState.waitEmiting=r}const s=new Hm;s.set(1,0,0,e.position.x,0,1,0,e.position.y,0,0,1,e.position.z,0,0,0,1),this.particleSystem.worldSpace||s.multiplyMatrices(this._emitterMatrix,s),this.subParticleSystem.emit(t,e.emissionState,s)}}var p2=Object.defineProperty,Ve=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&p2(e,t,o),o};const ir=C("debugparticles"),m2=C("noprogressive"),g2=C("debugprogressive");var Py=(n=>(n[n.Birth=0]="Birth",n[n.Collision=1]="Collision",n[n.Death=2]="Death",n[n.Trigger=3]="Trigger",n[n.Manual=4]="Manual",n))(Py||{});class ds extends I{constructor(){super(...arguments),a(this,"renderMode"),a(this,"particleMaterial"),a(this,"trailMaterial"),a(this,"particleMesh"),a(this,"maxParticleSize"),a(this,"minParticleSize"),a(this,"velocityScale"),a(this,"cameraVelocityScale"),a(this,"lengthScale")}start(){if(this.maxParticleSize!==.5&&this.minParticleSize!==0&&F()){const e=`ParticleSystem "${this.name}" has non-default min/max particle size. This may not render correctly. Please set min size to 0 and the max size to 0.5 and use the "StartSize" setting instead`;console.warn(e)}}get transparent(){var e;return((e=this.particleMaterial)==null?void 0:e.transparent)??!1}getMaterial(e=!1){let t=e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial;if(t){if(t.type==="MeshStandardMaterial"){ir&&console.debug("ParticleSystemRenderer.getMaterial: MeshStandardMaterial detected, converting to MeshBasicMaterial. See https://github.com/Alchemist0823/three.quarks/issues/101"),"map"in t&&t.map&&(t.map.colorSpace=On,t.map.premultiplyAlpha=!1);const s=new Me;s.copy(t),e?this.trailMaterial=s:this.particleMaterial=s}t.map&&(t.map.colorSpace=On,t.map.premultiplyAlpha=!1),e&&t.side===fo&&(t=t.clone(),t.side=wd,e?this.trailMaterial=t:this.particleMaterial=t)}return t&&!m2&&t._didRequestTextureLOD===void 0&&(t._didRequestTextureLOD=0,g2&&console.log("Load material LOD",t.name),Xe.assignTextureLOD(t,0)),t}getMesh(e){let t=null;if(!t&&(this.particleMesh instanceof G&&(t=this.particleMesh.geometry),t===null)){t=new Ns(1,1);const s=t.attributes.uv;for(let o=0;o<s.count;o++)s.setX(o,1-s.getX(o))}return new G(t,this.getMaterial())}}Ve([m()],ds.prototype,"renderMode"),Ve([m(Pe)],ds.prototype,"particleMaterial"),Ve([m(Pe)],ds.prototype,"trailMaterial"),Ve([m()],ds.prototype,"maxParticleSize"),Ve([m()],ds.prototype,"minParticleSize"),Ve([m()],ds.prototype,"velocityScale"),Ve([m()],ds.prototype,"cameraVelocityScale"),Ve([m()],ds.prototype,"lengthScale");class Lp{constructor(e,t=1){a(this,"_curve"),a(this,"_factor"),a(this,"type","function"),this._curve=e,this._factor=t}startGen(e){}genValue(e,t){return this._curve.evaluate(t,Math.random())*this._factor}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}}class Oy{constructor(e){a(this,"type","value"),a(this,"system"),this.system=e}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}startGen(e){}}class f2 extends Oy{genValue(){return this.system.textureSheetAnimation.getStartIndex()}}class y2 extends Oy{constructor(){super(...arguments),a(this,"_lastPosition",new S),a(this,"_lastDistance",0)}update(){const e=ee(this.system.gameObject);this._lastDistance=this._lastPosition.distanceTo(e),this._lastPosition.copy(e)}genValue(){if(!this.system.isPlaying||!this.system.emission.enabled||this.system.currentParticles>=this.system.maxParticles)return 0;let e=this.system.emission.rateOverTime.evaluate(this.system.time/this.system.duration,Math.random());if(this.system.deltaTime>0){const o=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random());let r=this._lastDistance/this.system.deltaTime*o;Number.isFinite(r)||(r=0),e+=r}const t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);const s=this.system.maxParticles-this.system.currentParticles;return W.clamp(e,0,s/this.system.deltaTime)}}class v2 extends Oy{genValue(){return this.system.isPlaying,0}}class sr{constructor(e){a(this,"system"),a(this,"type"),this.type=Object.getPrototypeOf(this).constructor.name||"ParticleSystemBaseBehaviour",e&&(this.system=e)}get context(){return this.system.context}initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}reset(){}}class b2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleTextureSheet")}update(e,t){const s=this.system.textureSheetAnimation;if(s.enabled){const o=e.age/e.life,r=s.evaluate(o);r!==void 0&&(e.uvTile=r)}}}const aS=Symbol("particleRotation");class _2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleRotation")}initialize(e){e[aS]=Math.random()}update(e,t){if(e.rotation===void 0)return;const s=e.age/e.life;if(typeof e.rotation=="number"&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(s,e[aS])*t:this.system.renderer.renderMode===Zn.Billboard&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){const o=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(s,o)*t}}}const lS=Symbol("sizeLerpFactor"),w2=new S;class x2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleSize"),a(this,"_minSize",0),a(this,"_maxSize",1)}initialize(e){e[lS]=Math.random(),this._minSize=this.system.renderer.minParticleSize,this._maxSize=this.system.renderer.maxParticleSize}update(e,t){const s=e.age/e.life;let o=1;this.system.sizeOverLifetime.enabled&&(o*=this.system.sizeOverLifetime.evaluate(s,void 0,e[lS]).x);let r=1;this.system.renderer.renderMode!==Zn.Mesh&&(r=this.system.worldScale.x/this.system.cameraScale);const l=q(e.startSize).multiplyScalar(o*r);if(e.size.set(l.x,l.y,l.z),this.system.localspace){const c=pS(this.system,w2);e.size.x*=c.x,e.size.y*=c.y,e.size.z*=c.z}}}const Ol=Symbol("particleLife"),ky=Symbol("trailLifetime"),cS=Symbol("trailStartLength"),My=Symbol("trailWidthRandom");class S2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleTrail")}initialize(e){e instanceof Zv&&(e[Ol]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[ky]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[ky]),e[cS]=e.length,e[My]=Math.random())}update(e){var t;if((t=this.system.trails)!=null&&t.enabled&&e instanceof Zv){const s=e,o=e.age/e[Ol],r=e.previous.values(),l=e.previous.length;for(let c=0;c<l;c++){const h=r.next().value,d=1-c/(l-1),u=e.size;if(u.x<=0&&!this.system.trails.sizeAffectsWidth){const p=20*this.system.trails.widthOverTrail.evaluate(.5,s[My]);u.x=p,u.y=p,u.z=p}h.size=this.system.trails.getWidth(u.x,o,d,s[My]),h.color.copy(e.color),this.system.trails.getColor(h.color,o,d)}if(e.age>e[Ol]){e.velocity.set(0,0,0);const c=(e.age-e[Ol])/e[ky];s.length=W.lerp(e[cS],0,c)}}}}const jp=Symbol("startVelocity"),hS=Symbol("gravityModifier"),Ry=Symbol("gravitySpeed"),Dp=Symbol("velocity lerp factor"),Ty=new S;class C2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleVelocity"),a(this,"_gravityDirection",new S)}initialize(e){var t,s;const o=this.system.main.simulationSpeed;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random());const r=this.system.shape.getDirection(e,e.position);e.velocity.x=r.x*e.startSpeed,e.velocity.y=r.y*e.startSpeed,e.velocity.z=r.z*e.startSpeed,(t=this.system.inheritVelocity)!=null&&t.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[jp]?e[jp].copy(e.velocity):e[jp]=e.velocity.clone();const l=this.system.main.gravityModifier.evaluate(Math.random(),Math.random());e[hS]=l*o,e[Ry]=l*o*.5,e[Dp]=Math.random(),(s=this.system.velocityOverLifetime)==null||s.init(e),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===gh.Local&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted).normalize()}update(e,t){var s;const o=e[jp],r=e[hS];if(r!==0){const g=r*e[Ry];Ty.copy(this._gravityDirection).multiplyScalar(g),e[Ry]+=t*.05,o.add(Ty)}e.velocity.copy(o);const l=e.age/e.life;(s=this.system.inheritVelocity)!=null&&s.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,l,e[Dp]);const c=this.system.noise;c.enabled&&c.apply(0,e.position,e.velocity,t,e.age,e.life);const h=this.system.sizeBySpeed;h!=null&&h.enabled&&(e.size=h.evaluate(e.velocity,l,e[Dp],e.size));const d=this.system.colorBySpeed;d!=null&&d.enabled&&d.evaluate(e.velocity,e[Dp],e.color);const u=this.system.velocityOverLifetime;u.enabled&&u.apply(e,0,e.position,e.velocity,t,e.age,e.life);const p=this.system.limitVelocityOverLifetime;if(p.enabled&&p.apply(e.position,o,e.velocity,e.size,l,t,1),this.system.worldspace){const g=this.system.worldScale;e.velocity.x*=g.x,e.velocity.y*=g.y,e.velocity.z*=g.z}}}const dS=Symbol("colorLerpFactor"),uS=new he(1,1,1,1),oa=new he(1,1,1,1);class P2 extends sr{constructor(){super(...arguments),a(this,"type","NeedleColor")}initialize(e){}_init(e){const t=this.system.renderer.particleMaterial;oa.copy(this.system.main.startColor.evaluate(Math.random())),t!=null&&t.color&&(uS.copy(t.color),oa.multiply(uS)),oa.convertLinearToSRGB(),e.startColor.set(oa.r,oa.g,oa.b,oa.alpha),e.color.copy(e.startColor),e[dS]=Math.random()}update(e,t){if(e.age===0&&this._init(e),this.system.colorOverLifetime.enabled){const s=e.age/e.life,o=this.system.colorOverLifetime.color.evaluate(s,e[dS]);e.color.set(o.r,o.g,o.b,"alpha"in o?o.alpha:1).multiply(e.startColor)}else e.color.copy(e.startColor)}}class O2{constructor(e){a(this,"system"),a(this,"emission"),a(this,"autoDestroy"),a(this,"startLength"),a(this,"emissionBursts"),a(this,"onlyUsedByOther"),a(this,"behaviors",[]),a(this,"rendererEmitterSettings",{startLength:new CO(220),followLocalOrigin:!1}),a(this,"flatWhiteTexture"),a(this,"clonedTexture",{original:void 0,clone:void 0}),this.system=e,this.emission=new y2(this.system)}get anim(){return this.system.textureSheetAnimation}get prewarm(){return!1}get material(){return this.system.renderer.getMaterial(this.system.trails.enabled)}get layers(){return this.system.gameObject.layers}update(){this.emission.update()}get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Lp(this.system.main.startLifetime)}get startSpeed(){return new Lp(this.system.main.startSpeed)}get startRotation(){return new Lp(this.system.main.startRotation)}get startSize(){return new Lp(this.system.main.startSize)}get startColor(){return new xO(new SO(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new v2(this.system)}get instancingGeometry(){return this.system.renderer.getMesh(this.system.renderer.renderMode).geometry}get renderMode(){if(this.system.trails.enabled===!0)return Tn.Trail;switch(this.system.renderer.renderMode){case Zn.Billboard:return Tn.BillBoard;case Zn.Stretch:return Tn.StretchedBillBoard;case Zn.HorizontalBillboard:return Tn.HorizontalBillBoard;case Zn.VerticalBillboard:return Tn.VerticalBillBoard;case Zn.Mesh:return Tn.Mesh}return Tn.BillBoard}get speedFactor(){var e;let t=this.system.main.simulationSpeed;return((e=this.system.renderer)==null?void 0:e.renderMode)===Zn.Stretch&&(t*=this.system.renderer.velocityScale??1),t}get texture(){const e=this.material;if(e&&e.map){const t=e.map;if(this.clonedTexture.original!==t||!this.clonedTexture.clone){const s=t.clone();s.premultiplyAlpha=!1,s.colorSpace=On,this.clonedTexture.original=t,this.clonedTexture.clone=s}return this.clonedTexture.clone}return this.flatWhiteTexture||(this.flatWhiteTexture=Sf(new he(1,1,1,1),1)),this.flatWhiteTexture}get startTileIndex(){return new f2(this.system)}get uTileCount(){var e;return this.anim.enabled?(e=this.anim)==null?void 0:e.numTilesX:void 0}get vTileCount(){var e;return this.anim.enabled?(e=this.anim)==null?void 0:e.numTilesY:void 0}get renderOrder(){return 1}get blending(){var e;return((e=this.system.renderer.particleMaterial)==null?void 0:e.blending)??jP}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===gh.World}}class k2{constructor(){a(this,"burstParticleIndex",0),a(this,"burstParticleCount",0),a(this,"isBursting",!1),a(this,"travelDistance",0),a(this,"previousWorldPos"),a(this,"burstIndex",0),a(this,"burstWaveIndex",0),a(this,"time",0),a(this,"waitEmiting",0)}}const $t=class Cm extends I{constructor(){super(...arguments),a(this,"_state"),a(this,"colorOverLifetime"),a(this,"main"),a(this,"emission"),a(this,"sizeOverLifetime"),a(this,"shape"),a(this,"noise"),a(this,"trails"),a(this,"velocityOverLifetime"),a(this,"limitVelocityOverLifetime"),a(this,"inheritVelocity"),a(this,"colorBySpeed"),a(this,"textureSheetAnimation"),a(this,"rotationOverLifetime"),a(this,"rotationBySpeed"),a(this,"sizeBySpeed"),a(this,"_cameraScale",1),a(this,"__worldQuaternion",new V),a(this,"_worldQuaternionInverted",new V),a(this,"_worldScale",new S),a(this,"_worldPositionFrame",-1),a(this,"_worldPos",new S),a(this,"_renderer"),a(this,"_batchSystem"),a(this,"_particleSystem"),a(this,"_interface"),a(this,"_container"),a(this,"_time",0),a(this,"_isPlaying",!0),a(this,"_isUsedAsSubsystem",!1),a(this,"_didPreWarm",!1),a(this,"_bursts"),a(this,"_subEmitterSystems"),a(this,"_lastBatchesCount",-1)}play(e=!1){var t;e&&P.foreachComponent(this.gameObject,s=>{s instanceof Cm&&s!==this&&s.play(!1)},!0),this._isPlaying=!0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),(t=this.emission)==null||t.reset()}pause(e=!0){e&&P.foreachComponent(this.gameObject,t=>{t instanceof Cm&&t!==this&&t.pause(!1)},!0),this._isPlaying=!1}stop(e=!0,t=!1){e&&P.foreachComponent(this.gameObject,s=>{s instanceof Cm&&s!==this&&s.stop(!1,t)},!0),this._isPlaying=!1,this._time=0,t&&this.reset()}reset(){var e;this._time=0,this._particleSystem&&(this._particleSystem.particleNum=0,this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1,(e=this.emission)==null||e.reset())}emit(e){if(this._particleSystem){this.onUpdate(),e=Math.min(e,this.maxParticles-this.currentParticles),this._state||(this._state=new k2),this._state.waitEmiting=e,this._state.time=0;const t=this._particleSystem.emitEnded;this._particleSystem.emitEnded=!1,this._particleSystem.emit(this.deltaTime,this._state,this._particleSystem.emitter.matrixWorld),this._particleSystem.emitEnded=t}}get playOnAwake(){return this.main.playOnAwake}set playOnAwake(e){this.main.playOnAwake=e}get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){var e;return((e=this._particleSystem)==null?void 0:e.particleNum)??0}get maxParticles(){return this.main.maxParticles}get time(){return this._time}get duration(){return this.main.duration}get deltaTime(){return this.context.time.deltaTime*this.main.simulationSpeed}get scale(){return this.gameObject.scale.x}get cameraScale(){return this._cameraScale}get container(){return this._container}get worldspace(){return this.main.simulationSpace===gh.World}get localspace(){return this.main.simulationSpace===gh.Local}get worldQuaternion(){return this.__worldQuaternion}get worldQuaternionInverted(){return this._worldQuaternionInverted}get worldScale(){return this._worldScale}get worldPos(){return this._worldPositionFrame!==this.context.time.frame&&(this._worldPositionFrame=this.context.time.frame,ee(this.gameObject,this._worldPos)),this._worldPos}get matrixWorld(){return this._container.matrixWorld}get isSubsystem(){return this._isUsedAsSubsystem}addBehaviour(e){return this._particleSystem?(e instanceof sr&&(e.system=this),ir&&console.debug("Add custom ParticleSystem Behaviour",e),this._particleSystem.addBehavior(e),!0):!1}removeBehaviour(e){if(!this._particleSystem)return!1;const t=this._particleSystem.behaviors,s=t.indexOf(e);return s!==-1&&((F()||ir)&&console.debug("Remove custom ParticleSystem Behaviour",s,e),t.splice(s,1)),!0}removeAllBehaviours(){return this._particleSystem?(this._particleSystem.behaviors.length=0,!0):!1}get behaviours(){return this._particleSystem?this._particleSystem.behaviors:null}get particleSystem(){return this._particleSystem??null}set bursts(e){for(let t=0;t<e.length;t++){const s=e[t];if(!(s instanceof Ap)){const o=new Ap;Na(o,s),e[t]=o}}this._bursts=e}set subEmitterSystems(e){for(let t=0;t<e.length;t++){const s=e[t];if(!(s instanceof Bp)){const o=new Bp;Na(o,s),e[t]=o}}ir&&e.length>0&&console.log("SubEmitters: ",e,this),this._subEmitterSystems=e}onAfterDeserialize(e){if(this._subEmitterSystems&&Array.isArray(this._subEmitterSystems))for(const t of this._subEmitterSystems)t._deserialize(this.context,this.gameObject)}awake(){if(this._worldPositionFrame=-1,this._renderer=this.gameObject.getComponent(ds),!this.main)throw new Error("Not Supported: ParticleSystem needs a serialized MainModule. Creating new particle systems at runtime is currently not supported.");this._container=new E,this._container.matrixAutoUpdate=!1,this.context.scene.add(this._container),this._batchSystem=new _O,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new O2(this),this._particleSystem=new wO(this._interface),this._particleSystem.addBehavior(new x2(this)),this._particleSystem.addBehavior(new P2(this)),this._particleSystem.addBehavior(new b2(this)),this._particleSystem.addBehavior(new _2(this)),this._particleSystem.addBehavior(new C2(this)),this._particleSystem.addBehavior(new S2(this)),this._batchSystem.addSystem(this._particleSystem);const e=this._particleSystem.emitter;this.context.scene.add(e),this.inheritVelocity.system&&this.inheritVelocity.system!==this&&(this.inheritVelocity=this.inheritVelocity.clone()),this.inheritVelocity.awake(this),ir&&(console.log(this),this.gameObject.add(new Ci(1)))}start(){this.addSubParticleSystems(),this.updateLayers(),this.renderer.particleMesh instanceof G&&this._interface.renderMode==Tn.Mesh&&Xe.assignMeshLOD(this.renderer.particleMesh,0).then(e=>{e&&this.particleSystem&&this._interface.renderMode==Tn.Mesh&&(this.particleSystem.instancingGeometry=e)})}onDestroy(){var e,t,s,o;(e=this._container)==null||e.removeFromParent(),(t=this._batchSystem)==null||t.removeFromParent(),(s=this._particleSystem)==null||s.emitter.removeFromParent(),(o=this._particleSystem)==null||o.dispose()}onEnable(){this.main&&(this.inheritVelocity&&(this.inheritVelocity.system=this),this._batchSystem&&(this._batchSystem.visible=!0),this.playOnAwake&&this.play(),this._isPlaying=this.playOnAwake)}onDisable(){this._batchSystem&&(this._batchSystem.visible=!1)}onBeforeRender(){var e;this.main&&(this._didPreWarm===!1&&((e=this.main)==null?void 0:e.prewarm)===!0&&(this._didPreWarm=!0,this.preWarm()),this.onUpdate(),this.onSimulate(this.deltaTime))}preWarm(){var e;if(!((e=this.emission)!=null&&e.enabled)||this.emission.rateOverTime.getMax()<=0)return;const t=1/60,s=this.main.duration,o=this.main.startLifetime.getMax(),r=Math.min(Math.max(s,o)/Math.max(.01,this.main.simulationSpeed),1e3),l=Math.ceil(r/t),c=Date.now();ir&&console.log(`Particles ${this.name} - Prewarm for ${l} frames (${r} sec). Duration: ${s}, Lifetime: ${o}`);for(let h=0;h<l&&!(this.currentParticles>=this.maxParticles);h++){const d=Date.now()-c;if(d>2e3){console.warn(`Particles ${this.name} - Prewarm took too long. Aborting: ${d}`);break}this.onUpdate(),this.onSimulate(t)}}onSimulate(e){if(this._batchSystem){let t=this.context.time.frameCount%60===0;this._lastBatchesCount!==this._batchSystem.batches.length&&(this._lastBatchesCount=this._batchSystem.batches.length,t=!0),t&&this.updateLayers(),this._batchSystem.update(e)}this._time+=e,this._time>this.duration&&(this._time=0)}updateLayers(){if(this._batchSystem)for(let e=0;e<this._batchSystem.batches.length;e++){const t=this._batchSystem.batches[e];t.layers.disableAll();const s=this.layer;t.layers.mask=1<<s}}onUpdate(){var e,t;if(this._bursts&&(this.emission.bursts=this._bursts,delete this._bursts),!this._isPlaying)return;const s=this.context.mainCamera;if(s){const l=Ge(s);this._cameraScale=l.x}const o=!this.worldspace,r=this.gameObject;if(Se(r,this.__worldQuaternion),this._worldQuaternionInverted.copy(this.__worldQuaternion).invert(),Ge(this.gameObject,this._worldScale),o&&this._container&&(e=this.gameObject)!=null&&e.parent){const l=pS(this,Ty);this._container.matrix.makeScale(l.x,l.y,l.z),this._container.matrix.makeRotationFromQuaternion(this.__worldQuaternion),this._container.matrix.setPosition(this.worldPos),this._container.matrix.scale(this.gameObject.scale)}this.emission.system=this,this._interface.update(),this.shape.onUpdate(this,this.context,this.main.simulationSpace,this.gameObject),this.noise.update(this.context),(t=this.inheritVelocity)==null||t.update(this.context),this.velocityOverLifetime.update(this)}addSubParticleSystems(){var e;if(this._subEmitterSystems&&this._particleSystem)for(const t of this._subEmitterSystems){t.particleSystem&&(t.particleSystem.__internalAwake?t.particleSystem.__internalAwake():F()&&console.warn("SubParticleSystem serialization issue(?)",t.particleSystem,t));const s=(e=t.particleSystem)==null?void 0:e._particleSystem;if(s){t.particleSystem._isUsedAsSubsystem=!0;const o=new Cy(this,this._particleSystem,t.particleSystem,s);o.emitterType=t.type,o.emitterProbability=t.emitProbability,this._particleSystem.addBehavior(o)}else ir&&console.warn("Could not add SubParticleSystem",t,this)}}};Ve([m(Ip)],$t.prototype,"colorOverLifetime"),Ve([m(Wt)],$t.prototype,"main"),Ve([m(eo)],$t.prototype,"emission"),Ve([m(na)],$t.prototype,"sizeOverLifetime"),Ve([m(xy)],$t.prototype,"shape"),Ve([m(Ce)],$t.prototype,"noise"),Ve([m(We)],$t.prototype,"trails"),Ve([m(qe)],$t.prototype,"velocityOverLifetime"),Ve([m(gt)],$t.prototype,"limitVelocityOverLifetime"),Ve([m(Sy)],$t.prototype,"inheritVelocity"),Ve([m(Pl)],$t.prototype,"colorBySpeed"),Ve([m(Vt)],$t.prototype,"textureSheetAnimation"),Ve([m(Es)],$t.prototype,"rotationOverLifetime"),Ve([m(hs)],$t.prototype,"rotationBySpeed"),Ve([m(bi)],$t.prototype,"sizeBySpeed");let yh=$t;class Bp{constructor(){a(this,"particleSystem"),a(this,"emitProbability",1),a(this,"properties"),a(this,"type")}_deserialize(e,t){const s=this.particleSystem;if(s instanceof yh)return;let o="";s&&typeof s.guid=="string"&&(o=s.guid,this.particleSystem=P.findByGuid(o,t)),ir&&!(this.particleSystem instanceof yh)&&console.warn("Could not find particle system for sub emitter",o,t,this)}}function pS(n,e){if(e.set(1,1,1),n.gameObject.parent&&n.localspace)switch(n.main.scalingMode){case wy.Local:e=Ge(n.gameObject.parent,e),e.x=1/e.x,e.y=1/e.y,e.z=1/e.z;break;default:if(!n.unsupported_scaling_mode){n.unsupported_scaling_mode=!0;const t="ParticleSystem scale mode "+wy[n.main.scalingMode]+" is not supported";F()&&be(t),console.warn(t,n.name,n)}e=Ge(n.gameObject,e);break}return e}class Nl extends I{constructor(){super(...arguments),a(this,"_didAssignPlayerColor",!1),a(this,"tryAssignColor",()=>{const e=P.getComponentInParent(this.gameObject,Ms);if(e&&e.owner)return this._didAssignPlayerColor=!0,this.assignUserColor(e.owner),!0;const t=P.getComponentInParent(this.gameObject,hi);return t!=null&&t.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(t.connectionId),!0):!1})}onEnable(){this.context.connection.beginListen(ie.JoinedRoom,this.tryAssignColor),this._didAssignPlayerColor||this.startCoroutine(this.waitForConnection())}onDisable(){this.context.connection.stopListen(ie.JoinedRoom,this.tryAssignColor)}*waitForConnection(){for(;!this.destroyed&&this.activeAndEnabled&&(yield wf(.2),!this.tryAssignColor()););}assignUserColor(e){const t=Nl.hashCode(e),s=Nl.colorFromHashCode(t);if(this.gameObject.type==="Mesh"){const o=this.gameObject;this.assignColor(s,e,o)}else if(this.gameObject.children)for(const o of this.gameObject.children){const r=o;r.material&&r.material.color&&this.assignColor(s,e,r)}}assignColor(e,t,s){let o=s.material;o&&(o._playerMaterial!==t&&(o=o.clone(),o._playerMaterial=t,s.material=o),o.color=e)}static hashCode(e){var t=0,s,o;if(e.length===0)return t;for(s=0;s<e.length;s++)o=e.charCodeAt(s),t=(t<<5)-t+o,t|=0;return t}static colorFromHashCode(e){const t=(e&16711680)>>16,s=(e&65280)>>8,o=e&255;return new oe(t/255,s/255,o/255)}}const vh=C("debugpost");let Ey=null;function M2(n){Ey=n}function mS(n){let e=n.gameObject;for(;e;){for(const t of hu(e))if(t.isPostProcessingManager===!0)return t;e=e.parent}return null}function R2(n){let e=mS(n);if(!e)if(Ey){vh&&console.warn("Adding postprocessing manager to the scene.");const t=n.scene;e=Ei(t,Ey)}else F()&&console.warn("No post processing manager found");return e}const ft={AT_START:-1e4,NormalPass:0,DepthDownsamplingPass:10,SSAO:20,SMAA:30,TiltShift:40,DepthOfField:50,ChromaticAberration:60,Bloom:70,Vignette:80,Pixelation:90,ToneMapping:100,HueSaturation:110,BrightnessContrast:120,Sharpening:130,AT_END:1e4};let ot=null;function T2(n){vh==="verbose"&&console.debug("Before ordering effects",[...n]),ot||(ot=new Map,ot.set(A.POSTPROCESSING.MODULE.NormalPass,ft.NormalPass),ot.set(A.POSTPROCESSING.MODULE.DepthDownsamplingPass,ft.DepthDownsamplingPass),ot.set(A.POSTPROCESSING.MODULE.SMAAEffect,ft.SMAA),ot.set(A.POSTPROCESSING.MODULE.SSAOEffect,ft.SSAO),ot.set(A.POSTPROCESSING_AO.MODULE.N8AOPostPass,ft.SSAO),ot.set(A.POSTPROCESSING_AO.MODULE.N8AOPass,ft.SSAO),ot.set(A.POSTPROCESSING.MODULE.TiltShiftEffect,ft.TiltShift),ot.set(A.POSTPROCESSING.MODULE.DepthOfFieldEffect,ft.DepthOfField),ot.set(A.POSTPROCESSING.MODULE.ChromaticAberrationEffect,ft.ChromaticAberration),ot.set(A.POSTPROCESSING.MODULE.BloomEffect,ft.Bloom),ot.set(A.POSTPROCESSING.MODULE.SelectiveBloomEffect,ft.Bloom),ot.set(A.POSTPROCESSING.MODULE.VignetteEffect,ft.Vignette),ot.set(A.POSTPROCESSING.MODULE.PixelationEffect,ft.Pixelation),ot.set(A.POSTPROCESSING.MODULE.ToneMappingEffect,ft.ToneMapping),ot.set(A.POSTPROCESSING.MODULE.HueSaturationEffect,ft.HueSaturation),ot.set(A.POSTPROCESSING.MODULE.BrightnessContrastEffect,ft.BrightnessContrast)),n.sort((e,t)=>{const s=typeof e.priority=="number"?e.priority:ot.get(e.effect.constructor)??Number.NEGATIVE_INFINITY,o=typeof t.priority=="number"?t.priority:ot.get(t.effect.constructor)??Number.NEGATIVE_INFINITY;return s===Number.NEGATIVE_INFINITY?(vh&&console.warn("Unknown effect found: ",e.constructor.name,e),1):o===Number.NEGATIVE_INFINITY?(vh&&console.warn("Unknown effect found: ",t.constructor.name,t),-1):s-o}),vh==="verbose"&&console.debug("After ordering effects",[...n])}var E2=Object.defineProperty,A2=Object.getOwnPropertyDescriptor,gS=(n,e,t,s)=>{for(var o=A2(e,t),r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&E2(e,t,o),o};const I2=C("debugpost");class N{constructor(e){a(this,"isVolumeParameter",!0),a(this,"_isInitialized",!1),a(this,"_active",!0),a(this,"_value"),a(this,"_valueRaw"),a(this,"_defaultValue"),a(this,"valueProcessor"),a(this,"onValueChanged"),e!==void 0&&this.initialize(e)}get isInitialized(){return this._isInitialized}initialize(e){e!==void 0&&(this._value=e,this._defaultValue=e,this._valueRaw=e,this._isInitialized=!0)}get overrideState(){return this._active}set overrideState(e){if(this._active===e)return;this._active=e;const t=e?this._valueRaw:this._defaultValue;this.processValue(t,!0)}get value(){return this._valueRaw}set value(e){this.isInitialized||this.initialize(e),this.processValue(e,!1)}set defaultValue(e){this._defaultValue=e}__init(){this.processValue(this._valueRaw,!0)}processValue(e,t){if(e==null||!t&&this.testIfValueChanged(e)===!1)return;const s=this._value;I2&&typeof s=="number"&&typeof e=="number"&&(s?.toFixed(4),e?.toFixed(4)),!this._active&&this._defaultValue!==void 0?(this._value=this._defaultValue,e=this._defaultValue,this._valueRaw=e):(this._valueRaw=e,this._active&&this.valueProcessor&&(e=this.valueProcessor(e)),this._value=e),this.onValueChanged&&this.onValueChanged(e,s,this)}testIfValueChanged(e){return this._valueRaw!==e}}gS([m()],N.prototype,"overrideState"),gS([m()],N.prototype,"value");class L2 extends es{constructor(){super([N])}onSerialize(e,t){}onDeserialize(e,t){const s=t.target,o=t.path;let r;if(s&&o&&(r=s[o]),(typeof r!="object"||typeof r=="object"&&r.isVolumeParameter!==!0)&&(r=new N),typeof e=="object"&&"value"in e){const l=e.value;r.initialize(l),r.overrideState=e.overrideState}else r.value=e;return r}}new L2;var j2=Object.defineProperty,D2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&j2(e,t,o),o};const Ay=C("debugpost");class rt extends I{constructor(e=void 0){if(super(),a(this,"order"),a(this,"active",!0),a(this,"_manager",null),a(this,"_result"),a(this,"_postprocessingContext",null),e)for(const t of Object.keys(e)){const s=e[t],o=this[t];o instanceof N?o.initialize(s):o!==void 0&&(this[t]=s)}}get isPostProcessingEffect(){return!0}onEnable(){super.onEnable(),Ay&&console.warn("Enable",this.constructor.name+(this.__internalDidAwakeAndStart?"":" (awake)")),this.__internalDidAwakeAndStart&&(this.active=!0),this.onEffectEnabled()}onDisable(){var e;super.onDisable(),Ay&&console.warn("Disable",this.constructor.name),(e=this._manager)==null||e.removeEffect(this),this.active=!1}onEffectEnabled(e){e&&e.isPostProcessingManager===!0?this._manager=e:this._manager||(this._manager=R2(this)),this._manager.addEffect(this),this._manager.dirty=!0}init(){}get postprocessingContext(){return this._postprocessingContext}apply(e){var t;return this._postprocessingContext=e,this._result||(this.initParameters(),this._result=(t=this.onCreateEffect)==null?void 0:t.call(this)),this._result&&this.initParameters(),this._result}unapply(){}dispose(){Ay&&console.warn("DISPOSE",this),this._result&&(Array.isArray(this._result)?this._result.forEach(e=>e.dispose()):this._result.dispose()),this._result=void 0}initParameters(){const e=Object.keys(this);for(const t of e){const s=this[t];s instanceof N&&s.__init()}}onEditorModification(e){const t=e.propertyName;if(this[t]instanceof N){const s=e.value;return this[t].value=s,!0}}}D2([m()],rt.prototype,"active");var B2=Object.defineProperty,F2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&B2(e,t,o),o};const U2=C("debugpost"),Iy={};function us(n,e){Iy[n]=e}function z2(n){return n.__type in Iy?Iy[n.__type]:(U2&&n.__type&&console.warn("Unknown postprocessing type",n.__type,n),rt)}class Fp{constructor(){a(this,"components",[])}__init(e){var t;(t=this.components)==null||t.forEach(s=>{s.gameObject===void 0&&e.gameObject.addComponent(s),s.init()})}addEffect(e){this.components.push(e)}removeEffect(e){const t=this.components.indexOf(e);t>=0&&this.components.splice(t,1)}}F2([Dr([n=>z2(n),rt])],Fp.prototype,"components");var N2=Object.defineProperty,W2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&N2(e,t,o),o};const V2=C("debugpost");class bh extends rt{constructor(){super(...arguments),a(this,"preset",new N(2))}get typeName(){return"Antialiasing"}onCreateEffect(){var e;const t=new A.POSTPROCESSING.MODULE.SMAAEffect({preset:((e=this.preset)==null?void 0:e.value)??A.POSTPROCESSING.MODULE.SMAAPreset.HIGH,edgeDetectionMode:A.POSTPROCESSING.MODULE.EdgeDetectionMode.LUMA});return this.preset.onValueChanged=s=>{V2&&console.log("Antialiasing preset changed to",s),t.applyPreset(s)},t}}W2([m(N)],bh.prototype,"preset"),us("Antialiasing",bh);var $2=Object.defineProperty,Ly=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&$2(e,t,o),o},Up;const zp=(Up=class extends rt{constructor(){super(...arguments),a(this,"threshold",new N(.9)),a(this,"intensity",new N(1)),a(this,"scatter",new N(.7)),a(this,"selectiveBloom")}get typeName(){return"Bloom"}init(){this.threshold.valueProcessor=n=>n,this.intensity.valueProcessor=n=>n,this.scatter.valueProcessor=n=>n}onCreateEffect(){let n;if(this.selectiveBloom==null&&(this.selectiveBloom=Up.useSelectiveBloom),this.selectiveBloom){const e=n=new A.POSTPROCESSING.MODULE.SelectiveBloomEffect(this.context.scene,this.context.mainCamera,{blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});e.inverted=!0}else n=new A.POSTPROCESSING.MODULE.BloomEffect({blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});return this.intensity.onValueChanged=e=>{n.intensity=e},this.threshold.onValueChanged=e=>{n.luminanceMaterial.threshold=Math.pow(e,2.2)},this.scatter.onValueChanged=e=>{n.luminancePass.enabled=!0,n.luminanceMaterial.smoothing=e,n.mipmapBlurPass&&(n.mipmapBlurPass.radius=Cn.lerp(.1,.9,e))},n}},a(Up,"useSelectiveBloom",!1),Up);Ly([m(N)],zp.prototype,"threshold"),Ly([m(N)],zp.prototype,"intensity"),Ly([m(N)],zp.prototype,"scatter");let Np=zp;us("Bloom",Np);var H2=Object.defineProperty,G2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&H2(e,t,o),o};class _h extends rt{constructor(){super(...arguments),a(this,"intensity",new N(0))}get typeName(){return"ChromaticAberration"}onCreateEffect(){const e=new A.POSTPROCESSING.MODULE.ChromaticAberrationEffect;return e.offset=new re(0,0),e.radialModulation=!0,e.modulationOffset=.15,this.intensity.valueProcessor=t=>t*.02,this.intensity.onValueChanged=t=>{e.offset.x=-t,e.offset.y=t},e}}G2([m(N)],_h.prototype,"intensity"),us("ChromaticAberration",_h);var wh=(n=>(n[n.None=0]="None",n[n.Neutral=1]="Neutral",n[n.ACES=2]="ACES",n[n.AgX=3]="AgX",n[n.KhronosNeutral=4]="KhronosNeutral",n))(wh||{});const fS=new Map;function jy(n){switch(n){case 0:return Um;case 1:return Fm;case 2:return vd;case 3:return yd;case 4:return Pa;default:return fS.has(n)||(fS.set(n,!0),console.warn("[Postprocessing] Unknown tone mapping mode",n)),Pa}}function q2(n){switch(n){case Um:return 0;case vd:return 2;case yd:return 3;case Pa:return 1;case Fm:return 1;default:return 0}}function Wp(n){switch(n){case Um:return A.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR;case vd:return A.POSTPROCESSING.MODULE.ToneMappingMode.ACES_FILMIC;case yd:return A.POSTPROCESSING.MODULE.ToneMappingMode.AGX;case Pa:return A.POSTPROCESSING.MODULE.ToneMappingMode.NEUTRAL;case Fm:return A.POSTPROCESSING.MODULE.ToneMappingMode.REINHARD;default:return A.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR}}var X2=Object.defineProperty,yS=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&X2(e,t,o),o};const Dy=C("debugpost");class nr extends rt{constructor(){super(...arguments),a(this,"mode",new N(void 0)),a(this,"exposure",new N(1)),a(this,"_tonemappingEffect",null)}get typeName(){return"ToneMapping"}setMode(e){const t=wh[e];return t===void 0?(console.error("[PostProcessing] Invalid ToneMapping mode",e),this):(this.mode.value=t,this)}get isToneMapping(){return!0}onEffectEnabled(){const e=mS(this);e&&super.onEffectEnabled(e)}onCreateEffect(){var e;if(this.mode.isInitialized==!1){const o=q2(this.context.renderer.toneMapping);Dy&&console.log("[PostProcessing] Initializing ToneMapping mode to renderer.toneMapping",this.context.renderer.toneMapping+" \u2192 "+o),this.mode.initialize(o)}(e=this._tonemappingEffect)==null||e.dispose();const t=jy(this.mode.value),s=this._tonemappingEffect=new A.POSTPROCESSING.MODULE.ToneMappingEffect({mode:Wp(t)});return this.mode.onValueChanged=o=>{if(typeof o=="string")o=Gw(o),s.mode=Wp(o);else{const r=jy(o);s.mode=Wp(r)}s.name="ToneMapping ("+wh[o]+")",Dy&&console.log("[PostProcessing] ToneMapping mode changed to",wh[o],t,s.mode)},Dy&&console.log("[PostProcessing] Use ToneMapping",wh[this.mode.value],t,s.mode,"renderer.tonemapping: "+this.context.renderer.toneMapping),s}onBeforeRender(){var e;if(this._tonemappingEffect&&(e=this.postprocessingContext)!=null&&e.handler.getEffectIsActive(this._tonemappingEffect)&&(this.mode.overrideState&&(this.context.renderer.toneMapping=jy(this.mode.value)),this.exposure.overrideState&&this.exposure.value!==void 0)){const t=Math.max(.01,this.exposure.value);this.context.renderer.toneMappingExposure=t}}}yS([m(N)],nr.prototype,"mode"),yS([m(N)],nr.prototype,"exposure"),us("Tonemapping",nr);var Q2=Object.defineProperty,Vp=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&Q2(e,t,o),o};class or extends rt{constructor(){super(...arguments),a(this,"remap",!0),a(this,"postExposure",new N(1)),a(this,"contrast",new N(0)),a(this,"hueShift",new N(0)),a(this,"saturation",new N(0))}get typeName(){return"ColorAdjustments"}init(){this.postExposure.valueProcessor=e=>(this.remap&&(e=Math.pow(2,e)),e),this.contrast.valueProcessor=e=>{if(!this.remap)return e;let t=1;return e>0?t=200:e<0&&(t=100),e/t},this.contrast.defaultValue=0,this.hueShift.valueProcessor=e=>this.remap?Math.PI*e/180:e,this.hueShift.defaultValue=0,this.saturation.valueProcessor=e=>this.remap?e<0?e/100:e/(100*Math.PI):e,this.saturation.defaultValue=0}onCreateEffect(){var e,t;const s=[];let o=(e=this.postprocessingContext)==null?void 0:e.components.find(c=>c instanceof nr);o||(o=new nr,(t=this.postprocessingContext)==null||t.components.push(o)),this.postExposure.onValueChanged=c=>{this.postExposure.overrideState&&o?o.exposure.value=c:console.warn("[PostProcessing] PostExposure is set to override but no ToneMappingEffect found in the postprocessing stack. Please add a ToneMappingEffect to your postprocessing stack to use PostExposure.")};const r=new A.POSTPROCESSING.MODULE.BrightnessContrastEffect;this.contrast.onValueChanged=c=>r.contrast=c;const l=new A.POSTPROCESSING.MODULE.HueSaturationEffect;return this.hueShift.onValueChanged=c=>l.hue=c,this.saturation.onValueChanged=c=>l.saturation=c,s.push(r),s.push(l),s}}Vp([m(N)],or.prototype,"postExposure"),Vp([m(N)],or.prototype,"contrast"),Vp([m(N)],or.prototype,"hueShift"),Vp([m(N)],or.prototype,"saturation"),us("ColorAdjustments",or);var Y2=Object.defineProperty,ra=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&Y2(e,t,o),o};const K2=C("debugpost");class As extends rt{constructor(){super(...arguments),a(this,"mode"),a(this,"focusDistance",new N(1)),a(this,"focalLength",new N(.2)),a(this,"aperture",new N(20)),a(this,"gaussianMaxRadius",new N),a(this,"resolutionScale",new N(1/window.devicePixelRatio)),a(this,"bokehScale",new N)}get typeName(){return"DepthOfField"}init(){this.focalLength.valueProcessor=t=>{const s=t/300;return W.lerp(2,.01,s)};const e=20;this.aperture.valueProcessor=t=>{const s=1-t/32;return W.lerp(1,e,s)}}onCreateEffect(){if(this.mode===0){K2&&console.warn("DepthOfField: Mode is set to Off");return}const e=new A.POSTPROCESSING.MODULE.DepthOfFieldEffect(this.context.mainCamera,{worldFocusRange:.2,focalLength:1,bokehScale:20,resolutionScale:this.resolutionScale.value});return this.focusDistance.onValueChanged=t=>{e.cocMaterial.worldFocusDistance=t},this.focalLength.onValueChanged=t=>e.cocMaterial.worldFocusRange=t,this.aperture.onValueChanged=t=>e.bokehScale=t,this.resolutionScale&&(this.resolutionScale.onValueChanged=t=>e.resolution.scale=t),[e]}unapply(){}}ra([m()],As.prototype,"mode"),ra([m(N)],As.prototype,"focusDistance"),ra([m(N)],As.prototype,"focalLength"),ra([m(N)],As.prototype,"aperture"),ra([m(N)],As.prototype,"gaussianMaxRadius"),ra([m(N)],As.prototype,"resolutionScale"),ra([m(N)],As.prototype,"bokehScale"),us("DepthOfField",As);class xh extends rt{constructor(e){super(),a(this,"effect"),this.effect=e}get typeName(){return this.effect.constructor.name}onCreateEffect(){return this.effect}}var Z2=Object.defineProperty,J2=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&Z2(e,t,o),o};class Sh extends rt{constructor(){super(...arguments),a(this,"granularity",new N(10))}get typeName(){return"PixelationEffect"}onCreateEffect(){const e=new A.POSTPROCESSING.MODULE.PixelationEffect;return this.granularity.onValueChanged=t=>{e.granularity=t},e}}J2([m(N)],Sh.prototype,"granularity"),us("PixelationEffect",Sh);var eI=Object.defineProperty,Ch=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&eI(e,t,o),o};class to extends rt{constructor(){super(...arguments),a(this,"intensity",new N(2)),a(this,"falloff",new N(1)),a(this,"samples",new N(9)),a(this,"color",new N(new oe(0,0,0))),a(this,"luminanceInfluence",new N(.7)),a(this,"_ssao")}get typeName(){return"ScreenSpaceAmbientOcclusion"}onBeforeRender(){if(this._ssao&&this.context.mainCamera instanceof we){const e=this.context.mainCamera.far-this.context.mainCamera.near;this._ssao.ssaoMaterial.worldDistanceFalloff=e*.01,this._ssao.ssaoMaterial.worldDistanceThreshold=this.context.mainCamera.far}}onCreateEffect(){const e=this.context.mainCamera,t=new A.POSTPROCESSING.MODULE.NormalPass(this.context.scene,e),s=new A.POSTPROCESSING.MODULE.DepthDownsamplingPass({normalBuffer:t.texture,resolutionScale:.5}),o=this._ssao=new A.POSTPROCESSING.MODULE.SSAOEffect(e,t.texture,{normalDepthBuffer:s.texture,worldDistanceThreshold:1,worldDistanceFalloff:1,worldProximityThreshold:.1,worldProximityFalloff:2,intensity:1,blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.MULTIPLY,luminanceInfluence:.5});this.intensity.onValueChanged=l=>{o.intensity=l},this.falloff.onValueChanged=l=>{o.ssaoMaterial.radius=l*.1},this.samples.onValueChanged=l=>{o.ssaoMaterial.samples=l},this.color.onValueChanged=l=>{o.color||(o.color=new oe),o.color.copy(l)},this.luminanceInfluence.onValueChanged=l=>{o.luminanceInfluence=l};const r=new Array;return r.push(t),r.push(s),r.push(o),r}}Ch([m(N)],to.prototype,"intensity"),Ch([m(N)],to.prototype,"falloff"),Ch([m(N)],to.prototype,"samples"),Ch([m(N)],to.prototype,"color"),Ch([m(N)],to.prototype,"luminanceInfluence"),us("ScreenSpaceAmbientOcclusion",to);var tI=Object.defineProperty,aa=(n,e,t,s)=>{for(var o=void 0,r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&tI(e,t,o),o};const iI=C("debugN8AO");var By=(n=>(n[n.Performance=0]="Performance",n[n.Low=1]="Low",n[n.Medium=2]="Medium",n[n.High=3]="High",n[n.Ultra=4]="Ultra",n))(By||{});class Is extends rt{constructor(){super(...arguments),a(this,"gammaCorrection",!0),a(this,"aoRadius",new N(1)),a(this,"falloff",new N(1)),a(this,"intensity",new N(1)),a(this,"color",new N(new oe(0,0,0))),a(this,"screenspaceRadius",!1),a(this,"quality",2),a(this,"_ssao")}get typeName(){return"ScreenSpaceAmbientOcclusionN8"}get pass(){return this._ssao}onValidate(){this._ssao&&(this._ssao.setQualityMode(By[this.quality]),this._ssao.configuration.gammaCorrection=this.gammaCorrection,this._ssao.configuration.screenSpaceRadius=this.screenspaceRadius)}onCreateEffect(){const e=this.context.mainCamera,t=this.context.domWidth,s=this.context.domHeight,o=this._ssao=new A.POSTPROCESSING_AO.MODULE.N8AOPostPass(this.context.scene,e,t,s);o.name="SSAO_N8";const r=By[this.quality];o.setQualityMode(r),o.configuration.transparencyAware=!1;const l=new $s(t,s);return o.configuration.beautyRenderTarget=l,o.configuration.autoRenderBeauty=!1,o.configuration.gammaCorrection=this.gammaCorrection,o.configuration.screenSpaceRadius=this.screenspaceRadius,iI&&(o.enableDebugMode(),console.log(o),setInterval(()=>{console.log("SSAO",o.lastTime)},1e3),setInterval(()=>{console.log("SSAO",o.enabled,{ssao:o,autoRenderBeauty:o.configuration.autoRenderBeauty})},4e3)),this.intensity.onValueChanged=c=>{o.configuration.intensity=c},this.falloff.onValueChanged=c=>{o.configuration.distanceFalloff=c},this.aoRadius.onValueChanged=c=>{o.configuration.aoRadius=c},this.color.onValueChanged=c=>{o.color||(o.color=new oe),o.configuration.color.copy(c)},o}}aa([Tt(),m()],Is.prototype,"gammaCorrection"),aa([m(N)],Is.prototype,"aoRadius"),aa([m(N)],Is.prototype,"falloff"),aa([m(N)],Is.prototype,"intensity"),aa([m(N)],Is.prototype,"color"),aa([Tt(),m()],Is.prototype,"screenspaceRadius"),aa([Tt(),m()],Is.prototype,"quality"),us("ScreenSpaceAmbientOcclusionN8",Is);var sI=Object.defineProperty,nI=Object.getOwnPropertyDescriptor,vS=(n,e,t,s)=>{for(var o=nI(e,t),r=n.length-1,l;r>=0;r--)(l=n[r])&&(o=l(e,t,o)||o);return o&&sI(e,t,o),o};class Ph extends rt{constructor(){super(...arguments),a(this,"order",ft.Sharpening),a(this,"_effect"),a(this,"_amount",1),a(this,"_radius",1)}get typeName(){return"Sharpening"}onCreateEffect(){return this._effect??(this._effect=new(oI())),this.effect}get effect(){return this._effect}set amount(e){this._amount=e,this._effect&&(this._effect.uniforms.get("amount").value=e)}get amount(){return this._effect?this._effect.uniforms.get("amount").value:this._amount}set radius(e){this._radius=e,this._effect&&(this._effect.uniforms.get("radius").value=e)}get radius(){return this._effect?this._effect.uniforms.get("radius").value:this._radius}}vS([m()],Ph.prototype,"amount"),vS([m()],Ph.prototype,"radius");function oI(){const n=`
1274
1274
  void mainSupport() {
1275
1275
  vUv = uv;
1276
1276
  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);