@needle-tools/engine 5.0.0 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/SKILL.md +211 -27
- package/dist/{needle-engine.bundle-CoEvMwYM.min.js → needle-engine.bundle-B3ywqx5o.min.js} +2 -2
- package/dist/{needle-engine.bundle-BDIyvCV6.js → needle-engine.bundle-BoTyA-Le.js} +768 -753
- package/dist/{needle-engine.bundle-BAYLGumK.umd.cjs → needle-engine.bundle-CzOPcOui.umd.cjs} +4 -4
- package/dist/needle-engine.d.ts +7 -0
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine-components/Light.d.ts +8 -0
- package/lib/engine-components/Light.js +20 -0
- package/lib/engine-components/Light.js.map +1 -1
- package/package.json +2 -2
- package/src/engine-components/Light.ts +24 -0
|
@@ -140,7 +140,7 @@ void main(){
|
|
|
140
140
|
#__vconsole .vc-mask {
|
|
141
141
|
overflow: hidden;
|
|
142
142
|
}
|
|
143
|
-
`,kr?.prepend(i),o===!0&&u_()<=0&&N_(),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.":"")),xc=!1,pi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function dk(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("needle-console","\u{1F335} Inspect glTF"),e=()=>document.querySelector("#__vc_plug_"+o._id+" iframe");return o.on("renderTab",function(t){const i=globalThis["needle:codegen_files"];if(!i||i.length===0)return;let n=globalThis["needle:codegen_files"][0];const s=n.indexOf("?");s>-1&&(n=n.substring(0,s));const r=location.protocol+"//"+location.host+location.pathname+"/"+n,a=encodeURIComponent(r);o.fullUrl="https://viewer.needle.tools?inspect&file="+a;var l='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';t(l)}),o.on("show",function(){const t=e();t&&t.src!==o.fullUrl&&(t.src=o.fullUrl)}),o.on("hide",function(){const t=e();t&&(t.src="")}),o.on("addTopBar",function(t){var i=new Array;i.push({name:"Open in new window \u2197",onClick:function(n){window.open(o.fullUrl,"_blank"),pi?.hide()}}),i.push({name:"Reload",onClick:function(n){const s=e();s&&(s.src=o.fullUrl)}}),i.push({name:"Fullscreen",onClick:function(n){const s=e();s.requestFullscreen?s.requestFullscreen():s.webkitRequestFullscreen instanceof Function&&s.webkitRequestFullscreen()}}),t(i)}),o}const Cg="padding: 10px; font-family: monospace;",V_="margin-bottom: 10px;",Mr="margin-bottom: 10px; margin-top: 15px;",uk="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",$_="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",pk=$_,mk=$_+" word-break: break-all;";function Xn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${uk}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${pk}'>${i.label}</td><td style='${mk}'>${n}</td></tr>`}return t+="</tbody></table>",t}function H_(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function gk(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("device-utilities","\u{1F4F1} Device Info");return o.on("renderTab",function(e){let t=`<div style='${Cg}'>`;const i=Pk();t+=`<h3 style='${V_}'>Device: ${i}</h3>`,t+=Xn([{label:"\u{1F4BB} Desktop",value:I.isDesktop()},{label:"\u{1F4F1} Mobile Device",value:I.isMobileDevice()},{label:"\u{1F34E} iOS",value:I.isiOS()},{label:"\u{1F4F1} iPad",value:I.isiPad()},{label:"\u{1F916} Android",value:I.isAndroidDevice()},{label:"\u{1F98A} Mozilla XR",value:I.isMozillaXR()},{label:"\u{1F335} Needle App Clip",value:I.isNeedleAppClip()},{label:"\u{1F34F} macOS",value:I.isMacOS()},{label:"\u{1F453} VisionOS",value:I.isVisionOS()},{label:"\u{1F9ED} Safari",value:I.isSafari()},{label:"\u{1F576}\uFE0F Meta Quest",value:I.isQuest()},{label:"\u{1F517} QuickLook AR Support",value:I.supportsQuickLookAR()}],!0);const n=[],s=I.getiOSVersion();s&&n.push({label:"\u{1F34E} iOS Version",value:s});const r=I.getChromeVersion();r&&n.push({label:"\u{1F310} Chrome Version",value:r});const a=I.getSafariVersion();a&&n.push({label:"\u{1F9ED} Safari Version",value:a}),n.length>0&&(t+=Xn(n,!1)),t+="</div>",t+=`<div style='${Cg} margin-top: 20px;'>`,t+=`<h3 style='${V_}'>User Agent Info</h3>`;const l=[{label:"User Agent",value:navigator.userAgent},{label:"Platform",value:navigator.platform},{label:"App Version",value:navigator.appVersion},{label:"User Agent Data",value:navigator.userAgentData?`Platform: ${navigator.userAgentData.platform}, Mobile: ${navigator.userAgentData.mobile}`:"Not supported"},{label:"WebXR",value:"xr"in navigator?"\u2705":"\u274C"},{label:"WebGPU",value:"gpu"in navigator?"\u2705":"\u274C"},{label:"WebGL 2",value:H_()}];t+=Xn(l,!1),t+="</div>",e(t)}),o}function fk(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("graphics-info","\u{1F3A8} Graphics Info");return o.on("renderTab",async function(e){let t=`<div style='${Cg}'>`;const i=yk();i.length>0&&(t+=`<h3 style='${Mr}'>General GPU Info</h3>`,t+=Xn(i,!1));const n=_k();n.length>0&&(t+=`<h3 style='${Mr}'>WebGL</h3>`,t+=Xn(n,!1));const s=vk();s.length>0&&(t+=`<h3 style='${Mr}'>WebGL 2 Features</h3>`,t+=Xn(s,!1));const r=wk();r.length>0&&(t+=`<h3 style='${Mr}'>WebGL Limits</h3>`,t+=Xn(r,!1));const a=xk();a.length>0&&(t+=`<h3 style='${Mr}'>Texture Formats</h3>`,t+=Xn(a,!1));const l=await Sk();if(l.length>0&&(t+=`<h3 style='${Mr}'>WebGPU</h3>`,t+=Xn(l,!1)),I.isSafari()){const c=Ck();c.length>0&&(t+=`<h3 style='${Mr}'>Safari GPU Info</h3>`,t+=Xn(c,!1))}t+="</div>",e(t)}),o}function yk(){const o=[],e=window.devicePixelRatio;o.push({label:"Device Pixel Ratio",value:e.toString()}),o.push({label:"Width (px)",value:(window.innerWidth*e).toString()}),o.push({label:"Height (px)",value:(window.innerHeight*e).toString()});const t=I.isMobileDevice()?150:96,i=screen.width/t,n=screen.height/t,s=i*2.54,r=n*2.54;o.push({label:"Estimated Width (cm)",value:s.toFixed(1)}),o.push({label:"Estimated Height (cm)",value:r.toFixed(1)});const a=G_();if(a){o.push({label:"GPU",value:a.renderer}),o.push({label:"Driver",value:a.vendor}),o.push({label:"ANGLE",value:a.angle||"Not detected"});const l=bk(a.renderer);l&&(l.manufacturer&&o.push({label:"Manufacturer",value:l.manufacturer}),l.cardVersion&&o.push({label:"Card Version",value:l.cardVersion}),l.brand&&o.push({label:"Brand",value:l.brand}),o.push({label:"Integrated",value:l.integrated?"Yes":"No"}),l.layer&&o.push({label:"WebGL Layer",value:l.layer}))}return o}function bk(o){if(!o)return null;const e=(l,c)=>{const h=c.match(l);return h&&h[0]},t=e(/(ANGLE)/g,o)||void 0,i=e(/((NVIDIA|AMD|Intel)[^\d]*[^\s]+)/,o)||o,n=i.split(" ");n.shift();const s=e(/(NVIDIA|AMD|Intel)/g,i)||void 0,r=n.length>0?n.pop():void 0,a=n.length>0?n.join(" "):void 0;return{manufacturer:s,cardVersion:r,brand:a,integrated:s==="Intel",layer:t,card:i}}function _k(){const o=[],e=G_();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:H_()})),o}function vk(){const o=[];try{const e=document.createElement("canvas").getContext("webgl2");if(!e)return o;o.push({label:"Float Color Buffer",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"Anisotropic Filtering",value:e.getExtension("EXT_texture_filter_anisotropic")?"\u2705":"\u274C"}),o.push({label:"Float Texture Linear",value:e.getExtension("OES_texture_float_linear")?"\u2705":"\u274C"}),o.push({label:"S3TC Compression",value:e.getExtension("WEBGL_compressed_texture_s3tc")?"\u2705":"\u274C"}),o.push({label:"ETC Compression",value:e.getExtension("WEBGL_compressed_texture_etc")?"\u2705":"\u274C"}),o.push({label:"PVRTC Compression",value:e.getExtension("WEBGL_compressed_texture_pvrtc")?"\u2705":"\u274C"}),o.push({label:"ASTC Compression",value:e.getExtension("WEBGL_compressed_texture_astc")?"\u2705":"\u274C"})}catch{}return o}function wk(){const o=[];try{const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t)return o;const i=t instanceof WebGL2RenderingContext;o.push({label:"\u{1F4CF} Max Texture Size",value:t.getParameter(t.MAX_TEXTURE_SIZE).toString()}),o.push({label:"\u{1F3A8} Max Renderbuffer Size",value:t.getParameter(t.MAX_RENDERBUFFER_SIZE).toString()}),o.push({label:"\u{1F517} Max Vertex Attribs",value:t.getParameter(t.MAX_VERTEX_ATTRIBS).toString()}),o.push({label:"\u{1F3AF} Max Texture Units",value:t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS).toString()}),i&&(o.push({label:"\u26A1 Max Samples",value:t.getParameter(t.MAX_SAMPLES).toString()}),o.push({label:"\u{1F504} Max Uniform Buffer Bindings",value:t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),o.push({label:"\u{1F4D0} Max 3D Texture Size",value:t.getParameter(t.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return o}function xk(){const o=[];try{document.createElement("canvas").getContext("webgl")&&(o.push({label:"WebGL 1 RGBA",value:"\u2705"}),o.push({label:"WebGL 1 RGB",value:"\u2705"}));const e=document.createElement("canvas").getContext("webgl2");e&&(o.push({label:"WebGL 2 RGBA32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 RGB32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 R11F_G11F_B10F",value:"\u2705"}),o.push({label:"WebGL 2 RGB565",value:"\u2705"}),o.push({label:"WebGL 2 RGB5_A1",value:"\u2705"}),o.push({label:"WebGL 2 RGBA4444",value:"\u2705"}))}catch{}return o}async function Sk(){const o=[];if(!("gpu"in navigator))return o.push({label:"\u{1F680} WebGPU Support",value:"\u274C Not supported"}),o;o.push({label:"\u{1F680} WebGPU Support",value:"\u2705 Supported"});try{const e=await navigator.gpu.requestAdapter();if(!e)return o.push({label:"\u{1F3AF} Adapter",value:"No adapter available"}),o;o.push({label:"\u{1F3AF} Adapter",value:e.name||"Unknown Adapter"});const t=await e.requestDevice();o.push({label:"\u{1F527} Device",value:t.label||"WebGPU Device"}),o.push({label:"\u{1F4CF} Max Texture 2D",value:t.limits.maxTextureDimension2D.toString()}),o.push({label:"\u{1F4D0} Max Texture 3D",value:t.limits.maxTextureDimension3D.toString()}),o.push({label:"\u{1F4CA} Max Texture Array Layers",value:t.limits.maxTextureArrayLayers.toString()}),o.push({label:"\u{1F4BE} Max Buffer Size",value:`${(t.limits.maxBufferSize/1024/1024).toFixed(1)}MB`}),o.push({label:"\u{1F517} Max Bind Groups",value:t.limits.maxBindGroups.toString()})}catch(e){o.push({label:"\u274C Error",value:e.message})}return o}function G_(){try{const o=document.createElement("canvas"),e=o.getContext("webgl2")||o.getContext("webgl");if(!e)return null;const t=e.getExtension("WEBGL_debug_renderer_info"),i=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER),n=t?e.getParameter(t.UNMASKED_VENDOR_WEBGL):e.getParameter(e.VENDOR),s=e.getParameter(e.VERSION);let r;if(i&&i.includes("ANGLE")){const a=i.match(/ANGLE \(([^)]+)\)/);a&&(r=a[1])}return{renderer:i,vendor:n,version:s,angle:r}}catch{return null}}function Ck(){const o=[];try{const e=document.createElement("canvas").getContext("webgl");if(e){const t=e.getExtension("WEBGL_debug_renderer_info");if(t){const i=e.getParameter(t.UNMASKED_RENDERER_WEBGL);i&&i.includes("Apple")&&o.push({label:"\u{1F34E} Apple GPU",value:i})}}}catch{}try{const e=document.createElement("canvas").getContext("webgl");e&&(e.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&o.push({label:"\u{1F5DC}\uFE0F PVRTC Support",value:"\u2705"})}catch{}return o}function Pk(){return I.isQuest()?"Meta Quest":I.isVisionOS()?"Vision Pro":I.isiOS()?I.isiPad()?"iPad":"iPhone/iPod":I.isAndroidDevice()?"Android Device":I.isMozillaXR()?"Mozilla XR Browser":I.isNeedleAppClip()?"Needle App Clip":I.isMacOS()?"Mac":I.isDesktop()?"Desktop PC":"Unknown Device"}function Ok(){return document.querySelector("#__vconsole .vc-switch")||null}function kk(){return document.querySelector("#__vconsole")||null}const Kd=w("debugtypes");class Mk{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){Kd&&console.warn("TypeStore: Created",this)}add(e,t){Kd&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?Kd&&i!==t&&console.warn("Type name exists multiple times in your project and may lead to runtime errors:",e):(this._types.set(e,t),this._reverseTypes.set(t,e))}addLazy(e,t){this._types.has(e)||this._lazyLoaders.set(e,t)}get(e){return this._types.get(e)||null}async getAsync(e){const t=this._types.get(e);if(t)return t;const i=this._lazyLoaders.get(e);if(i){Kd&&console.warn("LAZY LOAD TYPE",e);const n=await i();return this.add(e,n),this._lazyLoaders.delete(e),n}return null}getKey(e){return this._reverseTypes.get(e)||null}}const Rk=Symbol("BuiltInType"),C=new Mk,Pg=function(o){C.get(o.name)||C.add(o.name,o)};class Ek{context;mixers=[];constructor(e){this.context=e}onDestroy(){this.mixers.forEach(e=>e.stopAllAction()),this.mixers.length=0}registerAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(e)||this.mixers.push(e)}unregisterAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const t=this.mixers.indexOf(e);t!==-1&&this.mixers.splice(t,1)}}class Qn{static testIfRootCanAnimate(e,t){const i=e.getRoot();return i&&(i.userData.static||i.matrixAutoUpdate===!1||i.matrixWorldAutoUpdate===!1)?((t===!0||t===void 0&&A())&&console.warn(`AnimationUtils: The root object (${i.name||i.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:i.userData.static,name:i.userData.name,tag:i.userData.tag,matrixAutoUpdate:i.matrixAutoUpdate,matrixWorldAutoUpdate:i.matrixWorldAutoUpdate}),!1):!0}static tryGetActionsFromMixer(e){return e._actions||null}static tryGetAnimationClipsFromObjectHierarchy(e,t){if(t||(t=new Array),e)e.animations&&t.push(...e.animations);else return t;if(e.children)for(const i of e.children)this.tryGetAnimationClipsFromObjectHierarchy(i,t);return t}static autoplayAnimations(e){if(!e||!e.animations)return console.debug("No animations found in file"),null;const t="scene"in e?e.scene:e,i=new Array;for(let s=0;s<e.animations.length;s++){const r=e.animations[s];if(!r.tracks||r.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const a in r.tracks){const l=r.tracks[a],c=La.parseTrackName(l.name);let h=La.findNode(t,c.nodeName);if(!h){const p=l.__objectName??l.name.substring(0,l.name.indexOf("."));if(h=t.getObjectByProperty("uuid",p),!h)continue}let d=n(h)||n(t);if(!d){const p=C.get("Animation");if(d=t.addComponent(p),!d){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}i.push(d),d.addClip&&d.addClip(r)}}return i;function n(s){if(!s)return null;const r=s.userData?.components;if(r&&r.length>0)for(let a=0;a<r.length;a++){const l=r[a];if(l.isAnimationComponent===!0)return l}return n(s.parent)}}static emptyClip(){return new Ri("empty",0,[])}static createScaleClip(e){const t=e?.duration??.3;let i={x:1,y:1,z:1};e?.scale!==void 0&&(typeof e.scale=="number"?i={x:e.scale,y:e.scale,z:e.scale}:i=e.scale);const n=e?.type??"linear",s=e?.scaleFactor??1.2,r=new Array,a=new Array;switch(n){case"linear":r.push(0,t),a.push(i.x,i.y,i.z,i.x*s,i.y*s,i.z*s);break;case"spring":r.push(0,t*.3,t*.5,t*.7,t*.9,t),a.push(i.x,i.y,i.z,i.x*s,i.y*s,i.z*s,i.x*.9,i.y*.9,i.z*.9,i.x*1.05,i.y*1.05,i.z*1.05,i.x*.98,i.y*.98,i.z*.98,i.x,i.y,i.z);break}const l=new oC(".scale",r,a);return new Ri("scale",r[r.length-1],[l])}}const qe=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=q_(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=q_(t)}return function(e,t){if(!e){const n=typeof t=="string"?t:t.name;console.warn(`@serializable without a target at '${n}'.`);return}typeof t!="string"&&(t=t.name),Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});const i=e.$serializedTypes=e.$serializedTypes||{};i[t]=o}};function q_(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const X_=w("debugcomponentevents");class Jd{static eventListeners=new Map;static addComponentLifecylceEventListener(e,t){this.eventListeners.has(e)&&this.eventListeners.set(e,[]);let i=this.eventListeners.get(e);i||(i=[]),i.push(t),this.eventListeners.set(e,i),X_&&console.log("Added event listener for "+e,this.eventListeners)}static removeComponentLifecylceEventListener(e,t){const i=this.eventListeners.get(e);if(!i)return;const n=i.indexOf(t);n<0||i.splice(n,1)}static dispatchComponentLifecycleEvent(e,t){const i=this.eventListeners.get(e);if(X_&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const Q_=w("debugdefines");Os('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Os('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Os('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Os('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Os('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.0.0";'),Os('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Os('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Mar 27 2026 15:06:29 GMT+0000 (Coordinated Universal Time)";'),Os('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const mi="5.0.0",$a="undefined",Sc="Fri Mar 27 2026 15:06:29 GMT+0000 (Coordinated Universal Time)";Q_&&console.log(`Engine version: ${mi} (generator: ${$a})
|
|
143
|
+
`,kr?.prepend(i),o===!0&&u_()<=0&&N_(),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.":"")),xc=!1,pi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function dk(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("needle-console","\u{1F335} Inspect glTF"),e=()=>document.querySelector("#__vc_plug_"+o._id+" iframe");return o.on("renderTab",function(t){const i=globalThis["needle:codegen_files"];if(!i||i.length===0)return;let n=globalThis["needle:codegen_files"][0];const s=n.indexOf("?");s>-1&&(n=n.substring(0,s));const r=location.protocol+"//"+location.host+location.pathname+"/"+n,a=encodeURIComponent(r);o.fullUrl="https://viewer.needle.tools?inspect&file="+a;var l='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';t(l)}),o.on("show",function(){const t=e();t&&t.src!==o.fullUrl&&(t.src=o.fullUrl)}),o.on("hide",function(){const t=e();t&&(t.src="")}),o.on("addTopBar",function(t){var i=new Array;i.push({name:"Open in new window \u2197",onClick:function(n){window.open(o.fullUrl,"_blank"),pi?.hide()}}),i.push({name:"Reload",onClick:function(n){const s=e();s&&(s.src=o.fullUrl)}}),i.push({name:"Fullscreen",onClick:function(n){const s=e();s.requestFullscreen?s.requestFullscreen():s.webkitRequestFullscreen instanceof Function&&s.webkitRequestFullscreen()}}),t(i)}),o}const Cg="padding: 10px; font-family: monospace;",V_="margin-bottom: 10px;",Mr="margin-bottom: 10px; margin-top: 15px;",uk="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",$_="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",pk=$_,mk=$_+" word-break: break-all;";function Xn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${uk}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${pk}'>${i.label}</td><td style='${mk}'>${n}</td></tr>`}return t+="</tbody></table>",t}function H_(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function gk(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("device-utilities","\u{1F4F1} Device Info");return o.on("renderTab",function(e){let t=`<div style='${Cg}'>`;const i=Pk();t+=`<h3 style='${V_}'>Device: ${i}</h3>`,t+=Xn([{label:"\u{1F4BB} Desktop",value:I.isDesktop()},{label:"\u{1F4F1} Mobile Device",value:I.isMobileDevice()},{label:"\u{1F34E} iOS",value:I.isiOS()},{label:"\u{1F4F1} iPad",value:I.isiPad()},{label:"\u{1F916} Android",value:I.isAndroidDevice()},{label:"\u{1F98A} Mozilla XR",value:I.isMozillaXR()},{label:"\u{1F335} Needle App Clip",value:I.isNeedleAppClip()},{label:"\u{1F34F} macOS",value:I.isMacOS()},{label:"\u{1F453} VisionOS",value:I.isVisionOS()},{label:"\u{1F9ED} Safari",value:I.isSafari()},{label:"\u{1F576}\uFE0F Meta Quest",value:I.isQuest()},{label:"\u{1F517} QuickLook AR Support",value:I.supportsQuickLookAR()}],!0);const n=[],s=I.getiOSVersion();s&&n.push({label:"\u{1F34E} iOS Version",value:s});const r=I.getChromeVersion();r&&n.push({label:"\u{1F310} Chrome Version",value:r});const a=I.getSafariVersion();a&&n.push({label:"\u{1F9ED} Safari Version",value:a}),n.length>0&&(t+=Xn(n,!1)),t+="</div>",t+=`<div style='${Cg} margin-top: 20px;'>`,t+=`<h3 style='${V_}'>User Agent Info</h3>`;const l=[{label:"User Agent",value:navigator.userAgent},{label:"Platform",value:navigator.platform},{label:"App Version",value:navigator.appVersion},{label:"User Agent Data",value:navigator.userAgentData?`Platform: ${navigator.userAgentData.platform}, Mobile: ${navigator.userAgentData.mobile}`:"Not supported"},{label:"WebXR",value:"xr"in navigator?"\u2705":"\u274C"},{label:"WebGPU",value:"gpu"in navigator?"\u2705":"\u274C"},{label:"WebGL 2",value:H_()}];t+=Xn(l,!1),t+="</div>",e(t)}),o}function fk(){if(!globalThis.VConsole)return;const o=new VConsole.VConsolePlugin("graphics-info","\u{1F3A8} Graphics Info");return o.on("renderTab",async function(e){let t=`<div style='${Cg}'>`;const i=yk();i.length>0&&(t+=`<h3 style='${Mr}'>General GPU Info</h3>`,t+=Xn(i,!1));const n=_k();n.length>0&&(t+=`<h3 style='${Mr}'>WebGL</h3>`,t+=Xn(n,!1));const s=vk();s.length>0&&(t+=`<h3 style='${Mr}'>WebGL 2 Features</h3>`,t+=Xn(s,!1));const r=wk();r.length>0&&(t+=`<h3 style='${Mr}'>WebGL Limits</h3>`,t+=Xn(r,!1));const a=xk();a.length>0&&(t+=`<h3 style='${Mr}'>Texture Formats</h3>`,t+=Xn(a,!1));const l=await Sk();if(l.length>0&&(t+=`<h3 style='${Mr}'>WebGPU</h3>`,t+=Xn(l,!1)),I.isSafari()){const c=Ck();c.length>0&&(t+=`<h3 style='${Mr}'>Safari GPU Info</h3>`,t+=Xn(c,!1))}t+="</div>",e(t)}),o}function yk(){const o=[],e=window.devicePixelRatio;o.push({label:"Device Pixel Ratio",value:e.toString()}),o.push({label:"Width (px)",value:(window.innerWidth*e).toString()}),o.push({label:"Height (px)",value:(window.innerHeight*e).toString()});const t=I.isMobileDevice()?150:96,i=screen.width/t,n=screen.height/t,s=i*2.54,r=n*2.54;o.push({label:"Estimated Width (cm)",value:s.toFixed(1)}),o.push({label:"Estimated Height (cm)",value:r.toFixed(1)});const a=G_();if(a){o.push({label:"GPU",value:a.renderer}),o.push({label:"Driver",value:a.vendor}),o.push({label:"ANGLE",value:a.angle||"Not detected"});const l=bk(a.renderer);l&&(l.manufacturer&&o.push({label:"Manufacturer",value:l.manufacturer}),l.cardVersion&&o.push({label:"Card Version",value:l.cardVersion}),l.brand&&o.push({label:"Brand",value:l.brand}),o.push({label:"Integrated",value:l.integrated?"Yes":"No"}),l.layer&&o.push({label:"WebGL Layer",value:l.layer}))}return o}function bk(o){if(!o)return null;const e=(l,c)=>{const h=c.match(l);return h&&h[0]},t=e(/(ANGLE)/g,o)||void 0,i=e(/((NVIDIA|AMD|Intel)[^\d]*[^\s]+)/,o)||o,n=i.split(" ");n.shift();const s=e(/(NVIDIA|AMD|Intel)/g,i)||void 0,r=n.length>0?n.pop():void 0,a=n.length>0?n.join(" "):void 0;return{manufacturer:s,cardVersion:r,brand:a,integrated:s==="Intel",layer:t,card:i}}function _k(){const o=[],e=G_();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:H_()})),o}function vk(){const o=[];try{const e=document.createElement("canvas").getContext("webgl2");if(!e)return o;o.push({label:"Float Color Buffer",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"Anisotropic Filtering",value:e.getExtension("EXT_texture_filter_anisotropic")?"\u2705":"\u274C"}),o.push({label:"Float Texture Linear",value:e.getExtension("OES_texture_float_linear")?"\u2705":"\u274C"}),o.push({label:"S3TC Compression",value:e.getExtension("WEBGL_compressed_texture_s3tc")?"\u2705":"\u274C"}),o.push({label:"ETC Compression",value:e.getExtension("WEBGL_compressed_texture_etc")?"\u2705":"\u274C"}),o.push({label:"PVRTC Compression",value:e.getExtension("WEBGL_compressed_texture_pvrtc")?"\u2705":"\u274C"}),o.push({label:"ASTC Compression",value:e.getExtension("WEBGL_compressed_texture_astc")?"\u2705":"\u274C"})}catch{}return o}function wk(){const o=[];try{const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t)return o;const i=t instanceof WebGL2RenderingContext;o.push({label:"\u{1F4CF} Max Texture Size",value:t.getParameter(t.MAX_TEXTURE_SIZE).toString()}),o.push({label:"\u{1F3A8} Max Renderbuffer Size",value:t.getParameter(t.MAX_RENDERBUFFER_SIZE).toString()}),o.push({label:"\u{1F517} Max Vertex Attribs",value:t.getParameter(t.MAX_VERTEX_ATTRIBS).toString()}),o.push({label:"\u{1F3AF} Max Texture Units",value:t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS).toString()}),i&&(o.push({label:"\u26A1 Max Samples",value:t.getParameter(t.MAX_SAMPLES).toString()}),o.push({label:"\u{1F504} Max Uniform Buffer Bindings",value:t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),o.push({label:"\u{1F4D0} Max 3D Texture Size",value:t.getParameter(t.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return o}function xk(){const o=[];try{document.createElement("canvas").getContext("webgl")&&(o.push({label:"WebGL 1 RGBA",value:"\u2705"}),o.push({label:"WebGL 1 RGB",value:"\u2705"}));const e=document.createElement("canvas").getContext("webgl2");e&&(o.push({label:"WebGL 2 RGBA32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 RGB32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 R11F_G11F_B10F",value:"\u2705"}),o.push({label:"WebGL 2 RGB565",value:"\u2705"}),o.push({label:"WebGL 2 RGB5_A1",value:"\u2705"}),o.push({label:"WebGL 2 RGBA4444",value:"\u2705"}))}catch{}return o}async function Sk(){const o=[];if(!("gpu"in navigator))return o.push({label:"\u{1F680} WebGPU Support",value:"\u274C Not supported"}),o;o.push({label:"\u{1F680} WebGPU Support",value:"\u2705 Supported"});try{const e=await navigator.gpu.requestAdapter();if(!e)return o.push({label:"\u{1F3AF} Adapter",value:"No adapter available"}),o;o.push({label:"\u{1F3AF} Adapter",value:e.name||"Unknown Adapter"});const t=await e.requestDevice();o.push({label:"\u{1F527} Device",value:t.label||"WebGPU Device"}),o.push({label:"\u{1F4CF} Max Texture 2D",value:t.limits.maxTextureDimension2D.toString()}),o.push({label:"\u{1F4D0} Max Texture 3D",value:t.limits.maxTextureDimension3D.toString()}),o.push({label:"\u{1F4CA} Max Texture Array Layers",value:t.limits.maxTextureArrayLayers.toString()}),o.push({label:"\u{1F4BE} Max Buffer Size",value:`${(t.limits.maxBufferSize/1024/1024).toFixed(1)}MB`}),o.push({label:"\u{1F517} Max Bind Groups",value:t.limits.maxBindGroups.toString()})}catch(e){o.push({label:"\u274C Error",value:e.message})}return o}function G_(){try{const o=document.createElement("canvas"),e=o.getContext("webgl2")||o.getContext("webgl");if(!e)return null;const t=e.getExtension("WEBGL_debug_renderer_info"),i=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER),n=t?e.getParameter(t.UNMASKED_VENDOR_WEBGL):e.getParameter(e.VENDOR),s=e.getParameter(e.VERSION);let r;if(i&&i.includes("ANGLE")){const a=i.match(/ANGLE \(([^)]+)\)/);a&&(r=a[1])}return{renderer:i,vendor:n,version:s,angle:r}}catch{return null}}function Ck(){const o=[];try{const e=document.createElement("canvas").getContext("webgl");if(e){const t=e.getExtension("WEBGL_debug_renderer_info");if(t){const i=e.getParameter(t.UNMASKED_RENDERER_WEBGL);i&&i.includes("Apple")&&o.push({label:"\u{1F34E} Apple GPU",value:i})}}}catch{}try{const e=document.createElement("canvas").getContext("webgl");e&&(e.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&o.push({label:"\u{1F5DC}\uFE0F PVRTC Support",value:"\u2705"})}catch{}return o}function Pk(){return I.isQuest()?"Meta Quest":I.isVisionOS()?"Vision Pro":I.isiOS()?I.isiPad()?"iPad":"iPhone/iPod":I.isAndroidDevice()?"Android Device":I.isMozillaXR()?"Mozilla XR Browser":I.isNeedleAppClip()?"Needle App Clip":I.isMacOS()?"Mac":I.isDesktop()?"Desktop PC":"Unknown Device"}function Ok(){return document.querySelector("#__vconsole .vc-switch")||null}function kk(){return document.querySelector("#__vconsole")||null}const Kd=w("debugtypes");class Mk{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){Kd&&console.warn("TypeStore: Created",this)}add(e,t){Kd&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?Kd&&i!==t&&console.warn("Type name exists multiple times in your project and may lead to runtime errors:",e):(this._types.set(e,t),this._reverseTypes.set(t,e))}addLazy(e,t){this._types.has(e)||this._lazyLoaders.set(e,t)}get(e){return this._types.get(e)||null}async getAsync(e){const t=this._types.get(e);if(t)return t;const i=this._lazyLoaders.get(e);if(i){Kd&&console.warn("LAZY LOAD TYPE",e);const n=await i();return this.add(e,n),this._lazyLoaders.delete(e),n}return null}getKey(e){return this._reverseTypes.get(e)||null}}const Rk=Symbol("BuiltInType"),C=new Mk,Pg=function(o){C.get(o.name)||C.add(o.name,o)};class Ek{context;mixers=[];constructor(e){this.context=e}onDestroy(){this.mixers.forEach(e=>e.stopAllAction()),this.mixers.length=0}registerAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(e)||this.mixers.push(e)}unregisterAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const t=this.mixers.indexOf(e);t!==-1&&this.mixers.splice(t,1)}}class Qn{static testIfRootCanAnimate(e,t){const i=e.getRoot();return i&&(i.userData.static||i.matrixAutoUpdate===!1||i.matrixWorldAutoUpdate===!1)?((t===!0||t===void 0&&A())&&console.warn(`AnimationUtils: The root object (${i.name||i.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:i.userData.static,name:i.userData.name,tag:i.userData.tag,matrixAutoUpdate:i.matrixAutoUpdate,matrixWorldAutoUpdate:i.matrixWorldAutoUpdate}),!1):!0}static tryGetActionsFromMixer(e){return e._actions||null}static tryGetAnimationClipsFromObjectHierarchy(e,t){if(t||(t=new Array),e)e.animations&&t.push(...e.animations);else return t;if(e.children)for(const i of e.children)this.tryGetAnimationClipsFromObjectHierarchy(i,t);return t}static autoplayAnimations(e){if(!e||!e.animations)return console.debug("No animations found in file"),null;const t="scene"in e?e.scene:e,i=new Array;for(let s=0;s<e.animations.length;s++){const r=e.animations[s];if(!r.tracks||r.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const a in r.tracks){const l=r.tracks[a],c=La.parseTrackName(l.name);let h=La.findNode(t,c.nodeName);if(!h){const p=l.__objectName??l.name.substring(0,l.name.indexOf("."));if(h=t.getObjectByProperty("uuid",p),!h)continue}let d=n(h)||n(t);if(!d){const p=C.get("Animation");if(d=t.addComponent(p),!d){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}i.push(d),d.addClip&&d.addClip(r)}}return i;function n(s){if(!s)return null;const r=s.userData?.components;if(r&&r.length>0)for(let a=0;a<r.length;a++){const l=r[a];if(l.isAnimationComponent===!0)return l}return n(s.parent)}}static emptyClip(){return new Ri("empty",0,[])}static createScaleClip(e){const t=e?.duration??.3;let i={x:1,y:1,z:1};e?.scale!==void 0&&(typeof e.scale=="number"?i={x:e.scale,y:e.scale,z:e.scale}:i=e.scale);const n=e?.type??"linear",s=e?.scaleFactor??1.2,r=new Array,a=new Array;switch(n){case"linear":r.push(0,t),a.push(i.x,i.y,i.z,i.x*s,i.y*s,i.z*s);break;case"spring":r.push(0,t*.3,t*.5,t*.7,t*.9,t),a.push(i.x,i.y,i.z,i.x*s,i.y*s,i.z*s,i.x*.9,i.y*.9,i.z*.9,i.x*1.05,i.y*1.05,i.z*1.05,i.x*.98,i.y*.98,i.z*.98,i.x,i.y,i.z);break}const l=new oC(".scale",r,a);return new Ri("scale",r[r.length-1],[l])}}const qe=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=q_(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=q_(t)}return function(e,t){if(!e){const n=typeof t=="string"?t:t.name;console.warn(`@serializable without a target at '${n}'.`);return}typeof t!="string"&&(t=t.name),Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});const i=e.$serializedTypes=e.$serializedTypes||{};i[t]=o}};function q_(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const X_=w("debugcomponentevents");class Jd{static eventListeners=new Map;static addComponentLifecylceEventListener(e,t){this.eventListeners.has(e)&&this.eventListeners.set(e,[]);let i=this.eventListeners.get(e);i||(i=[]),i.push(t),this.eventListeners.set(e,i),X_&&console.log("Added event listener for "+e,this.eventListeners)}static removeComponentLifecylceEventListener(e,t){const i=this.eventListeners.get(e);if(!i)return;const n=i.indexOf(t);n<0||i.splice(n,1)}static dispatchComponentLifecycleEvent(e,t){const i=this.eventListeners.get(e);if(X_&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const Q_=w("debugdefines");Os('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Os('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Os('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Os('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Os('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.0.2";'),Os('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Os('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Apr 03 2026 09:10:54 GMT+0000 (Coordinated Universal Time)";'),Os('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const mi="5.0.2",$a="undefined",Sc="Fri Apr 03 2026 09:10:54 GMT+0000 (Coordinated Universal Time)";Q_&&console.log(`Engine version: ${mi} (generator: ${$a})
|
|
144
144
|
Project built at ${Sc}`);const Ps=NEEDLE_PUBLIC_KEY,Yn="needle_isActiveInHierarchy",Rr="builtin_components",Cc="needle_editor_guid";function Os(o){try{(0,eval)(o)}catch(e){Q_&&console.error(e)}}const Og={experimentalSmartHierarchyUpdate:!1},Di=Symbol("shadowDomOwner"),Tk=w("debugpatch");function eu(o,e,t,i){const n=Tk===e;if(!t&&!i)return;const s=e+"___needle";Ik(o,e,t,i);const r=Object.getOwnPropertyDescriptor(o,e),a=o[e];n&&console.log("Patch",o.constructor.name,e,r,a),r?(n&&console.log("Apply patch with existing descriptor",o.constructor.name,e,r),typeof r.value=="function"&&(o[e]=Z_(r.value,o,e))):(n&&console.log("Create patch with new property",o.constructor.name,e,r),Object.defineProperty(o,e,{set:function(l){if(typeof l=="function")this[s]=Z_(l,o,e);else{const c=this[s];K_(o,e,this,c,l),this[s]=l,J_(o,e,this,c,l)}},get:function(){const l=this[s];return typeof l=="function"&&l[s]?l[s]:l}}))}function Ak(o,e,t){const i=Mg(o,e);if(i)for(let n=i.length-1;n>=0;n--){const s=i[n];s.prefix===t&&(s.prefix=null),s.postfix===t&&(s.postfix=null),!s.prefix&&!s.postfix&&i.splice(n,1)}}const Y_=Symbol("Needle:Patches:WrappedFunction");function Z_(o,e,t){if(o[Y_])return o;const i=function(...n){K_(e,t,this,...n);const s=o.apply(this,n);return J_(e,t,this,s,...n),s};return i[Y_]=!0,i}const tu="Needle:Patches";function kg(){return globalThis[tu]||(globalThis[tu]=new WeakMap),globalThis[tu]}function Mg(o,e){const t=kg().get(o);return t?t.get(e):null}function Ik(o,e,t,i){let n=kg().get(o);n||(n=new Map,kg().set(o,n));let s=n.get(e);s||(s=[],n.set(e,s)),s.push({prefix:t,postfix:i})}function K_(o,e,t,...i){if(!t)return;const n=Mg(o,e);if(n)for(const s of n)s.prefix?.call(t,...i)}function J_(o,e,t,i,...n){if(!t)return;const s=Mg(o,e);if(s)for(const r of s)r.postfix?.call(t,i,...n)}function Lk(o,e){if(typeof window!==void 0&&window.SPECTOR){console.log(window.SPECTOR);const t=new URLSearchParams(window.location.search);if(t.has("spector")){let i=function(){if(n>o.time.frame)return window.requestAnimationFrame(()=>i());const r=s.captureCanvas(e);r&&r instanceof Promise?r.then(()=>s.displayUI()):s.displayUI()};const n=Number.parseInt(t.get("spector")||"0")||0;console.log("Scheduled Spector capture at frame #"+n);const s=new window.SPECTOR.Spector;s.spyCanvases=!0,i();return}else A()&&console.debug("Spector available: Add '?spector=<frame>' to the URL to enable it and capture a frame.")}}function ev(o){const e=o;return!!(e.parser&&e.parser.json)}var iu=(o=>(o[o.None=0]="None",o[o.DontExport=1]="DontExport",o))(iu||{});const tv=Symbol("component-name");function Rg(o){return o&&o.isComponent}const Dk=Symbol("object"),Eg=new Ii(()=>new b,20);class iv{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return Eg.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return Eg.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return Eg.get().set(this._tangentVelocity.x,this._tangentVelocity.y,this._tangentVelocity.z)}constructor(e,t,i,n,s,r){this._point=e,this.distance=t,this._normal=i,this.impulse=n,this.friction=s,this._tangentVelocity=r}}class nv{contacts;constructor(e,t,i){this.me=e,this._collider=t,this._gameObject=t.gameObject,this.contacts=i}me;_collider;get collider(){return this._collider}_gameObject;get gameObject(){return this._gameObject}get rigidBody(){return this.collider?.attachedRigidbody}}class ov{object;collider;constructor(e,t){this.object=e,this.collider=t}}class Rm{constructor(e){this.context=e,this.root.style.cssText=`
|
|
145
145
|
position: absolute;
|
|
146
146
|
width: 1px; height: 1px;
|
|
@@ -1307,7 +1307,7 @@ dateFormat X
|
|
|
1307
1307
|
axisFormat %s
|
|
1308
1308
|
`;const p=Array.from(s),m=new Set;for(const _ of p)if(_.affectedObjects&&typeof _.affectedObjects!="string"){if(Array.isArray(_.affectedObjects))for(const v of _.affectedObjects)m.add(v);else m.add(_.affectedObjects);r&&(d+=`section ${_.animationName} (${_.id})
|
|
1309
1309
|
`,d+=`${_.id} : ${_.start}, ${_.duration}s
|
|
1310
|
-
`)}r&&s.size&&console.log(d);const f=new Set;for(const _ of m){_.getPath||console.error("USDZExporter: Animation target object has no getPath method. This is likely a bug",_);let v=_.getPath();v.startsWith("<")&&(v=v.substring(1)),v.endsWith(">")&&(v=v.substring(0,v.length-1)),f.add({path:v,obj:_})}const g=Array.from(f).sort((_,v)=>_.path.length-v.path.length),y=new Array;for(let _=0;_<g.length;_++)for(let v=_+1;v<g.length;v++)if(g[v].path.startsWith(g[_].path)){const P=g[v],k=g[_];y.push({child:P.obj.displayName+" ("+P.path+")",parent:k.obj.displayName+" ("+k.path+")"})}y.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:y,playAnimationActions:s})}for(const d of new Set([...t,...i]))if(Array.isArray(d))for(const p of d)n.add(p.uuid);else n.add(d.uuid);zp&&console.log("All Behavior trigger sources and action targets",t,i,n),this.targetUuids=new Set(n)}onAfterHierarchy(e,t){if(this.behaviours?.length){t.beginBlock('def Scope "Behaviors"');for(const i of this.behaviours)i.writeTo(this,e.document,t);t.closeBlock()}}async onAfterSerialize(e){zp&&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:i}of this.audioClipsCopy){if(e.files[i])return;const n=await(await(await fetch(t)).blob()).arrayBuffer(),s=new Uint8Array(n);e.files[i]=s}this.behaviourComponentsCopy.length=0,this.audioClipsCopy.length=0}}class n0{get extensionName(){return"Physics"}onExportObject(e,t,i){const n=S.getComponents(e,Je).filter(l=>l.enabled),s=S.getComponents(e,rn).filter(l=>l.enabled&&!l.isTrigger);let r=n.length>0?n[0]:null;const a=s.length>0?s[0]:null;a&&!r&&(r=new Je,r.isKinematic=!0),r&&t.addEventListener("serialize",(l,c)=>{if(r){if(l.appendLine(),l.beginBlock('def RealityKitComponent "RigidBody"',"{",!0),r.useGravity||l.appendLine("bool gravityEnabled = 0"),l.appendLine('uniform token info:id = "RealityKit.RigidBody"'),r.isKinematic&&l.appendLine('token motionType = "Kinematic"'),l.beginBlock('def RealityKitStruct "massFrame"',"{",!0),l.appendLine(`float m_mass = ${r.mass}`),l.beginBlock('def RealityKitStruct "m_pose"',"{",!0),l.appendLine(`float3 position = (${r.centerOfMass.x}, ${r.centerOfMass.y}, ${r.centerOfMass.z})`),l.closeBlock("}"),l.closeBlock("}"),s.length>0){const h=s[0];l.beginBlock('def RealityKitStruct "material"',"{",!0);const d=h.sharedMaterial;d&&d.dynamicFriction!==void 0&&l.appendLine(`double dynamicFriction = ${h.sharedMaterial?.dynamicFriction}`),d&&d.bounciness!==void 0&&l.appendLine(`double restitution = ${h.sharedMaterial?.bounciness}`),d&&d.staticFriction!==void 0&&l.appendLine(`double staticFriction = ${h.sharedMaterial?.staticFriction}`),l.closeBlock("}")}l.closeBlock("}")}}),a&&(t.addEventListener("serialize",(l,c)=>{l.beginBlock('def RealityKitComponent "Collider"',"{",!0),l.appendLine("uint group = 1"),l.appendLine('uniform token info:id = "RealityKit.Collider"'),l.appendLine("uint mask = 4294967295");const h=a.isTrigger?"Trigger":"Default";if(l.appendLine(`token type = "${h}"`),l.beginBlock('def RealityKitStruct "Shape"',"{",!0),a instanceof fl){const d=a;l.appendLine('token shapeType = "Sphere"'),l.appendLine(`float radius = ${d.radius}`)}else if(a instanceof lp){const d=a;l.appendLine('token shapeType = "Box"'),l.appendLine(`float3 extent = (${d.size.x}, ${d.size.y}, ${d.size.z})`)}else if(a instanceof Ho){const d=a;l.appendLine('token shapeType = "Capsule"'),l.appendLine(`float radius = ${d.radius}`),l.appendLine(`float height = ${d.height}`)}else if(a instanceof zs&&a.sharedMesh?.geometry){const d=a.sharedMesh.geometry;d.boundingBox||d.computeBoundingBox();const p=a.sharedMesh.geometry.boundingBox;p&&(l.appendLine('token shapeType = "Box"'),l.appendLine(`float3 extent = (${p.max.x-p.min.x}, ${p.max.y-p.min.y}, ${p.max.z-p.min.z})`),console.log("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. MeshCollider will be exported as Box",a))}else console.warn("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. Ignoring collider:",a);l.beginBlock('def RealityKitStruct "pose"',"{",!0),l.closeBlock("}"),l.closeBlock("}"),l.closeBlock("}")}),s.length>1&&console.log("WARNING: Multiple colliders detected. visionOS / iOS can only support objects with a single collider, only exporting the first collider: ",a))}}const i2=w("debugshadowcomponents");Jb.prototype.interactable={get(){return this.interactive},set(o){this.interactable=o}};class gn extends R{isRoot(){return this.Root?.gameObject===this.gameObject}get canvas(){const e=this.Root;return e?.isCanvas?e:null}get Canvas(){return this.canvas}markDirty(){ci.markUIDirty(this.context)}get shadowComponent(){return this._shadowComponent}set shadowComponent(e){this._shadowComponent=e}_shadowComponent=null;_controlsChildLayout=!0;get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}_root=void 0;get Root(){return this._root===void 0&&(this._root=S.getComponentInParent(this.gameObject,kh)),this._root}_parentComponent=void 0;__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this.shadowComponent=null,this._root=void 0,this._parentComponent=void 0,this}onEnable(){super.onEnable()}addShadowComponent(e,t){if(!e)return;this.removeShadowComponent();const i=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=S.getComponentInParent(i,gn),!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[Di]=this,this.setShadowComponentOwner(e);let n=!1;if(this.Root?.gameObject===this.gameObject)this.gameObject.add(e);else{const s=this._parentComponent.shadowComponent;s&&(s?.add(e),n=!0)}this.shadowComponent=e,t&&t.shadowComponent&&this.shadowComponent&&t.shadowComponent.add(this.shadowComponent),kc&&e.add(new Ti(.5)),this.onAfterAddedToScene(),n&&JP(),i2&&console.warn("Added shadow component",this.shadowComponent)}setShadowComponentOwner(e){if(e&&(e[Di]===void 0||e[Di]===this)&&(e[Di]=this,e.children))for(const t of e.children)this.setShadowComponentOwner(t)}traverseOwnedShadowComponents(e,t,i){if(e&&e[Di]===t){i(e);for(const n of e.children)this.traverseOwnedShadowComponents(n,t,i)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}}class kh extends gn{awake(){super.awake()}}var n2=Object.defineProperty,o2=Object.getOwnPropertyDescriptor,Mh=(o,e,t,i)=>{for(var n=i>1?void 0:i?o2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&n2(e,t,n),n};const o0=w("debugui"),s0=w("debuguilayout");class z1{width;height}class N1{x;y;width;height}const jn=new b,Rh=new J,Np=new N,Ll=class ZS extends gn{get parent(){return this._parentRectTransform}get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}_anchoredPosition;get anchoredPosition(){return this._anchoredPosition||(this._anchoredPosition=new K),this._anchoredPosition}set anchoredPosition(e){this._anchoredPosition=e}sizeDelta=new K(100,100);pivot=new K(.5,.5);anchorMin=new K(0,0);anchorMax=new K(1,1);minWidth;minHeight;get width(){let e=this.sizeDelta.x;if(this.anchorMin.x!==this.anchorMax.x&&this._parentRectTransform){const t=this._parentRectTransform.width,i=this.anchorMax.x-this.anchorMin.x;e=t*i,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,i=this.anchorMax.y-this.anchorMin.y;e=t*i,e+=this.sizeDelta.y}return this.minHeight!==void 0&&e<this.minHeight?this.minHeight:e}lastMatrix;rectBlock;_transformNeedsUpdate=!1;_initialPosition;_parentRectTransform;_lastUpdateFrame=-1;awake(){super.awake(),this._lastUpdateFrame=-1,this._parentRectTransform=void 0,this.rectBlock=new M,this.rectBlock.name=this.name,this.lastMatrix=new J,this._lastAnchoring=null,this._initialPosition=this.gameObject.position.clone(),this._initialPosition.z=0,this._anchoredPosition||(this._anchoredPosition=new K),dl(this,"_anchoredPosition",()=>{this.markDirty()}),dl(this,"sizeDelta",()=>{this.markDirty()}),dl(this,"pivot",()=>{this.markDirty()}),dl(this,"anchorMin",()=>{this.markDirty()}),dl(this,"anchorMax",()=>{this.markDirty()})}onEnable(){super.onEnable(),this.rectBlock||(this.rectBlock=new M),this.lastMatrix||(this.lastMatrix=new J),this._lastAnchoring||(this._lastAnchoring=new K),this._initialPosition||(this._initialPosition=new b),this._anchoredPosition||(this._anchoredPosition=new K),this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0,this.canvas?.registerTransform(this)}onDisable(){super.onDisable(),this.removeShadowComponent(),this.canvas?.unregisterTransform(this)}onParentRectTransformChanged(e){this._transformNeedsUpdate||this.onApplyTransform(s0?`${e.name} changed`:void 0)}get isDirty(){return this._transformNeedsUpdate||(this._transformNeedsUpdate=!this.lastMatrix.equals(this.gameObject.matrix)),this._transformNeedsUpdate}markDirty(){this._transformNeedsUpdate||(s0&&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){if(this.context.time.frameCount===this._lastUpdateFrame)return;this._lastUpdateFrame=this.context.time.frameCount;const t=this.shadowComponent;if(!t)return;this.gameObject.parent?this._parentRectTransform=S.getComponentInParent(this.gameObject.parent,ZS):this._parentRectTransform=void 0,this._transformNeedsUpdate=!1,s0&&console.warn("RectTransform \u2192 ApplyTransform",this.name+" because "+e),this.isRoot()?this.Root.screenspace||(t.rotation.y=Math.PI):(t.matrix.identity(),t.matrixAutoUpdate=!1,jn.set(0,0,0),this.applyPivot(jn),t.matrix.setPosition(jn.x,jn.y,0),(this.gameObject.quaternion.x||this.gameObject.quaternion.y||this.gameObject.quaternion.z)&&(Np.copy(this.gameObject.quaternion),Np.x*=-1,Np.z*=-1,Rh.makeRotationFromQuaternion(Np),t.matrix.premultiply(Rh)),jn.set(0,0,0),this.applyAnchoring(jn),this.canvas?.screenspace?jn.z+=.1:jn.z+=.01,Rh.identity(),Rh.setPosition(jn.x,jn.y,jn.z),t.matrix.premultiply(Rh),t.matrix.scale(this.gameObject.scale)),this.lastMatrix.copy(this.gameObject.matrix);const i=!0;for(const n of Lu(this.gameObject,gn,i,1)){if(n===this||!n.activeAndEnabled)continue;const s=n;s.onParentRectTransformChanged&&s.onParentRectTransformChanged(this)}}_lastAnchoring;applyAnchoring(e){this._lastAnchoring||(this._lastAnchoring=new K);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 i=this._parentRectTransform;if(i){let n=0;const s=1-this.anchorMax.y-this.anchorMin.y;n-=i.height*.5*s,e.y+=n;let r=0;const a=1-this.anchorMax.x-this.anchorMin.x;r-=i.width*.5*a,e.x+=r}}applyPivot(e){if(this.pivot&&!this.isRoot()){const t=this.pivot.x-.5;e.x-=t*this.sizeDelta.x*this.gameObject.scale.x;const i=this.pivot.y-.5;e.y-=i*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}_createdBlocks=[];_createdTextBlocks=[];createNewBlock(e){e={...this.getBasicOptions(),...e},o0&&console.log(this.name,e);const t=new Jb(e);return this._createdBlocks.push(t),t}createNewText(e){o0&&console.log(e),e={...this.getBasicOptions(),...e},o0&&console.log(this.name,e);const t=new Kb(e);return this._createdTextBlocks.push(t),t}};Mh([u(K)],Ll.prototype,"anchoredPosition",1),Mh([u(K)],Ll.prototype,"sizeDelta",2),Mh([u(K)],Ll.prototype,"pivot",2),Mh([u(K)],Ll.prototype,"anchorMin",2),Mh([u(K)],Ll.prototype,"anchorMax",2);let Bn=Ll;var s2=Object.defineProperty,W1=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&s2(e,t,n),n};class Dl extends R{effectColor;effectDistance}W1([u(se)],Dl.prototype,"effectColor"),W1([u(K)],Dl.prototype,"effectDistance");var r2=Object.defineProperty,a2=Object.getOwnPropertyDescriptor,V1=(o,e,t,i)=>{for(var n=i>1?void 0:i?a2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&r2(e,t,n),n};const oa={backgroundColor:new oe(1,1,1),backgroundOpacity:1,borderColor:new oe(1,1,1),borderOpacity:1},r0=class vd extends gn{get isGraphic(){return!0}get color(){return this._color||(this._color=new se(1,1,1,1)),this._color}set color(e){(!this._color||this._color.r!==e.r||this._color.g!==e.g||this._color.b!==e.b||this._color.alpha!==e.alpha)&&(this._color||(this._color=new se(1,1,1,1)),this._color.copy(e),this.onColorChanged())}_alphaFactor=1;setAlphaFactor(e){this._alphaFactor=e,this.onColorChanged()}get alphaFactor(){return this._alphaFactor}sRGBColor=new oe(1,0,1);onColorChanged(){if(this.uiObject){this.sRGBColor.copy(this._color),this.sRGBColor.convertLinearToSRGB(),oa.backgroundColor=this.sRGBColor,oa.backgroundOpacity=this._color.alpha;const e=this.uiObject._simpleState__activeStates?.[0];if(e){const t=this.uiObject._simpleState__states?.[e];t&&("backgroundColor"in t&&(oa.backgroundColor=t.backgroundColor),"backgroundOpacity"in t&&(oa.backgroundOpacity=t.backgroundOpacity))}oa.backgroundOpacity*=this._alphaFactor,this.applyEffects(oa,this._alphaFactor),this.uiObject.set(oa),this.markDirty()}}get m_Color(){return this._color}raycastTarget=!0;uiObject=null;_color=null;_rect=null;_stateManager=null;get rectTransform(){if(this._rect||(this._rect=S.getComponent(this.gameObject,Bn)),!this._rect)throw new Error("Not Supported: Make sure to add a RectTransform component before adding a UI Graphic component.");return this._rect}onParentRectTransformChanged(){this.uiObject?.set({width:this.rectTransform.width,height:this.rectTransform.height}),this.markDirty()}__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this._rect=null,this.uiObject=null,this._stateManager=null,this._color&&(this._color=this._color.clone()),this}setState(e){this.makePanel(),this.uiObject&&(this.uiObject.setState(e),this?.markDirty())}setupState(e){this.makePanel(),this.uiObject&&(this._stateManager||(this._stateManager=new eO(this.uiObject)),this.uiObject.setupState(e.state,e.attributes))}setOptions(e){this.makePanel(),this.uiObject&&this.uiObject.set(e)}awake(){super.awake(),this.makePanel(),dl(this,"_color",()=>_E(this,this.onColorChanged))}onEnable(){super.onEnable(),this.uiObject&&(this.rectTransform.shadowComponent?.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}_currentlyCreatingPanel=!1;makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;const e={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:.015};this.onBeforeCreate(e),this.applyEffects(e),this.onCreate(e),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated(),this.onColorChanged()}onBeforeCreate(e){}onCreate(e){this.uiObject=this.rectTransform.createNewBlock(e),this.uiObject.name=this.name}onAfterCreated(){}applyEffects(e,t=1){const i=this.gameObject?.getComponent(Dl);i&&(i.effectDistance&&(e.borderWidth=Math.max(Math.abs(i.effectDistance.x),Math.abs(i.effectDistance.y))),i.effectColor&&(e.borderColor=i.effectColor,e.borderOpacity=i.effectColor.alpha*t))}static textureCache=new Map;async setTexture(e){if(this.setOptions({backgroundOpacity:0}),e){if(vd.textureCache.has(e))e=vd.textureCache.get(e);else if(!e.isRenderTargetTexture){const t=e.clone();t.colorSpace=Ro,vd.textureCache.set(e,t),e=t}this.setOptions({backgroundImage:e,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:"stretch"}),He.assignTextureLOD(e,0).then(t=>{t instanceof Se&&(e&&vd.textureCache.set(e,t),this.setOptions({backgroundImage:t}),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)}};V1([u(se)],r0.prototype,"color",1),V1([u()],r0.prototype,"raycastTarget",2);let Eh=r0;class Th extends Eh{_flippedObject=!1;onAfterCreated(){this.uiObject&&!this._flippedObject&&(this._flippedObject=!0,this.uiObject.scale.y*=-1)}}var l2=Object.defineProperty,c2=Object.getOwnPropertyDescriptor,is=(o,e,t,i)=>{for(var n=i>1?void 0:i?c2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&l2(e,t,n),n};const sa=w("debugtext");var ut=(o=>(o[o.UpperLeft=0]="UpperLeft",o[o.UpperCenter=1]="UpperCenter",o[o.UpperRight=2]="UpperRight",o[o.MiddleLeft=3]="MiddleLeft",o[o.MiddleCenter=4]="MiddleCenter",o[o.MiddleRight=5]="MiddleRight",o[o.LowerLeft=6]="LowerLeft",o[o.LowerCenter=7]="LowerCenter",o[o.LowerRight=8]="LowerRight",o))(ut||{}),$1=(o=>(o[o.Normal=0]="Normal",o[o.Bold=1]="Bold",o[o.Italic=2]="Italic",o[o.BoldAndItalic=3]="BoldAndItalic",o))($1||{});class Xt extends Eh{alignment=0;verticalOverflow=0;horizontalOverflow=0;lineSpacing=1;supportRichText=!1;font;fontStyle=0;setAlphaFactor(e){super.setAlphaFactor(e),this.uiObject?.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(),this.context.accessibility.updateElement(this,{label:this.text}))}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize=e,this.uiObject?.set({fontSize:e})}sRGBTextColor=new oe(1,0,1);onColorChanged(){this.sRGBTextColor.copy(this.color),this.sRGBTextColor.convertLinearToSRGB(),this.uiObject?.set({color:this.sRGBTextColor,fontOpacity:this.color.alpha})}onParentRectTransformChanged(){super.onParentRectTransformChanged(),this.uiObject&&this.updateOverflow()}onBeforeCanvasRender(e){this.updateOverflow()}updateOverflow(){const e=this.uiObject?._overflow;e&&(e._needsUpdate=!0)}onCreate(e){sa&&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,sa&&(e.backgroundColor=16750848,e.backgroundOpacity=.5);const t=this.rectTransform;e={...e,...this.getTextOpts()},this.getAlignment(e),sa&&(e.backgroundColor=Math.random()*16777215,e.backgroundOpacity=.1),this.uiObject=t.createNewText(e),this.feedText(this.text,this.supportRichText)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}_text="";_fontSize=12;_textMeshUi=null;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(){super.onEnable(),this.context.accessibility.updateElement(this,{role:"text",label:this.text,hidden:!1}),this._didHandleTextRenderOnTop=!1,this.uiObject&&this.uiObject.addAfterUpdate(()=>{this.setShadowComponentOwner(this.uiObject),this.markDirty()}),setTimeout(()=>this.markDirty(),10),this.canvas?.registerEventReceiver(this)}onDisable(){super.onDisable(),this.canvas?.unregisterEventReceiver(this),this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){super.onDestroy(),this.context.accessibility.removeElement(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){if(sa&&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 i=this.getNextTag(e);if(i){if(i.startIndex>0){for(let r=this.uiObject.children.length-1;r>=0;r--){const a=this.uiObject.children[r];a.isUI&&(this.uiObject.remove(a),a.clear())}const s=new Ym({textContent:e.substring(0,i.startIndex),color:"inherit"});this.uiObject.add(s)}}else{this.uiObject.textContent="",this.setOptions({textContent:e});return}const n=[];for(;i;){const s=this.getNextTag(e,i.endIndex),r={fontFamily:this.uiObject?.get("fontFamily"),color:"inherit",textContent:""};if(s){r.textContent=this.getText(e,i,s),this.handleTag(i,r,n);const a=new Ym(r);this.uiObject?.add(a)}else{r.textContent=e.substring(i.endIndex),this.handleTag(i,r,n);const a=new Ym(r);this.uiObject?.add(a)}i=s}}}_didHandleTextRenderOnTop=!1;handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;const e=[],t=this.canvas,i={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let n=!1;if(this._textMeshUi)for(let s=0;s<this._textMeshUi.length;s++){if(e[s]===!0)continue;n=!0;const r=this._textMeshUi[s];r.textContent&&(Qu(r,i),e[s]=!0)}if(!n)break;yield}}handleTag(e,t,i){if(!e.isEndTag){if(e.type.includes("color")){const n=new a0(e,{color:t.color});if(i.push(n),e.type.length>6){const s=parseInt("0x"+e.type.substring(7));t.color=s}else t.color=new oe(1,1,1)}else if(e.type=="b"){this.setFont(t,1);const n=new a0(e,{fontWeight:700});i.push(n)}else if(e.type=="i"){this.setFont(t,2);const n=new a0(e,{fontStyle:"italic"});i.push(n)}}}getText(e,t,i){return e.substring(t.endIndex,i.startIndex)}getNextTag(e,t=0){const i=e.indexOf("<",t),n=e.indexOf(">",i);if(i>=0&&n>=0){const s=e.substring(i+1,n);return{type:s,startIndex:i,endIndex:n+1,isEndTag:s.startsWith("/")}}return null}setFont(e,t){if(!this.font)return;const i=this.font,n=this.getFamilyNameWithCorrectSuffix(i,t);sa&&console.log("Selected font family:"+n);let s=e_.getFontFamily(n);switch(s||(s=e_.addFontFamily(n)),e.fontFamily=s,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 r=s.getVariant(e.fontWeight,e.fontStyle);if(!r){let a=n;a?.endsWith("-msdf.json")||(a+="-msdf.json");let l=n;l?.endsWith(".png")||(l+=".png"),r=s.addVariant(e.fontWeight,e.fontStyle,a,l),r?.addEventListener("ready",()=>{this.markDirty()})}}getFamilyNameWithCorrectSuffix(e,t){(e.startsWith("https:")||e.startsWith("http:"))&&(e=new URL(e).pathname);const i=e.lastIndexOf("-");if(i<0)return e;const n=e.substring(i+1)?.toLowerCase();if(h2.includes(n))return sa&&console.warn("Unsupported font style: "+n),e;const s=e.lastIndexOf("/");let r=e;s>=0&&(r=r.substring(s+1));const a=r[0]===r[0].toUpperCase(),l=e.substring(0,i>s?i:e.length);switch(sa&&console.log("Select font: ",e,$1[t],r,a,l),t){case 0:return a?l+"-Regular":l+"-regular";case 1:return a?l+"-Bold":l+"-bold";case 2:return a?l+"-Italic":l+"-italic";case 3:return a?l+"-BoldItalic":l+"-bolditalic";default:return e}}}is([u()],Xt.prototype,"alignment",2),is([u()],Xt.prototype,"verticalOverflow",2),is([u()],Xt.prototype,"horizontalOverflow",2),is([u()],Xt.prototype,"lineSpacing",2),is([u()],Xt.prototype,"supportRichText",2),is([u(URL)],Xt.prototype,"font",2),is([u()],Xt.prototype,"fontStyle",2),is([u()],Xt.prototype,"text",1),is([u()],Xt.prototype,"fontSize",1);class a0{tag;previousValues;constructor(e,t){this.tag=e,this.previousValues=t}}const h2=["medium","mediumitalic","black","blackitalic","thin","thinitalic","extrabold","light","lightitalic","semibold"];class jl{static global_id=0;static getId(){return this.global_id++}id;content="";font=[];pointSize=144;width;height;depth;wrapMode;horizontalAlignment;verticalAlignment;material;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}constructor(e){this.id=e}writeTo(e,t){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?.push("sans-serif"));const i=this.font.map(n=>`"${n}"`).join(", ");t.appendLine(`string[] font = [ ${i} ]`),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/${Rp(this.material)}>`),t.closeBlock()}}class l0{static singleLine(e,t,i){const n=new jl("text_"+jl.getId());return n.content=e,t&&(n.pointSize=t),i&&(n.depth=i),n}static multiLine(e,t,i,n,s,r){const a=new jl("text_"+jl.getId());return a.content=e,a.width=t,a.height=i,a.horizontalAlignment=n,a.verticalAlignment=s,r!==void 0&&(a.wrapMode=r),a}}const d2=new J().makeRotationY(Math.PI),u2=new J().makeScale(-1,1,-1);class Wp{get extensionName(){return"text"}exportText(e,t,i){const n=S.getComponent(e,Xt);if(!n)return;const s=S.getComponent(e,Bn);let r=100,a=100;s&&(r=s.width,a=s.height);const l=d2.clone();s&&l.premultiply(u2),t.setMatrix(l);const c=n.color.clone();t.material=new yt({color:c,emissive:c}),t.addEventListener("serialize",(h,d)=>{let p=n.text;p=p.replace(/\r/g,""),p=p.replace(/\n/g,"\\n");const m=l0.multiLine(p,r,a,"center","bottom","flowing");this.setTextAlignment(m,n.alignment),this.setOverflow(m,n),t.material&&(m.material=t.material),m.pointSize=this.convertToTextSize(n.fontSize),m.depth=.001,m.writeTo(void 0,h)})}convertToTextSize(e){return 1/.0502*144*e}setOverflow(e,t){t.horizontalOverflow?e.wrapMode="singleLine":e.wrapMode="flowing"}setTextAlignment(e,t){switch(t){case ut.LowerLeft:case ut.MiddleLeft:case ut.UpperLeft:e.horizontalAlignment="left";break;case ut.LowerCenter:case ut.MiddleCenter:case ut.UpperCenter:e.horizontalAlignment="center";break;case ut.LowerRight:case ut.MiddleRight:case ut.UpperRight:e.horizontalAlignment="right";break}switch(t){case ut.LowerLeft:case ut.LowerCenter:case ut.LowerRight:e.verticalAlignment="bottom";break;case ut.MiddleLeft:case ut.MiddleCenter:case ut.MiddleRight:e.verticalAlignment="middle";break;case ut.UpperLeft:case ut.UpperCenter:case ut.UpperRight:e.verticalAlignment="top";break}}}var p2=Object.defineProperty,it=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&p2(e,t,n),n};const H1=w("debuguilayout");class ra{left=0;right=0;top=0;bottom=0;get vertical(){return this.top+this.bottom}get horizontal(){return this.left+this.right}}it([u()],ra.prototype,"left"),it([u()],ra.prototype,"right"),it([u()],ra.prototype,"top"),it([u()],ra.prototype,"bottom");class Wi extends R{_rectTransform=null;get rectTransform(){return this._rectTransform}onParentRectTransformChanged(e){this._needsUpdate=!0}_needsUpdate=!1;get isDirty(){return this._needsUpdate}get isLayoutGroup(){return!0}updateLayout(){this._rectTransform&&(H1&&console.warn("Layout Update",this.context.time.frame,this.name),this._needsUpdate=!1,this.onCalculateLayout(this._rectTransform))}childAlignment=0;reverseArrangement=!1;spacing=0;padding;minWidth=0;minHeight=0;flexibleHeight=0;flexibleWidth=0;preferredHeight=0;preferredWidth=0;start(){this._needsUpdate=!0}onEnable(){H1&&console.log(this.name,this),this._rectTransform=this.gameObject.getComponent(Bn);const e=this.gameObject.getComponentInParent(Bl);e&&e.registerLayoutGroup(this),this._needsUpdate=!0}onDisable(){const e=this.gameObject.getComponentInParent(Bl);e&&e.unregisterLayoutGroup(this)}set m_Spacing(e){e!==this.spacing&&(this._needsUpdate=!0,this.spacing=e)}get m_Spacing(){return this.spacing}}it([u()],Wi.prototype,"childAlignment"),it([u()],Wi.prototype,"reverseArrangement"),it([u()],Wi.prototype,"spacing"),it([u(ra)],Wi.prototype,"padding"),it([u()],Wi.prototype,"minWidth"),it([u()],Wi.prototype,"minHeight"),it([u()],Wi.prototype,"flexibleHeight"),it([u()],Wi.prototype,"flexibleWidth"),it([u()],Wi.prototype,"preferredHeight"),it([u()],Wi.prototype,"preferredWidth");class Qs extends Wi{childControlHeight=!0;childControlWidth=!0;childForceExpandHeight=!1;childForceExpandWidth=!1;childScaleHeight=!1;childScaleWidth=!1;onCalculateLayout(e){const t=this.primaryAxis,i=e.width;let n=i;const s=e.height;let r=s;n-=this.padding.horizontal,r-=this.padding.vertical,t==="x"?this.padding.horizontal:this.padding.vertical;const a=t==="x",l=a?"y":"x",c=a?this.childControlWidth:this.childControlHeight,h=a?this.childControlHeight:this.childControlWidth,d=a?this.childForceExpandWidth:this.childForceExpandHeight,p=a?this.childForceExpandHeight:this.childForceExpandWidth,m=a?r:n,f=a?i:s,g=.5*(a?this.childAlignment%3:Math.floor(this.childAlignment/3));let y=0;a?y+=this.padding.left:y+=this.padding.top;let _=0,v=0;for(let L=0;L<this.gameObject.children.length;L++){const V=this.gameObject.children[L],W=S.getComponent(V,Bn);W?.activeAndEnabled&&(v+=1,a?_+=W.width:_+=W.height)}let P=0;const k=this.spacing*(v-1);if(d||c){let L=0;a?L=n-=k:L=r-=k,v>0&&(P=L/v)}let O=0;O+=this.padding.left,O-=this.padding.right,g!==0&&(y=f-_,y*=g,y-=k*g,a?(y-=this.padding.right*g,y+=this.padding.left*(1-g),y<this.padding.left&&(y=this.padding.left)):(y-=this.padding.bottom*g,y+=this.padding.top*(1-g),y<this.padding.top&&(y=this.padding.top)));let j=1;for(let L=0;L<this.gameObject.children.length;L++){const V=this.gameObject.children[L],W=S.getComponent(V,Bn);if(W?.activeAndEnabled){W.pivot?.set(.5,.5),W.anchorMin.set(0,1),W.anchorMax.set(0,1);const G=i*.5+O*.5;W.anchoredPosition.x!==G&&(W.anchoredPosition.x=G);const X=s*-.5;W.anchoredPosition.y!==X&&(W.anchoredPosition.y=X),p&&h&&W.sizeDelta[l]!==m&&(W.sizeDelta[l]=m),d&&c&&W.sizeDelta[t]!==P&&(W.sizeDelta[t]=P);const E=a?W.width:W.height,$=E*.5;if(y+=$,d){const he=P*j-P*.5;he>y&&(y=he-P*.5+E+this.padding.left,y-=$)}let q=y;t==="y"&&(q=-q),W.anchoredPosition[t]!==q&&(W.anchoredPosition[t]=q),y+=$,y+=this.spacing,j+=1}}}}it([u()],Qs.prototype,"childControlHeight"),it([u()],Qs.prototype,"childControlWidth"),it([u()],Qs.prototype,"childForceExpandHeight"),it([u()],Qs.prototype,"childForceExpandWidth"),it([u()],Qs.prototype,"childScaleHeight"),it([u()],Qs.prototype,"childScaleWidth");class c0 extends Qs{get primaryAxis(){return"y"}}class h0 extends Qs{get primaryAxis(){return"x"}}class d0 extends Wi{onCalculateLayout(){}}var m2=Object.defineProperty,g2=Object.getOwnPropertyDescriptor,fo=(o,e,t,i)=>{for(var n=i>1?void 0:i?g2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&m2(e,t,n),n},G1=(o=>(o[o.ScreenSpaceOverlay=0]="ScreenSpaceOverlay",o[o.ScreenSpaceCamera=1]="ScreenSpaceCamera",o[o.WorldSpace=2]="WorldSpace",o[o.Undefined=-1]="Undefined",o))(G1||{});const u0=w("debuguilayout"),cn=class KS extends kh{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)}_renderOnTop;set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}_depthWrite=!1;set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}_doubleSided=!0;set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}_castShadows=!1;set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}_receiveShadows=!1;get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}_renderMode=-1;_rootCanvas;set rootCanvas(e){this._rootCanvas instanceof KS||(this._rootCanvas=e)}get rootCanvas(){return this._rootCanvas}_scaleFactor=1;get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}worldCamera;planeDistance=-1;awake(){this.shadowComponent=this.gameObject,this.previousParent=this.gameObject.parent,u0&&console.log("Canvas.Awake()",this.previousParent?.name+"/"+this.gameObject.name),super.awake()}start(){this.applyRenderSettings()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this._lastMatrixWorld=new J,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)}_boundRenderSettingsChanged=this.onRenderSettingsChanged.bind(this);previousParent=null;_lastMatrixWorld=null;_rectTransforms=[];registerTransform(e){this._rectTransforms.push(e)}unregisterTransform(e){const t=this._rectTransforms.indexOf(e);t!==-1&&this._rectTransforms.splice(t,1)}_layoutGroups=new Map;registerLayoutGroup(e){const t=e.gameObject;this._layoutGroups.set(t,e)}unregisterLayoutGroup(e){const t=e.gameObject;this._layoutGroups.delete(t)}_receivers=[];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 fc(1).then(()=>{this.gameObject.visible=!0}))}onLeaveXR(e){this.screenspace&&(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!0)}onBeforeRenderRoutine=()=>{if(this.previousParent=this.gameObject.parent,(this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.gameObject.visible=!1,this.gameObject.removeFromParent();return}this.renderOnTop||this.screenspace?this.gameObject.removeFromParent():(this.onUpdateRenderMode(),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.shadowComponent?.updateWorldMatrix(!0,!0),this.invokeBeforeRenderEvents(),ci.ensureUpdateMeshUI(t_,this.context))};onAfterRenderRoutine=()=>{if((this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.previousParent?.add(this.gameObject);return}if((this.screenspace||this.renderOnTop)&&this.previousParent&&this.context.mainCamera){this.screenspace?this.context.mainCamera?.add(this.gameObject):this.previousParent.add(this.gameObject);const e=this.context.renderer.autoClear,t=this.context.renderer.autoClearColor;this.context.renderer.autoClear=!1,this.context.renderer.autoClearColor=!1,this.context.renderer.clearDepth(),this.onUpdateRenderMode(!0),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.invokeBeforeRenderEvents(),ci.ensureUpdateMeshUI(t_,this.context,!0),this.context.renderer.render(this.gameObject,this.context.mainCamera),this.context.renderer.autoClear=e,this.context.renderer.autoClearColor=t,this.previousParent.add(this.gameObject)}this._lastMatrixWorld?.copy(this.gameObject.matrixWorld)};invokeBeforeRenderEvents(){for(const e of this._receivers)e.onBeforeCanvasRender?.(this)}handleLayoutUpdates(){this._lastMatrixWorld===null&&(this._lastMatrixWorld=new J);const e=!this._lastMatrixWorld.equals(this.gameObject.matrixWorld);u0&&e&&console.log("Canvas Layout changed",this.context.time.frameCount,this.name);for(const t of this._rectTransforms){e&&t.markDirty();let i=this._layoutGroups.get(t.gameObject);t.isDirty&&!i&&(i=t.gameObject.getComponentInParent(Wi)),(t.isDirty||i?.isDirty)&&(u0&&console.log("CANVAS UPDATE ### "+t.name+" ##################################### "+this.context.time.frame),i?.updateLayout(),t.updateTransform())}}applyRenderSettings(){this.onRenderSettingsChanged()}_updateRenderSettingsRoutine;onRenderSettingsChanged(){this._updateRenderSettingsRoutine||(this._updateRenderSettingsRoutine=this.startCoroutine(this._updateRenderSettingsDelayed(),xe.OnBeforeRender))}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.onUpdateRenderMode(),Qu(this.shadowComponent,this);for(const e of S.getComponentsInChildren(this.gameObject,gn))Qu(e.shadowComponent,this)}}_activeRenderMode=-1;_lastWidth=-1;_lastHeight=-1;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,i=10;switch(t&&t.nearClipPlane>0&&t.farClipPlane>0&&(i=D.lerp(t.nearClipPlane,t.farClipPlane,.01)),this._renderMode===1&&(this.worldCamera&&(t=this.worldCamera),this.planeDistance>0&&(i=this.planeDistance)),this._renderMode){case 0:case 1:if(this._lastWidth=this.context.domWidth,this._lastHeight=this.context.domHeight,!t)return;const n=i+.01;this.gameObject.position.x=0,this.gameObject.position.y=0,this.gameObject.position.z=-n,this.gameObject.quaternion.identity();const s=this.gameObject.getComponent(Bn);let r=!1;s.sizeDelta.x!==this.context.domWidth&&(r=!0),s.sizeDelta.y!==this.context.domHeight&&(r=!0);const a=t.fieldOfView*Math.PI/180,l=2*Math.tan(a/2)*Math.abs(n);this.gameObject.scale.x=l/this.context.domHeight,this.gameObject.scale.y=l/this.context.domHeight,this.gameObject.scale.z=.01,r&&(s.sizeDelta.x=this.context.domWidth,s.sizeDelta.y=this.context.domHeight,s?.markDirty());break;case 2:this._lastWidth=-1,this._lastHeight=-1;break}}};fo([u()],cn.prototype,"renderOnTop",1),fo([u()],cn.prototype,"depthWrite",1),fo([u()],cn.prototype,"doubleSided",1),fo([u()],cn.prototype,"castShadows",1),fo([u()],cn.prototype,"receiveShadows",1),fo([u()],cn.prototype,"renderMode",1),fo([u(cn)],cn.prototype,"rootCanvas",1),fo([u()],cn.prototype,"scaleFactor",1),fo([u(_i)],cn.prototype,"worldCamera",2),fo([u()],cn.prototype,"planeDistance",2);let Bl=cn;var f2=Object.defineProperty,y2=Object.getOwnPropertyDescriptor,p0=(o,e,t,i)=>{for(var n=i>1?void 0:i?y2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&f2(e,t,n),n};class Ys extends R{get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}_alpha=1;interactable=!0;blocksRaycasts=!0;_isDirty=!1;markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),xe.OnBeforeRender))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}_buffer=[];applyChangesNow(){this._buffer.length=0;for(const e of S.getComponentsInChildren(this.gameObject,gn,this._buffer)){const t=e;t.setAlphaFactor&&t.setAlphaFactor(this._alpha)}}}p0([u()],Ys.prototype,"alpha",1),p0([u()],Ys.prototype,"interactable",2),p0([u()],Ys.prototype,"blocksRaycasts",2);class m0{get extensionName(){return"tmui"}onExportObject(e,t,i){const n=S.getComponent(e,Bl);if(n&&n.enabled&&n.renderMode===G1.WorldSpace){const s=new Wp,r=S.getComponent(e,Bn),a=S.getComponent(e,Ys),l=new Array;if(r){if(!S.isActiveSelf(e)){const d=S.isActiveSelf(e);S.setActive(e,!0),r.onEnable(),r.updateTransform(),l.push(()=>{r.onDisable(),S.setActive(e,d)})}e.traverse(d=>{if(!S.isActiveInHierarchy(d)){const p=S.isActiveSelf(d);S.setActive(d,!0);const m=S.getComponent(d,gn);m&&(m.onEnable(),l.push(()=>{m.onDisable()}));const f=S.getComponent(d,Bn);f&&(f.onEnable(),f.updateTransform(),f.onApplyTransform(),l.push(()=>{f.onDisable()}));const g=S.getComponent(d,Xt);g&&(g.onEnable(),l.push(()=>{g.onDisable()})),l.push(()=>{S.setActive(d,p)})}}),r.width,r.height;const c=lt.createEmpty(),h=r.shadowComponent;if(t.add(c),h){const d=h.matrix;c.setMatrix(d);const p=new Map,m=new Map;p.set(h,c),m.set(h,a?a.alpha:1),h.traverse(f=>{if(f===h)return;const g=lt.createEmpty();g.setMatrix(f.matrix);const y=f.parent,_=!!y&&typeof y.textContent=="string"&&y.textContent.length>0;let v=m.get(y)||1;const P=S.getComponent(f,Ys);if(P&&(v*=P.alpha),f instanceof H&&_){const O=f[Di];O?s.exportText(O.gameObject,g,i):console.error("Error when exporting UI: shadow component owner not found. This is likely a bug.",f)}if(f instanceof H&&!_){const O=f.geometry.clone();O.scale(1,1,-1),this.flipWindingOrder(O),g.geometry=O;const j=new oe,L=f.material.opacity;j.copy(f.material.color),g.material=new Ce({color:j,opacity:L*v,map:f.material.map,transparent:!0})}p.set(f,g),m.set(f,v);const k=p.get(y);if(!k){console.error("Error when exporting UI: shadow component parent not found!",f,f.parent);return}k.add(g)})}}for(const c of l)c()}}flipWindingOrder(e){const t=e.index.array;for(let i=0,n=t.length/3;i<n;i++){const s=t[i*3];t[i*3]=t[i*3+2],t[i*3+2]=s}e.index.needsUpdate=!0}}const Ah=w("debugusdz");function b2(o,e){const t=[],i=S.getComponentsInChildren(o,vt),n=S.getComponentsInChildren(o,Vt),s=new Array,r=new Array;if(e.injectImplicitBehaviours)for(const a of i){if(!a||!a.runtimeAnimatorController||!a.enabled)continue;const l=a.runtimeAnimatorController.activeState;if(!l||!l.motion||!l.motion.clip||l.motion.clip.tracks?.length<1||s.includes(a))continue;const c=new wh;c.animator=a,c.stateName=l.name,c.trigger="start",c.name="PlayAnimationOnClick_implicitAtStart_"+c.stateName;const h=new M;S.addComponent(h,c),r.push(h),s.push(a),o.add(h)}else for(const a of i){if(!a||!a.runtimeAnimatorController||!a.enabled)continue;Ah&&console.log(a);const l=[];for(const c of a.runtimeAnimatorController.enumerateActions()){Ah&&console.log(c);const h=c.getClip();l.includes(h)||l.push(h)}t.push({root:a.gameObject,clips:l})}if(e.injectImplicitBehaviours)for(const a of n){if(!a||!a.clip||!a.enabled||!a.playAutomatically||s.includes(a))continue;const l=new wh;l.animation=a,l.stateName=a.clip.name,l.trigger="start",l.name="PlayAnimationOnClick_implicitAtStart_"+l.stateName;const c=new M;S.addComponent(c,l),r.push(c),s.push(a),o.add(c)}else for(const a of n){Ah&&console.log(a);const l=[];for(const c of a.animations)l.includes(c)||l.push(c);t.push({root:a.gameObject,clips:l})}Ah&&t?.length>0&&console.log("USDZ Animation Clips without behaviours",t);for(const a of t)for(const l of a.clips)e.registerAnimation(a.root,l);return r}function _2(o,e){const t=S.getComponentsInChildren(o,Fi),i=S.getComponentsInChildren(o,$s),n=new Array,s=new Array;Ah&&console.log({audioSources:t,playAudioOnClicks:i});for(const r of i){if(!r.target)continue;const a=t.indexOf(r.target);a>-1&&t.splice(a,1)}for(const r of t){if(!r||!r.clip||r.volume<=0||n.includes(r))continue;const a=new $s;a.target=r,a.name="PlayAudioOnClick_implicitAtStart_",a.trigger="start";const l=new M;S.addComponent(l,a),console.log("implicit PlayAudioOnStart",l,a),s.push(l),n.push(r),o.add(l)}return s}function v2(o){return new Ft("DisableAtStart",qt.sceneStartTrigger(),fe.fadeAction(o,0,!1))}function q1(o,e){const t=o.domElement.shadowRoot.querySelector("link[rel='ar']");if(t)return t;const i=document.createElement("div");i.classList.add("menu"),i.classList.add("quicklook-menu"),i.style.display="none",i.style.visibility="hidden";const n=document.createElement("button");n.id="open-in-ar",e?(n.innerText="View in AR",n.title="View this scene in AR. The scene will be exported to USDZ and opened with Apple's QuickLook."):(n.innerText="View in AR",n.title="Download this scene for AR. Open the downloaded USDZ file to view it in AR using Apple's QuickLook."),i.appendChild(n);const s=document.createElement("a");s.id="needle-usdz-link",s.style.display="none",s.rel="ar",s.href="",s.target="_blank",i.appendChild(s);const r=document.createElement("img");return r.id="button",s.appendChild(r),o.domElement.shadowRoot.appendChild(i),s}var w2=Object.defineProperty,Tt=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&w2(e,t,n),n};const At=w("debugusdz"),x2=w("debugusdzpruning");class aa{callToAction;checkoutTitle;checkoutSubtitle;callToActionURL}Tt([u()],aa.prototype,"callToAction"),Tt([u()],aa.prototype,"checkoutTitle"),Tt([u()],aa.prototype,"checkoutSubtitle"),Tt([u()],aa.prototype,"callToActionURL");const xi=class Pa extends R{static beforeExport=new ae;static afterExport=new ae;static beforeLODExport=new ae;objectToExport=void 0;autoExportAnimations=!0;autoExportAudioSources=!0;exportFileName=void 0;customUsdzFile=void 0;customBranding;anchoringType="plane";maxTextureSize=2048;planeAnchoringAlignment="horizontal";interactive=!0;physics=!0;allowCreateQuicklookButton=!0;quickLookCompatible=!0;extensions=[];link;button;start(){At&&(console.log("USDZExporter",this),console.log("Debug USDZ Mode. Press 'T' to export"),window.addEventListener("keydown",e=>{e.key==="t"&&this.exportAndOpen()})),this.objectToExport||(this.objectToExport=this.gameObject),!this.objectToExport?.children?.length&&!this.objectToExport?.isMesh&&(this.objectToExport=this.context.scene)}onEnable(){const e=I.supportsQuickLookAR(),t=I.isiOS()||I.isiPad();!this.button&&(At||e||t)&&(this.allowCreateQuicklookButton&&(this.button=this.createQuicklookButton()),this.lastCallback=this.quicklookCallback.bind(this),this.link=q1(this.context,e),this.link.addEventListener("message",this.lastCallback)),At&&ke("USDZ Exporter enabled: "+this.name),document.getElementById("open-in-ar")?.addEventListener("click",this.onClickedOpenInARElement),Bc.registerExporter(this)}onDisable(){this.button?.remove(),this.link?.removeEventListener("message",this.lastCallback),At&&ke("USDZ Exporter disabled: "+this.name),document.getElementById("open-in-ar")?.removeEventListener("click",this.onClickedOpenInARElement),Bc.unregisterExporter(this)}onClickedOpenInARElement=e=>{e.preventDefault(),this.exportAndOpen()};async exportAsync(){return this.exportAndOpen()}async exportAndOpen(){let e=this.exportFileName??this.objectToExport?.name??this.name;if(e+="-"+c1(),Kn()||(e!==""&&(e+="-"),e+="MadeWithNeedle"),this.link||(this.link=q1(this.context,I.supportsQuickLookAR())),this.customUsdzFile)return At&&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;Pa.beforeExport.invoke({exporter:this});const t=await this.export(this.objectToExport).finally(()=>{Pa.afterExport.invoke({exporter:this})});return t?(At&&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(e){if(!e)return console.warn("No object to export"),null;const t=this._currentExportTasks.get(e);if(t)return t;const i=this.internalExport(e);return i instanceof Promise?(this._currentExportTasks.set(e,i),i.then(n=>(this._currentExportTasks.delete(e),n)).catch(n=>(this._currentExportTasks.delete(e),console.error("Error during USDZ export \u2013 please report a bug!",n),null))):i}_currentExportTasks=new Map;_previousTimeScale=1;async internalExport(e){le.start("export-usdz",{onProgress:k=>{this.dispatchEvent(new CustomEvent("export-progress",{detail:{progress:k}}))}}),le.report("export-usdz",{message:"Starting export",totalSteps:40,currentStep:0}),le.report("export-usdz",{message:"Load progressive textures",autoStep:5}),le.start("export-usdz-textures","export-usdz");const t=S.getComponentsInChildren(e,wi);for(const k of t)k&&k.enabled&&k.updateSprite(!0);const i=S.getComponentsInChildren(e,ni),n=new Array;let s=0;for(const k of i){for(const O of k.sharedMeshes)if(O){let j=0;const L={exporter:this,type:"mesh",object:k.gameObject,mesh:O};if(Pa.beforeLODExport.invoke(L),L.overrideLevel!==void 0)if(L.overrideLevel===-1){At&&console.warn("Skipping LOD export for mesh due to overrideLevel -1",k.gameObject,O);continue}else L.overrideLevel>=0&&(j=L.overrideLevel,At&&console.log("Overriding LOD level for mesh export to level "+j+" "+O.name));const V=He.assignMeshLOD(O,j);V instanceof Promise&&n.push(new Promise((W,G)=>{V.then(()=>{s++,le.report("export-usdz-textures",{message:"Loaded progressive mesh",currentStep:s,totalSteps:n.length}),W()}).catch(X=>G(X))}))}for(const O of k.sharedMaterials)if(O){let j=0;const L={exporter:this,type:"texture",object:k.gameObject,material:O};if(Pa.beforeLODExport.invoke(L),L.overrideLevel!==void 0)if(L.overrideLevel===-1){At&&console.warn("Skipping LOD assignment due to overrideLevel -1",k.gameObject,O);continue}else L.overrideLevel>=0&&(j=L.overrideLevel,At&&console.log("Overriding LOD level for texture export to level "+j+" "+O.name));const V=He.assignTextureLOD(O,j);V instanceof Promise&&n.push(new Promise((W,G)=>{V.then(()=>{s++,le.report("export-usdz-textures",{message:"Loaded progressive texture",currentStep:s,totalSteps:n.length}),W()}).catch(X=>G(X))}))}}At&&ke("Progressive Loading: "+n.length),await Promise.all(n),At&&ke("Progressive Loading: done"),le.end("export-usdz-textures");const r=li.Global.Mask;li.Global.Set(lo.AR);const a=new g1,l=new Ap(this.quickLookCompatible);let c;const h=[];this.interactive&&(h.push(new i0),h.push(new ka),globalThis.NEEDLE_USE_RAPIER&&S.getComponentsInChildren(e,Je).length>0&&(this.physics?(c=new n0,h.push(c)):A()&&console.warn("USDZExporter: Physics export is disabled, but there are active Rigidbody components in the scene. They will not be exported.")),h.push(new Wp),h.push(new m0));const d=[l,...h,...this.extensions],p={self:this,exporter:a,extensions:d,object:e};le.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,le.report("export-usdz","auto export animations and audio sources");const m=new Array;this.autoExportAnimations&&m.push(...b2(e,l)),d.find(k=>k.extensionName==="Audio")&&this.autoExportAudioSources&&m.push(..._2(e)),a.debug=At,a.pruneUnusedNodes=!x2;const f=Ma.instance.objs.map(k=>k.batchedMesh);a.keepObject=k=>{let O=!0;const j=S.getComponent(k,ni);return j&&!j.enabled&&(O=!1),O&&f.includes(k)&&(O=!1),O&&S.getComponentInParent(k,gh)&&(O=!1),O&&S.getComponentInParent(k,io)&&(O=!1),At&&!O&&console.log("USDZExporter: Discarding object",k),O},a.beforeWritingDocument=()=>{if(A()&&l&&c){const k=l.animatedRoots;for(const O of k){const j=S.getComponentsInChildren(O,Je).filter(V=>V.enabled),L=S.getComponents(O,rn).filter(V=>V.enabled&&!V.isTrigger);(j.length>0||L.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.",O)}}};const g=new Array;this.objectToExport&&this.quickLookCompatible&&this.interactive&&this.objectToExport.traverse(k=>{k.visible||g.push(k)});const y=d.find(k=>k.extensionName==="Behaviour");this.interactive&&y&&g.length>0&&y.addBehavior(v2(g));let _=!0;this.quickLookCompatible&&!this.interactive&&(_=!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"),le.report("export-usdz","Invoking exporter.parse");const v=await a.parse(this.objectToExport,{ar:{anchoring:{type:this.anchoringType},planeAnchoring:{alignment:this.planeAnchoringAlignment}},extensions:d,quickLookCompatible:this.quickLookCompatible,maxTextureSize:this.maxTextureSize,exportInvisible:_}),P=new Blob([v],{type:"model/vnd.usdz+zip"});this.revertWebARSessionRoot(),this.context.time.timeScale=this._previousTimeScale,le.report("export-usdz","Invoking after-export"),this.dispatchEvent(new CustomEvent("after-export",{detail:p}));for(const k of m)S.destroy(k);return li.Global.Set(r),le.end("export-usdz"),P}openInQuickLook(e,t){const i=e instanceof Blob?URL.createObjectURL(e):e,n=this.buildQuicklookOverlay();At&&console.log("QuickLook Overlay",n);const s=n.callToAction?encodeURIComponent(n.callToAction):"",r=n.checkoutTitle?encodeURIComponent(n.checkoutTitle):"",a=n.checkoutSubtitle?encodeURIComponent(n.checkoutSubtitle):"";this.link.href=i+`#callToAction=${s}&checkoutTitle=${r}&checkoutSubtitle=${a}&callToActionURL=${n.callToActionURL}`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener("message",this.lastCallback)),this.link.download=t+".usdz",this.link.click()}download(e,t){Pa.save(e,t)}static save(e,t){const i=document.createElement("a");i.style.display="none",document.body.appendChild(i),typeof e=="string"?i.href=e:i.href=URL.createObjectURL(e),i.download=t,i.click(),i.remove()}lastCallback;quicklookCallback(e){if(e?.data=="_apple_ar_quicklook_button_tapped"){At&&be("Quicklook closed via call to action button");var t=new CustomEvent("quicklook-button-tapped",{detail:this});if(this.dispatchEvent(t),!t.defaultPrevented){const i=new URLSearchParams(this.link.href);if(i){const n=i.get("callToActionURL");At&&ke("Quicklook url: "+n),n&&(Kn()?globalThis.open(n,"_blank"):console.warn("Quicklook closed: custom redirects require a Needle Engine Pro license: https://needle.tools/pricing",n))}}}}buildQuicklookOverlay(){const e={};return this.customBranding&&Object.assign(e,this.customBranding),Kn()||(console.log("Custom Quicklook banner text requires pro license: https://needle.tools/pricing"),e.callToAction="Close",e.checkoutTitle="\u{1F335} Made with Needle",e.checkoutSubtitle="_"),(e.callToAction?.length||e.checkoutTitle?.length||e.checkoutSubtitle?.length)&&(e.callToAction?.length||(e.callToAction="\0"),e.checkoutTitle?.length||(e.checkoutTitle="\0"),e.checkoutSubtitle?.length||(e.checkoutSubtitle="\0")),this.dispatchEvent(new CustomEvent("quicklook-overlay",{detail:e})),e}static invertForwardMatrix=new J().makeRotationY(Math.PI);static invertForwardQuaternion=new N().setFromEuler(new ct(0,Math.PI,0));_rootSessionRootWasAppliedTo=null;_rootPositionBeforeExport=new b;_rootRotationBeforeExport=new N;_rootScaleBeforeExport=new b;getARScaleAndTarget(){if(!this.objectToExport)return{scale:1,_invertForward:!1,target:this.gameObject,sessionRoot:null};const e=S.findObjectOfType(Up);let t=S.getComponentInParent(this.objectToExport,vn);t||(t=S.getComponentInChildren(this.objectToExport,vn));let i=1,n=!1;const s=this.objectToExport;return e?i=e.arScale:t&&(i=t.arScale,n=t.invertForward),{scale:1/i,_invertForward:n,target:s,sessionRoot:t?.gameObject??null}}applyWebARSessionRoot(){if(!this.objectToExport)return;const{scale:e,_invertForward:t,target:i,sessionRoot:n}=this.getARScaleAndTarget(),s=n?.matrixWorld.clone().invert();this._rootSessionRootWasAppliedTo=i,this._rootPositionBeforeExport.copy(i.position),this._rootRotationBeforeExport.copy(i.quaternion),this._rootScaleBeforeExport.copy(i.scale),i.scale.multiplyScalar(e),t&&i.quaternion.multiply(Pa.invertForwardQuaternion),i.updateMatrix(),i.updateMatrixWorld(!0),n&&s&&i.matrix.premultiply(s)}revertWebARSessionRoot(){if(!this.objectToExport||!this._rootSessionRootWasAppliedTo)return;const e=this._rootSessionRootWasAppliedTo;e.position.copy(this._rootPositionBeforeExport),e.quaternion.copy(this._rootRotationBeforeExport),e.scale.copy(this._rootScaleBeforeExport),e.updateMatrix(),e.updateMatrixWorld(!0),this._rootSessionRootWasAppliedTo=null}createQuicklookButton(){const e=pr.getOrCreate().createQuicklookButton();return e.parentNode||this.context.menu.appendChild(e),e}};Tt([u(M)],xi.prototype,"objectToExport"),Tt([u()],xi.prototype,"autoExportAnimations"),Tt([u()],xi.prototype,"autoExportAudioSources"),Tt([u()],xi.prototype,"exportFileName"),Tt([u(URL)],xi.prototype,"customUsdzFile"),Tt([u(aa)],xi.prototype,"customBranding"),Tt([u()],xi.prototype,"anchoringType"),Tt([u()],xi.prototype,"maxTextureSize"),Tt([u()],xi.prototype,"planeAnchoringAlignment"),Tt([u()],xi.prototype,"interactive"),Tt([u()],xi.prototype,"physics"),Tt([u()],xi.prototype,"allowCreateQuicklookButton"),Tt([u()],xi.prototype,"quickLookCompatible");let yo=xi;BA({find:()=>cl(yo),create:()=>new yo});var S2=Object.defineProperty,C2=Object.getOwnPropertyDescriptor,g0=(o,e,t,i)=>{for(var n=C2(e,t),s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&S2(e,t,n),n};class Fl extends R{get fog(){return this._fog||(this._fog=new Rb(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}_fog;onEnable(){this.scene.fog=this.fog}onDisable(){this.scene.fog===this._fog&&(this.scene.fog=null)}}g0([u()],Fl.prototype,"near"),g0([u()],Fl.prototype,"far"),g0([u(oe)],Fl.prototype,"color");var P2=Object.defineProperty,f0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&P2(e,t,n),n};class la extends R{objectBounds=!1;color;isGizmo=!0;_gizmoObject=null;_boxHelper=null;onEnable(){this.isGizmo&&!kc||(this._gizmoObject||(this.objectBounds?this._gizmoObject=new rP(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=wf(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),xe.OnBeforeRender)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(;this._boxHelper;)this._boxHelper?.update(),yield}}f0([u()],la.prototype,"objectBounds"),f0([u(oe)],la.prototype,"color"),f0([u()],la.prototype,"isGizmo");var O2=Object.defineProperty,y0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&O2(e,t,n),n};class Ul extends R{isGizmo=!1;color0;color1;gridHelper;size;divisions;offset;onEnable(){if(this.isGizmo&&!kc)return;const e=this.size,t=this.divisions;this.gridHelper||(this.gridHelper=new Cb(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)}}y0([u()],Ul.prototype,"isGizmo"),y0([u(oe)],Ul.prototype,"color0"),y0([u(oe)],Ul.prototype,"color1");var k2=Object.defineProperty,b0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&k2(e,t,n),n};class _0 extends R{connectedBody;get rigidBody(){return this._rigidBody}_rigidBody=null;onEnable(){this._rigidBody||(this._rigidBody=this.gameObject.getComponent(Je)),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.activeAndEnabled&&this.createJoint(this.rigidBody,this.connectedBody)}}b0([u(Je)],_0.prototype,"connectedBody");class v0 extends _0{createJoint(e,t){this.context.physics.engine?.addFixedJoint(e,t)}}class Ih extends _0{anchor;axis;createJoint(e,t){this.axis&&this.anchor&&this.context.physics.engine?.addHingeJoint(e,t,this.anchor,this.axis)}}b0([u(b)],Ih.prototype,"anchor"),b0([u(b)],Ih.prototype,"axis");var M2=Object.defineProperty,R2=Object.getOwnPropertyDescriptor,Vi=(o,e,t,i)=>{for(var n=i>1?void 0:i?R2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&M2(e,t,n),n};function zl(o){return o*Math.PI/180}const X1=300,Zs=w("debuglights");class It extends R{type=0;get range(){return this._range}set range(e){this._range=e,this.light&&(this.light.type==="SpotLight"||this.light.type==="PointLight")&&"distance"in this.light&&(this.light.distance=e)}_range=1;get spotAngle(){return this._spotAngle}set spotAngle(e){this._spotAngle=e,this.light&&this.light.type==="SpotLight"&&"angle"in this.light&&(this.light.angle=zl(e/2))}_spotAngle=30;get innerSpotAngle(){return this._innerSpotAngle}set innerSpotAngle(e){if(this._innerSpotAngle=e,this.light&&this.light.type==="SpotLight"&&"penumbra"in this.light){const t=this.spotAngle,i=1-zl(e/2)/zl(t/2);this.light.penumbra=i}}_innerSpotAngle=10;set color(e){this._color=e,this.light!==void 0&&(this.light.color=e)}get color(){return this.light?this.light.color:this._color}_color=new oe(16777215);set shadowNearPlane(e){if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,this.light?.shadow?.camera!==void 0)){const t=this.light.shadow.camera;t.near=e}}get shadowNearPlane(){return this._shadowNearPlane}_shadowNearPlane=.1;set shadowBias(e){e!==this._shadowBias&&(this._shadowBias=e,this.light?.shadow?.bias!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}_shadowBias=0;set shadowNormalBias(e){e!==this._shadowNormalBias&&(this._shadowNormalBias=e,this.light?.shadow?.normalBias!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}_shadowNormalBias=0;_overrideShadowBiasSettings=!1;set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==0,this.updateShadowSoftHard())}get shadows(){return this._shadows}_shadows=1;lightmapBakeType=4;set intensity(e){this._intensity=e,this.light&&(this.light.intensity=e),Zs&&console.log("Set light intensity to "+this._intensity,e,this)}get intensity(){return this._intensity}_intensity=-1;get shadowDistance(){const e=this.light;return e?.shadow?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;const t=this.light;if(t?.shadow){const i=t.shadow.camera;i.far=e,i.updateProjectionMatrix()}}_shadowDistance;shadowWidth;shadowHeight;get shadowResolution(){const e=this.light;return e?.shadow?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;const t=this.light;t?.shadow&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}_shadowResolution=void 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}light=void 0;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),Zs&&console.log(this.name,this)}onEnable(){Zs&&console.log("ENABLE LIGHT",this.name),this.createLight(),!this.isBaked&&(this.light&&(this.light.visible=!0,this.light.intensity=this._intensity,Zs&&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(),xe.LateUpdate))}onDisable(){Zs&&console.log("DISABLE LIGHT",this.name),this.light&&(this.selfIsLight?this.light.intensity=0:this.light.visible=!1)}createLight(){const e=this.selfIsLight;if(e&&!this.light)this.light=this.gameObject,this.light.name=this.name,this._intensity=this.light.intensity,this.type===1&&this.setDirectionalLight(this.light);else if(!this.light)switch(this.type){case 1:const t=new Dm(this.color,this.intensity*Math.PI);if(t.position.set(0,0,-X1*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(t.target),Cr(t.target,0,0,0),this.light=t,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),Zs){const r=new lP(this.light,.2,this.color);this.context.scene.add(r)}break;case 0:const i=new aP(this.color,this.intensity*Math.PI,this.range,zl(this.spotAngle/2),1-zl(this.innerSpotAngle/2)/zl(this.spotAngle/2),2);i.position.set(0,0,0),i.rotation.set(0,0,0),this.light=i;const n=i.target;i.add(n),n.position.set(0,0,this.range),n.rotation.set(0,0,0);break;case 2:const s=new jm(this.color,this.intensity*Math.PI,this.range);this.light=s;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),Zs&&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=X1*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 i=this.gameObject.scale.x;t.left*=i,t.right*=i}if(this.shadowHeight!==void 0)t.top=this.shadowHeight/2,t.bottom=-this.shadowHeight/2;else{const i=this.gameObject.scale.y;t.top*=i,t.bottom*=i}this.light.shadow.needsUpdate=!0,Zs&&this.context.scene.add(new cP(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}}static allowChangingRendererShadowMapType=!0;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)}}Vi([u()],It.prototype,"type",2),Vi([u()],It.prototype,"range",1),Vi([u()],It.prototype,"spotAngle",1),Vi([u()],It.prototype,"innerSpotAngle",1),Vi([u(oe)],It.prototype,"color",1),Vi([u()],It.prototype,"shadowNearPlane",1),Vi([u()],It.prototype,"shadowBias",1),Vi([u()],It.prototype,"shadowNormalBias",1),Vi([u()],It.prototype,"shadows",1),Vi([u()],It.prototype,"lightmapBakeType",2),Vi([u()],It.prototype,"intensity",1),Vi([u()],It.prototype,"shadowDistance",1),Vi([u()],It.prototype,"shadowResolution",1),new b(0,0,0);var E2=Object.defineProperty,Vp=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&E2(e,t,n),n};const w0=w("debuglods"),T2=w("nolods");class Nl{screenRelativeTransitionHeight;distance;renderers}Vp([u()],Nl.prototype,"screenRelativeTransitionHeight"),Vp([u()],Nl.prototype,"distance"),Vp([u(ni)],Nl.prototype,"renderers");class A2{model;get renderers(){return this.model.renderers}constructor(e){this.model=e}}class $p extends R{lodModels=[];_lods=[];_settings=[];_lodsHandler;start(){if(w0&&console.log("LODGROUP",this.name,this.lodModels,this),!T2&&!this._lodsHandler&&this.gameObject&&this.lodModels&&Array.isArray(this.lodModels)){const e=[];for(const i of this.lodModels){const n=new A2(i);this._lods.push(n);for(const s of n.renderers)e.includes(s)||e.push(s)}this._lodsHandler=new Array;for(let i=0;i<e.length;i++){const n=new hP;this._lodsHandler.push(n),this.gameObject.add(n)}const t=new M;t.name="Cull "+this.name;for(let i=0;i<e.length;i++){const n=e[i],s=this._lodsHandler[i],r=n.gameObject;w0&&console.log(i,r.name);for(const a of this._lods){const l=a.model.distance;let c=null;if(a.renderers.includes(n)?c=r:c=t,c.type==="Group"){console.warn(`LODGroup ${this.name}: Group or MultiMaterial object's are not supported as LOD object: ${c.name}`);continue}w0&&console.log("LEVEL",c.name,l),s.autoUpdate=!1,this.onAddLodLevel(s,c,a.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 i=t.getCurrentLevel(),n=t.levels[i];t.layers.mask=n.object.layers.mask}}onAddLodLevel(e,t,i){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,i*this._distanceFactor,.01);const n={lod:e,levelIndex:e.levels.length-1,distance:i};this._settings.push(n)}_distanceFactor=1;distanceFactor(e){if(e!==this._distanceFactor){this._distanceFactor=e;for(const t of this._settings){const i=t.lod.levels[t.levelIndex];i.distance=t.distance*e}}}}Vp([u(Nl)],$p.prototype,"lodModels");var I2=Object.defineProperty,x0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&I2(e,t,n),n};const Hp=w("debugnestedgltf");class Wl extends R{filePath;loaded=new ae;loadAssetInParent=!0;_isLoadingOrDoneLoading=!1;listenToProgress(e){this.filePath?.beginListenDownload(e)}preload(){return this.filePath?.preload()||null}async start(){if(this._isLoadingOrDoneLoading)return;Hp&&console.log(this,this.guid);const e=this.gameObject.parent;if(e&&this.filePath){this._isLoadingOrDoneLoading=!0;const t=new $n;t.idProvider=new Ut(this.hash(this.guid)),t.parent=this.loadAssetInParent!==!1?e:this.gameObject,this.gameObject.updateMatrix();const i=this.gameObject.matrix;Hp&&console.log("Load nested:",this.filePath?.url??this.filePath,this.gameObject.position);const n=await this.filePath?.instantiate?.call(this.filePath,t);Hp&&console.log("Nested loaded:",this.filePath?.url??this.filePath,n),n&&this.loadAssetInParent!==!1&&(n.matrixAutoUpdate=!1,n.matrix.identity(),n.applyMatrix4(i),n.matrixAutoUpdate=!0,n.layers.disableAll(),n.layers.set(this.layer),this.loaded.invoke({component:this,instance:n,asset:this.filePath})),Hp&&console.log("Nested loading done:",this.filePath?.url??this.filePath,n)}}onDestroy(){this.filePath?.unload()}hash(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}}x0([u(ne)],Wl.prototype,"filePath"),x0([u(ae)],Wl.prototype,"loaded"),x0([u()],Wl.prototype,"loadAssetInParent");var L2=Object.defineProperty,S0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&L2(e,t,n),n};const D2=w("debugnet"),Gp=class wb extends R{url=null;urlParameterName=null;localhost=null;awake(){D2&&console.log(this),this.context.connection.registerProvider(this)}getWebsocketUrl(){let e=this.url?wb.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){const i=w(this.urlParameterName);i&&typeof i=="string"&&(e=i)}if(!e)return null;const t=new RegExp("(((https?)|(?<socket_prefix>wss?))://)?(www.)?(?<url>.+)","gm").exec(e);return t?.groups?t?.groups.socket_prefix?e:"wss://"+t?.groups.url:null}static GetUrl(e,t){let i=e;const n=wb.IsLocalNetwork()&&t;if(n&&(i=t),e?.startsWith("/")){const s=n?i:window.location.origin;s?.endsWith("/")&&e.startsWith("/")&&(e=e.substring(1)),i=s+e}return i}static IsLocalNetwork(e=window.location.hostname){return Ai(e)}};S0([u()],Gp.prototype,"url"),S0([u()],Gp.prototype,"urlParameterName"),S0([u()],Gp.prototype,"localhost");let C0=Gp;var j2=Object.defineProperty,qp=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&j2(e,t,n),n};class ca extends R{referenceSpace;from;affectPosition=!1;affectRotation=!1;alignLookDirection=!1;levelLookDirection=!1;levelPosition=!1;positionOffset=new b(0,0,0);rotationOffset=new b(0,0,0);offset=new b(0,0,0);update(){if(!this.from)return;var e=ee(this.from),t=_e(this.from);this.offset.copy(this.positionOffset);const i=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(i),e.add(this.offset),this.levelPosition&&this.referenceSpace){const a=new vr(this.gameObject.up,0),l=ee(this.referenceSpace);a.setFromNormalAndCoplanarPoint(this.gameObject.up,l);const c=new b(0,0,0);a.projectPoint(e,c),e.copy(c)}this.affectPosition&&bt(this.gameObject,e);const n=new ct(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),s=new N().setFromEuler(n);this.affectRotation&&Pn(this.gameObject,t.multiply(s));const r=new b;this.from.getWorldDirection(r).multiplyScalar(50),this.levelLookDirection&&(r.y=0),this.alignLookDirection&&this.gameObject.lookAt(r)}}qp([u(S)],ca.prototype,"referenceSpace"),qp([u(S)],ca.prototype,"from"),qp([u(b)],ca.prototype,"positionOffset"),qp([u(b)],ca.prototype,"rotationOffset");var B2=Object.defineProperty,Ks=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&B2(e,t,n),n};class Si{time=0;value=0;inTangent=1/0;inWeight;outTangent=1/0;outWeight;weightedMode;constructor(e=0,t=0){this.time=e,this.value=t}}Ks([u()],Si.prototype,"time"),Ks([u()],Si.prototype,"value"),Ks([u()],Si.prototype,"inTangent"),Ks([u()],Si.prototype,"inWeight"),Ks([u()],Si.prototype,"outTangent"),Ks([u()],Si.prototype,"outWeight"),Ks([u()],Si.prototype,"weightedMode");const Q1=class wd{static linearFromTo(e,t,i){const n=new wd,s=new Si;s.time=0,s.value=e;const r=new Si;return r.time=i,r.value=t,n.keys.push(s,r),n}static constant(e){const t=new wd,i=new Si;return i.time=0,i.value=e,t.keys.push(i),t}keys=[];clone(){const e=new wd;return e.keys=this.keys?.map(t=>{const i=new Si;return i.time=t.time,i.value=t.value,i.inTangent=t.inTangent,i.inWeight=t.inWeight,i.outTangent=t.outTangent,i.outWeight=t.outWeight,i.weightedMode=t.weightedMode,i})||[],e}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 i=this.keys[t];if(i.time<=e)if(t+1<this.keys.length){const n=this.keys[t+1];if(n.time<e)continue;return!isFinite(i.outTangent)||!isFinite(n.inTangent)?i.value:wd.interpolateValue(e,i,n)}else return i.value}return this.keys[this.keys.length-1].value}static interpolateValue(e,t,i){const n=t.time,s=t.value,r=t.outTangent,a=i.time,l=i.value,c=i.inTangent,h=a-n,d=h*h,p=d*h,m=((r+c)*h-2*(l-s))/p,f=(3*(l-s)-(c+2*r)*h)/d,g=r,y=s,_=e-n,v=_*_,P=v*_;return m*P+f*v+g*_+y}};Ks([u(Si)],Q1.prototype,"keys");let Lh=Q1;var F2=Object.defineProperty,x=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&F2(e,t,n),n};const Xp=w("debugparticles");var ns=(o=>(o[o.Billboard=0]="Billboard",o[o.Stretch=1]="Stretch",o[o.HorizontalBillboard=2]="HorizontalBillboard",o[o.VerticalBillboard=3]="VerticalBillboard",o[o.Mesh=4]="Mesh",o))(ns||{});class ha{alphaKeys=[];colorKeys=[];get duration(){return 1}evaluate(e,t){let i,n=0,s=null,r=0;for(let a=0;a<this.alphaKeys.length;a++){const l=this.alphaKeys[a];(l.time<e||!i)&&(i=l,n=a)}for(let a=0;a<this.colorKeys.length;a++){const l=this.colorKeys[a];(l.time<e||!s)&&(s=l,r=a)}if(s)if(r+1<this.colorKeys.length){const a=this.colorKeys[r+1],l=D.remap(e,s.time,a.time,0,1);t.r=D.lerp(s.color.r,a.color.r,l),t.g=D.lerp(s.color.g,a.color.g,l),t.b=D.lerp(s.color.b,a.color.b,l)}else t.r=s.color.r,t.g=s.color.g,t.b=s.color.b;if(i)if(n+1<this.alphaKeys.length){const a=this.alphaKeys[n+1],l=D.remap(e,i.time,a.time,0,1);t.alpha=D.lerp(i.alpha,a.alpha,l)}else t.alpha=i.alpha;return t}}x([u()],ha.prototype,"alphaKeys"),x([u()],ha.prototype,"colorKeys");var Dh=(o=>(o[o.Local=0]="Local",o[o.World=1]="World",o[o.Custom=2]="Custom",o))(Dh||{}),Qp=(o=>(o[o.Sphere=0]="Sphere",o[o.SphereShell=1]="SphereShell",o[o.Hemisphere=2]="Hemisphere",o[o.HemisphereShell=3]="HemisphereShell",o[o.Cone=4]="Cone",o[o.Box=5]="Box",o[o.Mesh=6]="Mesh",o[o.ConeShell=7]="ConeShell",o[o.ConeVolume=8]="ConeVolume",o[o.ConeVolumeShell=9]="ConeVolumeShell",o[o.Circle=10]="Circle",o[o.CircleEdge=11]="CircleEdge",o[o.SingleSidedEdge=12]="SingleSidedEdge",o[o.MeshRenderer=13]="MeshRenderer",o[o.SkinnedMeshRenderer=14]="SkinnedMeshRenderer",o[o.BoxShell=15]="BoxShell",o[o.BoxEdge=16]="BoxEdge",o[o.Donut=17]="Donut",o[o.Rectangle=18]="Rectangle",o[o.Sprite=19]="Sprite",o[o.SpriteRenderer=20]="SpriteRenderer",o))(Qp||{});const os=class xd{static constant(e){const t=new xd;return t.setConstant(e),t}static betweenTwoConstants(e,t){const i=new xd;return i.setMinMaxConstant(e,t),i}static curve(e,t=1){const i=new xd;return i.setCurve(e,t),i}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}mode="Constant";constant;constantMin;constantMax;curve;curveMin;curveMax;curveMultiplier;clone(){const e=new xd;return e.mode=this.mode,e.constant=this.constant,e.constantMin=this.constantMin,e.constantMax=this.constantMax,e.curve=this.curve?.clone(),e.curveMin=this.curveMin?.clone(),e.curveMax=this.curveMax?.clone(),e.curveMultiplier=this.curveMultiplier,e}evaluate(e,t){const i=t===void 0?Math.random():t;switch(this.mode){case 0:case"Constant":return this.constant;case 1:case"Curve":return e=D.clamp01(e),this.curve.evaluate(e)*this.curveMultiplier;case 2:case"TwoCurves":const n=e*this.curveMin.duration,s=e*this.curveMax.duration;return D.lerp(this.curveMin.evaluate(n),this.curveMax.evaluate(s),i%1)*this.curveMultiplier;case 3:case"TwoConstants":return D.lerp(this.constantMin,this.constantMax,i%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 i=0;i<e.keys.length;i++){const n=e.keys[i];n.value>t&&(t=n.value)}return t}};x([u()],os.prototype,"mode"),x([u()],os.prototype,"constant"),x([u()],os.prototype,"constantMin"),x([u()],os.prototype,"constantMax"),x([u(Lh)],os.prototype,"curve"),x([u(Lh)],os.prototype,"curveMin"),x([u(Lh)],os.prototype,"curveMax"),x([u()],os.prototype,"curveMultiplier");let Y=os;const Js=class Bt{static constant(e){const t=new Bt;return t.constant(e),t}static betweenTwoColors(e,t){const i=new Bt;return i.betweenTwoColors(e,t),i}constant(e){return this.mode=0,this.color=e,this}betweenTwoColors(e,t){return this.mode=2,this.colorMin=e,this.colorMax=t,this}mode=0;color;colorMin;colorMax;gradient;gradientMin;gradientMax;static _temp=new se(0,0,0,1);static _temp2=new se(0,0,0,1);evaluate(e,t){const i=t===void 0?Math.random():t;switch(this.mode){case 0:case"Color":return this.color;case 1:case"Gradient":return this.gradient.evaluate(e,Bt._temp),Bt._temp;case 2:case"TwoColors":return Bt._temp.lerpColors(this.colorMin,this.colorMax,i);case 3:case"TwoGradients":return this.gradientMin.evaluate(e,Bt._temp),this.gradientMax.evaluate(e,Bt._temp2),Bt._temp.lerp(Bt._temp2,i);case 4:case"RandomColor":const n=Math.random();return this.gradientMin.evaluate(e,Bt._temp),this.gradientMax.evaluate(e,Bt._temp2),Bt._temp.lerp(Bt._temp2,n)}return Bt._temp.set(16777215),Bt._temp.alpha=1,Bt._temp}};x([u()],Js.prototype,"mode"),x([u(se)],Js.prototype,"color"),x([u(se)],Js.prototype,"colorMin"),x([u(se)],Js.prototype,"colorMax"),x([u(ha)],Js.prototype,"gradient"),x([u(ha)],Js.prototype,"gradientMin"),x([u(ha)],Js.prototype,"gradientMax");let da=Js;var P0=(o=>(o[o.Hierarchy=0]="Hierarchy",o[o.Local=1]="Local",o[o.Shape=2]="Shape",o))(P0||{});class Qt{cullingMode;duration;emitterVelocityMode;flipRotation;gravityModifier;gravityModifierMultiplier;loop;maxParticles;playOnAwake;prewarm;ringBufferLoopRange;ringBufferMode;scalingMode;simulationSpace;simulationSpeed;startColor;startDelay;startDelayMultiplier;startLifetime;startLifetimeMultiplier;startRotation;startRotationMultiplier;startRotation3D;startRotationX;startRotationXMultiplier;startRotationY;startRotationYMultiplier;startRotationZ;startRotationZMultiplier;startSize;startSize3D;startSizeMultiplier;startSizeX;startSizeXMultiplier;startSizeY;startSizeYMultiplier;startSizeZ;startSizeZMultiplier;startSpeed;startSpeedMultiplier;stopAction;useUnscaledTime}x([u(Y)],Qt.prototype,"gravityModifier"),x([u(da)],Qt.prototype,"startColor"),x([u(Y)],Qt.prototype,"startDelay"),x([u(Y)],Qt.prototype,"startLifetime"),x([u(Y)],Qt.prototype,"startRotation"),x([u(Y)],Qt.prototype,"startRotationX"),x([u(Y)],Qt.prototype,"startRotationY"),x([u(Y)],Qt.prototype,"startRotationZ"),x([u(Y)],Qt.prototype,"startSize"),x([u(Y)],Qt.prototype,"startSizeX"),x([u(Y)],Qt.prototype,"startSizeY"),x([u(Y)],Qt.prototype,"startSizeZ"),x([u(Y)],Qt.prototype,"startSpeed");class Yp{cycleCount;maxCount;minCount;probability;repeatInterval;time;count;_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 i=this.time+this.repeatInterval*this._performed;if(e>=i&&(this._performed+=1,Math.random()<this.probability))switch(this.count.mode){case 0:t=this.count.constant;break;case 3:t=D.lerp(this.count.constantMin,this.count.constantMax,Math.random());break;case 1:t=this.count.curve.evaluate(Math.random());break;case 2:const n=Math.random();t=D.lerp(this.count.curveMin.evaluate(n),this.count.curveMax.evaluate(n),Math.random());break}}return t}}class ss{enabled;get burstCount(){return this.bursts?.length??0}bursts;rateOverTime;rateOverTimeMultiplier;rateOverDistance;rateOverDistanceMultiplier;system;reset(){this.bursts?.forEach(e=>e.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t<this.burstCount;t++){const i=this.bursts[t];this.system.main.loop&&i.time>=this.system.time&&i.reset(),e+=Math.round(i.run(this.system.time))}return e}}x([u()],ss.prototype,"enabled"),x([u()],ss.prototype,"bursts"),x([u(Y)],ss.prototype,"rateOverTime"),x([u()],ss.prototype,"rateOverTimeMultiplier"),x([u(Y)],ss.prototype,"rateOverDistance"),x([u()],ss.prototype,"rateOverDistanceMultiplier");class Zp{enabled;color}x([u(da)],Zp.prototype,"color");class ua{enabled;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_time=0;_temp=new b;evaluate(e,t,i){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,i)*this.xMultiplier,t.y=this.y.evaluate(e,i)*this.yMultiplier,t.z=this.z.evaluate(e,i)*this.zMultiplier;else{const n=this.size.evaluate(e,i)*this.sizeMultiplier;t.x=n}return t}}x([u(Y)],ua.prototype,"size"),x([u(Y)],ua.prototype,"x"),x([u(Y)],ua.prototype,"y"),x([u(Y)],ua.prototype,"z");const nt=class Sd{get type(){return Qp[this.shapeType]}initialize(e){this.onInitialize(e),e.position.x=this._vector.x,e.position.y=this._vector.y,e.position.z=this._vector.z}toJSON(){return this}clone(){return new Sd}shapeType=5;enabled=!0;alignToDirection=!1;angle=0;arc=360;arcSpread;arcSpeedMultiplier;arcMode;boxThickness;position;rotation;_rotation=new ct;scale;radius;radiusThickness;sphericalDirectionAmount;randomDirectionAmount;randomPositionAmount;meshShapeType;meshRenderer;_meshObj;_meshGeometry;setMesh(e){this.meshRenderer=e,e?(this._meshObj=e.sharedMeshes[Math.floor(Math.random()*e.sharedMeshes.length)],this._meshGeometry=this._meshObj.geometry):(this._meshObj=void 0,this._meshGeometry=void 0)}system;_space;_worldSpaceMatrix=new J;_worldSpaceMatrixInverse=new J;constructor(){Xp&&console.log(this)}update(e,t){}onUpdate(e,t,i,n){this.system=e,this._space=i,i===1&&(this._worldSpaceMatrix.copy(n.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}applyRotation(e){const t=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return t&&(this._rotation.x=D.toRadians(this.rotation.x),this._rotation.y=D.toRadians(this.rotation.y),this._rotation.z=D.toRadians(this.rotation.z),this._rotation.order="ZYX",e.applyEuler(this._rotation)),t}_vector=new b(0,0,0);_temp=new b(0,0,0);_triangle=new dP;onInitialize(e){this._vector.set(0,0,0),e.mesh=void 0,e.mesh_geometry=void 0;const t=this._temp.copy(this.position),i=this._space===1;i&&t.applyQuaternion(this.system.worldQuaternion);let n=this.radius;if(i&&(n*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case 5:Xp&&B.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(t);break;case 4:this.randomConePoint(this.position,this.angle,n,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case 0:this.randomSpherePoint(this.position,n,this.radiusThickness,this.arc,this._vector);break;case 10:this.randomCirclePoint(this.position,n,this.radiusThickness,this.arc,this._vector);break;case 13:const s=this.meshRenderer;s?.destroyed==!1&&this.setMesh(s);const r=e.mesh=this._meshObj,a=e.mesh_geometry=this._meshGeometry;if(r&&a)switch(this.meshShapeType){case 0:{const l=a.getAttribute("position"),c=Math.floor(Math.random()*l.count);this._vector.fromBufferAttribute(l,c),this._vector.applyMatrix4(r.matrixWorld),e.mesh_normal=c}break;case 1:break;case 2:{const l=a.index;if(l){let c=Math.random(),h=Math.random();c+h>1&&(c=1-c,h=1-h);const d=Math.floor(Math.random()*(l.count/3));let p=d*3,m=d*3+1,f=d*3+2;p=l.getX(p),m=l.getX(m),f=l.getX(f);const g=a.getAttribute("position");this._triangle.a.fromBufferAttribute(g,p),this._triangle.b.fromBufferAttribute(g,m),this._triangle.c.fromBufferAttribute(g,f),this._vector.set(0,0,0).addScaledVector(this._triangle.a,c).addScaledVector(this._triangle.b,h).addScaledVector(this._triangle.c,1-(c+h)),this._vector.applyMatrix4(r.matrixWorld),e.mesh_normal=d}}break}break;default:this._vector.set(0,0,0),A()&&!globalThis.__particlesystem_shapetype_unsupported&&(console.warn("ParticleSystem ShapeType is not supported:",Qp[this.shapeType]),globalThis.__particlesystem_shapetype_unsupported=!0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.applyRotation(this._vector),i&&(this._vector.applyQuaternion(this.system.worldQuaternion),this._vector.add(this.system.worldPos)),Xp&&B.DrawSphere(this._vector,.03,16711680,.5,!0)}_dir=new b;getDirection(e,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 i=t.x,n=t.y,s=t.z;this._dir.set(i,n,s),this.system?.worldspace?this._dir.sub(this.system.worldPos):this._dir.sub(this.position);break;case 13:const r=e.mesh,a=e.mesh_geometry;if(r&&a)switch(this.meshShapeType){case 0:{const l=a.getAttribute("normal"),c=e.mesh_normal;this._dir.fromBufferAttribute(l,c)}break;case 1:break;case 2:{const l=a.index;if(l){const c=e.mesh_normal,h=l.getX(c*3),d=l.getX(c*3+1),p=l.getX(c*3+2),m=a.getAttribute("position"),f=F(),g=F(),y=F();f.fromBufferAttribute(m,h),g.fromBufferAttribute(m,d),y.fromBufferAttribute(m,p),f.sub(g),y.sub(g),f.cross(y),this._dir.copy(f).multiplyScalar(-1);const _=_e(r);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),Xp&&(B.DrawSphere(t,.01,8925952,.5,!0),B.DrawDirection(t,this._dir,8925952,.5,!0)),this._dir}static _randomQuat=new N;static _tempVec=new b;randomizePosition(e,t){if(t<=0)return;const i=Sd._tempVec;i.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),i.x*=t*this.scale.x,i.y*=t*this.scale.y,i.z*=t*this.scale.z,e.add(i)}randomizeDirection(e,t){if(t===0)return;const i=Sd._randomQuat,n=Sd._tempVec;n.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),i.setFromAxisAngle(n,t*Math.random()*Math.PI),e.applyQuaternion(i)}spherizeDirection(e,t){if(t===0)return;const i=Math.random()*Math.PI*2,n=Math.acos(1-Math.random()*2),s=Math.sin(n)*Math.cos(i),r=Math.sin(n)*Math.sin(i),a=Math.cos(n),l=new b(s,r,a);e.lerp(l,t)}randomSpherePoint(e,t,i,n,s){const r=Math.random(),a=Math.random(),l=2*Math.PI*r*(n/360),c=Math.acos(2*a-1),h=D.lerp(1,1-Math.pow(1-Math.random(),Math.PI),i)*t,d=e.x+this.scale.x*(-h*Math.sin(c)*Math.cos(l)),p=e.y+this.scale.y*(h*Math.sin(c)*Math.sin(l)),m=e.z+this.scale.z*(h*Math.cos(c));s.x=d,s.y=p,s.z=m}randomCirclePoint(e,t,i,n,s){const r=Math.random(),a=2*Math.PI*r*(n/360),l=D.lerp(1,1-Math.pow(1-Math.random(),Math.PI),i)*t,c=e.x+this.scale.x*l*Math.cos(a),h=e.y+this.scale.y*l*Math.sin(a),d=e.z;s.x=c,s.y=h,s.z=d}_loopTime=0;_loopDirection=1;randomConePoint(e,t,i,n,s,r,a){let l=0,c=0;switch(r){case 0:l=Math.random(),c=Math.random();break;case 2:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case 1:l=.5,c=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let h=2*Math.PI*l*(s/360);switch(r){case 2:case 1:h+=Math.PI+.5,h+=this._loopTime*Math.PI*2,h%=D.toRadians(s);break}const d=Math.acos(2*c-1),p=D.lerp(1,1-Math.pow(1-Math.random(),Math.PI),n)*i,m=e.x+-p*Math.sin(d)*Math.cos(h),f=e.y+p*Math.sin(d)*Math.sin(h),g=e.z;a.x=m*this.scale.x,a.y=f*this.scale.y,a.z=g*this.scale.z}};x([u()],nt.prototype,"shapeType"),x([u()],nt.prototype,"enabled"),x([u()],nt.prototype,"alignToDirection"),x([u()],nt.prototype,"angle"),x([u()],nt.prototype,"arc"),x([u()],nt.prototype,"arcSpread"),x([u()],nt.prototype,"arcSpeedMultiplier"),x([u()],nt.prototype,"arcMode"),x([u(b)],nt.prototype,"boxThickness"),x([u(b)],nt.prototype,"position"),x([u(b)],nt.prototype,"rotation"),x([u(b)],nt.prototype,"scale"),x([u()],nt.prototype,"radius"),x([u()],nt.prototype,"radiusThickness"),x([u()],nt.prototype,"sphericalDirectionAmount"),x([u()],nt.prototype,"randomDirectionAmount"),x([u()],nt.prototype,"randomPositionAmount"),x([u()],nt.prototype,"meshShapeType"),x([u(bh)],nt.prototype,"meshRenderer");let O0=nt;class ve{damping;enabled;frequency;octaveCount;octaveMultiplier;octaveScale;positionAmount;quality;remap;remapEnabled;remapMultiplier;remapX;remapXMultiplier;remapY;remapYMultiplier;remapZ;remapZMultiplier;scrollSpeedMultiplier;separateAxes;strengthMultiplier;strengthX;strengthXMultiplier;strengthY;strengthYMultiplier;strengthZ;strengthZMultiplier;_noise;_time=0;update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}_temp=new b;apply(e,t,i,n,s,r){if(!this.enabled)return;this._noise||(this._noise=HP(()=>0));const a=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),l=this._noise(a.x,a.y,a.z,this._time),c=this._noise(a.x,a.y,a.z,this._time+1e3*this.frequency),h=this._noise(a.x,a.y,a.z,this._time+2e3*this.frequency);this._temp.set(l,c,h).normalize();const d=s/r;let p=this.positionAmount.evaluate(d);this.separateAxes?(this._temp.x*=p*this.strengthXMultiplier,this._temp.y*=p*this.strengthYMultiplier,this._temp.z*=p*this.strengthZMultiplier):(this.strengthX&&(p*=this.strengthX.evaluate(d)*1.5),this._temp.multiplyScalar(p)),i.x+=this._temp.x,i.y+=this._temp.y,i.z+=this._temp.z}}x([u()],ve.prototype,"damping"),x([u()],ve.prototype,"enabled"),x([u()],ve.prototype,"frequency"),x([u()],ve.prototype,"octaveCount"),x([u()],ve.prototype,"octaveMultiplier"),x([u()],ve.prototype,"octaveScale"),x([u(Y)],ve.prototype,"positionAmount"),x([u()],ve.prototype,"quality"),x([u(Y)],ve.prototype,"remap"),x([u()],ve.prototype,"remapEnabled"),x([u()],ve.prototype,"remapMultiplier"),x([u(Y)],ve.prototype,"remapX"),x([u()],ve.prototype,"remapXMultiplier"),x([u(Y)],ve.prototype,"remapY"),x([u()],ve.prototype,"remapYMultiplier"),x([u(Y)],ve.prototype,"remapZ"),x([u()],ve.prototype,"remapZMultiplier"),x([u()],ve.prototype,"scrollSpeedMultiplier"),x([u()],ve.prototype,"separateAxes"),x([u()],ve.prototype,"strengthMultiplier"),x([u(Y)],ve.prototype,"strengthX"),x([u()],ve.prototype,"strengthXMultiplier"),x([u(Y)],ve.prototype,"strengthY"),x([u()],ve.prototype,"strengthYMultiplier"),x([u(Y)],ve.prototype,"strengthZ"),x([u()],ve.prototype,"strengthZMultiplier");class Ue{enabled;attachRibbonToTransform=!1;colorOverLifetime;colorOverTrail;dieWithParticles=!0;inheritParticleColor=!0;lifetime;lifetimeMultiplier;minVertexDistance=.2;mode=0;ratio=1;ribbonCount=1;shadowBias=0;sizeAffectsLifetime=!1;sizeAffectsWidth=!1;splitSubEmitterRibbons=!1;textureMode=0;widthOverTrail;widthOverTrailMultiplier;worldSpace=!1;getWidth(e,t,i,n){const s=this.widthOverTrail.evaluate(i,n);return e*=s,e}getColor(e,t,i){const n=this.colorOverTrail.evaluate(i),s=this.colorOverLifetime.evaluate(t);e.x*=n.r*s.r,e.y*=n.g*s.g,e.z*=n.b*s.b,"alpha"in n&&"alpha"in s&&(e.w*=n.alpha*s.alpha)}}x([u()],Ue.prototype,"enabled"),x([u()],Ue.prototype,"attachRibbonToTransform"),x([u(da)],Ue.prototype,"colorOverLifetime"),x([u(da)],Ue.prototype,"colorOverTrail"),x([u()],Ue.prototype,"dieWithParticles"),x([u()],Ue.prototype,"inheritParticleColor"),x([u(Y)],Ue.prototype,"lifetime"),x([u()],Ue.prototype,"lifetimeMultiplier"),x([u()],Ue.prototype,"minVertexDistance"),x([u()],Ue.prototype,"mode"),x([u()],Ue.prototype,"ratio"),x([u()],Ue.prototype,"ribbonCount"),x([u()],Ue.prototype,"shadowBias"),x([u()],Ue.prototype,"sizeAffectsLifetime"),x([u()],Ue.prototype,"sizeAffectsWidth"),x([u()],Ue.prototype,"splitSubEmitterRibbons"),x([u()],Ue.prototype,"textureMode"),x([u(Y)],Ue.prototype,"widthOverTrail"),x([u()],Ue.prototype,"widthOverTrailMultiplier"),x([u()],Ue.prototype,"worldSpace");class Xe{enabled;space=0;orbitalX;orbitalY;orbitalZ;orbitalXMultiplier;orbitalYMultiplier;orbitalZMultiplier;orbitalOffsetX;orbitalOffsetY;orbitalOffsetZ;speedModifier;speedModifierMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_system;update(e){this._system=e}_temp=new b;_temp2=new b;_temp3=new b;_hasOrbital=!1;_index=0;_orbitalMatrix=new J;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,i,n,s,r,a){if(!this.enabled)return;const l=r/a,c=this.speedModifier.evaluate(l)*this.speedModifierMultiplier,h=this.x.evaluate(l),d=this.y.evaluate(l),p=this.z.evaluate(l);if(this._temp.set(-h,d,p),this._system&&this._system.main.simulationSpace===1&&this._temp.applyQuaternion(this._system.worldQuaternion),this._hasOrbital&&this._system?.worldPos){const m=this._temp2.set(i.x,i.y,i.z),f=this.orbitalXMultiplier,g=this.orbitalYMultiplier,y=this.orbitalZMultiplier,_=c*Math.PI*2*10,v=Math.cos(_*f),P=Math.sin(_*f),k=Math.cos(_*g),O=Math.sin(_*g),j=Math.cos(_*y),L=Math.sin(_*y),V=m.x*(k*j)+m.y*(k*L)+m.z*-O,W=m.x*(P*O*j-v*L)+m.y*(P*O*L+v*j)+m.z*(P*k),G=m.x*(v*O*j+P*L)+m.y*(v*O*L-P*j)+m.z*(v*k),X=this._temp3.set(m.x-V,m.y-W,m.z-G);X.normalize(),X.multiplyScalar(.2/s*Math.max(this.orbitalXMultiplier,this.orbitalYMultiplier,this.orbitalZMultiplier)),n.x+=X.x,n.y+=X.y,n.z+=X.z}n.x+=this._temp.x,n.y+=this._temp.y,n.z+=this._temp.z,n.x*=c,n.y*=c,n.z*=c}}x([u()],Xe.prototype,"enabled"),x([u()],Xe.prototype,"space"),x([u(Y)],Xe.prototype,"orbitalX"),x([u(Y)],Xe.prototype,"orbitalY"),x([u(Y)],Xe.prototype,"orbitalZ"),x([u()],Xe.prototype,"orbitalXMultiplier"),x([u()],Xe.prototype,"orbitalYMultiplier"),x([u()],Xe.prototype,"orbitalZMultiplier"),x([u()],Xe.prototype,"orbitalOffsetX"),x([u()],Xe.prototype,"orbitalOffsetY"),x([u()],Xe.prototype,"orbitalOffsetZ"),x([u(Y)],Xe.prototype,"speedModifier"),x([u()],Xe.prototype,"speedModifierMultiplier"),x([u(Y)],Xe.prototype,"x"),x([u()],Xe.prototype,"xMultiplier"),x([u(Y)],Xe.prototype,"y"),x([u()],Xe.prototype,"yMultiplier"),x([u(Y)],Xe.prototype,"z"),x([u()],Xe.prototype,"zMultiplier");class Yt{animation;enabled;cycleCount;frameOverTime;frameOverTimeMultiplier;numTilesX;numTilesY;startFrame;startFrameMultiplier;rowMode;rowIndex;spriteCount;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 i=this.frameOverTime.evaluate(e%1);return i*=this.frameOverTimeMultiplier,i*=t,i=i%t,i=Math.floor(i),i}}x([u()],Yt.prototype,"animation"),x([u()],Yt.prototype,"enabled"),x([u()],Yt.prototype,"cycleCount"),x([u(Y)],Yt.prototype,"frameOverTime"),x([u()],Yt.prototype,"frameOverTimeMultiplier"),x([u()],Yt.prototype,"numTilesX"),x([u()],Yt.prototype,"numTilesY"),x([u(Y)],Yt.prototype,"startFrame"),x([u()],Yt.prototype,"startFrameMultiplier"),x([u()],Yt.prototype,"rowMode"),x([u()],Yt.prototype,"rowIndex"),x([u()],Yt.prototype,"spriteCount"),x([u()],Yt.prototype,"timeMode");class Fn{enabled;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){return this.enabled?this.separateAxes?0:this.z.evaluate(e,t)*-1:0}}x([u()],Fn.prototype,"enabled"),x([u()],Fn.prototype,"separateAxes"),x([u(Y)],Fn.prototype,"x"),x([u()],Fn.prototype,"xMultiplier"),x([u(Y)],Fn.prototype,"y"),x([u()],Fn.prototype,"yMultiplier"),x([u(Y)],Fn.prototype,"z"),x([u()],Fn.prototype,"zMultiplier");class hn{enabled;range;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){const i=D.lerp(this.range.x,this.range.y,t);return this.z.evaluate(i)*-1}return 0}}x([u()],hn.prototype,"enabled"),x([u()],hn.prototype,"range"),x([u()],hn.prototype,"separateAxes"),x([u(Y)],hn.prototype,"x"),x([u()],hn.prototype,"xMultiplier"),x([u(Y)],hn.prototype,"y"),x([u()],hn.prototype,"yMultiplier"),x([u(Y)],hn.prototype,"z"),x([u()],hn.prototype,"zMultiplier");class pt{enabled;dampen;drag;dragMultiplier;limit;limitMultiplier;separateAxes;limitX;limitXMultiplier;limitY;limitYMultiplier;limitZ;limitZMultiplier;multiplyDragByParticleSize=!1;multiplyDragByParticleVelocity=!1;space;_temp=new b;_temp2=new b;apply(e,t,i,n,s,r,a){if(this.enabled){const l=this.limit.evaluate(s)*this.limitMultiplier;if(t.length()>l){this._temp.copy(t).normalize().multiplyScalar(l);const c=this.dampen*.5;t.x=D.lerp(t.x,this._temp.x,c),t.y=D.lerp(t.y,this._temp.y,c),t.z=D.lerp(t.z,this._temp.z,c),i.x=D.lerp(i.x,this._temp.x,c),i.y=D.lerp(i.y,this._temp.y,c),i.z=D.lerp(i.z,this._temp.z,c)}}}}x([u()],pt.prototype,"enabled"),x([u()],pt.prototype,"dampen"),x([u(Y)],pt.prototype,"drag"),x([u()],pt.prototype,"dragMultiplier"),x([u(Y)],pt.prototype,"limit"),x([u()],pt.prototype,"limitMultiplier"),x([u()],pt.prototype,"separateAxes"),x([u(Y)],pt.prototype,"limitX"),x([u()],pt.prototype,"limitXMultiplier"),x([u(Y)],pt.prototype,"limitY"),x([u()],pt.prototype,"limitYMultiplier"),x([u(Y)],pt.prototype,"limitZ"),x([u()],pt.prototype,"limitZMultiplier"),x([u()],pt.prototype,"multiplyDragByParticleSize"),x([u()],pt.prototype,"multiplyDragByParticleVelocity"),x([u()],pt.prototype,"space");const jh=class JS{enabled;curve;curveMultiplier;mode;clone(){const e=new JS;return e.enabled=this.enabled,e.curve=this.curve?.clone(),e.curveMultiplier=this.curveMultiplier,e.mode=this.mode,e}system;get _lastWorldPosition(){return this.system._iv_lastWorldPosition||(this.system._iv_lastWorldPosition=new b),this.system._iv_lastWorldPosition}get _velocity(){return this.system._iv_velocity||(this.system._iv_velocity=new b),this.system._iv_velocity}_temp=new b;_firstUpdate=!0;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}}_frames=0;applyCurrent(e,t,i){if(this.enabled&&this.system&&this.system.worldspace!==!1&&this.mode===1){const n=this.curve.evaluate(t,i);this._temp.copy(this._velocity).multiplyScalar(n),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}};x([u()],jh.prototype,"enabled"),x([u(Y)],jh.prototype,"curve"),x([u()],jh.prototype,"curveMultiplier"),x([u()],jh.prototype,"mode");let k0=jh;class Ci{enabled;range;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t,i,n){const s=e.length(),r=D.remap(s,this.range.x,this.range.y,0,1),a=this.size.evaluate(r,i);return n.x*=a,n.y*=a,n.z*=a,n}}x([u()],Ci.prototype,"enabled"),x([u(K)],Ci.prototype,"range"),x([u()],Ci.prototype,"separateAxes"),x([u(Y)],Ci.prototype,"size"),x([u()],Ci.prototype,"sizeMultiplier"),x([u(Y)],Ci.prototype,"x"),x([u()],Ci.prototype,"xMultiplier"),x([u(Y)],Ci.prototype,"y"),x([u()],Ci.prototype,"yMultiplier"),x([u(Y)],Ci.prototype,"z"),x([u()],Ci.prototype,"zMultiplier");class Vl{enabled;range;color;evaluate(e,t,i){const n=e.length(),s=D.remap(n,this.range.x,this.range.y,0,1),r=this.color.evaluate(s,t);i.x*=r.r,i.y*=r.g,i.z*=r.b,"alpha"in r&&(i.w*=r.alpha)}}x([u()],Vl.prototype,"enabled"),x([u(K)],Vl.prototype,"range"),x([u(da)],Vl.prototype,"color"),new b(1,1,1),new b(0,0,1);class M0{constructor(e,t,i,n){this.system=e,this.particleSystem=t,this.subSystem=i,this.subParticleSystem=n,this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0);const s=1e3;this._circularBuffer=new Ii(()=>new Qm,s)}type="NeedleParticleSubEmitter";emitterType;emitterProbability;q_=new N;v_=new b;v2_=new b;_emitterMatrix=new Qm;_circularBuffer;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===R0.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===R0.Death){let n=e.life;if(e[$l]!==void 0&&(n=e[$l]),!(e.age+t*1.2>=n))return;const s=this.subSystem.main.maxParticles-this.subSystem.currentParticles;e.emissionState.waitEmiting=s}const i=new Qm;i.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||i.multiplyMatrices(this._emitterMatrix,i),this.subParticleSystem.emit(t,e.emissionState,i)}}var U2=Object.defineProperty,ze=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&U2(e,t,n),n};const er=w("debugparticles"),z2=w("noprogressive"),N2=w("debugprogressive");var R0=(o=>(o[o.Birth=0]="Birth",o[o.Collision=1]="Collision",o[o.Death=2]="Death",o[o.Trigger=3]="Trigger",o[o.Manual=4]="Manual",o))(R0||{});class dn extends R{renderMode;particleMaterial;trailMaterial;particleMesh;maxParticleSize;minParticleSize;velocityScale;cameraVelocityScale;lengthScale;start(){if(this.maxParticleSize!==.5&&this.minParticleSize!==0&&A()){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(){return this.particleMaterial?.transparent??!1}getMaterial(e=!1){let t=e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial;if(t){if(t.type==="MeshStandardMaterial"){er&&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=Ro,t.map.premultiplyAlpha=!1);const i=new Ce;i.copy(t),e?this.trailMaterial=i:this.particleMaterial=i}t.map&&(t.map.colorSpace=Ro,t.map.premultiplyAlpha=!1),e&&t.side===Ss&&(t=t.clone(),t.side=Ud,e?this.trailMaterial=t:this.particleMaterial=t)}return t&&!z2&&t._didRequestTextureLOD===void 0&&(t._didRequestTextureLOD=0,N2&&console.log("Load material LOD",t.name),He.assignTextureLOD(t,0)),t}getMesh(e){let t=null;if(!t&&(this.particleMesh instanceof H&&(t=this.particleMesh.geometry),t===null)){t=new Sn(1,1);const i=t.attributes.uv;for(let n=0;n<i.count;n++)i.setX(n,1-i.getX(n))}return new H(t,this.getMaterial())}}ze([u()],dn.prototype,"renderMode"),ze([u(we)],dn.prototype,"particleMaterial"),ze([u(we)],dn.prototype,"trailMaterial"),ze([u()],dn.prototype,"maxParticleSize"),ze([u()],dn.prototype,"minParticleSize"),ze([u()],dn.prototype,"velocityScale"),ze([u()],dn.prototype,"cameraVelocityScale"),ze([u()],dn.prototype,"lengthScale");class Kp{_curve;_factor;constructor(e,t=1){this._curve=e,this._factor=t}type="function";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 E0{type="value";toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}startGen(e){}system;constructor(e){this.system=e}}class W2 extends E0{genValue(){return this.system.textureSheetAnimation.getStartIndex()}}class V2 extends E0{_lastPosition=new b;_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 n=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random());let s=this._lastDistance/this.system.deltaTime*n;Number.isFinite(s)||(s=0),e+=s}const t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);const i=this.system.maxParticles-this.system.currentParticles;return D.clamp(e,0,i/this.system.deltaTime)}}class $2 extends E0{genValue(){return this.system.isPlaying,0}}class tr{system;get context(){return this.system.context}constructor(e){this.type=Object.getPrototypeOf(this).constructor.name||"ParticleSystemBaseBehaviour",e&&(this.system=e)}type;initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}reset(){}}class H2 extends tr{type="NeedleTextureSheet";update(e,t){const i=this.system.textureSheetAnimation;if(i.enabled){const n=e.age/e.life,s=i.evaluate(n);s!==void 0&&(e.uvTile=s)}}}const Y1=Symbol("particleRotation");class G2 extends tr{type="NeedleRotation";initialize(e){e[Y1]=Math.random()}update(e,t){if(e.rotation===void 0)return;const i=e.age/e.life;if(typeof e.rotation=="number"&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(i,e[Y1])*t:this.system.renderer.renderMode===ns.Billboard&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){const n=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(i,n)*t}}}const Z1=Symbol("sizeLerpFactor"),q2=new b;class X2 extends tr{type="NeedleSize";_minSize=0;_maxSize=1;initialize(e){e[Z1]=Math.random(),this._minSize=this.system.renderer.minParticleSize,this._maxSize=this.system.renderer.maxParticleSize}update(e,t){const i=e.age/e.life;let n=1;this.system.sizeOverLifetime.enabled&&(n*=this.system.sizeOverLifetime.evaluate(i,void 0,e[Z1]).x);let s=1;this.system.renderer.renderMode!==ns.Mesh&&(s=this.system.worldScale.x/this.system.cameraScale);const r=F(e.startSize).multiplyScalar(n*s);if(e.size.set(r.x,r.y,r.z),this.system.localspace){const a=iS(this.system,q2);e.size.x*=a.x,e.size.y*=a.y,e.size.z*=a.z}}}const $l=Symbol("particleLife"),T0=Symbol("trailLifetime"),K1=Symbol("trailStartLength"),A0=Symbol("trailWidthRandom");class Q2 extends tr{type="NeedleTrail";initialize(e){e instanceof Zb&&(e[$l]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[T0]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[T0]),e[K1]=e.length,e[A0]=Math.random())}update(e){if(this.system.trails?.enabled&&e instanceof Zb){const t=e,i=e.age/e[$l],n=e.previous.values(),s=e.previous.length;for(let r=0;r<s;r++){const a=n.next().value,l=1-r/(s-1),c=e.size;if(c.x<=0&&!this.system.trails.sizeAffectsWidth){const h=20*this.system.trails.widthOverTrail.evaluate(.5,t[A0]);c.x=h,c.y=h,c.z=h}a.size=this.system.trails.getWidth(c.x,i,l,t[A0]),a.color.copy(e.color),this.system.trails.getColor(a.color,i,l)}if(e.age>e[$l]){e.velocity.set(0,0,0);const r=(e.age-e[$l])/e[T0];t.length=D.lerp(e[K1],0,r)}}}}const Jp=Symbol("startVelocity"),J1=Symbol("gravityModifier"),I0=Symbol("gravitySpeed"),em=Symbol("velocity lerp factor"),L0=new b;class Y2 extends tr{type="NeedleVelocity";_gravityDirection=new b;initialize(e){const t=this.system.main.simulationSpeed;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random());const i=this.system.shape.getDirection(e,e.position);e.velocity.x=i.x*e.startSpeed,e.velocity.y=i.y*e.startSpeed,e.velocity.z=i.z*e.startSpeed,this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[Jp]?e[Jp].copy(e.velocity):e[Jp]=e.velocity.clone();const n=this.system.main.gravityModifier.evaluate(Math.random(),Math.random());e[J1]=n*t,e[I0]=n*t*.5,e[em]=Math.random(),this.system.velocityOverLifetime?.init(e),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===Dh.Local&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted).normalize()}update(e,t){const i=e[Jp],n=e[J1];if(n!==0){const d=n*e[I0];L0.copy(this._gravityDirection).multiplyScalar(d),e[I0]+=t*.05,i.add(L0)}e.velocity.copy(i);const s=e.age/e.life;this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,s,e[em]);const r=this.system.noise;r.enabled&&r.apply(0,e.position,e.velocity,t,e.age,e.life);const a=this.system.sizeBySpeed;a?.enabled&&(e.size=a.evaluate(e.velocity,s,e[em],e.size));const l=this.system.colorBySpeed;l?.enabled&&l.evaluate(e.velocity,e[em],e.color);const c=this.system.velocityOverLifetime;c.enabled&&c.apply(e,0,e.position,e.velocity,t,e.age,e.life);const h=this.system.limitVelocityOverLifetime;if(h.enabled&&h.apply(e.position,i,e.velocity,e.size,s,t,1),this.system.worldspace){const d=this.system.worldScale;e.velocity.x*=d.x,e.velocity.y*=d.y,e.velocity.z*=d.z}}}const eS=Symbol("colorLerpFactor"),tS=new se(1,1,1,1),pa=new se(1,1,1,1);class Z2 extends tr{type="NeedleColor";initialize(e){}_init(e){const t=this.system.renderer.particleMaterial;pa.copy(this.system.main.startColor.evaluate(Math.random())),t?.color&&(tS.copy(t.color),pa.multiply(tS)),pa.convertLinearToSRGB(),e.startColor.set(pa.r,pa.g,pa.b,pa.alpha),e.color.copy(e.startColor),e[eS]=Math.random()}update(e,t){if(e.age===0&&this._init(e),this.system.colorOverLifetime.enabled){const i=e.age/e.life,n=this.system.colorOverLifetime.color.evaluate(i,e[eS]);e.color.set(n.r,n.g,n.b,"alpha"in n?n.alpha:1).multiply(e.startColor)}else e.color.copy(e.startColor)}}class K2{system;emission;get anim(){return this.system.textureSheetAnimation}constructor(e){this.system=e,this.emission=new V2(this.system)}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()}autoDestroy;get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Kp(this.system.main.startLifetime)}get startSpeed(){return new Kp(this.system.main.startSpeed)}get startRotation(){return new Kp(this.system.main.startRotation)}get startSize(){return new Kp(this.system.main.startSize)}startLength;get startColor(){return new XP(new QP(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new $2(this.system)}emissionBursts;onlyUsedByOther;behaviors=[];get instancingGeometry(){return this.system.renderer.getMesh(this.system.renderer.renderMode).geometry}get renderMode(){if(this.system.trails.enabled===!0)return Lo.Trail;switch(this.system.renderer.renderMode){case ns.Billboard:return Lo.BillBoard;case ns.Stretch:return Lo.StretchedBillBoard;case ns.HorizontalBillboard:return Lo.HorizontalBillBoard;case ns.VerticalBillboard:return Lo.VerticalBillBoard;case ns.Mesh:return Lo.Mesh}return Lo.BillBoard}rendererEmitterSettings={startLength:new YP(220),followLocalOrigin:!1};get speedFactor(){let e=this.system.main.simulationSpeed;return this.system.renderer?.renderMode===ns.Stretch&&(e*=this.system.renderer.velocityScale??1),e}flatWhiteTexture;clonedTexture={original:void 0,clone:void 0};get texture(){const e=this.material;if(e&&e.map){const t=e.map;if(this.clonedTexture.original!==t||!this.clonedTexture.clone){const i=t.clone();i.premultiplyAlpha=!1,i.colorSpace=Ro,this.clonedTexture.original=t,this.clonedTexture.clone=i}return this.clonedTexture.clone}return this.flatWhiteTexture||(this.flatWhiteTexture=of(new se(1,1,1,1),1)),this.flatWhiteTexture}get startTileIndex(){return new W2(this.system)}get uTileCount(){return this.anim.enabled?this.anim?.numTilesX:void 0}get vTileCount(){return this.anim.enabled?this.anim?.numTilesY:void 0}get renderOrder(){return 1}get blending(){return this.system.renderer.particleMaterial?.blending??uP}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===Dh.World}}class J2{burstParticleIndex=0;burstParticleCount=0;isBursting=!1;travelDistance=0;previousWorldPos;burstIndex=0;burstWaveIndex=0;time=0;waitEmiting=0}const Zt=class Om extends R{play(e=!1){e&&S.foreachComponent(this.gameObject,t=>{t instanceof Om&&t!==this&&t.play(!1)},!0),this._isPlaying=!0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),this.emission?.reset()}pause(e=!0){e&&S.foreachComponent(this.gameObject,t=>{t instanceof Om&&t!==this&&t.pause(!1)},!0),this._isPlaying=!1}stop(e=!0,t=!1){e&&S.foreachComponent(this.gameObject,i=>{i instanceof Om&&i!==this&&i.stop(!1,t)},!0),this._isPlaying=!1,this._time=0,t&&this.reset()}reset(){this._time=0,this._particleSystem&&(this._particleSystem.particleNum=0,this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1,this.emission?.reset())}_state;emit(e){if(this._particleSystem){this.onUpdate(),e=Math.min(e,this.maxParticles-this.currentParticles),this._state||(this._state=new J2),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}colorOverLifetime;main;emission;sizeOverLifetime;shape;noise;trails;velocityOverLifetime;limitVelocityOverLifetime;inheritVelocity;colorBySpeed;textureSheetAnimation;rotationOverLifetime;rotationBySpeed;sizeBySpeed;get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){return this._particleSystem?.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}_cameraScale=1;get container(){return this._container}get worldspace(){return this.main.simulationSpace===Dh.World}get localspace(){return this.main.simulationSpace===Dh.Local}__worldQuaternion=new N;get worldQuaternion(){return this.__worldQuaternion}_worldQuaternionInverted=new N;get worldQuaternionInverted(){return this._worldQuaternionInverted}_worldScale=new b;get worldScale(){return this._worldScale}_worldPositionFrame=-1;_worldPos=new b;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 tr&&(e.system=this),er&&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,i=t.indexOf(e);return i!==-1&&((A()||er)&&console.debug("Remove custom ParticleSystem Behaviour",i,e),t.splice(i,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}_renderer;_batchSystem;_particleSystem;_interface;_container;_time=0;_isPlaying=!0;_isUsedAsSubsystem=!1;_didPreWarm=!1;set bursts(e){for(let t=0;t<e.length;t++){const i=e[t];if(!(i instanceof Yp)){const n=new Yp;Xa(n,i),e[t]=n}}this._bursts=e}_bursts;set subEmitterSystems(e){for(let t=0;t<e.length;t++){const i=e[t];if(!(i instanceof tm)){const n=new tm;Xa(n,i),e[t]=n}}er&&e.length>0&&console.log("SubEmitters: ",e,this),this._subEmitterSystems=e}_subEmitterSystems;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(dn),!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 M,this._container.matrixAutoUpdate=!1,this.context.scene.add(this._container),this._batchSystem=new GP,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new K2(this),this._particleSystem=new qP(this._interface),this._particleSystem.addBehavior(new X2(this)),this._particleSystem.addBehavior(new Z2(this)),this._particleSystem.addBehavior(new H2(this)),this._particleSystem.addBehavior(new G2(this)),this._particleSystem.addBehavior(new Y2(this)),this._particleSystem.addBehavior(new Q2(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),er&&(console.log(this),this.gameObject.add(new Ti(1)))}start(){this.addSubParticleSystems(),this.updateLayers(),this.renderer.particleMesh instanceof H&&this._interface.renderMode==Lo.Mesh&&He.assignMeshLOD(this.renderer.particleMesh,0).then(e=>{e&&this.particleSystem&&this._interface.renderMode==Lo.Mesh&&(this.particleSystem.instancingGeometry=e)})}onDestroy(){this._container?.removeFromParent(),this._batchSystem?.removeFromParent(),this._particleSystem?.emitter.removeFromParent(),this._particleSystem?.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(){this.main&&(this._didPreWarm===!1&&this.main?.prewarm===!0&&(this._didPreWarm=!0,this.preWarm()),this.onUpdate(),this.onSimulate(this.deltaTime))}preWarm(){if(!this.emission?.enabled||this.emission.rateOverTime.getMax()<=0)return;const e=1/60,t=this.main.duration,i=this.main.startLifetime.getMax(),n=Math.min(Math.max(t,i)/Math.max(.01,this.main.simulationSpeed),1e3),s=Math.ceil(n/e),r=Date.now();er&&console.log(`Particles ${this.name} - Prewarm for ${s} frames (${n} sec). Duration: ${t}, Lifetime: ${i}`);for(let a=0;a<s&&!(this.currentParticles>=this.maxParticles);a++){const l=Date.now()-r;if(l>2e3){console.warn(`Particles ${this.name} - Prewarm took too long. Aborting: ${l}`);break}this.onUpdate(),this.onSimulate(e)}}_lastBatchesCount=-1;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 i=this.layer;t.layers.mask=1<<i}}onUpdate(){if(this._bursts&&(this.emission.bursts=this._bursts,delete this._bursts),!this._isPlaying)return;const e=this.context.mainCamera;if(e){const n=Ge(e);this._cameraScale=n.x}const t=!this.worldspace,i=this.gameObject;if(_e(i,this.__worldQuaternion),this._worldQuaternionInverted.copy(this.__worldQuaternion).invert(),Ge(this.gameObject,this._worldScale),t&&this._container&&this.gameObject?.parent){const n=iS(this,L0);this._container.matrix.makeScale(n.x,n.y,n.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),this.inheritVelocity?.update(this.context),this.velocityOverLifetime.update(this)}addSubParticleSystems(){if(this._subEmitterSystems&&this._particleSystem)for(const e of this._subEmitterSystems){e.particleSystem&&(e.particleSystem.__internalAwake?e.particleSystem.__internalAwake():A()&&console.warn("SubParticleSystem serialization issue(?)",e.particleSystem,e));const t=e.particleSystem?._particleSystem;if(t){e.particleSystem._isUsedAsSubsystem=!0;const i=new M0(this,this._particleSystem,e.particleSystem,t);i.emitterType=e.type,i.emitterProbability=e.emitProbability,this._particleSystem.addBehavior(i)}else er&&console.warn("Could not add SubParticleSystem",e,this)}}};ze([u(Zp)],Zt.prototype,"colorOverLifetime"),ze([u(Qt)],Zt.prototype,"main"),ze([u(ss)],Zt.prototype,"emission"),ze([u(ua)],Zt.prototype,"sizeOverLifetime"),ze([u(O0)],Zt.prototype,"shape"),ze([u(ve)],Zt.prototype,"noise"),ze([u(Ue)],Zt.prototype,"trails"),ze([u(Xe)],Zt.prototype,"velocityOverLifetime"),ze([u(pt)],Zt.prototype,"limitVelocityOverLifetime"),ze([u(k0)],Zt.prototype,"inheritVelocity"),ze([u(Vl)],Zt.prototype,"colorBySpeed"),ze([u(Yt)],Zt.prototype,"textureSheetAnimation"),ze([u(Fn)],Zt.prototype,"rotationOverLifetime"),ze([u(hn)],Zt.prototype,"rotationBySpeed"),ze([u(Ci)],Zt.prototype,"sizeBySpeed");let Bh=Zt;class tm{particleSystem;emitProbability=1;properties;type;_deserialize(e,t){const i=this.particleSystem;if(i instanceof Bh)return;let n="";i&&typeof i.guid=="string"&&(n=i.guid,this.particleSystem=S.findByGuid(n,t)),er&&!(this.particleSystem instanceof Bh)&&console.warn("Could not find particle system for sub emitter",n,t,this)}}function iS(o,e){if(e.set(1,1,1),o.gameObject.parent&&o.localspace)switch(o.main.scalingMode){case P0.Local:e=Ge(o.gameObject.parent,e),e.x=1/e.x,e.y=1/e.y,e.z=1/e.z;break;default:if(!o.unsupported_scaling_mode){o.unsupported_scaling_mode=!0;const t="ParticleSystem scale mode "+P0[o.main.scalingMode]+" is not supported";A()&&be(t),console.warn(t,o.name,o)}e=Ge(o.gameObject,e);break}return e}var eI=Object.defineProperty,D0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&eI(e,t,n),n};class Hl extends R{strength=1;radius=2;targets=[];update(){const e=this.gameObject.worldPosition,t=-this.strength*this.context.time.deltaTime;this.targets?.forEach(i=>{if(!i)return;const n=i.gameObject.worldPosition.sub(e),s=n.length();if(s>this.radius)return;let r=t;s>1?r/=s*s:r/=Math.max(.05,s),i.applyImpulse(n.multiplyScalar(r))})}}D0([u()],Hl.prototype,"strength"),D0([u()],Hl.prototype,"radius"),D0([u(Je)],Hl.prototype,"targets");class ac extends R{_didAssignPlayerColor=!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 Qg(.2),!this.tryAssignColor()););}tryAssignColor=()=>{const e=S.getComponentInParent(this.gameObject,ln);if(e&&e.owner)return this._didAssignPlayerColor=!0,this.assignUserColor(e.owner),!0;const t=S.getComponentInParent(this.gameObject,Le);return t?.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(t.connectionId),!0):!1};assignUserColor(e){const t=ac.hashCode(e),i=ac.colorFromHashCode(t);if(this.gameObject.type==="Mesh"){const n=this.gameObject;this.assignColor(i,e,n)}else if(this.gameObject.children)for(const n of this.gameObject.children){const s=n;s.material&&s.material.color&&this.assignColor(i,e,s)}}assignColor(e,t,i){let n=i.material;n&&(n._playerMaterial!==t&&(n=n.clone(),n._playerMaterial=t,i.material=n),n.color=e)}static hashCode(e){var t=0,i,n;if(e.length===0)return t;for(i=0;i<e.length;i++)n=e.charCodeAt(i),t=(t<<5)-t+n,t|=0;return t}static colorFromHashCode(e){const t=(e&16711680)>>16,i=(e&65280)>>8,n=e&255;return new oe(t/255,i/255,n/255)}}const Fh=w("debugpost");let j0=null;function tI(o){j0=o}function nS(o){let e=o.gameObject;for(;e;){for(const t of Lu(e))if(t.isPostProcessingManager===!0)return t;e=e.parent}return null}function iI(o){let e=nS(o);if(!e)if(j0){Fh&&console.warn("Adding postprocessing manager to the scene.");const t=o.scene;e=An(t,j0)}else A()&&console.warn("No post processing manager found");return e}const mt={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 nI(o){if(Fh==="verbose"&&console.debug("Before ordering effects",[...o]),!ot){ot=new Map,ot.set(T.POSTPROCESSING.MODULE.NormalPass,mt.NormalPass),ot.set(T.POSTPROCESSING.MODULE.DepthDownsamplingPass,mt.DepthDownsamplingPass),ot.set(T.POSTPROCESSING.MODULE.SMAAEffect,mt.SMAA),ot.set(T.POSTPROCESSING.MODULE.SSAOEffect,mt.SSAO);const e=T.POSTPROCESSING_AO.MAYBEMODULE;e&&(ot.set(e.N8AOPostPass,mt.SSAO),ot.set(e.N8AOPass,mt.SSAO)),ot.set(T.POSTPROCESSING.MODULE.TiltShiftEffect,mt.TiltShift),ot.set(T.POSTPROCESSING.MODULE.DepthOfFieldEffect,mt.DepthOfField),ot.set(T.POSTPROCESSING.MODULE.ChromaticAberrationEffect,mt.ChromaticAberration),ot.set(T.POSTPROCESSING.MODULE.BloomEffect,mt.Bloom),ot.set(T.POSTPROCESSING.MODULE.SelectiveBloomEffect,mt.Bloom),ot.set(T.POSTPROCESSING.MODULE.VignetteEffect,mt.Vignette),ot.set(T.POSTPROCESSING.MODULE.PixelationEffect,mt.Pixelation),ot.set(T.POSTPROCESSING.MODULE.ToneMappingEffect,mt.ToneMapping),ot.set(T.POSTPROCESSING.MODULE.HueSaturationEffect,mt.HueSaturation),ot.set(T.POSTPROCESSING.MODULE.BrightnessContrastEffect,mt.BrightnessContrast)}o.sort((e,t)=>{const i=typeof e.priority=="number"?e.priority:ot.get(e.effect.constructor)??Number.NEGATIVE_INFINITY,n=typeof t.priority=="number"?t.priority:ot.get(t.effect.constructor)??Number.NEGATIVE_INFINITY;return i===Number.NEGATIVE_INFINITY?(Fh&&console.warn("Unknown effect found: ",e.constructor.name,e),1):n===Number.NEGATIVE_INFINITY?(Fh&&console.warn("Unknown effect found: ",t.constructor.name,t),-1):i-n}),Fh==="verbose"&&console.debug("After ordering effects",[...o])}var oI=Object.defineProperty,sI=Object.getOwnPropertyDescriptor,oS=(o,e,t,i)=>{for(var n=sI(e,t),s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&oI(e,t,n),n};const rI=w("debugpost");class U{isVolumeParameter=!0;constructor(e){e!==void 0&&this.initialize(e)}_isInitialized=!1;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)}_active=!0;get value(){return this._valueRaw}set value(e){this.isInitialized||this.initialize(e),this.processValue(e,!1)}_value;_valueRaw;set defaultValue(e){this._defaultValue=e}_defaultValue=void 0;__init(){this.processValue(this._valueRaw,!0)}valueProcessor;onValueChanged;processValue(e,t){if(e==null||!t&&this.testIfValueChanged(e)===!1)return;const i=this._value;rI&&typeof i=="number"&&typeof e=="number"&&(i?.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,i,this)}testIfValueChanged(e){return this._valueRaw!==e}}oS([u()],U.prototype,"overrideState"),oS([u()],U.prototype,"value");class aI extends Yi{constructor(){super([U])}onSerialize(e,t){}onDeserialize(e,t){const i=t.target,n=t.path;let s;if(i&&n&&(s=i[n]),(typeof s!="object"||typeof s=="object"&&s.isVolumeParameter!==!0)&&(s=new U),typeof e=="object"&&"value"in e){const r=e.value;s.initialize(r),s.overrideState=e.overrideState}else s.value=e;return s}}new aI;var lI=Object.defineProperty,cI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&lI(e,t,n),n};const B0=w("debugpost");class st extends R{get isPostProcessingEffect(){return!0}order=void 0;constructor(e=void 0){if(super(),e)for(const t of Object.keys(e)){const i=e[t],n=this[t];n instanceof U?n.initialize(i):n!==void 0&&(this[t]=i)}}active=!0;_manager=null;onEnable(){super.onEnable(),B0&&console.warn("Enable",this.constructor.name+(this.__internalDidAwakeAndStart?"":" (awake)")),this.__internalDidAwakeAndStart&&(this.active=!0),this.onEffectEnabled()}onDisable(){super.onDisable(),B0&&console.warn("Disable",this.constructor.name),this._manager?.removeEffect(this),this.active=!1}onEffectEnabled(e){e&&e.isPostProcessingManager===!0?this._manager=e:this._manager||(this._manager=iI(this)),this._manager.addEffect(this),this._manager.dirty=!0}init(){}_result;_postprocessingContext=null;get postprocessingContext(){return this._postprocessingContext}apply(e){return this._postprocessingContext=e,this._result||(this.initParameters(),this._result=this.onCreateEffect?.call(this)),this._result&&this.initParameters(),this._result}unapply(){}dispose(){B0&&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 i=this[t];i instanceof U&&i.__init()}}onEditorModification(e){const t=e.propertyName;if(this[t]instanceof U){const i=e.value;return this[t].value=i,!0}}}cI([u()],st.prototype,"active");var hI=Object.defineProperty,dI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&hI(e,t,n),n};const uI=w("debugpost"),F0={};function un(o,e){F0[o]=e}function pI(o){return o.__type in F0?F0[o.__type]:(uI&&o.__type&&console.warn("Unknown postprocessing type",o.__type,o),st)}class im{components=[];__init(e){this.components?.forEach(t=>{t.gameObject===void 0&&e.gameObject.addComponent(t),t.init()})}addEffect(e){this.components.push(e)}removeEffect(e){const t=this.components.indexOf(e);t>=0&&this.components.splice(t,1)}}dI([qe([o=>pI(o),st])],im.prototype,"components");var mI=Object.defineProperty,gI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&mI(e,t,n),n};const fI=w("debugpost");class Uh extends st{get typeName(){return"Antialiasing"}preset=new U(2);onCreateEffect(){const e=new T.POSTPROCESSING.MODULE.SMAAEffect({preset:this.preset?.value??T.POSTPROCESSING.MODULE.SMAAPreset.HIGH,edgeDetectionMode:T.POSTPROCESSING.MODULE.EdgeDetectionMode.LUMA});return this.preset.onValueChanged=t=>{fI&&console.log("Antialiasing preset changed to",t),e.applyPreset(t)},e}}gI([u(U)],Uh.prototype,"preset"),un("Antialiasing",Uh);var yI=Object.defineProperty,U0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&yI(e,t,n),n};const nm=class eC extends st{static useSelectiveBloom=!1;get typeName(){return"Bloom"}threshold=new U(.9);intensity=new U(1);scatter=new U(.7);selectiveBloom;init(){this.threshold.valueProcessor=e=>e,this.intensity.valueProcessor=e=>e,this.scatter.valueProcessor=e=>e}onCreateEffect(){let e;if(this.selectiveBloom==null&&(this.selectiveBloom=eC.useSelectiveBloom),this.selectiveBloom){const t=e=new T.POSTPROCESSING.MODULE.SelectiveBloomEffect(this.context.scene,this.context.mainCamera,{blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});t.inverted=!0}else e=new T.POSTPROCESSING.MODULE.BloomEffect({blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});return this.intensity.onValueChanged=t=>{e.intensity=t},this.threshold.onValueChanged=t=>{e.luminanceMaterial.threshold=Math.pow(t,2.2)},this.scatter.onValueChanged=t=>{e.luminancePass.enabled=!0,e.luminanceMaterial.smoothing=t,e.mipmapBlurPass&&(e.mipmapBlurPass.radius=Ao.lerp(.1,.9,t))},e}};U0([u(U)],nm.prototype,"threshold"),U0([u(U)],nm.prototype,"intensity"),U0([u(U)],nm.prototype,"scatter");let om=nm;un("Bloom",om);var bI=Object.defineProperty,_I=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&bI(e,t,n),n};class zh extends st{get typeName(){return"ChromaticAberration"}intensity=new U(0);onCreateEffect(){const e=new T.POSTPROCESSING.MODULE.ChromaticAberrationEffect;return e.offset=new K(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}}_I([u(U)],zh.prototype,"intensity"),un("ChromaticAberration",zh);var Nh=(o=>(o[o.None=0]="None",o[o.Neutral=1]="Neutral",o[o.ACES=2]="ACES",o[o.AgX=3]="AgX",o[o.KhronosNeutral=4]="KhronosNeutral",o))(Nh||{});const sS=new Map;function z0(o){switch(o){case 0:return Vm;case 1:return Wm;case 2:return Ld;case 3:return Id;case 4:return ja;default:return sS.has(o)||(sS.set(o,!0),console.warn("[Postprocessing] Unknown tone mapping mode",o)),ja}}function vI(o){switch(o){case Vm:return 0;case Ld:return 2;case Id:return 3;case ja:return 1;case Wm:return 1;default:return 0}}function sm(o){switch(o){case Vm:return T.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR;case Ld:return T.POSTPROCESSING.MODULE.ToneMappingMode.ACES_FILMIC;case Id:return T.POSTPROCESSING.MODULE.ToneMappingMode.AGX;case ja:return T.POSTPROCESSING.MODULE.ToneMappingMode.NEUTRAL;case Wm:return T.POSTPROCESSING.MODULE.ToneMappingMode.REINHARD;default:return T.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR}}var wI=Object.defineProperty,rS=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&wI(e,t,n),n};const N0=w("debugpost");class ir extends st{get typeName(){return"ToneMapping"}mode=new U(void 0);exposure=new U(1);setMode(e){const t=Nh[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=nS(this);e&&super.onEffectEnabled(e)}_tonemappingEffect=null;onCreateEffect(){if(this.mode.isInitialized==!1){const i=vI(this.context.renderer.toneMapping);N0&&console.log("[PostProcessing] Initializing ToneMapping mode to renderer.toneMapping",this.context.renderer.toneMapping+" \u2192 "+i),this.mode.initialize(i)}this._tonemappingEffect?.dispose();const e=z0(this.mode.value),t=this._tonemappingEffect=new T.POSTPROCESSING.MODULE.ToneMappingEffect({mode:sm(e)});return this.mode.onValueChanged=i=>{if(typeof i=="string")i=aw(i),t.mode=sm(i);else{const n=z0(i);t.mode=sm(n)}t.name="ToneMapping ("+Nh[i]+")",N0&&console.log("[PostProcessing] ToneMapping mode changed to",Nh[i],e,t.mode)},N0&&console.log("[PostProcessing] Use ToneMapping",Nh[this.mode.value],e,t.mode,"renderer.tonemapping: "+this.context.renderer.toneMapping),t}onBeforeRender(){if(this._tonemappingEffect&&this.postprocessingContext?.handler.getEffectIsActive(this._tonemappingEffect)&&(this.mode.overrideState&&(this.context.renderer.toneMapping=z0(this.mode.value)),this.exposure.overrideState&&this.exposure.value!==void 0)){const e=Math.max(0,this.exposure.value);this.context.renderer.toneMappingExposure=e}}}rS([u(U)],ir.prototype,"mode"),rS([u(U)],ir.prototype,"exposure"),un("Tonemapping",ir);var xI=Object.defineProperty,rm=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&xI(e,t,n),n};class nr extends st{get typeName(){return"ColorAdjustments"}remap=!0;postExposure=new U(1);contrast=new U(0);hueShift=new U(0);saturation=new U(0);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(){const e=[];let t=this.postprocessingContext?.components.find(s=>s instanceof ir);t||(t=new ir,this.postprocessingContext?.components.push(t)),this.postExposure.onValueChanged=s=>{this.postExposure.overrideState&&t?t.exposure.value=s: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 i=new T.POSTPROCESSING.MODULE.BrightnessContrastEffect;this.contrast.onValueChanged=s=>i.contrast=s;const n=new T.POSTPROCESSING.MODULE.HueSaturationEffect;return this.hueShift.onValueChanged=s=>n.hue=s,this.saturation.onValueChanged=s=>n.saturation=s,e.push(i),e.push(n),e}}rm([u(U)],nr.prototype,"postExposure"),rm([u(U)],nr.prototype,"contrast"),rm([u(U)],nr.prototype,"hueShift"),rm([u(U)],nr.prototype,"saturation"),un("ColorAdjustments",nr);var SI=Object.defineProperty,ma=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&SI(e,t,n),n};const CI=w("debugpost");class Un extends st{get typeName(){return"DepthOfField"}mode;focusDistance=new U(1);focalLength=new U(.2);aperture=new U(20);gaussianMaxRadius=new U;resolutionScale=new U(1/window.devicePixelRatio);bokehScale=new U;init(){this.focalLength.valueProcessor=t=>{const i=t/300;return D.lerp(2,.01,i)};const e=20;this.aperture.valueProcessor=t=>{const i=1-t/32;return D.lerp(1,e,i)}}onCreateEffect(){if(this.mode===0){CI&&console.warn("DepthOfField: Mode is set to Off");return}const e=new T.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(){}}ma([u()],Un.prototype,"mode"),ma([u(U)],Un.prototype,"focusDistance"),ma([u(U)],Un.prototype,"focalLength"),ma([u(U)],Un.prototype,"aperture"),ma([u(U)],Un.prototype,"gaussianMaxRadius"),ma([u(U)],Un.prototype,"resolutionScale"),ma([u(U)],Un.prototype,"bokehScale"),un("DepthOfField",Un);class Wh extends st{effect;constructor(e){super(),this.effect=e}get typeName(){return this.effect.constructor.name}onCreateEffect(){return this.effect}}var PI=Object.defineProperty,OI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&PI(e,t,n),n};class Vh extends st{get typeName(){return"PixelationEffect"}granularity=new U(10);onCreateEffect(){const e=new T.POSTPROCESSING.MODULE.PixelationEffect;return this.granularity.onValueChanged=t=>{e.granularity=t},e}}OI([u(U)],Vh.prototype,"granularity"),un("PixelationEffect",Vh);var kI=Object.defineProperty,$h=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&kI(e,t,n),n};class rs extends st{get typeName(){return"ScreenSpaceAmbientOcclusion"}intensity=new U(2);falloff=new U(1);samples=new U(9);color=new U(new oe(0,0,0));luminanceInfluence=new U(.7);onBeforeRender(){if(this._ssao&&this.context.mainCamera instanceof de){const e=this.context.mainCamera.far-this.context.mainCamera.near;this._ssao.ssaoMaterial.worldDistanceFalloff=e*.01,this._ssao.ssaoMaterial.worldDistanceThreshold=this.context.mainCamera.far}}_ssao;onCreateEffect(){const e=this.context.mainCamera,t=new T.POSTPROCESSING.MODULE.NormalPass(this.context.scene,e),i=new T.POSTPROCESSING.MODULE.DepthDownsamplingPass({normalBuffer:t.texture,resolutionScale:.5}),n=this._ssao=new T.POSTPROCESSING.MODULE.SSAOEffect(e,t.texture,{normalDepthBuffer:i.texture,worldDistanceThreshold:1,worldDistanceFalloff:1,worldProximityThreshold:.1,worldProximityFalloff:2,intensity:1,blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.MULTIPLY,luminanceInfluence:.5});this.intensity.onValueChanged=r=>{n.intensity=r},this.falloff.onValueChanged=r=>{n.ssaoMaterial.radius=r*.1},this.samples.onValueChanged=r=>{n.ssaoMaterial.samples=r},this.color.onValueChanged=r=>{n.color||(n.color=new oe),n.color.copy(r)},this.luminanceInfluence.onValueChanged=r=>{n.luminanceInfluence=r};const s=new Array;return s.push(t),s.push(i),s.push(n),s}}$h([u(U)],rs.prototype,"intensity"),$h([u(U)],rs.prototype,"falloff"),$h([u(U)],rs.prototype,"samples"),$h([u(U)],rs.prototype,"color"),$h([u(U)],rs.prototype,"luminanceInfluence"),un("ScreenSpaceAmbientOcclusion",rs);var MI=Object.defineProperty,ga=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&MI(e,t,n),n};const RI=w("debugN8AO");var W0=(o=>(o[o.Performance=0]="Performance",o[o.Low=1]="Low",o[o.Medium=2]="Medium",o[o.High=3]="High",o[o.Ultra=4]="Ultra",o))(W0||{});class zn extends st{get typeName(){return"ScreenSpaceAmbientOcclusionN8"}get pass(){return this._ssao}gammaCorrection=!0;aoRadius=new U(1);falloff=new U(1);intensity=new U(1);color=new U(new oe(0,0,0));screenspaceRadius=!1;quality=2;_ssao;onValidate(){this._ssao&&(this._ssao.setQualityMode(W0[this.quality]),this._ssao.configuration.gammaCorrection=this.gammaCorrection,this._ssao.configuration.screenSpaceRadius=this.screenspaceRadius)}onCreateEffect(){const e=this.context.mainCamera,t=this.context.domWidth,i=this.context.domHeight,n=this._ssao=new T.POSTPROCESSING_AO.MODULE.N8AOPostPass(this.context.scene,e,t,i);n.name="SSAO_N8";const s=W0[this.quality];if(n.setQualityMode(s),n.configuration.transparencyAware=!1,n.configuration.halfRes=window.devicePixelRatio>1,n.effectCompositerQuad?.material){const a=n.effectCompositerQuad.material;a.fragmentShader=a.fragmentShader.replace(`if (depth == 1.0) {
|
|
1310
|
+
`)}r&&s.size&&console.log(d);const f=new Set;for(const _ of m){_.getPath||console.error("USDZExporter: Animation target object has no getPath method. This is likely a bug",_);let v=_.getPath();v.startsWith("<")&&(v=v.substring(1)),v.endsWith(">")&&(v=v.substring(0,v.length-1)),f.add({path:v,obj:_})}const g=Array.from(f).sort((_,v)=>_.path.length-v.path.length),y=new Array;for(let _=0;_<g.length;_++)for(let v=_+1;v<g.length;v++)if(g[v].path.startsWith(g[_].path)){const P=g[v],k=g[_];y.push({child:P.obj.displayName+" ("+P.path+")",parent:k.obj.displayName+" ("+k.path+")"})}y.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:y,playAnimationActions:s})}for(const d of new Set([...t,...i]))if(Array.isArray(d))for(const p of d)n.add(p.uuid);else n.add(d.uuid);zp&&console.log("All Behavior trigger sources and action targets",t,i,n),this.targetUuids=new Set(n)}onAfterHierarchy(e,t){if(this.behaviours?.length){t.beginBlock('def Scope "Behaviors"');for(const i of this.behaviours)i.writeTo(this,e.document,t);t.closeBlock()}}async onAfterSerialize(e){zp&&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:i}of this.audioClipsCopy){if(e.files[i])return;const n=await(await(await fetch(t)).blob()).arrayBuffer(),s=new Uint8Array(n);e.files[i]=s}this.behaviourComponentsCopy.length=0,this.audioClipsCopy.length=0}}class n0{get extensionName(){return"Physics"}onExportObject(e,t,i){const n=S.getComponents(e,Je).filter(l=>l.enabled),s=S.getComponents(e,rn).filter(l=>l.enabled&&!l.isTrigger);let r=n.length>0?n[0]:null;const a=s.length>0?s[0]:null;a&&!r&&(r=new Je,r.isKinematic=!0),r&&t.addEventListener("serialize",(l,c)=>{if(r){if(l.appendLine(),l.beginBlock('def RealityKitComponent "RigidBody"',"{",!0),r.useGravity||l.appendLine("bool gravityEnabled = 0"),l.appendLine('uniform token info:id = "RealityKit.RigidBody"'),r.isKinematic&&l.appendLine('token motionType = "Kinematic"'),l.beginBlock('def RealityKitStruct "massFrame"',"{",!0),l.appendLine(`float m_mass = ${r.mass}`),l.beginBlock('def RealityKitStruct "m_pose"',"{",!0),l.appendLine(`float3 position = (${r.centerOfMass.x}, ${r.centerOfMass.y}, ${r.centerOfMass.z})`),l.closeBlock("}"),l.closeBlock("}"),s.length>0){const h=s[0];l.beginBlock('def RealityKitStruct "material"',"{",!0);const d=h.sharedMaterial;d&&d.dynamicFriction!==void 0&&l.appendLine(`double dynamicFriction = ${h.sharedMaterial?.dynamicFriction}`),d&&d.bounciness!==void 0&&l.appendLine(`double restitution = ${h.sharedMaterial?.bounciness}`),d&&d.staticFriction!==void 0&&l.appendLine(`double staticFriction = ${h.sharedMaterial?.staticFriction}`),l.closeBlock("}")}l.closeBlock("}")}}),a&&(t.addEventListener("serialize",(l,c)=>{l.beginBlock('def RealityKitComponent "Collider"',"{",!0),l.appendLine("uint group = 1"),l.appendLine('uniform token info:id = "RealityKit.Collider"'),l.appendLine("uint mask = 4294967295");const h=a.isTrigger?"Trigger":"Default";if(l.appendLine(`token type = "${h}"`),l.beginBlock('def RealityKitStruct "Shape"',"{",!0),a instanceof fl){const d=a;l.appendLine('token shapeType = "Sphere"'),l.appendLine(`float radius = ${d.radius}`)}else if(a instanceof lp){const d=a;l.appendLine('token shapeType = "Box"'),l.appendLine(`float3 extent = (${d.size.x}, ${d.size.y}, ${d.size.z})`)}else if(a instanceof Ho){const d=a;l.appendLine('token shapeType = "Capsule"'),l.appendLine(`float radius = ${d.radius}`),l.appendLine(`float height = ${d.height}`)}else if(a instanceof zs&&a.sharedMesh?.geometry){const d=a.sharedMesh.geometry;d.boundingBox||d.computeBoundingBox();const p=a.sharedMesh.geometry.boundingBox;p&&(l.appendLine('token shapeType = "Box"'),l.appendLine(`float3 extent = (${p.max.x-p.min.x}, ${p.max.y-p.min.y}, ${p.max.z-p.min.z})`),console.log("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. MeshCollider will be exported as Box",a))}else console.warn("[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. Ignoring collider:",a);l.beginBlock('def RealityKitStruct "pose"',"{",!0),l.closeBlock("}"),l.closeBlock("}"),l.closeBlock("}")}),s.length>1&&console.log("WARNING: Multiple colliders detected. visionOS / iOS can only support objects with a single collider, only exporting the first collider: ",a))}}const i2=w("debugshadowcomponents");Jb.prototype.interactable={get(){return this.interactive},set(o){this.interactable=o}};class gn extends R{isRoot(){return this.Root?.gameObject===this.gameObject}get canvas(){const e=this.Root;return e?.isCanvas?e:null}get Canvas(){return this.canvas}markDirty(){ci.markUIDirty(this.context)}get shadowComponent(){return this._shadowComponent}set shadowComponent(e){this._shadowComponent=e}_shadowComponent=null;_controlsChildLayout=!0;get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}_root=void 0;get Root(){return this._root===void 0&&(this._root=S.getComponentInParent(this.gameObject,kh)),this._root}_parentComponent=void 0;__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this.shadowComponent=null,this._root=void 0,this._parentComponent=void 0,this}onEnable(){super.onEnable()}addShadowComponent(e,t){if(!e)return;this.removeShadowComponent();const i=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=S.getComponentInParent(i,gn),!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[Di]=this,this.setShadowComponentOwner(e);let n=!1;if(this.Root?.gameObject===this.gameObject)this.gameObject.add(e);else{const s=this._parentComponent.shadowComponent;s&&(s?.add(e),n=!0)}this.shadowComponent=e,t&&t.shadowComponent&&this.shadowComponent&&t.shadowComponent.add(this.shadowComponent),kc&&e.add(new Ti(.5)),this.onAfterAddedToScene(),n&&JP(),i2&&console.warn("Added shadow component",this.shadowComponent)}setShadowComponentOwner(e){if(e&&(e[Di]===void 0||e[Di]===this)&&(e[Di]=this,e.children))for(const t of e.children)this.setShadowComponentOwner(t)}traverseOwnedShadowComponents(e,t,i){if(e&&e[Di]===t){i(e);for(const n of e.children)this.traverseOwnedShadowComponents(n,t,i)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}}class kh extends gn{awake(){super.awake()}}var n2=Object.defineProperty,o2=Object.getOwnPropertyDescriptor,Mh=(o,e,t,i)=>{for(var n=i>1?void 0:i?o2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&n2(e,t,n),n};const o0=w("debugui"),s0=w("debuguilayout");class z1{width;height}class N1{x;y;width;height}const jn=new b,Rh=new J,Np=new N,Ll=class ZS extends gn{get parent(){return this._parentRectTransform}get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}_anchoredPosition;get anchoredPosition(){return this._anchoredPosition||(this._anchoredPosition=new K),this._anchoredPosition}set anchoredPosition(e){this._anchoredPosition=e}sizeDelta=new K(100,100);pivot=new K(.5,.5);anchorMin=new K(0,0);anchorMax=new K(1,1);minWidth;minHeight;get width(){let e=this.sizeDelta.x;if(this.anchorMin.x!==this.anchorMax.x&&this._parentRectTransform){const t=this._parentRectTransform.width,i=this.anchorMax.x-this.anchorMin.x;e=t*i,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,i=this.anchorMax.y-this.anchorMin.y;e=t*i,e+=this.sizeDelta.y}return this.minHeight!==void 0&&e<this.minHeight?this.minHeight:e}lastMatrix;rectBlock;_transformNeedsUpdate=!1;_initialPosition;_parentRectTransform;_lastUpdateFrame=-1;awake(){super.awake(),this._lastUpdateFrame=-1,this._parentRectTransform=void 0,this.rectBlock=new M,this.rectBlock.name=this.name,this.lastMatrix=new J,this._lastAnchoring=null,this._initialPosition=this.gameObject.position.clone(),this._initialPosition.z=0,this._anchoredPosition||(this._anchoredPosition=new K),dl(this,"_anchoredPosition",()=>{this.markDirty()}),dl(this,"sizeDelta",()=>{this.markDirty()}),dl(this,"pivot",()=>{this.markDirty()}),dl(this,"anchorMin",()=>{this.markDirty()}),dl(this,"anchorMax",()=>{this.markDirty()})}onEnable(){super.onEnable(),this.rectBlock||(this.rectBlock=new M),this.lastMatrix||(this.lastMatrix=new J),this._lastAnchoring||(this._lastAnchoring=new K),this._initialPosition||(this._initialPosition=new b),this._anchoredPosition||(this._anchoredPosition=new K),this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0,this.canvas?.registerTransform(this)}onDisable(){super.onDisable(),this.removeShadowComponent(),this.canvas?.unregisterTransform(this)}onParentRectTransformChanged(e){this._transformNeedsUpdate||this.onApplyTransform(s0?`${e.name} changed`:void 0)}get isDirty(){return this._transformNeedsUpdate||(this._transformNeedsUpdate=!this.lastMatrix.equals(this.gameObject.matrix)),this._transformNeedsUpdate}markDirty(){this._transformNeedsUpdate||(s0&&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){if(this.context.time.frameCount===this._lastUpdateFrame)return;this._lastUpdateFrame=this.context.time.frameCount;const t=this.shadowComponent;if(!t)return;this.gameObject.parent?this._parentRectTransform=S.getComponentInParent(this.gameObject.parent,ZS):this._parentRectTransform=void 0,this._transformNeedsUpdate=!1,s0&&console.warn("RectTransform \u2192 ApplyTransform",this.name+" because "+e),this.isRoot()?this.Root.screenspace||(t.rotation.y=Math.PI):(t.matrix.identity(),t.matrixAutoUpdate=!1,jn.set(0,0,0),this.applyPivot(jn),t.matrix.setPosition(jn.x,jn.y,0),(this.gameObject.quaternion.x||this.gameObject.quaternion.y||this.gameObject.quaternion.z)&&(Np.copy(this.gameObject.quaternion),Np.x*=-1,Np.z*=-1,Rh.makeRotationFromQuaternion(Np),t.matrix.premultiply(Rh)),jn.set(0,0,0),this.applyAnchoring(jn),this.canvas?.screenspace?jn.z+=.1:jn.z+=.01,Rh.identity(),Rh.setPosition(jn.x,jn.y,jn.z),t.matrix.premultiply(Rh),t.matrix.scale(this.gameObject.scale)),this.lastMatrix.copy(this.gameObject.matrix);const i=!0;for(const n of Lu(this.gameObject,gn,i,1)){if(n===this||!n.activeAndEnabled)continue;const s=n;s.onParentRectTransformChanged&&s.onParentRectTransformChanged(this)}}_lastAnchoring;applyAnchoring(e){this._lastAnchoring||(this._lastAnchoring=new K);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 i=this._parentRectTransform;if(i){let n=0;const s=1-this.anchorMax.y-this.anchorMin.y;n-=i.height*.5*s,e.y+=n;let r=0;const a=1-this.anchorMax.x-this.anchorMin.x;r-=i.width*.5*a,e.x+=r}}applyPivot(e){if(this.pivot&&!this.isRoot()){const t=this.pivot.x-.5;e.x-=t*this.sizeDelta.x*this.gameObject.scale.x;const i=this.pivot.y-.5;e.y-=i*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}_createdBlocks=[];_createdTextBlocks=[];createNewBlock(e){e={...this.getBasicOptions(),...e},o0&&console.log(this.name,e);const t=new Jb(e);return this._createdBlocks.push(t),t}createNewText(e){o0&&console.log(e),e={...this.getBasicOptions(),...e},o0&&console.log(this.name,e);const t=new Kb(e);return this._createdTextBlocks.push(t),t}};Mh([u(K)],Ll.prototype,"anchoredPosition",1),Mh([u(K)],Ll.prototype,"sizeDelta",2),Mh([u(K)],Ll.prototype,"pivot",2),Mh([u(K)],Ll.prototype,"anchorMin",2),Mh([u(K)],Ll.prototype,"anchorMax",2);let Bn=Ll;var s2=Object.defineProperty,W1=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&s2(e,t,n),n};class Dl extends R{effectColor;effectDistance}W1([u(se)],Dl.prototype,"effectColor"),W1([u(K)],Dl.prototype,"effectDistance");var r2=Object.defineProperty,a2=Object.getOwnPropertyDescriptor,V1=(o,e,t,i)=>{for(var n=i>1?void 0:i?a2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&r2(e,t,n),n};const oa={backgroundColor:new oe(1,1,1),backgroundOpacity:1,borderColor:new oe(1,1,1),borderOpacity:1},r0=class vd extends gn{get isGraphic(){return!0}get color(){return this._color||(this._color=new se(1,1,1,1)),this._color}set color(e){(!this._color||this._color.r!==e.r||this._color.g!==e.g||this._color.b!==e.b||this._color.alpha!==e.alpha)&&(this._color||(this._color=new se(1,1,1,1)),this._color.copy(e),this.onColorChanged())}_alphaFactor=1;setAlphaFactor(e){this._alphaFactor=e,this.onColorChanged()}get alphaFactor(){return this._alphaFactor}sRGBColor=new oe(1,0,1);onColorChanged(){if(this.uiObject){this.sRGBColor.copy(this._color),this.sRGBColor.convertLinearToSRGB(),oa.backgroundColor=this.sRGBColor,oa.backgroundOpacity=this._color.alpha;const e=this.uiObject._simpleState__activeStates?.[0];if(e){const t=this.uiObject._simpleState__states?.[e];t&&("backgroundColor"in t&&(oa.backgroundColor=t.backgroundColor),"backgroundOpacity"in t&&(oa.backgroundOpacity=t.backgroundOpacity))}oa.backgroundOpacity*=this._alphaFactor,this.applyEffects(oa,this._alphaFactor),this.uiObject.set(oa),this.markDirty()}}get m_Color(){return this._color}raycastTarget=!0;uiObject=null;_color=null;_rect=null;_stateManager=null;get rectTransform(){if(this._rect||(this._rect=S.getComponent(this.gameObject,Bn)),!this._rect)throw new Error("Not Supported: Make sure to add a RectTransform component before adding a UI Graphic component.");return this._rect}onParentRectTransformChanged(){this.uiObject?.set({width:this.rectTransform.width,height:this.rectTransform.height}),this.markDirty()}__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this._rect=null,this.uiObject=null,this._stateManager=null,this._color&&(this._color=this._color.clone()),this}setState(e){this.makePanel(),this.uiObject&&(this.uiObject.setState(e),this?.markDirty())}setupState(e){this.makePanel(),this.uiObject&&(this._stateManager||(this._stateManager=new eO(this.uiObject)),this.uiObject.setupState(e.state,e.attributes))}setOptions(e){this.makePanel(),this.uiObject&&this.uiObject.set(e)}awake(){super.awake(),this.makePanel(),dl(this,"_color",()=>_E(this,this.onColorChanged))}onEnable(){super.onEnable(),this.uiObject&&(this.rectTransform.shadowComponent?.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}_currentlyCreatingPanel=!1;makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;const e={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:.015};this.onBeforeCreate(e),this.applyEffects(e),this.onCreate(e),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated(),this.onColorChanged()}onBeforeCreate(e){}onCreate(e){this.uiObject=this.rectTransform.createNewBlock(e),this.uiObject.name=this.name}onAfterCreated(){}applyEffects(e,t=1){const i=this.gameObject?.getComponent(Dl);i&&(i.effectDistance&&(e.borderWidth=Math.max(Math.abs(i.effectDistance.x),Math.abs(i.effectDistance.y))),i.effectColor&&(e.borderColor=i.effectColor,e.borderOpacity=i.effectColor.alpha*t))}static textureCache=new Map;async setTexture(e){if(this.setOptions({backgroundOpacity:0}),e){if(vd.textureCache.has(e))e=vd.textureCache.get(e);else if(!e.isRenderTargetTexture){const t=e.clone();t.colorSpace=Ro,vd.textureCache.set(e,t),e=t}this.setOptions({backgroundImage:e,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:"stretch"}),He.assignTextureLOD(e,0).then(t=>{t instanceof Se&&(e&&vd.textureCache.set(e,t),this.setOptions({backgroundImage:t}),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)}};V1([u(se)],r0.prototype,"color",1),V1([u()],r0.prototype,"raycastTarget",2);let Eh=r0;class Th extends Eh{_flippedObject=!1;onAfterCreated(){this.uiObject&&!this._flippedObject&&(this._flippedObject=!0,this.uiObject.scale.y*=-1)}}var l2=Object.defineProperty,c2=Object.getOwnPropertyDescriptor,is=(o,e,t,i)=>{for(var n=i>1?void 0:i?c2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&l2(e,t,n),n};const sa=w("debugtext");var ut=(o=>(o[o.UpperLeft=0]="UpperLeft",o[o.UpperCenter=1]="UpperCenter",o[o.UpperRight=2]="UpperRight",o[o.MiddleLeft=3]="MiddleLeft",o[o.MiddleCenter=4]="MiddleCenter",o[o.MiddleRight=5]="MiddleRight",o[o.LowerLeft=6]="LowerLeft",o[o.LowerCenter=7]="LowerCenter",o[o.LowerRight=8]="LowerRight",o))(ut||{}),$1=(o=>(o[o.Normal=0]="Normal",o[o.Bold=1]="Bold",o[o.Italic=2]="Italic",o[o.BoldAndItalic=3]="BoldAndItalic",o))($1||{});class Xt extends Eh{alignment=0;verticalOverflow=0;horizontalOverflow=0;lineSpacing=1;supportRichText=!1;font;fontStyle=0;setAlphaFactor(e){super.setAlphaFactor(e),this.uiObject?.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(),this.context.accessibility.updateElement(this,{label:this.text}))}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize=e,this.uiObject?.set({fontSize:e})}sRGBTextColor=new oe(1,0,1);onColorChanged(){this.sRGBTextColor.copy(this.color),this.sRGBTextColor.convertLinearToSRGB(),this.uiObject?.set({color:this.sRGBTextColor,fontOpacity:this.color.alpha})}onParentRectTransformChanged(){super.onParentRectTransformChanged(),this.uiObject&&this.updateOverflow()}onBeforeCanvasRender(e){this.updateOverflow()}updateOverflow(){const e=this.uiObject?._overflow;e&&(e._needsUpdate=!0)}onCreate(e){sa&&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,sa&&(e.backgroundColor=16750848,e.backgroundOpacity=.5);const t=this.rectTransform;e={...e,...this.getTextOpts()},this.getAlignment(e),sa&&(e.backgroundColor=Math.random()*16777215,e.backgroundOpacity=.1),this.uiObject=t.createNewText(e),this.feedText(this.text,this.supportRichText)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}_text="";_fontSize=12;_textMeshUi=null;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(){super.onEnable(),this.context.accessibility.updateElement(this,{role:"text",label:this.text,hidden:!1}),this._didHandleTextRenderOnTop=!1,this.uiObject&&this.uiObject.addAfterUpdate(()=>{this.setShadowComponentOwner(this.uiObject),this.markDirty()}),setTimeout(()=>this.markDirty(),10),this.canvas?.registerEventReceiver(this)}onDisable(){super.onDisable(),this.canvas?.unregisterEventReceiver(this),this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){super.onDestroy(),this.context.accessibility.removeElement(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){if(sa&&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 i=this.getNextTag(e);if(i){if(i.startIndex>0){for(let r=this.uiObject.children.length-1;r>=0;r--){const a=this.uiObject.children[r];a.isUI&&(this.uiObject.remove(a),a.clear())}const s=new Ym({textContent:e.substring(0,i.startIndex),color:"inherit"});this.uiObject.add(s)}}else{this.uiObject.textContent="",this.setOptions({textContent:e});return}const n=[];for(;i;){const s=this.getNextTag(e,i.endIndex),r={fontFamily:this.uiObject?.get("fontFamily"),color:"inherit",textContent:""};if(s){r.textContent=this.getText(e,i,s),this.handleTag(i,r,n);const a=new Ym(r);this.uiObject?.add(a)}else{r.textContent=e.substring(i.endIndex),this.handleTag(i,r,n);const a=new Ym(r);this.uiObject?.add(a)}i=s}}}_didHandleTextRenderOnTop=!1;handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;const e=[],t=this.canvas,i={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let n=!1;if(this._textMeshUi)for(let s=0;s<this._textMeshUi.length;s++){if(e[s]===!0)continue;n=!0;const r=this._textMeshUi[s];r.textContent&&(Qu(r,i),e[s]=!0)}if(!n)break;yield}}handleTag(e,t,i){if(!e.isEndTag){if(e.type.includes("color")){const n=new a0(e,{color:t.color});if(i.push(n),e.type.length>6){const s=parseInt("0x"+e.type.substring(7));t.color=s}else t.color=new oe(1,1,1)}else if(e.type=="b"){this.setFont(t,1);const n=new a0(e,{fontWeight:700});i.push(n)}else if(e.type=="i"){this.setFont(t,2);const n=new a0(e,{fontStyle:"italic"});i.push(n)}}}getText(e,t,i){return e.substring(t.endIndex,i.startIndex)}getNextTag(e,t=0){const i=e.indexOf("<",t),n=e.indexOf(">",i);if(i>=0&&n>=0){const s=e.substring(i+1,n);return{type:s,startIndex:i,endIndex:n+1,isEndTag:s.startsWith("/")}}return null}setFont(e,t){if(!this.font)return;const i=this.font,n=this.getFamilyNameWithCorrectSuffix(i,t);sa&&console.log("Selected font family:"+n);let s=e_.getFontFamily(n);switch(s||(s=e_.addFontFamily(n)),e.fontFamily=s,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 r=s.getVariant(e.fontWeight,e.fontStyle);if(!r){let a=n;a?.endsWith("-msdf.json")||(a+="-msdf.json");let l=n;l?.endsWith(".png")||(l+=".png"),r=s.addVariant(e.fontWeight,e.fontStyle,a,l),r?.addEventListener("ready",()=>{this.markDirty()})}}getFamilyNameWithCorrectSuffix(e,t){(e.startsWith("https:")||e.startsWith("http:"))&&(e=new URL(e).pathname);const i=e.lastIndexOf("-");if(i<0)return e;const n=e.substring(i+1)?.toLowerCase();if(h2.includes(n))return sa&&console.warn("Unsupported font style: "+n),e;const s=e.lastIndexOf("/");let r=e;s>=0&&(r=r.substring(s+1));const a=r[0]===r[0].toUpperCase(),l=e.substring(0,i>s?i:e.length);switch(sa&&console.log("Select font: ",e,$1[t],r,a,l),t){case 0:return a?l+"-Regular":l+"-regular";case 1:return a?l+"-Bold":l+"-bold";case 2:return a?l+"-Italic":l+"-italic";case 3:return a?l+"-BoldItalic":l+"-bolditalic";default:return e}}}is([u()],Xt.prototype,"alignment",2),is([u()],Xt.prototype,"verticalOverflow",2),is([u()],Xt.prototype,"horizontalOverflow",2),is([u()],Xt.prototype,"lineSpacing",2),is([u()],Xt.prototype,"supportRichText",2),is([u(URL)],Xt.prototype,"font",2),is([u()],Xt.prototype,"fontStyle",2),is([u()],Xt.prototype,"text",1),is([u()],Xt.prototype,"fontSize",1);class a0{tag;previousValues;constructor(e,t){this.tag=e,this.previousValues=t}}const h2=["medium","mediumitalic","black","blackitalic","thin","thinitalic","extrabold","light","lightitalic","semibold"];class jl{static global_id=0;static getId(){return this.global_id++}id;content="";font=[];pointSize=144;width;height;depth;wrapMode;horizontalAlignment;verticalAlignment;material;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}constructor(e){this.id=e}writeTo(e,t){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?.push("sans-serif"));const i=this.font.map(n=>`"${n}"`).join(", ");t.appendLine(`string[] font = [ ${i} ]`),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/${Rp(this.material)}>`),t.closeBlock()}}class l0{static singleLine(e,t,i){const n=new jl("text_"+jl.getId());return n.content=e,t&&(n.pointSize=t),i&&(n.depth=i),n}static multiLine(e,t,i,n,s,r){const a=new jl("text_"+jl.getId());return a.content=e,a.width=t,a.height=i,a.horizontalAlignment=n,a.verticalAlignment=s,r!==void 0&&(a.wrapMode=r),a}}const d2=new J().makeRotationY(Math.PI),u2=new J().makeScale(-1,1,-1);class Wp{get extensionName(){return"text"}exportText(e,t,i){const n=S.getComponent(e,Xt);if(!n)return;const s=S.getComponent(e,Bn);let r=100,a=100;s&&(r=s.width,a=s.height);const l=d2.clone();s&&l.premultiply(u2),t.setMatrix(l);const c=n.color.clone();t.material=new yt({color:c,emissive:c}),t.addEventListener("serialize",(h,d)=>{let p=n.text;p=p.replace(/\r/g,""),p=p.replace(/\n/g,"\\n");const m=l0.multiLine(p,r,a,"center","bottom","flowing");this.setTextAlignment(m,n.alignment),this.setOverflow(m,n),t.material&&(m.material=t.material),m.pointSize=this.convertToTextSize(n.fontSize),m.depth=.001,m.writeTo(void 0,h)})}convertToTextSize(e){return 1/.0502*144*e}setOverflow(e,t){t.horizontalOverflow?e.wrapMode="singleLine":e.wrapMode="flowing"}setTextAlignment(e,t){switch(t){case ut.LowerLeft:case ut.MiddleLeft:case ut.UpperLeft:e.horizontalAlignment="left";break;case ut.LowerCenter:case ut.MiddleCenter:case ut.UpperCenter:e.horizontalAlignment="center";break;case ut.LowerRight:case ut.MiddleRight:case ut.UpperRight:e.horizontalAlignment="right";break}switch(t){case ut.LowerLeft:case ut.LowerCenter:case ut.LowerRight:e.verticalAlignment="bottom";break;case ut.MiddleLeft:case ut.MiddleCenter:case ut.MiddleRight:e.verticalAlignment="middle";break;case ut.UpperLeft:case ut.UpperCenter:case ut.UpperRight:e.verticalAlignment="top";break}}}var p2=Object.defineProperty,it=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&p2(e,t,n),n};const H1=w("debuguilayout");class ra{left=0;right=0;top=0;bottom=0;get vertical(){return this.top+this.bottom}get horizontal(){return this.left+this.right}}it([u()],ra.prototype,"left"),it([u()],ra.prototype,"right"),it([u()],ra.prototype,"top"),it([u()],ra.prototype,"bottom");class Wi extends R{_rectTransform=null;get rectTransform(){return this._rectTransform}onParentRectTransformChanged(e){this._needsUpdate=!0}_needsUpdate=!1;get isDirty(){return this._needsUpdate}get isLayoutGroup(){return!0}updateLayout(){this._rectTransform&&(H1&&console.warn("Layout Update",this.context.time.frame,this.name),this._needsUpdate=!1,this.onCalculateLayout(this._rectTransform))}childAlignment=0;reverseArrangement=!1;spacing=0;padding;minWidth=0;minHeight=0;flexibleHeight=0;flexibleWidth=0;preferredHeight=0;preferredWidth=0;start(){this._needsUpdate=!0}onEnable(){H1&&console.log(this.name,this),this._rectTransform=this.gameObject.getComponent(Bn);const e=this.gameObject.getComponentInParent(Bl);e&&e.registerLayoutGroup(this),this._needsUpdate=!0}onDisable(){const e=this.gameObject.getComponentInParent(Bl);e&&e.unregisterLayoutGroup(this)}set m_Spacing(e){e!==this.spacing&&(this._needsUpdate=!0,this.spacing=e)}get m_Spacing(){return this.spacing}}it([u()],Wi.prototype,"childAlignment"),it([u()],Wi.prototype,"reverseArrangement"),it([u()],Wi.prototype,"spacing"),it([u(ra)],Wi.prototype,"padding"),it([u()],Wi.prototype,"minWidth"),it([u()],Wi.prototype,"minHeight"),it([u()],Wi.prototype,"flexibleHeight"),it([u()],Wi.prototype,"flexibleWidth"),it([u()],Wi.prototype,"preferredHeight"),it([u()],Wi.prototype,"preferredWidth");class Qs extends Wi{childControlHeight=!0;childControlWidth=!0;childForceExpandHeight=!1;childForceExpandWidth=!1;childScaleHeight=!1;childScaleWidth=!1;onCalculateLayout(e){const t=this.primaryAxis,i=e.width;let n=i;const s=e.height;let r=s;n-=this.padding.horizontal,r-=this.padding.vertical,t==="x"?this.padding.horizontal:this.padding.vertical;const a=t==="x",l=a?"y":"x",c=a?this.childControlWidth:this.childControlHeight,h=a?this.childControlHeight:this.childControlWidth,d=a?this.childForceExpandWidth:this.childForceExpandHeight,p=a?this.childForceExpandHeight:this.childForceExpandWidth,m=a?r:n,f=a?i:s,g=.5*(a?this.childAlignment%3:Math.floor(this.childAlignment/3));let y=0;a?y+=this.padding.left:y+=this.padding.top;let _=0,v=0;for(let L=0;L<this.gameObject.children.length;L++){const V=this.gameObject.children[L],W=S.getComponent(V,Bn);W?.activeAndEnabled&&(v+=1,a?_+=W.width:_+=W.height)}let P=0;const k=this.spacing*(v-1);if(d||c){let L=0;a?L=n-=k:L=r-=k,v>0&&(P=L/v)}let O=0;O+=this.padding.left,O-=this.padding.right,g!==0&&(y=f-_,y*=g,y-=k*g,a?(y-=this.padding.right*g,y+=this.padding.left*(1-g),y<this.padding.left&&(y=this.padding.left)):(y-=this.padding.bottom*g,y+=this.padding.top*(1-g),y<this.padding.top&&(y=this.padding.top)));let j=1;for(let L=0;L<this.gameObject.children.length;L++){const V=this.gameObject.children[L],W=S.getComponent(V,Bn);if(W?.activeAndEnabled){W.pivot?.set(.5,.5),W.anchorMin.set(0,1),W.anchorMax.set(0,1);const G=i*.5+O*.5;W.anchoredPosition.x!==G&&(W.anchoredPosition.x=G);const X=s*-.5;W.anchoredPosition.y!==X&&(W.anchoredPosition.y=X),p&&h&&W.sizeDelta[l]!==m&&(W.sizeDelta[l]=m),d&&c&&W.sizeDelta[t]!==P&&(W.sizeDelta[t]=P);const E=a?W.width:W.height,$=E*.5;if(y+=$,d){const he=P*j-P*.5;he>y&&(y=he-P*.5+E+this.padding.left,y-=$)}let q=y;t==="y"&&(q=-q),W.anchoredPosition[t]!==q&&(W.anchoredPosition[t]=q),y+=$,y+=this.spacing,j+=1}}}}it([u()],Qs.prototype,"childControlHeight"),it([u()],Qs.prototype,"childControlWidth"),it([u()],Qs.prototype,"childForceExpandHeight"),it([u()],Qs.prototype,"childForceExpandWidth"),it([u()],Qs.prototype,"childScaleHeight"),it([u()],Qs.prototype,"childScaleWidth");class c0 extends Qs{get primaryAxis(){return"y"}}class h0 extends Qs{get primaryAxis(){return"x"}}class d0 extends Wi{onCalculateLayout(){}}var m2=Object.defineProperty,g2=Object.getOwnPropertyDescriptor,fo=(o,e,t,i)=>{for(var n=i>1?void 0:i?g2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&m2(e,t,n),n},G1=(o=>(o[o.ScreenSpaceOverlay=0]="ScreenSpaceOverlay",o[o.ScreenSpaceCamera=1]="ScreenSpaceCamera",o[o.WorldSpace=2]="WorldSpace",o[o.Undefined=-1]="Undefined",o))(G1||{});const u0=w("debuguilayout"),cn=class KS extends kh{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)}_renderOnTop;set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}_depthWrite=!1;set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}_doubleSided=!0;set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}_castShadows=!1;set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}_receiveShadows=!1;get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}_renderMode=-1;_rootCanvas;set rootCanvas(e){this._rootCanvas instanceof KS||(this._rootCanvas=e)}get rootCanvas(){return this._rootCanvas}_scaleFactor=1;get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}worldCamera;planeDistance=-1;awake(){this.shadowComponent=this.gameObject,this.previousParent=this.gameObject.parent,u0&&console.log("Canvas.Awake()",this.previousParent?.name+"/"+this.gameObject.name),super.awake()}start(){this.applyRenderSettings()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this._lastMatrixWorld=new J,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)}_boundRenderSettingsChanged=this.onRenderSettingsChanged.bind(this);previousParent=null;_lastMatrixWorld=null;_rectTransforms=[];registerTransform(e){this._rectTransforms.push(e)}unregisterTransform(e){const t=this._rectTransforms.indexOf(e);t!==-1&&this._rectTransforms.splice(t,1)}_layoutGroups=new Map;registerLayoutGroup(e){const t=e.gameObject;this._layoutGroups.set(t,e)}unregisterLayoutGroup(e){const t=e.gameObject;this._layoutGroups.delete(t)}_receivers=[];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 fc(1).then(()=>{this.gameObject.visible=!0}))}onLeaveXR(e){this.screenspace&&(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!0)}onBeforeRenderRoutine=()=>{if(this.previousParent=this.gameObject.parent,(this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.gameObject.visible=!1,this.gameObject.removeFromParent();return}this.renderOnTop||this.screenspace?this.gameObject.removeFromParent():(this.onUpdateRenderMode(),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.shadowComponent?.updateWorldMatrix(!0,!0),this.invokeBeforeRenderEvents(),ci.ensureUpdateMeshUI(t_,this.context))};onAfterRenderRoutine=()=>{if((this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.previousParent?.add(this.gameObject);return}if((this.screenspace||this.renderOnTop)&&this.previousParent&&this.context.mainCamera){this.screenspace?this.context.mainCamera?.add(this.gameObject):this.previousParent.add(this.gameObject);const e=this.context.renderer.autoClear,t=this.context.renderer.autoClearColor;this.context.renderer.autoClear=!1,this.context.renderer.autoClearColor=!1,this.context.renderer.clearDepth(),this.onUpdateRenderMode(!0),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.invokeBeforeRenderEvents(),ci.ensureUpdateMeshUI(t_,this.context,!0),this.context.renderer.render(this.gameObject,this.context.mainCamera),this.context.renderer.autoClear=e,this.context.renderer.autoClearColor=t,this.previousParent.add(this.gameObject)}this._lastMatrixWorld?.copy(this.gameObject.matrixWorld)};invokeBeforeRenderEvents(){for(const e of this._receivers)e.onBeforeCanvasRender?.(this)}handleLayoutUpdates(){this._lastMatrixWorld===null&&(this._lastMatrixWorld=new J);const e=!this._lastMatrixWorld.equals(this.gameObject.matrixWorld);u0&&e&&console.log("Canvas Layout changed",this.context.time.frameCount,this.name);for(const t of this._rectTransforms){e&&t.markDirty();let i=this._layoutGroups.get(t.gameObject);t.isDirty&&!i&&(i=t.gameObject.getComponentInParent(Wi)),(t.isDirty||i?.isDirty)&&(u0&&console.log("CANVAS UPDATE ### "+t.name+" ##################################### "+this.context.time.frame),i?.updateLayout(),t.updateTransform())}}applyRenderSettings(){this.onRenderSettingsChanged()}_updateRenderSettingsRoutine;onRenderSettingsChanged(){this._updateRenderSettingsRoutine||(this._updateRenderSettingsRoutine=this.startCoroutine(this._updateRenderSettingsDelayed(),xe.OnBeforeRender))}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.onUpdateRenderMode(),Qu(this.shadowComponent,this);for(const e of S.getComponentsInChildren(this.gameObject,gn))Qu(e.shadowComponent,this)}}_activeRenderMode=-1;_lastWidth=-1;_lastHeight=-1;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,i=10;switch(t&&t.nearClipPlane>0&&t.farClipPlane>0&&(i=D.lerp(t.nearClipPlane,t.farClipPlane,.01)),this._renderMode===1&&(this.worldCamera&&(t=this.worldCamera),this.planeDistance>0&&(i=this.planeDistance)),this._renderMode){case 0:case 1:if(this._lastWidth=this.context.domWidth,this._lastHeight=this.context.domHeight,!t)return;const n=i+.01;this.gameObject.position.x=0,this.gameObject.position.y=0,this.gameObject.position.z=-n,this.gameObject.quaternion.identity();const s=this.gameObject.getComponent(Bn);let r=!1;s.sizeDelta.x!==this.context.domWidth&&(r=!0),s.sizeDelta.y!==this.context.domHeight&&(r=!0);const a=t.fieldOfView*Math.PI/180,l=2*Math.tan(a/2)*Math.abs(n);this.gameObject.scale.x=l/this.context.domHeight,this.gameObject.scale.y=l/this.context.domHeight,this.gameObject.scale.z=.01,r&&(s.sizeDelta.x=this.context.domWidth,s.sizeDelta.y=this.context.domHeight,s?.markDirty());break;case 2:this._lastWidth=-1,this._lastHeight=-1;break}}};fo([u()],cn.prototype,"renderOnTop",1),fo([u()],cn.prototype,"depthWrite",1),fo([u()],cn.prototype,"doubleSided",1),fo([u()],cn.prototype,"castShadows",1),fo([u()],cn.prototype,"receiveShadows",1),fo([u()],cn.prototype,"renderMode",1),fo([u(cn)],cn.prototype,"rootCanvas",1),fo([u()],cn.prototype,"scaleFactor",1),fo([u(_i)],cn.prototype,"worldCamera",2),fo([u()],cn.prototype,"planeDistance",2);let Bl=cn;var f2=Object.defineProperty,y2=Object.getOwnPropertyDescriptor,p0=(o,e,t,i)=>{for(var n=i>1?void 0:i?y2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&f2(e,t,n),n};class Ys extends R{get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}_alpha=1;interactable=!0;blocksRaycasts=!0;_isDirty=!1;markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),xe.OnBeforeRender))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}_buffer=[];applyChangesNow(){this._buffer.length=0;for(const e of S.getComponentsInChildren(this.gameObject,gn,this._buffer)){const t=e;t.setAlphaFactor&&t.setAlphaFactor(this._alpha)}}}p0([u()],Ys.prototype,"alpha",1),p0([u()],Ys.prototype,"interactable",2),p0([u()],Ys.prototype,"blocksRaycasts",2);class m0{get extensionName(){return"tmui"}onExportObject(e,t,i){const n=S.getComponent(e,Bl);if(n&&n.enabled&&n.renderMode===G1.WorldSpace){const s=new Wp,r=S.getComponent(e,Bn),a=S.getComponent(e,Ys),l=new Array;if(r){if(!S.isActiveSelf(e)){const d=S.isActiveSelf(e);S.setActive(e,!0),r.onEnable(),r.updateTransform(),l.push(()=>{r.onDisable(),S.setActive(e,d)})}e.traverse(d=>{if(!S.isActiveInHierarchy(d)){const p=S.isActiveSelf(d);S.setActive(d,!0);const m=S.getComponent(d,gn);m&&(m.onEnable(),l.push(()=>{m.onDisable()}));const f=S.getComponent(d,Bn);f&&(f.onEnable(),f.updateTransform(),f.onApplyTransform(),l.push(()=>{f.onDisable()}));const g=S.getComponent(d,Xt);g&&(g.onEnable(),l.push(()=>{g.onDisable()})),l.push(()=>{S.setActive(d,p)})}}),r.width,r.height;const c=lt.createEmpty(),h=r.shadowComponent;if(t.add(c),h){const d=h.matrix;c.setMatrix(d);const p=new Map,m=new Map;p.set(h,c),m.set(h,a?a.alpha:1),h.traverse(f=>{if(f===h)return;const g=lt.createEmpty();g.setMatrix(f.matrix);const y=f.parent,_=!!y&&typeof y.textContent=="string"&&y.textContent.length>0;let v=m.get(y)||1;const P=S.getComponent(f,Ys);if(P&&(v*=P.alpha),f instanceof H&&_){const O=f[Di];O?s.exportText(O.gameObject,g,i):console.error("Error when exporting UI: shadow component owner not found. This is likely a bug.",f)}if(f instanceof H&&!_){const O=f.geometry.clone();O.scale(1,1,-1),this.flipWindingOrder(O),g.geometry=O;const j=new oe,L=f.material.opacity;j.copy(f.material.color),g.material=new Ce({color:j,opacity:L*v,map:f.material.map,transparent:!0})}p.set(f,g),m.set(f,v);const k=p.get(y);if(!k){console.error("Error when exporting UI: shadow component parent not found!",f,f.parent);return}k.add(g)})}}for(const c of l)c()}}flipWindingOrder(e){const t=e.index.array;for(let i=0,n=t.length/3;i<n;i++){const s=t[i*3];t[i*3]=t[i*3+2],t[i*3+2]=s}e.index.needsUpdate=!0}}const Ah=w("debugusdz");function b2(o,e){const t=[],i=S.getComponentsInChildren(o,vt),n=S.getComponentsInChildren(o,Vt),s=new Array,r=new Array;if(e.injectImplicitBehaviours)for(const a of i){if(!a||!a.runtimeAnimatorController||!a.enabled)continue;const l=a.runtimeAnimatorController.activeState;if(!l||!l.motion||!l.motion.clip||l.motion.clip.tracks?.length<1||s.includes(a))continue;const c=new wh;c.animator=a,c.stateName=l.name,c.trigger="start",c.name="PlayAnimationOnClick_implicitAtStart_"+c.stateName;const h=new M;S.addComponent(h,c),r.push(h),s.push(a),o.add(h)}else for(const a of i){if(!a||!a.runtimeAnimatorController||!a.enabled)continue;Ah&&console.log(a);const l=[];for(const c of a.runtimeAnimatorController.enumerateActions()){Ah&&console.log(c);const h=c.getClip();l.includes(h)||l.push(h)}t.push({root:a.gameObject,clips:l})}if(e.injectImplicitBehaviours)for(const a of n){if(!a||!a.clip||!a.enabled||!a.playAutomatically||s.includes(a))continue;const l=new wh;l.animation=a,l.stateName=a.clip.name,l.trigger="start",l.name="PlayAnimationOnClick_implicitAtStart_"+l.stateName;const c=new M;S.addComponent(c,l),r.push(c),s.push(a),o.add(c)}else for(const a of n){Ah&&console.log(a);const l=[];for(const c of a.animations)l.includes(c)||l.push(c);t.push({root:a.gameObject,clips:l})}Ah&&t?.length>0&&console.log("USDZ Animation Clips without behaviours",t);for(const a of t)for(const l of a.clips)e.registerAnimation(a.root,l);return r}function _2(o,e){const t=S.getComponentsInChildren(o,Fi),i=S.getComponentsInChildren(o,$s),n=new Array,s=new Array;Ah&&console.log({audioSources:t,playAudioOnClicks:i});for(const r of i){if(!r.target)continue;const a=t.indexOf(r.target);a>-1&&t.splice(a,1)}for(const r of t){if(!r||!r.clip||r.volume<=0||n.includes(r))continue;const a=new $s;a.target=r,a.name="PlayAudioOnClick_implicitAtStart_",a.trigger="start";const l=new M;S.addComponent(l,a),console.log("implicit PlayAudioOnStart",l,a),s.push(l),n.push(r),o.add(l)}return s}function v2(o){return new Ft("DisableAtStart",qt.sceneStartTrigger(),fe.fadeAction(o,0,!1))}function q1(o,e){const t=o.domElement.shadowRoot.querySelector("link[rel='ar']");if(t)return t;const i=document.createElement("div");i.classList.add("menu"),i.classList.add("quicklook-menu"),i.style.display="none",i.style.visibility="hidden";const n=document.createElement("button");n.id="open-in-ar",e?(n.innerText="View in AR",n.title="View this scene in AR. The scene will be exported to USDZ and opened with Apple's QuickLook."):(n.innerText="View in AR",n.title="Download this scene for AR. Open the downloaded USDZ file to view it in AR using Apple's QuickLook."),i.appendChild(n);const s=document.createElement("a");s.id="needle-usdz-link",s.style.display="none",s.rel="ar",s.href="",s.target="_blank",i.appendChild(s);const r=document.createElement("img");return r.id="button",s.appendChild(r),o.domElement.shadowRoot.appendChild(i),s}var w2=Object.defineProperty,Tt=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&w2(e,t,n),n};const At=w("debugusdz"),x2=w("debugusdzpruning");class aa{callToAction;checkoutTitle;checkoutSubtitle;callToActionURL}Tt([u()],aa.prototype,"callToAction"),Tt([u()],aa.prototype,"checkoutTitle"),Tt([u()],aa.prototype,"checkoutSubtitle"),Tt([u()],aa.prototype,"callToActionURL");const xi=class Pa extends R{static beforeExport=new ae;static afterExport=new ae;static beforeLODExport=new ae;objectToExport=void 0;autoExportAnimations=!0;autoExportAudioSources=!0;exportFileName=void 0;customUsdzFile=void 0;customBranding;anchoringType="plane";maxTextureSize=2048;planeAnchoringAlignment="horizontal";interactive=!0;physics=!0;allowCreateQuicklookButton=!0;quickLookCompatible=!0;extensions=[];link;button;start(){At&&(console.log("USDZExporter",this),console.log("Debug USDZ Mode. Press 'T' to export"),window.addEventListener("keydown",e=>{e.key==="t"&&this.exportAndOpen()})),this.objectToExport||(this.objectToExport=this.gameObject),!this.objectToExport?.children?.length&&!this.objectToExport?.isMesh&&(this.objectToExport=this.context.scene)}onEnable(){const e=I.supportsQuickLookAR(),t=I.isiOS()||I.isiPad();!this.button&&(At||e||t)&&(this.allowCreateQuicklookButton&&(this.button=this.createQuicklookButton()),this.lastCallback=this.quicklookCallback.bind(this),this.link=q1(this.context,e),this.link.addEventListener("message",this.lastCallback)),At&&ke("USDZ Exporter enabled: "+this.name),document.getElementById("open-in-ar")?.addEventListener("click",this.onClickedOpenInARElement),Bc.registerExporter(this)}onDisable(){this.button?.remove(),this.link?.removeEventListener("message",this.lastCallback),At&&ke("USDZ Exporter disabled: "+this.name),document.getElementById("open-in-ar")?.removeEventListener("click",this.onClickedOpenInARElement),Bc.unregisterExporter(this)}onClickedOpenInARElement=e=>{e.preventDefault(),this.exportAndOpen()};async exportAsync(){return this.exportAndOpen()}async exportAndOpen(){let e=this.exportFileName??this.objectToExport?.name??this.name;if(e+="-"+c1(),Kn()||(e!==""&&(e+="-"),e+="MadeWithNeedle"),this.link||(this.link=q1(this.context,I.supportsQuickLookAR())),this.customUsdzFile)return At&&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;Pa.beforeExport.invoke({exporter:this});const t=await this.export(this.objectToExport).finally(()=>{Pa.afterExport.invoke({exporter:this})});return t?(At&&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(e){if(!e)return console.warn("No object to export"),null;const t=this._currentExportTasks.get(e);if(t)return t;const i=this.internalExport(e);return i instanceof Promise?(this._currentExportTasks.set(e,i),i.then(n=>(this._currentExportTasks.delete(e),n)).catch(n=>(this._currentExportTasks.delete(e),console.error("Error during USDZ export \u2013 please report a bug!",n),null))):i}_currentExportTasks=new Map;_previousTimeScale=1;async internalExport(e){le.start("export-usdz",{onProgress:k=>{this.dispatchEvent(new CustomEvent("export-progress",{detail:{progress:k}}))}}),le.report("export-usdz",{message:"Starting export",totalSteps:40,currentStep:0}),le.report("export-usdz",{message:"Load progressive textures",autoStep:5}),le.start("export-usdz-textures","export-usdz");const t=S.getComponentsInChildren(e,wi);for(const k of t)k&&k.enabled&&k.updateSprite(!0);const i=S.getComponentsInChildren(e,ni),n=new Array;let s=0;for(const k of i){for(const O of k.sharedMeshes)if(O){let j=0;const L={exporter:this,type:"mesh",object:k.gameObject,mesh:O};if(Pa.beforeLODExport.invoke(L),L.overrideLevel!==void 0)if(L.overrideLevel===-1){At&&console.warn("Skipping LOD export for mesh due to overrideLevel -1",k.gameObject,O);continue}else L.overrideLevel>=0&&(j=L.overrideLevel,At&&console.log("Overriding LOD level for mesh export to level "+j+" "+O.name));const V=He.assignMeshLOD(O,j);V instanceof Promise&&n.push(new Promise((W,G)=>{V.then(()=>{s++,le.report("export-usdz-textures",{message:"Loaded progressive mesh",currentStep:s,totalSteps:n.length}),W()}).catch(X=>G(X))}))}for(const O of k.sharedMaterials)if(O){let j=0;const L={exporter:this,type:"texture",object:k.gameObject,material:O};if(Pa.beforeLODExport.invoke(L),L.overrideLevel!==void 0)if(L.overrideLevel===-1){At&&console.warn("Skipping LOD assignment due to overrideLevel -1",k.gameObject,O);continue}else L.overrideLevel>=0&&(j=L.overrideLevel,At&&console.log("Overriding LOD level for texture export to level "+j+" "+O.name));const V=He.assignTextureLOD(O,j);V instanceof Promise&&n.push(new Promise((W,G)=>{V.then(()=>{s++,le.report("export-usdz-textures",{message:"Loaded progressive texture",currentStep:s,totalSteps:n.length}),W()}).catch(X=>G(X))}))}}At&&ke("Progressive Loading: "+n.length),await Promise.all(n),At&&ke("Progressive Loading: done"),le.end("export-usdz-textures");const r=li.Global.Mask;li.Global.Set(lo.AR);const a=new g1,l=new Ap(this.quickLookCompatible);let c;const h=[];this.interactive&&(h.push(new i0),h.push(new ka),globalThis.NEEDLE_USE_RAPIER&&S.getComponentsInChildren(e,Je).length>0&&(this.physics?(c=new n0,h.push(c)):A()&&console.warn("USDZExporter: Physics export is disabled, but there are active Rigidbody components in the scene. They will not be exported.")),h.push(new Wp),h.push(new m0));const d=[l,...h,...this.extensions],p={self:this,exporter:a,extensions:d,object:e};le.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,le.report("export-usdz","auto export animations and audio sources");const m=new Array;this.autoExportAnimations&&m.push(...b2(e,l)),d.find(k=>k.extensionName==="Audio")&&this.autoExportAudioSources&&m.push(..._2(e)),a.debug=At,a.pruneUnusedNodes=!x2;const f=Ma.instance.objs.map(k=>k.batchedMesh);a.keepObject=k=>{let O=!0;const j=S.getComponent(k,ni);return j&&!j.enabled&&(O=!1),O&&f.includes(k)&&(O=!1),O&&S.getComponentInParent(k,gh)&&(O=!1),O&&S.getComponentInParent(k,io)&&(O=!1),At&&!O&&console.log("USDZExporter: Discarding object",k),O},a.beforeWritingDocument=()=>{if(A()&&l&&c){const k=l.animatedRoots;for(const O of k){const j=S.getComponentsInChildren(O,Je).filter(V=>V.enabled),L=S.getComponents(O,rn).filter(V=>V.enabled&&!V.isTrigger);(j.length>0||L.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.",O)}}};const g=new Array;this.objectToExport&&this.quickLookCompatible&&this.interactive&&this.objectToExport.traverse(k=>{k.visible||g.push(k)});const y=d.find(k=>k.extensionName==="Behaviour");this.interactive&&y&&g.length>0&&y.addBehavior(v2(g));let _=!0;this.quickLookCompatible&&!this.interactive&&(_=!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"),le.report("export-usdz","Invoking exporter.parse");const v=await a.parse(this.objectToExport,{ar:{anchoring:{type:this.anchoringType},planeAnchoring:{alignment:this.planeAnchoringAlignment}},extensions:d,quickLookCompatible:this.quickLookCompatible,maxTextureSize:this.maxTextureSize,exportInvisible:_}),P=new Blob([v],{type:"model/vnd.usdz+zip"});this.revertWebARSessionRoot(),this.context.time.timeScale=this._previousTimeScale,le.report("export-usdz","Invoking after-export"),this.dispatchEvent(new CustomEvent("after-export",{detail:p}));for(const k of m)S.destroy(k);return li.Global.Set(r),le.end("export-usdz"),P}openInQuickLook(e,t){const i=e instanceof Blob?URL.createObjectURL(e):e,n=this.buildQuicklookOverlay();At&&console.log("QuickLook Overlay",n);const s=n.callToAction?encodeURIComponent(n.callToAction):"",r=n.checkoutTitle?encodeURIComponent(n.checkoutTitle):"",a=n.checkoutSubtitle?encodeURIComponent(n.checkoutSubtitle):"";this.link.href=i+`#callToAction=${s}&checkoutTitle=${r}&checkoutSubtitle=${a}&callToActionURL=${n.callToActionURL}`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener("message",this.lastCallback)),this.link.download=t+".usdz",this.link.click()}download(e,t){Pa.save(e,t)}static save(e,t){const i=document.createElement("a");i.style.display="none",document.body.appendChild(i),typeof e=="string"?i.href=e:i.href=URL.createObjectURL(e),i.download=t,i.click(),i.remove()}lastCallback;quicklookCallback(e){if(e?.data=="_apple_ar_quicklook_button_tapped"){At&&be("Quicklook closed via call to action button");var t=new CustomEvent("quicklook-button-tapped",{detail:this});if(this.dispatchEvent(t),!t.defaultPrevented){const i=new URLSearchParams(this.link.href);if(i){const n=i.get("callToActionURL");At&&ke("Quicklook url: "+n),n&&(Kn()?globalThis.open(n,"_blank"):console.warn("Quicklook closed: custom redirects require a Needle Engine Pro license: https://needle.tools/pricing",n))}}}}buildQuicklookOverlay(){const e={};return this.customBranding&&Object.assign(e,this.customBranding),Kn()||(console.log("Custom Quicklook banner text requires pro license: https://needle.tools/pricing"),e.callToAction="Close",e.checkoutTitle="\u{1F335} Made with Needle",e.checkoutSubtitle="_"),(e.callToAction?.length||e.checkoutTitle?.length||e.checkoutSubtitle?.length)&&(e.callToAction?.length||(e.callToAction="\0"),e.checkoutTitle?.length||(e.checkoutTitle="\0"),e.checkoutSubtitle?.length||(e.checkoutSubtitle="\0")),this.dispatchEvent(new CustomEvent("quicklook-overlay",{detail:e})),e}static invertForwardMatrix=new J().makeRotationY(Math.PI);static invertForwardQuaternion=new N().setFromEuler(new ct(0,Math.PI,0));_rootSessionRootWasAppliedTo=null;_rootPositionBeforeExport=new b;_rootRotationBeforeExport=new N;_rootScaleBeforeExport=new b;getARScaleAndTarget(){if(!this.objectToExport)return{scale:1,_invertForward:!1,target:this.gameObject,sessionRoot:null};const e=S.findObjectOfType(Up);let t=S.getComponentInParent(this.objectToExport,vn);t||(t=S.getComponentInChildren(this.objectToExport,vn));let i=1,n=!1;const s=this.objectToExport;return e?i=e.arScale:t&&(i=t.arScale,n=t.invertForward),{scale:1/i,_invertForward:n,target:s,sessionRoot:t?.gameObject??null}}applyWebARSessionRoot(){if(!this.objectToExport)return;const{scale:e,_invertForward:t,target:i,sessionRoot:n}=this.getARScaleAndTarget(),s=n?.matrixWorld.clone().invert();this._rootSessionRootWasAppliedTo=i,this._rootPositionBeforeExport.copy(i.position),this._rootRotationBeforeExport.copy(i.quaternion),this._rootScaleBeforeExport.copy(i.scale),i.scale.multiplyScalar(e),t&&i.quaternion.multiply(Pa.invertForwardQuaternion),i.updateMatrix(),i.updateMatrixWorld(!0),n&&s&&i.matrix.premultiply(s)}revertWebARSessionRoot(){if(!this.objectToExport||!this._rootSessionRootWasAppliedTo)return;const e=this._rootSessionRootWasAppliedTo;e.position.copy(this._rootPositionBeforeExport),e.quaternion.copy(this._rootRotationBeforeExport),e.scale.copy(this._rootScaleBeforeExport),e.updateMatrix(),e.updateMatrixWorld(!0),this._rootSessionRootWasAppliedTo=null}createQuicklookButton(){const e=pr.getOrCreate().createQuicklookButton();return e.parentNode||this.context.menu.appendChild(e),e}};Tt([u(M)],xi.prototype,"objectToExport"),Tt([u()],xi.prototype,"autoExportAnimations"),Tt([u()],xi.prototype,"autoExportAudioSources"),Tt([u()],xi.prototype,"exportFileName"),Tt([u(URL)],xi.prototype,"customUsdzFile"),Tt([u(aa)],xi.prototype,"customBranding"),Tt([u()],xi.prototype,"anchoringType"),Tt([u()],xi.prototype,"maxTextureSize"),Tt([u()],xi.prototype,"planeAnchoringAlignment"),Tt([u()],xi.prototype,"interactive"),Tt([u()],xi.prototype,"physics"),Tt([u()],xi.prototype,"allowCreateQuicklookButton"),Tt([u()],xi.prototype,"quickLookCompatible");let yo=xi;BA({find:()=>cl(yo),create:()=>new yo});var S2=Object.defineProperty,C2=Object.getOwnPropertyDescriptor,g0=(o,e,t,i)=>{for(var n=C2(e,t),s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&S2(e,t,n),n};class Fl extends R{get fog(){return this._fog||(this._fog=new Rb(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}_fog;onEnable(){this.scene.fog=this.fog}onDisable(){this.scene.fog===this._fog&&(this.scene.fog=null)}}g0([u()],Fl.prototype,"near"),g0([u()],Fl.prototype,"far"),g0([u(oe)],Fl.prototype,"color");var P2=Object.defineProperty,f0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&P2(e,t,n),n};class la extends R{objectBounds=!1;color;isGizmo=!0;_gizmoObject=null;_boxHelper=null;onEnable(){this.isGizmo&&!kc||(this._gizmoObject||(this.objectBounds?this._gizmoObject=new rP(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=wf(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),xe.OnBeforeRender)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(;this._boxHelper;)this._boxHelper?.update(),yield}}f0([u()],la.prototype,"objectBounds"),f0([u(oe)],la.prototype,"color"),f0([u()],la.prototype,"isGizmo");var O2=Object.defineProperty,y0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&O2(e,t,n),n};class Ul extends R{isGizmo=!1;color0;color1;gridHelper;size;divisions;offset;onEnable(){if(this.isGizmo&&!kc)return;const e=this.size,t=this.divisions;this.gridHelper||(this.gridHelper=new Cb(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)}}y0([u()],Ul.prototype,"isGizmo"),y0([u(oe)],Ul.prototype,"color0"),y0([u(oe)],Ul.prototype,"color1");var k2=Object.defineProperty,b0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&k2(e,t,n),n};class _0 extends R{connectedBody;get rigidBody(){return this._rigidBody}_rigidBody=null;onEnable(){this._rigidBody||(this._rigidBody=this.gameObject.getComponent(Je)),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.activeAndEnabled&&this.createJoint(this.rigidBody,this.connectedBody)}}b0([u(Je)],_0.prototype,"connectedBody");class v0 extends _0{createJoint(e,t){this.context.physics.engine?.addFixedJoint(e,t)}}class Ih extends _0{anchor;axis;createJoint(e,t){this.axis&&this.anchor&&this.context.physics.engine?.addHingeJoint(e,t,this.anchor,this.axis)}}b0([u(b)],Ih.prototype,"anchor"),b0([u(b)],Ih.prototype,"axis");var M2=Object.defineProperty,R2=Object.getOwnPropertyDescriptor,Vi=(o,e,t,i)=>{for(var n=i>1?void 0:i?R2(e,t):e,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&M2(e,t,n),n};function zl(o){return o*Math.PI/180}const X1=300,Zs=w("debuglights");class It extends R{type=0;get range(){return this._range}set range(e){this._range=e,this.light&&(this.light.type==="SpotLight"||this.light.type==="PointLight")&&"distance"in this.light&&(this.light.distance=e)}_range=1;get spotAngle(){return this._spotAngle}set spotAngle(e){this._spotAngle=e,this.light&&this.light.type==="SpotLight"&&"angle"in this.light&&(this.light.angle=zl(e/2))}_spotAngle=30;get innerSpotAngle(){return this._innerSpotAngle}set innerSpotAngle(e){if(this._innerSpotAngle=e,this.light&&this.light.type==="SpotLight"&&"penumbra"in this.light){const t=this.spotAngle,i=1-zl(e/2)/zl(t/2);this.light.penumbra=i}}_innerSpotAngle=10;set color(e){this._color=e,this.light!==void 0&&(this.light.color=e)}get color(){return this.light?this.light.color:this._color}_color=new oe(16777215);set shadowNearPlane(e){if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,this.light?.shadow?.camera!==void 0)){const t=this.light.shadow.camera;t.near=e}}get shadowNearPlane(){return this._shadowNearPlane}_shadowNearPlane=.1;set shadowBias(e){e!==this._shadowBias&&(this._shadowBias=e,this.light?.shadow?.bias!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}_shadowBias=0;set shadowNormalBias(e){e!==this._shadowNormalBias&&(this._shadowNormalBias=e,this.light?.shadow?.normalBias!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}_shadowNormalBias=0;_overrideShadowBiasSettings=!1;set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==0,this.updateShadowSoftHard())}get shadows(){return this._shadows}_shadows=1;lightmapBakeType=4;set intensity(e){this._intensity=e,this.light&&(this.light.intensity=e),Zs&&console.log("Set light intensity to "+this._intensity,e,this)}get intensity(){return this._intensity}_intensity=-1;get shadowDistance(){const e=this.light;return e?.shadow?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;const t=this.light;if(t?.shadow){const i=t.shadow.camera;i.far=e,i.updateProjectionMatrix()}}_shadowDistance;shadowWidth;shadowHeight;get shadowResolution(){const e=this.light;return e?.shadow?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;const t=this.light;t?.shadow&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}_shadowResolution=void 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}light=void 0;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),Zs&&console.log(this.name,this)}onEnable(){Zs&&console.log("ENABLE LIGHT",this.name),this.createLight(),!this.isBaked&&(this.light&&(this.light.visible=!0,this.light.intensity=this._intensity,Zs&&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(),xe.LateUpdate))}onDisable(){Zs&&console.log("DISABLE LIGHT",this.name),this.light&&(this.selfIsLight?this.light.intensity=0:this.light.visible=!1)}createLight(){const e=this.selfIsLight;if(e&&!this.light)this.light=this.gameObject,this.light.name=this.name,this._intensity=this.light.intensity,this.type===1&&this.setDirectionalLight(this.light);else if(!this.light)switch(this.type){case 1:const t=new Dm(this.color,this.intensity*Math.PI);if(t.position.set(0,0,-X1*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(t.target),Cr(t.target,0,0,0),this.light=t,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),Zs){const r=new lP(this.light,.2,this.color);this.context.scene.add(r)}break;case 0:const i=new aP(this.color,this.intensity*Math.PI,this.range,zl(this.spotAngle/2),1-zl(this.innerSpotAngle/2)/zl(this.spotAngle/2),2);i.position.set(0,0,0),i.rotation.set(0,0,0),this.light=i;const n=i.target;i.add(n),n.position.set(0,0,this.range),n.rotation.set(0,0,0);break;case 2:const s=new jm(this.color,this.intensity*Math.PI,this.range);this.light=s;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),Zs&&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=X1*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 i=this.gameObject.scale.x;t.left*=i,t.right*=i}if(this.shadowHeight!==void 0)t.top=this.shadowHeight/2,t.bottom=-this.shadowHeight/2;else{const i=this.gameObject.scale.y;t.top*=i,t.bottom*=i}this.light.shadow.needsUpdate=!0,Zs&&this.context.scene.add(new cP(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}}static allowChangingRendererShadowMapType=!0;updateShadowSoftHard(){this.light&&this.light.shadow&&(this.shadows===2||(this.light.shadow.radius=1,this.light.shadow.blurSamples=1))}onEnterXR(e){this.applyXRScale(e.xr.rigScale)}onUpdateXR(e){this.applyXRScale(e.xr.rigScale)}onLeaveXR(e){this.applyXRScale(1)}applyXRScale(e){this.light&&(this.light.intensity=this._intensity/e,"distance"in this.light&&(this.light.distance=this._range/e))}setDirectionalLight(e){e.add(e.target),e.target.position.set(0,0,-1)}}Vi([u()],It.prototype,"type",2),Vi([u()],It.prototype,"range",1),Vi([u()],It.prototype,"spotAngle",1),Vi([u()],It.prototype,"innerSpotAngle",1),Vi([u(oe)],It.prototype,"color",1),Vi([u()],It.prototype,"shadowNearPlane",1),Vi([u()],It.prototype,"shadowBias",1),Vi([u()],It.prototype,"shadowNormalBias",1),Vi([u()],It.prototype,"shadows",1),Vi([u()],It.prototype,"lightmapBakeType",2),Vi([u()],It.prototype,"intensity",1),Vi([u()],It.prototype,"shadowDistance",1),Vi([u()],It.prototype,"shadowResolution",1),new b(0,0,0);var E2=Object.defineProperty,Vp=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&E2(e,t,n),n};const w0=w("debuglods"),T2=w("nolods");class Nl{screenRelativeTransitionHeight;distance;renderers}Vp([u()],Nl.prototype,"screenRelativeTransitionHeight"),Vp([u()],Nl.prototype,"distance"),Vp([u(ni)],Nl.prototype,"renderers");class A2{model;get renderers(){return this.model.renderers}constructor(e){this.model=e}}class $p extends R{lodModels=[];_lods=[];_settings=[];_lodsHandler;start(){if(w0&&console.log("LODGROUP",this.name,this.lodModels,this),!T2&&!this._lodsHandler&&this.gameObject&&this.lodModels&&Array.isArray(this.lodModels)){const e=[];for(const i of this.lodModels){const n=new A2(i);this._lods.push(n);for(const s of n.renderers)e.includes(s)||e.push(s)}this._lodsHandler=new Array;for(let i=0;i<e.length;i++){const n=new hP;this._lodsHandler.push(n),this.gameObject.add(n)}const t=new M;t.name="Cull "+this.name;for(let i=0;i<e.length;i++){const n=e[i],s=this._lodsHandler[i],r=n.gameObject;w0&&console.log(i,r.name);for(const a of this._lods){const l=a.model.distance;let c=null;if(a.renderers.includes(n)?c=r:c=t,c.type==="Group"){console.warn(`LODGroup ${this.name}: Group or MultiMaterial object's are not supported as LOD object: ${c.name}`);continue}w0&&console.log("LEVEL",c.name,l),s.autoUpdate=!1,this.onAddLodLevel(s,c,a.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 i=t.getCurrentLevel(),n=t.levels[i];t.layers.mask=n.object.layers.mask}}onAddLodLevel(e,t,i){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,i*this._distanceFactor,.01);const n={lod:e,levelIndex:e.levels.length-1,distance:i};this._settings.push(n)}_distanceFactor=1;distanceFactor(e){if(e!==this._distanceFactor){this._distanceFactor=e;for(const t of this._settings){const i=t.lod.levels[t.levelIndex];i.distance=t.distance*e}}}}Vp([u(Nl)],$p.prototype,"lodModels");var I2=Object.defineProperty,x0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&I2(e,t,n),n};const Hp=w("debugnestedgltf");class Wl extends R{filePath;loaded=new ae;loadAssetInParent=!0;_isLoadingOrDoneLoading=!1;listenToProgress(e){this.filePath?.beginListenDownload(e)}preload(){return this.filePath?.preload()||null}async start(){if(this._isLoadingOrDoneLoading)return;Hp&&console.log(this,this.guid);const e=this.gameObject.parent;if(e&&this.filePath){this._isLoadingOrDoneLoading=!0;const t=new $n;t.idProvider=new Ut(this.hash(this.guid)),t.parent=this.loadAssetInParent!==!1?e:this.gameObject,this.gameObject.updateMatrix();const i=this.gameObject.matrix;Hp&&console.log("Load nested:",this.filePath?.url??this.filePath,this.gameObject.position);const n=await this.filePath?.instantiate?.call(this.filePath,t);Hp&&console.log("Nested loaded:",this.filePath?.url??this.filePath,n),n&&this.loadAssetInParent!==!1&&(n.matrixAutoUpdate=!1,n.matrix.identity(),n.applyMatrix4(i),n.matrixAutoUpdate=!0,n.layers.disableAll(),n.layers.set(this.layer),this.loaded.invoke({component:this,instance:n,asset:this.filePath})),Hp&&console.log("Nested loading done:",this.filePath?.url??this.filePath,n)}}onDestroy(){this.filePath?.unload()}hash(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);return t}}x0([u(ne)],Wl.prototype,"filePath"),x0([u(ae)],Wl.prototype,"loaded"),x0([u()],Wl.prototype,"loadAssetInParent");var L2=Object.defineProperty,S0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&L2(e,t,n),n};const D2=w("debugnet"),Gp=class wb extends R{url=null;urlParameterName=null;localhost=null;awake(){D2&&console.log(this),this.context.connection.registerProvider(this)}getWebsocketUrl(){let e=this.url?wb.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){const i=w(this.urlParameterName);i&&typeof i=="string"&&(e=i)}if(!e)return null;const t=new RegExp("(((https?)|(?<socket_prefix>wss?))://)?(www.)?(?<url>.+)","gm").exec(e);return t?.groups?t?.groups.socket_prefix?e:"wss://"+t?.groups.url:null}static GetUrl(e,t){let i=e;const n=wb.IsLocalNetwork()&&t;if(n&&(i=t),e?.startsWith("/")){const s=n?i:window.location.origin;s?.endsWith("/")&&e.startsWith("/")&&(e=e.substring(1)),i=s+e}return i}static IsLocalNetwork(e=window.location.hostname){return Ai(e)}};S0([u()],Gp.prototype,"url"),S0([u()],Gp.prototype,"urlParameterName"),S0([u()],Gp.prototype,"localhost");let C0=Gp;var j2=Object.defineProperty,qp=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&j2(e,t,n),n};class ca extends R{referenceSpace;from;affectPosition=!1;affectRotation=!1;alignLookDirection=!1;levelLookDirection=!1;levelPosition=!1;positionOffset=new b(0,0,0);rotationOffset=new b(0,0,0);offset=new b(0,0,0);update(){if(!this.from)return;var e=ee(this.from),t=_e(this.from);this.offset.copy(this.positionOffset);const i=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(i),e.add(this.offset),this.levelPosition&&this.referenceSpace){const a=new vr(this.gameObject.up,0),l=ee(this.referenceSpace);a.setFromNormalAndCoplanarPoint(this.gameObject.up,l);const c=new b(0,0,0);a.projectPoint(e,c),e.copy(c)}this.affectPosition&&bt(this.gameObject,e);const n=new ct(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),s=new N().setFromEuler(n);this.affectRotation&&Pn(this.gameObject,t.multiply(s));const r=new b;this.from.getWorldDirection(r).multiplyScalar(50),this.levelLookDirection&&(r.y=0),this.alignLookDirection&&this.gameObject.lookAt(r)}}qp([u(S)],ca.prototype,"referenceSpace"),qp([u(S)],ca.prototype,"from"),qp([u(b)],ca.prototype,"positionOffset"),qp([u(b)],ca.prototype,"rotationOffset");var B2=Object.defineProperty,Ks=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&B2(e,t,n),n};class Si{time=0;value=0;inTangent=1/0;inWeight;outTangent=1/0;outWeight;weightedMode;constructor(e=0,t=0){this.time=e,this.value=t}}Ks([u()],Si.prototype,"time"),Ks([u()],Si.prototype,"value"),Ks([u()],Si.prototype,"inTangent"),Ks([u()],Si.prototype,"inWeight"),Ks([u()],Si.prototype,"outTangent"),Ks([u()],Si.prototype,"outWeight"),Ks([u()],Si.prototype,"weightedMode");const Q1=class wd{static linearFromTo(e,t,i){const n=new wd,s=new Si;s.time=0,s.value=e;const r=new Si;return r.time=i,r.value=t,n.keys.push(s,r),n}static constant(e){const t=new wd,i=new Si;return i.time=0,i.value=e,t.keys.push(i),t}keys=[];clone(){const e=new wd;return e.keys=this.keys?.map(t=>{const i=new Si;return i.time=t.time,i.value=t.value,i.inTangent=t.inTangent,i.inWeight=t.inWeight,i.outTangent=t.outTangent,i.outWeight=t.outWeight,i.weightedMode=t.weightedMode,i})||[],e}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 i=this.keys[t];if(i.time<=e)if(t+1<this.keys.length){const n=this.keys[t+1];if(n.time<e)continue;return!isFinite(i.outTangent)||!isFinite(n.inTangent)?i.value:wd.interpolateValue(e,i,n)}else return i.value}return this.keys[this.keys.length-1].value}static interpolateValue(e,t,i){const n=t.time,s=t.value,r=t.outTangent,a=i.time,l=i.value,c=i.inTangent,h=a-n,d=h*h,p=d*h,m=((r+c)*h-2*(l-s))/p,f=(3*(l-s)-(c+2*r)*h)/d,g=r,y=s,_=e-n,v=_*_,P=v*_;return m*P+f*v+g*_+y}};Ks([u(Si)],Q1.prototype,"keys");let Lh=Q1;var F2=Object.defineProperty,x=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&F2(e,t,n),n};const Xp=w("debugparticles");var ns=(o=>(o[o.Billboard=0]="Billboard",o[o.Stretch=1]="Stretch",o[o.HorizontalBillboard=2]="HorizontalBillboard",o[o.VerticalBillboard=3]="VerticalBillboard",o[o.Mesh=4]="Mesh",o))(ns||{});class ha{alphaKeys=[];colorKeys=[];get duration(){return 1}evaluate(e,t){let i,n=0,s=null,r=0;for(let a=0;a<this.alphaKeys.length;a++){const l=this.alphaKeys[a];(l.time<e||!i)&&(i=l,n=a)}for(let a=0;a<this.colorKeys.length;a++){const l=this.colorKeys[a];(l.time<e||!s)&&(s=l,r=a)}if(s)if(r+1<this.colorKeys.length){const a=this.colorKeys[r+1],l=D.remap(e,s.time,a.time,0,1);t.r=D.lerp(s.color.r,a.color.r,l),t.g=D.lerp(s.color.g,a.color.g,l),t.b=D.lerp(s.color.b,a.color.b,l)}else t.r=s.color.r,t.g=s.color.g,t.b=s.color.b;if(i)if(n+1<this.alphaKeys.length){const a=this.alphaKeys[n+1],l=D.remap(e,i.time,a.time,0,1);t.alpha=D.lerp(i.alpha,a.alpha,l)}else t.alpha=i.alpha;return t}}x([u()],ha.prototype,"alphaKeys"),x([u()],ha.prototype,"colorKeys");var Dh=(o=>(o[o.Local=0]="Local",o[o.World=1]="World",o[o.Custom=2]="Custom",o))(Dh||{}),Qp=(o=>(o[o.Sphere=0]="Sphere",o[o.SphereShell=1]="SphereShell",o[o.Hemisphere=2]="Hemisphere",o[o.HemisphereShell=3]="HemisphereShell",o[o.Cone=4]="Cone",o[o.Box=5]="Box",o[o.Mesh=6]="Mesh",o[o.ConeShell=7]="ConeShell",o[o.ConeVolume=8]="ConeVolume",o[o.ConeVolumeShell=9]="ConeVolumeShell",o[o.Circle=10]="Circle",o[o.CircleEdge=11]="CircleEdge",o[o.SingleSidedEdge=12]="SingleSidedEdge",o[o.MeshRenderer=13]="MeshRenderer",o[o.SkinnedMeshRenderer=14]="SkinnedMeshRenderer",o[o.BoxShell=15]="BoxShell",o[o.BoxEdge=16]="BoxEdge",o[o.Donut=17]="Donut",o[o.Rectangle=18]="Rectangle",o[o.Sprite=19]="Sprite",o[o.SpriteRenderer=20]="SpriteRenderer",o))(Qp||{});const os=class xd{static constant(e){const t=new xd;return t.setConstant(e),t}static betweenTwoConstants(e,t){const i=new xd;return i.setMinMaxConstant(e,t),i}static curve(e,t=1){const i=new xd;return i.setCurve(e,t),i}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}mode="Constant";constant;constantMin;constantMax;curve;curveMin;curveMax;curveMultiplier;clone(){const e=new xd;return e.mode=this.mode,e.constant=this.constant,e.constantMin=this.constantMin,e.constantMax=this.constantMax,e.curve=this.curve?.clone(),e.curveMin=this.curveMin?.clone(),e.curveMax=this.curveMax?.clone(),e.curveMultiplier=this.curveMultiplier,e}evaluate(e,t){const i=t===void 0?Math.random():t;switch(this.mode){case 0:case"Constant":return this.constant;case 1:case"Curve":return e=D.clamp01(e),this.curve.evaluate(e)*this.curveMultiplier;case 2:case"TwoCurves":const n=e*this.curveMin.duration,s=e*this.curveMax.duration;return D.lerp(this.curveMin.evaluate(n),this.curveMax.evaluate(s),i%1)*this.curveMultiplier;case 3:case"TwoConstants":return D.lerp(this.constantMin,this.constantMax,i%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 i=0;i<e.keys.length;i++){const n=e.keys[i];n.value>t&&(t=n.value)}return t}};x([u()],os.prototype,"mode"),x([u()],os.prototype,"constant"),x([u()],os.prototype,"constantMin"),x([u()],os.prototype,"constantMax"),x([u(Lh)],os.prototype,"curve"),x([u(Lh)],os.prototype,"curveMin"),x([u(Lh)],os.prototype,"curveMax"),x([u()],os.prototype,"curveMultiplier");let Y=os;const Js=class Bt{static constant(e){const t=new Bt;return t.constant(e),t}static betweenTwoColors(e,t){const i=new Bt;return i.betweenTwoColors(e,t),i}constant(e){return this.mode=0,this.color=e,this}betweenTwoColors(e,t){return this.mode=2,this.colorMin=e,this.colorMax=t,this}mode=0;color;colorMin;colorMax;gradient;gradientMin;gradientMax;static _temp=new se(0,0,0,1);static _temp2=new se(0,0,0,1);evaluate(e,t){const i=t===void 0?Math.random():t;switch(this.mode){case 0:case"Color":return this.color;case 1:case"Gradient":return this.gradient.evaluate(e,Bt._temp),Bt._temp;case 2:case"TwoColors":return Bt._temp.lerpColors(this.colorMin,this.colorMax,i);case 3:case"TwoGradients":return this.gradientMin.evaluate(e,Bt._temp),this.gradientMax.evaluate(e,Bt._temp2),Bt._temp.lerp(Bt._temp2,i);case 4:case"RandomColor":const n=Math.random();return this.gradientMin.evaluate(e,Bt._temp),this.gradientMax.evaluate(e,Bt._temp2),Bt._temp.lerp(Bt._temp2,n)}return Bt._temp.set(16777215),Bt._temp.alpha=1,Bt._temp}};x([u()],Js.prototype,"mode"),x([u(se)],Js.prototype,"color"),x([u(se)],Js.prototype,"colorMin"),x([u(se)],Js.prototype,"colorMax"),x([u(ha)],Js.prototype,"gradient"),x([u(ha)],Js.prototype,"gradientMin"),x([u(ha)],Js.prototype,"gradientMax");let da=Js;var P0=(o=>(o[o.Hierarchy=0]="Hierarchy",o[o.Local=1]="Local",o[o.Shape=2]="Shape",o))(P0||{});class Qt{cullingMode;duration;emitterVelocityMode;flipRotation;gravityModifier;gravityModifierMultiplier;loop;maxParticles;playOnAwake;prewarm;ringBufferLoopRange;ringBufferMode;scalingMode;simulationSpace;simulationSpeed;startColor;startDelay;startDelayMultiplier;startLifetime;startLifetimeMultiplier;startRotation;startRotationMultiplier;startRotation3D;startRotationX;startRotationXMultiplier;startRotationY;startRotationYMultiplier;startRotationZ;startRotationZMultiplier;startSize;startSize3D;startSizeMultiplier;startSizeX;startSizeXMultiplier;startSizeY;startSizeYMultiplier;startSizeZ;startSizeZMultiplier;startSpeed;startSpeedMultiplier;stopAction;useUnscaledTime}x([u(Y)],Qt.prototype,"gravityModifier"),x([u(da)],Qt.prototype,"startColor"),x([u(Y)],Qt.prototype,"startDelay"),x([u(Y)],Qt.prototype,"startLifetime"),x([u(Y)],Qt.prototype,"startRotation"),x([u(Y)],Qt.prototype,"startRotationX"),x([u(Y)],Qt.prototype,"startRotationY"),x([u(Y)],Qt.prototype,"startRotationZ"),x([u(Y)],Qt.prototype,"startSize"),x([u(Y)],Qt.prototype,"startSizeX"),x([u(Y)],Qt.prototype,"startSizeY"),x([u(Y)],Qt.prototype,"startSizeZ"),x([u(Y)],Qt.prototype,"startSpeed");class Yp{cycleCount;maxCount;minCount;probability;repeatInterval;time;count;_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 i=this.time+this.repeatInterval*this._performed;if(e>=i&&(this._performed+=1,Math.random()<this.probability))switch(this.count.mode){case 0:t=this.count.constant;break;case 3:t=D.lerp(this.count.constantMin,this.count.constantMax,Math.random());break;case 1:t=this.count.curve.evaluate(Math.random());break;case 2:const n=Math.random();t=D.lerp(this.count.curveMin.evaluate(n),this.count.curveMax.evaluate(n),Math.random());break}}return t}}class ss{enabled;get burstCount(){return this.bursts?.length??0}bursts;rateOverTime;rateOverTimeMultiplier;rateOverDistance;rateOverDistanceMultiplier;system;reset(){this.bursts?.forEach(e=>e.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t<this.burstCount;t++){const i=this.bursts[t];this.system.main.loop&&i.time>=this.system.time&&i.reset(),e+=Math.round(i.run(this.system.time))}return e}}x([u()],ss.prototype,"enabled"),x([u()],ss.prototype,"bursts"),x([u(Y)],ss.prototype,"rateOverTime"),x([u()],ss.prototype,"rateOverTimeMultiplier"),x([u(Y)],ss.prototype,"rateOverDistance"),x([u()],ss.prototype,"rateOverDistanceMultiplier");class Zp{enabled;color}x([u(da)],Zp.prototype,"color");class ua{enabled;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_time=0;_temp=new b;evaluate(e,t,i){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,i)*this.xMultiplier,t.y=this.y.evaluate(e,i)*this.yMultiplier,t.z=this.z.evaluate(e,i)*this.zMultiplier;else{const n=this.size.evaluate(e,i)*this.sizeMultiplier;t.x=n}return t}}x([u(Y)],ua.prototype,"size"),x([u(Y)],ua.prototype,"x"),x([u(Y)],ua.prototype,"y"),x([u(Y)],ua.prototype,"z");const nt=class Sd{get type(){return Qp[this.shapeType]}initialize(e){this.onInitialize(e),e.position.x=this._vector.x,e.position.y=this._vector.y,e.position.z=this._vector.z}toJSON(){return this}clone(){return new Sd}shapeType=5;enabled=!0;alignToDirection=!1;angle=0;arc=360;arcSpread;arcSpeedMultiplier;arcMode;boxThickness;position;rotation;_rotation=new ct;scale;radius;radiusThickness;sphericalDirectionAmount;randomDirectionAmount;randomPositionAmount;meshShapeType;meshRenderer;_meshObj;_meshGeometry;setMesh(e){this.meshRenderer=e,e?(this._meshObj=e.sharedMeshes[Math.floor(Math.random()*e.sharedMeshes.length)],this._meshGeometry=this._meshObj.geometry):(this._meshObj=void 0,this._meshGeometry=void 0)}system;_space;_worldSpaceMatrix=new J;_worldSpaceMatrixInverse=new J;constructor(){Xp&&console.log(this)}update(e,t){}onUpdate(e,t,i,n){this.system=e,this._space=i,i===1&&(this._worldSpaceMatrix.copy(n.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}applyRotation(e){const t=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return t&&(this._rotation.x=D.toRadians(this.rotation.x),this._rotation.y=D.toRadians(this.rotation.y),this._rotation.z=D.toRadians(this.rotation.z),this._rotation.order="ZYX",e.applyEuler(this._rotation)),t}_vector=new b(0,0,0);_temp=new b(0,0,0);_triangle=new dP;onInitialize(e){this._vector.set(0,0,0),e.mesh=void 0,e.mesh_geometry=void 0;const t=this._temp.copy(this.position),i=this._space===1;i&&t.applyQuaternion(this.system.worldQuaternion);let n=this.radius;if(i&&(n*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case 5:Xp&&B.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(t);break;case 4:this.randomConePoint(this.position,this.angle,n,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case 0:this.randomSpherePoint(this.position,n,this.radiusThickness,this.arc,this._vector);break;case 10:this.randomCirclePoint(this.position,n,this.radiusThickness,this.arc,this._vector);break;case 13:const s=this.meshRenderer;s?.destroyed==!1&&this.setMesh(s);const r=e.mesh=this._meshObj,a=e.mesh_geometry=this._meshGeometry;if(r&&a)switch(this.meshShapeType){case 0:{const l=a.getAttribute("position"),c=Math.floor(Math.random()*l.count);this._vector.fromBufferAttribute(l,c),this._vector.applyMatrix4(r.matrixWorld),e.mesh_normal=c}break;case 1:break;case 2:{const l=a.index;if(l){let c=Math.random(),h=Math.random();c+h>1&&(c=1-c,h=1-h);const d=Math.floor(Math.random()*(l.count/3));let p=d*3,m=d*3+1,f=d*3+2;p=l.getX(p),m=l.getX(m),f=l.getX(f);const g=a.getAttribute("position");this._triangle.a.fromBufferAttribute(g,p),this._triangle.b.fromBufferAttribute(g,m),this._triangle.c.fromBufferAttribute(g,f),this._vector.set(0,0,0).addScaledVector(this._triangle.a,c).addScaledVector(this._triangle.b,h).addScaledVector(this._triangle.c,1-(c+h)),this._vector.applyMatrix4(r.matrixWorld),e.mesh_normal=d}}break}break;default:this._vector.set(0,0,0),A()&&!globalThis.__particlesystem_shapetype_unsupported&&(console.warn("ParticleSystem ShapeType is not supported:",Qp[this.shapeType]),globalThis.__particlesystem_shapetype_unsupported=!0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.applyRotation(this._vector),i&&(this._vector.applyQuaternion(this.system.worldQuaternion),this._vector.add(this.system.worldPos)),Xp&&B.DrawSphere(this._vector,.03,16711680,.5,!0)}_dir=new b;getDirection(e,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 i=t.x,n=t.y,s=t.z;this._dir.set(i,n,s),this.system?.worldspace?this._dir.sub(this.system.worldPos):this._dir.sub(this.position);break;case 13:const r=e.mesh,a=e.mesh_geometry;if(r&&a)switch(this.meshShapeType){case 0:{const l=a.getAttribute("normal"),c=e.mesh_normal;this._dir.fromBufferAttribute(l,c)}break;case 1:break;case 2:{const l=a.index;if(l){const c=e.mesh_normal,h=l.getX(c*3),d=l.getX(c*3+1),p=l.getX(c*3+2),m=a.getAttribute("position"),f=F(),g=F(),y=F();f.fromBufferAttribute(m,h),g.fromBufferAttribute(m,d),y.fromBufferAttribute(m,p),f.sub(g),y.sub(g),f.cross(y),this._dir.copy(f).multiplyScalar(-1);const _=_e(r);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),Xp&&(B.DrawSphere(t,.01,8925952,.5,!0),B.DrawDirection(t,this._dir,8925952,.5,!0)),this._dir}static _randomQuat=new N;static _tempVec=new b;randomizePosition(e,t){if(t<=0)return;const i=Sd._tempVec;i.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),i.x*=t*this.scale.x,i.y*=t*this.scale.y,i.z*=t*this.scale.z,e.add(i)}randomizeDirection(e,t){if(t===0)return;const i=Sd._randomQuat,n=Sd._tempVec;n.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),i.setFromAxisAngle(n,t*Math.random()*Math.PI),e.applyQuaternion(i)}spherizeDirection(e,t){if(t===0)return;const i=Math.random()*Math.PI*2,n=Math.acos(1-Math.random()*2),s=Math.sin(n)*Math.cos(i),r=Math.sin(n)*Math.sin(i),a=Math.cos(n),l=new b(s,r,a);e.lerp(l,t)}randomSpherePoint(e,t,i,n,s){const r=Math.random(),a=Math.random(),l=2*Math.PI*r*(n/360),c=Math.acos(2*a-1),h=D.lerp(1,1-Math.pow(1-Math.random(),Math.PI),i)*t,d=e.x+this.scale.x*(-h*Math.sin(c)*Math.cos(l)),p=e.y+this.scale.y*(h*Math.sin(c)*Math.sin(l)),m=e.z+this.scale.z*(h*Math.cos(c));s.x=d,s.y=p,s.z=m}randomCirclePoint(e,t,i,n,s){const r=Math.random(),a=2*Math.PI*r*(n/360),l=D.lerp(1,1-Math.pow(1-Math.random(),Math.PI),i)*t,c=e.x+this.scale.x*l*Math.cos(a),h=e.y+this.scale.y*l*Math.sin(a),d=e.z;s.x=c,s.y=h,s.z=d}_loopTime=0;_loopDirection=1;randomConePoint(e,t,i,n,s,r,a){let l=0,c=0;switch(r){case 0:l=Math.random(),c=Math.random();break;case 2:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case 1:l=.5,c=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let h=2*Math.PI*l*(s/360);switch(r){case 2:case 1:h+=Math.PI+.5,h+=this._loopTime*Math.PI*2,h%=D.toRadians(s);break}const d=Math.acos(2*c-1),p=D.lerp(1,1-Math.pow(1-Math.random(),Math.PI),n)*i,m=e.x+-p*Math.sin(d)*Math.cos(h),f=e.y+p*Math.sin(d)*Math.sin(h),g=e.z;a.x=m*this.scale.x,a.y=f*this.scale.y,a.z=g*this.scale.z}};x([u()],nt.prototype,"shapeType"),x([u()],nt.prototype,"enabled"),x([u()],nt.prototype,"alignToDirection"),x([u()],nt.prototype,"angle"),x([u()],nt.prototype,"arc"),x([u()],nt.prototype,"arcSpread"),x([u()],nt.prototype,"arcSpeedMultiplier"),x([u()],nt.prototype,"arcMode"),x([u(b)],nt.prototype,"boxThickness"),x([u(b)],nt.prototype,"position"),x([u(b)],nt.prototype,"rotation"),x([u(b)],nt.prototype,"scale"),x([u()],nt.prototype,"radius"),x([u()],nt.prototype,"radiusThickness"),x([u()],nt.prototype,"sphericalDirectionAmount"),x([u()],nt.prototype,"randomDirectionAmount"),x([u()],nt.prototype,"randomPositionAmount"),x([u()],nt.prototype,"meshShapeType"),x([u(bh)],nt.prototype,"meshRenderer");let O0=nt;class ve{damping;enabled;frequency;octaveCount;octaveMultiplier;octaveScale;positionAmount;quality;remap;remapEnabled;remapMultiplier;remapX;remapXMultiplier;remapY;remapYMultiplier;remapZ;remapZMultiplier;scrollSpeedMultiplier;separateAxes;strengthMultiplier;strengthX;strengthXMultiplier;strengthY;strengthYMultiplier;strengthZ;strengthZMultiplier;_noise;_time=0;update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}_temp=new b;apply(e,t,i,n,s,r){if(!this.enabled)return;this._noise||(this._noise=HP(()=>0));const a=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),l=this._noise(a.x,a.y,a.z,this._time),c=this._noise(a.x,a.y,a.z,this._time+1e3*this.frequency),h=this._noise(a.x,a.y,a.z,this._time+2e3*this.frequency);this._temp.set(l,c,h).normalize();const d=s/r;let p=this.positionAmount.evaluate(d);this.separateAxes?(this._temp.x*=p*this.strengthXMultiplier,this._temp.y*=p*this.strengthYMultiplier,this._temp.z*=p*this.strengthZMultiplier):(this.strengthX&&(p*=this.strengthX.evaluate(d)*1.5),this._temp.multiplyScalar(p)),i.x+=this._temp.x,i.y+=this._temp.y,i.z+=this._temp.z}}x([u()],ve.prototype,"damping"),x([u()],ve.prototype,"enabled"),x([u()],ve.prototype,"frequency"),x([u()],ve.prototype,"octaveCount"),x([u()],ve.prototype,"octaveMultiplier"),x([u()],ve.prototype,"octaveScale"),x([u(Y)],ve.prototype,"positionAmount"),x([u()],ve.prototype,"quality"),x([u(Y)],ve.prototype,"remap"),x([u()],ve.prototype,"remapEnabled"),x([u()],ve.prototype,"remapMultiplier"),x([u(Y)],ve.prototype,"remapX"),x([u()],ve.prototype,"remapXMultiplier"),x([u(Y)],ve.prototype,"remapY"),x([u()],ve.prototype,"remapYMultiplier"),x([u(Y)],ve.prototype,"remapZ"),x([u()],ve.prototype,"remapZMultiplier"),x([u()],ve.prototype,"scrollSpeedMultiplier"),x([u()],ve.prototype,"separateAxes"),x([u()],ve.prototype,"strengthMultiplier"),x([u(Y)],ve.prototype,"strengthX"),x([u()],ve.prototype,"strengthXMultiplier"),x([u(Y)],ve.prototype,"strengthY"),x([u()],ve.prototype,"strengthYMultiplier"),x([u(Y)],ve.prototype,"strengthZ"),x([u()],ve.prototype,"strengthZMultiplier");class Ue{enabled;attachRibbonToTransform=!1;colorOverLifetime;colorOverTrail;dieWithParticles=!0;inheritParticleColor=!0;lifetime;lifetimeMultiplier;minVertexDistance=.2;mode=0;ratio=1;ribbonCount=1;shadowBias=0;sizeAffectsLifetime=!1;sizeAffectsWidth=!1;splitSubEmitterRibbons=!1;textureMode=0;widthOverTrail;widthOverTrailMultiplier;worldSpace=!1;getWidth(e,t,i,n){const s=this.widthOverTrail.evaluate(i,n);return e*=s,e}getColor(e,t,i){const n=this.colorOverTrail.evaluate(i),s=this.colorOverLifetime.evaluate(t);e.x*=n.r*s.r,e.y*=n.g*s.g,e.z*=n.b*s.b,"alpha"in n&&"alpha"in s&&(e.w*=n.alpha*s.alpha)}}x([u()],Ue.prototype,"enabled"),x([u()],Ue.prototype,"attachRibbonToTransform"),x([u(da)],Ue.prototype,"colorOverLifetime"),x([u(da)],Ue.prototype,"colorOverTrail"),x([u()],Ue.prototype,"dieWithParticles"),x([u()],Ue.prototype,"inheritParticleColor"),x([u(Y)],Ue.prototype,"lifetime"),x([u()],Ue.prototype,"lifetimeMultiplier"),x([u()],Ue.prototype,"minVertexDistance"),x([u()],Ue.prototype,"mode"),x([u()],Ue.prototype,"ratio"),x([u()],Ue.prototype,"ribbonCount"),x([u()],Ue.prototype,"shadowBias"),x([u()],Ue.prototype,"sizeAffectsLifetime"),x([u()],Ue.prototype,"sizeAffectsWidth"),x([u()],Ue.prototype,"splitSubEmitterRibbons"),x([u()],Ue.prototype,"textureMode"),x([u(Y)],Ue.prototype,"widthOverTrail"),x([u()],Ue.prototype,"widthOverTrailMultiplier"),x([u()],Ue.prototype,"worldSpace");class Xe{enabled;space=0;orbitalX;orbitalY;orbitalZ;orbitalXMultiplier;orbitalYMultiplier;orbitalZMultiplier;orbitalOffsetX;orbitalOffsetY;orbitalOffsetZ;speedModifier;speedModifierMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_system;update(e){this._system=e}_temp=new b;_temp2=new b;_temp3=new b;_hasOrbital=!1;_index=0;_orbitalMatrix=new J;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,i,n,s,r,a){if(!this.enabled)return;const l=r/a,c=this.speedModifier.evaluate(l)*this.speedModifierMultiplier,h=this.x.evaluate(l),d=this.y.evaluate(l),p=this.z.evaluate(l);if(this._temp.set(-h,d,p),this._system&&this._system.main.simulationSpace===1&&this._temp.applyQuaternion(this._system.worldQuaternion),this._hasOrbital&&this._system?.worldPos){const m=this._temp2.set(i.x,i.y,i.z),f=this.orbitalXMultiplier,g=this.orbitalYMultiplier,y=this.orbitalZMultiplier,_=c*Math.PI*2*10,v=Math.cos(_*f),P=Math.sin(_*f),k=Math.cos(_*g),O=Math.sin(_*g),j=Math.cos(_*y),L=Math.sin(_*y),V=m.x*(k*j)+m.y*(k*L)+m.z*-O,W=m.x*(P*O*j-v*L)+m.y*(P*O*L+v*j)+m.z*(P*k),G=m.x*(v*O*j+P*L)+m.y*(v*O*L-P*j)+m.z*(v*k),X=this._temp3.set(m.x-V,m.y-W,m.z-G);X.normalize(),X.multiplyScalar(.2/s*Math.max(this.orbitalXMultiplier,this.orbitalYMultiplier,this.orbitalZMultiplier)),n.x+=X.x,n.y+=X.y,n.z+=X.z}n.x+=this._temp.x,n.y+=this._temp.y,n.z+=this._temp.z,n.x*=c,n.y*=c,n.z*=c}}x([u()],Xe.prototype,"enabled"),x([u()],Xe.prototype,"space"),x([u(Y)],Xe.prototype,"orbitalX"),x([u(Y)],Xe.prototype,"orbitalY"),x([u(Y)],Xe.prototype,"orbitalZ"),x([u()],Xe.prototype,"orbitalXMultiplier"),x([u()],Xe.prototype,"orbitalYMultiplier"),x([u()],Xe.prototype,"orbitalZMultiplier"),x([u()],Xe.prototype,"orbitalOffsetX"),x([u()],Xe.prototype,"orbitalOffsetY"),x([u()],Xe.prototype,"orbitalOffsetZ"),x([u(Y)],Xe.prototype,"speedModifier"),x([u()],Xe.prototype,"speedModifierMultiplier"),x([u(Y)],Xe.prototype,"x"),x([u()],Xe.prototype,"xMultiplier"),x([u(Y)],Xe.prototype,"y"),x([u()],Xe.prototype,"yMultiplier"),x([u(Y)],Xe.prototype,"z"),x([u()],Xe.prototype,"zMultiplier");class Yt{animation;enabled;cycleCount;frameOverTime;frameOverTimeMultiplier;numTilesX;numTilesY;startFrame;startFrameMultiplier;rowMode;rowIndex;spriteCount;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 i=this.frameOverTime.evaluate(e%1);return i*=this.frameOverTimeMultiplier,i*=t,i=i%t,i=Math.floor(i),i}}x([u()],Yt.prototype,"animation"),x([u()],Yt.prototype,"enabled"),x([u()],Yt.prototype,"cycleCount"),x([u(Y)],Yt.prototype,"frameOverTime"),x([u()],Yt.prototype,"frameOverTimeMultiplier"),x([u()],Yt.prototype,"numTilesX"),x([u()],Yt.prototype,"numTilesY"),x([u(Y)],Yt.prototype,"startFrame"),x([u()],Yt.prototype,"startFrameMultiplier"),x([u()],Yt.prototype,"rowMode"),x([u()],Yt.prototype,"rowIndex"),x([u()],Yt.prototype,"spriteCount"),x([u()],Yt.prototype,"timeMode");class Fn{enabled;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){return this.enabled?this.separateAxes?0:this.z.evaluate(e,t)*-1:0}}x([u()],Fn.prototype,"enabled"),x([u()],Fn.prototype,"separateAxes"),x([u(Y)],Fn.prototype,"x"),x([u()],Fn.prototype,"xMultiplier"),x([u(Y)],Fn.prototype,"y"),x([u()],Fn.prototype,"yMultiplier"),x([u(Y)],Fn.prototype,"z"),x([u()],Fn.prototype,"zMultiplier");class hn{enabled;range;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){const i=D.lerp(this.range.x,this.range.y,t);return this.z.evaluate(i)*-1}return 0}}x([u()],hn.prototype,"enabled"),x([u()],hn.prototype,"range"),x([u()],hn.prototype,"separateAxes"),x([u(Y)],hn.prototype,"x"),x([u()],hn.prototype,"xMultiplier"),x([u(Y)],hn.prototype,"y"),x([u()],hn.prototype,"yMultiplier"),x([u(Y)],hn.prototype,"z"),x([u()],hn.prototype,"zMultiplier");class pt{enabled;dampen;drag;dragMultiplier;limit;limitMultiplier;separateAxes;limitX;limitXMultiplier;limitY;limitYMultiplier;limitZ;limitZMultiplier;multiplyDragByParticleSize=!1;multiplyDragByParticleVelocity=!1;space;_temp=new b;_temp2=new b;apply(e,t,i,n,s,r,a){if(this.enabled){const l=this.limit.evaluate(s)*this.limitMultiplier;if(t.length()>l){this._temp.copy(t).normalize().multiplyScalar(l);const c=this.dampen*.5;t.x=D.lerp(t.x,this._temp.x,c),t.y=D.lerp(t.y,this._temp.y,c),t.z=D.lerp(t.z,this._temp.z,c),i.x=D.lerp(i.x,this._temp.x,c),i.y=D.lerp(i.y,this._temp.y,c),i.z=D.lerp(i.z,this._temp.z,c)}}}}x([u()],pt.prototype,"enabled"),x([u()],pt.prototype,"dampen"),x([u(Y)],pt.prototype,"drag"),x([u()],pt.prototype,"dragMultiplier"),x([u(Y)],pt.prototype,"limit"),x([u()],pt.prototype,"limitMultiplier"),x([u()],pt.prototype,"separateAxes"),x([u(Y)],pt.prototype,"limitX"),x([u()],pt.prototype,"limitXMultiplier"),x([u(Y)],pt.prototype,"limitY"),x([u()],pt.prototype,"limitYMultiplier"),x([u(Y)],pt.prototype,"limitZ"),x([u()],pt.prototype,"limitZMultiplier"),x([u()],pt.prototype,"multiplyDragByParticleSize"),x([u()],pt.prototype,"multiplyDragByParticleVelocity"),x([u()],pt.prototype,"space");const jh=class JS{enabled;curve;curveMultiplier;mode;clone(){const e=new JS;return e.enabled=this.enabled,e.curve=this.curve?.clone(),e.curveMultiplier=this.curveMultiplier,e.mode=this.mode,e}system;get _lastWorldPosition(){return this.system._iv_lastWorldPosition||(this.system._iv_lastWorldPosition=new b),this.system._iv_lastWorldPosition}get _velocity(){return this.system._iv_velocity||(this.system._iv_velocity=new b),this.system._iv_velocity}_temp=new b;_firstUpdate=!0;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}}_frames=0;applyCurrent(e,t,i){if(this.enabled&&this.system&&this.system.worldspace!==!1&&this.mode===1){const n=this.curve.evaluate(t,i);this._temp.copy(this._velocity).multiplyScalar(n),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}};x([u()],jh.prototype,"enabled"),x([u(Y)],jh.prototype,"curve"),x([u()],jh.prototype,"curveMultiplier"),x([u()],jh.prototype,"mode");let k0=jh;class Ci{enabled;range;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t,i,n){const s=e.length(),r=D.remap(s,this.range.x,this.range.y,0,1),a=this.size.evaluate(r,i);return n.x*=a,n.y*=a,n.z*=a,n}}x([u()],Ci.prototype,"enabled"),x([u(K)],Ci.prototype,"range"),x([u()],Ci.prototype,"separateAxes"),x([u(Y)],Ci.prototype,"size"),x([u()],Ci.prototype,"sizeMultiplier"),x([u(Y)],Ci.prototype,"x"),x([u()],Ci.prototype,"xMultiplier"),x([u(Y)],Ci.prototype,"y"),x([u()],Ci.prototype,"yMultiplier"),x([u(Y)],Ci.prototype,"z"),x([u()],Ci.prototype,"zMultiplier");class Vl{enabled;range;color;evaluate(e,t,i){const n=e.length(),s=D.remap(n,this.range.x,this.range.y,0,1),r=this.color.evaluate(s,t);i.x*=r.r,i.y*=r.g,i.z*=r.b,"alpha"in r&&(i.w*=r.alpha)}}x([u()],Vl.prototype,"enabled"),x([u(K)],Vl.prototype,"range"),x([u(da)],Vl.prototype,"color"),new b(1,1,1),new b(0,0,1);class M0{constructor(e,t,i,n){this.system=e,this.particleSystem=t,this.subSystem=i,this.subParticleSystem=n,this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0);const s=1e3;this._circularBuffer=new Ii(()=>new Qm,s)}type="NeedleParticleSubEmitter";emitterType;emitterProbability;q_=new N;v_=new b;v2_=new b;_emitterMatrix=new Qm;_circularBuffer;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===R0.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===R0.Death){let n=e.life;if(e[$l]!==void 0&&(n=e[$l]),!(e.age+t*1.2>=n))return;const s=this.subSystem.main.maxParticles-this.subSystem.currentParticles;e.emissionState.waitEmiting=s}const i=new Qm;i.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||i.multiplyMatrices(this._emitterMatrix,i),this.subParticleSystem.emit(t,e.emissionState,i)}}var U2=Object.defineProperty,ze=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&U2(e,t,n),n};const er=w("debugparticles"),z2=w("noprogressive"),N2=w("debugprogressive");var R0=(o=>(o[o.Birth=0]="Birth",o[o.Collision=1]="Collision",o[o.Death=2]="Death",o[o.Trigger=3]="Trigger",o[o.Manual=4]="Manual",o))(R0||{});class dn extends R{renderMode;particleMaterial;trailMaterial;particleMesh;maxParticleSize;minParticleSize;velocityScale;cameraVelocityScale;lengthScale;start(){if(this.maxParticleSize!==.5&&this.minParticleSize!==0&&A()){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(){return this.particleMaterial?.transparent??!1}getMaterial(e=!1){let t=e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial;if(t){if(t.type==="MeshStandardMaterial"){er&&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=Ro,t.map.premultiplyAlpha=!1);const i=new Ce;i.copy(t),e?this.trailMaterial=i:this.particleMaterial=i}t.map&&(t.map.colorSpace=Ro,t.map.premultiplyAlpha=!1),e&&t.side===Ss&&(t=t.clone(),t.side=Ud,e?this.trailMaterial=t:this.particleMaterial=t)}return t&&!z2&&t._didRequestTextureLOD===void 0&&(t._didRequestTextureLOD=0,N2&&console.log("Load material LOD",t.name),He.assignTextureLOD(t,0)),t}getMesh(e){let t=null;if(!t&&(this.particleMesh instanceof H&&(t=this.particleMesh.geometry),t===null)){t=new Sn(1,1);const i=t.attributes.uv;for(let n=0;n<i.count;n++)i.setX(n,1-i.getX(n))}return new H(t,this.getMaterial())}}ze([u()],dn.prototype,"renderMode"),ze([u(we)],dn.prototype,"particleMaterial"),ze([u(we)],dn.prototype,"trailMaterial"),ze([u()],dn.prototype,"maxParticleSize"),ze([u()],dn.prototype,"minParticleSize"),ze([u()],dn.prototype,"velocityScale"),ze([u()],dn.prototype,"cameraVelocityScale"),ze([u()],dn.prototype,"lengthScale");class Kp{_curve;_factor;constructor(e,t=1){this._curve=e,this._factor=t}type="function";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 E0{type="value";toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}startGen(e){}system;constructor(e){this.system=e}}class W2 extends E0{genValue(){return this.system.textureSheetAnimation.getStartIndex()}}class V2 extends E0{_lastPosition=new b;_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 n=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random());let s=this._lastDistance/this.system.deltaTime*n;Number.isFinite(s)||(s=0),e+=s}const t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);const i=this.system.maxParticles-this.system.currentParticles;return D.clamp(e,0,i/this.system.deltaTime)}}class $2 extends E0{genValue(){return this.system.isPlaying,0}}class tr{system;get context(){return this.system.context}constructor(e){this.type=Object.getPrototypeOf(this).constructor.name||"ParticleSystemBaseBehaviour",e&&(this.system=e)}type;initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw new Error("Method not implemented.")}clone(){throw new Error("Method not implemented.")}reset(){}}class H2 extends tr{type="NeedleTextureSheet";update(e,t){const i=this.system.textureSheetAnimation;if(i.enabled){const n=e.age/e.life,s=i.evaluate(n);s!==void 0&&(e.uvTile=s)}}}const Y1=Symbol("particleRotation");class G2 extends tr{type="NeedleRotation";initialize(e){e[Y1]=Math.random()}update(e,t){if(e.rotation===void 0)return;const i=e.age/e.life;if(typeof e.rotation=="number"&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(i,e[Y1])*t:this.system.renderer.renderMode===ns.Billboard&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){const n=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(i,n)*t}}}const Z1=Symbol("sizeLerpFactor"),q2=new b;class X2 extends tr{type="NeedleSize";_minSize=0;_maxSize=1;initialize(e){e[Z1]=Math.random(),this._minSize=this.system.renderer.minParticleSize,this._maxSize=this.system.renderer.maxParticleSize}update(e,t){const i=e.age/e.life;let n=1;this.system.sizeOverLifetime.enabled&&(n*=this.system.sizeOverLifetime.evaluate(i,void 0,e[Z1]).x);let s=1;this.system.renderer.renderMode!==ns.Mesh&&(s=this.system.worldScale.x/this.system.cameraScale);const r=F(e.startSize).multiplyScalar(n*s);if(e.size.set(r.x,r.y,r.z),this.system.localspace){const a=iS(this.system,q2);e.size.x*=a.x,e.size.y*=a.y,e.size.z*=a.z}}}const $l=Symbol("particleLife"),T0=Symbol("trailLifetime"),K1=Symbol("trailStartLength"),A0=Symbol("trailWidthRandom");class Q2 extends tr{type="NeedleTrail";initialize(e){e instanceof Zb&&(e[$l]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[T0]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[T0]),e[K1]=e.length,e[A0]=Math.random())}update(e){if(this.system.trails?.enabled&&e instanceof Zb){const t=e,i=e.age/e[$l],n=e.previous.values(),s=e.previous.length;for(let r=0;r<s;r++){const a=n.next().value,l=1-r/(s-1),c=e.size;if(c.x<=0&&!this.system.trails.sizeAffectsWidth){const h=20*this.system.trails.widthOverTrail.evaluate(.5,t[A0]);c.x=h,c.y=h,c.z=h}a.size=this.system.trails.getWidth(c.x,i,l,t[A0]),a.color.copy(e.color),this.system.trails.getColor(a.color,i,l)}if(e.age>e[$l]){e.velocity.set(0,0,0);const r=(e.age-e[$l])/e[T0];t.length=D.lerp(e[K1],0,r)}}}}const Jp=Symbol("startVelocity"),J1=Symbol("gravityModifier"),I0=Symbol("gravitySpeed"),em=Symbol("velocity lerp factor"),L0=new b;class Y2 extends tr{type="NeedleVelocity";_gravityDirection=new b;initialize(e){const t=this.system.main.simulationSpeed;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random());const i=this.system.shape.getDirection(e,e.position);e.velocity.x=i.x*e.startSpeed,e.velocity.y=i.y*e.startSpeed,e.velocity.z=i.z*e.startSpeed,this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[Jp]?e[Jp].copy(e.velocity):e[Jp]=e.velocity.clone();const n=this.system.main.gravityModifier.evaluate(Math.random(),Math.random());e[J1]=n*t,e[I0]=n*t*.5,e[em]=Math.random(),this.system.velocityOverLifetime?.init(e),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===Dh.Local&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted).normalize()}update(e,t){const i=e[Jp],n=e[J1];if(n!==0){const d=n*e[I0];L0.copy(this._gravityDirection).multiplyScalar(d),e[I0]+=t*.05,i.add(L0)}e.velocity.copy(i);const s=e.age/e.life;this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,s,e[em]);const r=this.system.noise;r.enabled&&r.apply(0,e.position,e.velocity,t,e.age,e.life);const a=this.system.sizeBySpeed;a?.enabled&&(e.size=a.evaluate(e.velocity,s,e[em],e.size));const l=this.system.colorBySpeed;l?.enabled&&l.evaluate(e.velocity,e[em],e.color);const c=this.system.velocityOverLifetime;c.enabled&&c.apply(e,0,e.position,e.velocity,t,e.age,e.life);const h=this.system.limitVelocityOverLifetime;if(h.enabled&&h.apply(e.position,i,e.velocity,e.size,s,t,1),this.system.worldspace){const d=this.system.worldScale;e.velocity.x*=d.x,e.velocity.y*=d.y,e.velocity.z*=d.z}}}const eS=Symbol("colorLerpFactor"),tS=new se(1,1,1,1),pa=new se(1,1,1,1);class Z2 extends tr{type="NeedleColor";initialize(e){}_init(e){const t=this.system.renderer.particleMaterial;pa.copy(this.system.main.startColor.evaluate(Math.random())),t?.color&&(tS.copy(t.color),pa.multiply(tS)),pa.convertLinearToSRGB(),e.startColor.set(pa.r,pa.g,pa.b,pa.alpha),e.color.copy(e.startColor),e[eS]=Math.random()}update(e,t){if(e.age===0&&this._init(e),this.system.colorOverLifetime.enabled){const i=e.age/e.life,n=this.system.colorOverLifetime.color.evaluate(i,e[eS]);e.color.set(n.r,n.g,n.b,"alpha"in n?n.alpha:1).multiply(e.startColor)}else e.color.copy(e.startColor)}}class K2{system;emission;get anim(){return this.system.textureSheetAnimation}constructor(e){this.system=e,this.emission=new V2(this.system)}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()}autoDestroy;get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Kp(this.system.main.startLifetime)}get startSpeed(){return new Kp(this.system.main.startSpeed)}get startRotation(){return new Kp(this.system.main.startRotation)}get startSize(){return new Kp(this.system.main.startSize)}startLength;get startColor(){return new XP(new QP(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new $2(this.system)}emissionBursts;onlyUsedByOther;behaviors=[];get instancingGeometry(){return this.system.renderer.getMesh(this.system.renderer.renderMode).geometry}get renderMode(){if(this.system.trails.enabled===!0)return Lo.Trail;switch(this.system.renderer.renderMode){case ns.Billboard:return Lo.BillBoard;case ns.Stretch:return Lo.StretchedBillBoard;case ns.HorizontalBillboard:return Lo.HorizontalBillBoard;case ns.VerticalBillboard:return Lo.VerticalBillBoard;case ns.Mesh:return Lo.Mesh}return Lo.BillBoard}rendererEmitterSettings={startLength:new YP(220),followLocalOrigin:!1};get speedFactor(){let e=this.system.main.simulationSpeed;return this.system.renderer?.renderMode===ns.Stretch&&(e*=this.system.renderer.velocityScale??1),e}flatWhiteTexture;clonedTexture={original:void 0,clone:void 0};get texture(){const e=this.material;if(e&&e.map){const t=e.map;if(this.clonedTexture.original!==t||!this.clonedTexture.clone){const i=t.clone();i.premultiplyAlpha=!1,i.colorSpace=Ro,this.clonedTexture.original=t,this.clonedTexture.clone=i}return this.clonedTexture.clone}return this.flatWhiteTexture||(this.flatWhiteTexture=of(new se(1,1,1,1),1)),this.flatWhiteTexture}get startTileIndex(){return new W2(this.system)}get uTileCount(){return this.anim.enabled?this.anim?.numTilesX:void 0}get vTileCount(){return this.anim.enabled?this.anim?.numTilesY:void 0}get renderOrder(){return 1}get blending(){return this.system.renderer.particleMaterial?.blending??uP}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===Dh.World}}class J2{burstParticleIndex=0;burstParticleCount=0;isBursting=!1;travelDistance=0;previousWorldPos;burstIndex=0;burstWaveIndex=0;time=0;waitEmiting=0}const Zt=class Om extends R{play(e=!1){e&&S.foreachComponent(this.gameObject,t=>{t instanceof Om&&t!==this&&t.play(!1)},!0),this._isPlaying=!0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),this.emission?.reset()}pause(e=!0){e&&S.foreachComponent(this.gameObject,t=>{t instanceof Om&&t!==this&&t.pause(!1)},!0),this._isPlaying=!1}stop(e=!0,t=!1){e&&S.foreachComponent(this.gameObject,i=>{i instanceof Om&&i!==this&&i.stop(!1,t)},!0),this._isPlaying=!1,this._time=0,t&&this.reset()}reset(){this._time=0,this._particleSystem&&(this._particleSystem.particleNum=0,this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1,this.emission?.reset())}_state;emit(e){if(this._particleSystem){this.onUpdate(),e=Math.min(e,this.maxParticles-this.currentParticles),this._state||(this._state=new J2),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}colorOverLifetime;main;emission;sizeOverLifetime;shape;noise;trails;velocityOverLifetime;limitVelocityOverLifetime;inheritVelocity;colorBySpeed;textureSheetAnimation;rotationOverLifetime;rotationBySpeed;sizeBySpeed;get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){return this._particleSystem?.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}_cameraScale=1;get container(){return this._container}get worldspace(){return this.main.simulationSpace===Dh.World}get localspace(){return this.main.simulationSpace===Dh.Local}__worldQuaternion=new N;get worldQuaternion(){return this.__worldQuaternion}_worldQuaternionInverted=new N;get worldQuaternionInverted(){return this._worldQuaternionInverted}_worldScale=new b;get worldScale(){return this._worldScale}_worldPositionFrame=-1;_worldPos=new b;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 tr&&(e.system=this),er&&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,i=t.indexOf(e);return i!==-1&&((A()||er)&&console.debug("Remove custom ParticleSystem Behaviour",i,e),t.splice(i,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}_renderer;_batchSystem;_particleSystem;_interface;_container;_time=0;_isPlaying=!0;_isUsedAsSubsystem=!1;_didPreWarm=!1;set bursts(e){for(let t=0;t<e.length;t++){const i=e[t];if(!(i instanceof Yp)){const n=new Yp;Xa(n,i),e[t]=n}}this._bursts=e}_bursts;set subEmitterSystems(e){for(let t=0;t<e.length;t++){const i=e[t];if(!(i instanceof tm)){const n=new tm;Xa(n,i),e[t]=n}}er&&e.length>0&&console.log("SubEmitters: ",e,this),this._subEmitterSystems=e}_subEmitterSystems;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(dn),!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 M,this._container.matrixAutoUpdate=!1,this.context.scene.add(this._container),this._batchSystem=new GP,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new K2(this),this._particleSystem=new qP(this._interface),this._particleSystem.addBehavior(new X2(this)),this._particleSystem.addBehavior(new Z2(this)),this._particleSystem.addBehavior(new H2(this)),this._particleSystem.addBehavior(new G2(this)),this._particleSystem.addBehavior(new Y2(this)),this._particleSystem.addBehavior(new Q2(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),er&&(console.log(this),this.gameObject.add(new Ti(1)))}start(){this.addSubParticleSystems(),this.updateLayers(),this.renderer.particleMesh instanceof H&&this._interface.renderMode==Lo.Mesh&&He.assignMeshLOD(this.renderer.particleMesh,0).then(e=>{e&&this.particleSystem&&this._interface.renderMode==Lo.Mesh&&(this.particleSystem.instancingGeometry=e)})}onDestroy(){this._container?.removeFromParent(),this._batchSystem?.removeFromParent(),this._particleSystem?.emitter.removeFromParent(),this._particleSystem?.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(){this.main&&(this._didPreWarm===!1&&this.main?.prewarm===!0&&(this._didPreWarm=!0,this.preWarm()),this.onUpdate(),this.onSimulate(this.deltaTime))}preWarm(){if(!this.emission?.enabled||this.emission.rateOverTime.getMax()<=0)return;const e=1/60,t=this.main.duration,i=this.main.startLifetime.getMax(),n=Math.min(Math.max(t,i)/Math.max(.01,this.main.simulationSpeed),1e3),s=Math.ceil(n/e),r=Date.now();er&&console.log(`Particles ${this.name} - Prewarm for ${s} frames (${n} sec). Duration: ${t}, Lifetime: ${i}`);for(let a=0;a<s&&!(this.currentParticles>=this.maxParticles);a++){const l=Date.now()-r;if(l>2e3){console.warn(`Particles ${this.name} - Prewarm took too long. Aborting: ${l}`);break}this.onUpdate(),this.onSimulate(e)}}_lastBatchesCount=-1;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 i=this.layer;t.layers.mask=1<<i}}onUpdate(){if(this._bursts&&(this.emission.bursts=this._bursts,delete this._bursts),!this._isPlaying)return;const e=this.context.mainCamera;if(e){const n=Ge(e);this._cameraScale=n.x}const t=!this.worldspace,i=this.gameObject;if(_e(i,this.__worldQuaternion),this._worldQuaternionInverted.copy(this.__worldQuaternion).invert(),Ge(this.gameObject,this._worldScale),t&&this._container&&this.gameObject?.parent){const n=iS(this,L0);this._container.matrix.makeScale(n.x,n.y,n.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),this.inheritVelocity?.update(this.context),this.velocityOverLifetime.update(this)}addSubParticleSystems(){if(this._subEmitterSystems&&this._particleSystem)for(const e of this._subEmitterSystems){e.particleSystem&&(e.particleSystem.__internalAwake?e.particleSystem.__internalAwake():A()&&console.warn("SubParticleSystem serialization issue(?)",e.particleSystem,e));const t=e.particleSystem?._particleSystem;if(t){e.particleSystem._isUsedAsSubsystem=!0;const i=new M0(this,this._particleSystem,e.particleSystem,t);i.emitterType=e.type,i.emitterProbability=e.emitProbability,this._particleSystem.addBehavior(i)}else er&&console.warn("Could not add SubParticleSystem",e,this)}}};ze([u(Zp)],Zt.prototype,"colorOverLifetime"),ze([u(Qt)],Zt.prototype,"main"),ze([u(ss)],Zt.prototype,"emission"),ze([u(ua)],Zt.prototype,"sizeOverLifetime"),ze([u(O0)],Zt.prototype,"shape"),ze([u(ve)],Zt.prototype,"noise"),ze([u(Ue)],Zt.prototype,"trails"),ze([u(Xe)],Zt.prototype,"velocityOverLifetime"),ze([u(pt)],Zt.prototype,"limitVelocityOverLifetime"),ze([u(k0)],Zt.prototype,"inheritVelocity"),ze([u(Vl)],Zt.prototype,"colorBySpeed"),ze([u(Yt)],Zt.prototype,"textureSheetAnimation"),ze([u(Fn)],Zt.prototype,"rotationOverLifetime"),ze([u(hn)],Zt.prototype,"rotationBySpeed"),ze([u(Ci)],Zt.prototype,"sizeBySpeed");let Bh=Zt;class tm{particleSystem;emitProbability=1;properties;type;_deserialize(e,t){const i=this.particleSystem;if(i instanceof Bh)return;let n="";i&&typeof i.guid=="string"&&(n=i.guid,this.particleSystem=S.findByGuid(n,t)),er&&!(this.particleSystem instanceof Bh)&&console.warn("Could not find particle system for sub emitter",n,t,this)}}function iS(o,e){if(e.set(1,1,1),o.gameObject.parent&&o.localspace)switch(o.main.scalingMode){case P0.Local:e=Ge(o.gameObject.parent,e),e.x=1/e.x,e.y=1/e.y,e.z=1/e.z;break;default:if(!o.unsupported_scaling_mode){o.unsupported_scaling_mode=!0;const t="ParticleSystem scale mode "+P0[o.main.scalingMode]+" is not supported";A()&&be(t),console.warn(t,o.name,o)}e=Ge(o.gameObject,e);break}return e}var eI=Object.defineProperty,D0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&eI(e,t,n),n};class Hl extends R{strength=1;radius=2;targets=[];update(){const e=this.gameObject.worldPosition,t=-this.strength*this.context.time.deltaTime;this.targets?.forEach(i=>{if(!i)return;const n=i.gameObject.worldPosition.sub(e),s=n.length();if(s>this.radius)return;let r=t;s>1?r/=s*s:r/=Math.max(.05,s),i.applyImpulse(n.multiplyScalar(r))})}}D0([u()],Hl.prototype,"strength"),D0([u()],Hl.prototype,"radius"),D0([u(Je)],Hl.prototype,"targets");class ac extends R{_didAssignPlayerColor=!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 Qg(.2),!this.tryAssignColor()););}tryAssignColor=()=>{const e=S.getComponentInParent(this.gameObject,ln);if(e&&e.owner)return this._didAssignPlayerColor=!0,this.assignUserColor(e.owner),!0;const t=S.getComponentInParent(this.gameObject,Le);return t?.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(t.connectionId),!0):!1};assignUserColor(e){const t=ac.hashCode(e),i=ac.colorFromHashCode(t);if(this.gameObject.type==="Mesh"){const n=this.gameObject;this.assignColor(i,e,n)}else if(this.gameObject.children)for(const n of this.gameObject.children){const s=n;s.material&&s.material.color&&this.assignColor(i,e,s)}}assignColor(e,t,i){let n=i.material;n&&(n._playerMaterial!==t&&(n=n.clone(),n._playerMaterial=t,i.material=n),n.color=e)}static hashCode(e){var t=0,i,n;if(e.length===0)return t;for(i=0;i<e.length;i++)n=e.charCodeAt(i),t=(t<<5)-t+n,t|=0;return t}static colorFromHashCode(e){const t=(e&16711680)>>16,i=(e&65280)>>8,n=e&255;return new oe(t/255,i/255,n/255)}}const Fh=w("debugpost");let j0=null;function tI(o){j0=o}function nS(o){let e=o.gameObject;for(;e;){for(const t of Lu(e))if(t.isPostProcessingManager===!0)return t;e=e.parent}return null}function iI(o){let e=nS(o);if(!e)if(j0){Fh&&console.warn("Adding postprocessing manager to the scene.");const t=o.scene;e=An(t,j0)}else A()&&console.warn("No post processing manager found");return e}const mt={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 nI(o){if(Fh==="verbose"&&console.debug("Before ordering effects",[...o]),!ot){ot=new Map,ot.set(T.POSTPROCESSING.MODULE.NormalPass,mt.NormalPass),ot.set(T.POSTPROCESSING.MODULE.DepthDownsamplingPass,mt.DepthDownsamplingPass),ot.set(T.POSTPROCESSING.MODULE.SMAAEffect,mt.SMAA),ot.set(T.POSTPROCESSING.MODULE.SSAOEffect,mt.SSAO);const e=T.POSTPROCESSING_AO.MAYBEMODULE;e&&(ot.set(e.N8AOPostPass,mt.SSAO),ot.set(e.N8AOPass,mt.SSAO)),ot.set(T.POSTPROCESSING.MODULE.TiltShiftEffect,mt.TiltShift),ot.set(T.POSTPROCESSING.MODULE.DepthOfFieldEffect,mt.DepthOfField),ot.set(T.POSTPROCESSING.MODULE.ChromaticAberrationEffect,mt.ChromaticAberration),ot.set(T.POSTPROCESSING.MODULE.BloomEffect,mt.Bloom),ot.set(T.POSTPROCESSING.MODULE.SelectiveBloomEffect,mt.Bloom),ot.set(T.POSTPROCESSING.MODULE.VignetteEffect,mt.Vignette),ot.set(T.POSTPROCESSING.MODULE.PixelationEffect,mt.Pixelation),ot.set(T.POSTPROCESSING.MODULE.ToneMappingEffect,mt.ToneMapping),ot.set(T.POSTPROCESSING.MODULE.HueSaturationEffect,mt.HueSaturation),ot.set(T.POSTPROCESSING.MODULE.BrightnessContrastEffect,mt.BrightnessContrast)}o.sort((e,t)=>{const i=typeof e.priority=="number"?e.priority:ot.get(e.effect.constructor)??Number.NEGATIVE_INFINITY,n=typeof t.priority=="number"?t.priority:ot.get(t.effect.constructor)??Number.NEGATIVE_INFINITY;return i===Number.NEGATIVE_INFINITY?(Fh&&console.warn("Unknown effect found: ",e.constructor.name,e),1):n===Number.NEGATIVE_INFINITY?(Fh&&console.warn("Unknown effect found: ",t.constructor.name,t),-1):i-n}),Fh==="verbose"&&console.debug("After ordering effects",[...o])}var oI=Object.defineProperty,sI=Object.getOwnPropertyDescriptor,oS=(o,e,t,i)=>{for(var n=sI(e,t),s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&oI(e,t,n),n};const rI=w("debugpost");class U{isVolumeParameter=!0;constructor(e){e!==void 0&&this.initialize(e)}_isInitialized=!1;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)}_active=!0;get value(){return this._valueRaw}set value(e){this.isInitialized||this.initialize(e),this.processValue(e,!1)}_value;_valueRaw;set defaultValue(e){this._defaultValue=e}_defaultValue=void 0;__init(){this.processValue(this._valueRaw,!0)}valueProcessor;onValueChanged;processValue(e,t){if(e==null||!t&&this.testIfValueChanged(e)===!1)return;const i=this._value;rI&&typeof i=="number"&&typeof e=="number"&&(i?.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,i,this)}testIfValueChanged(e){return this._valueRaw!==e}}oS([u()],U.prototype,"overrideState"),oS([u()],U.prototype,"value");class aI extends Yi{constructor(){super([U])}onSerialize(e,t){}onDeserialize(e,t){const i=t.target,n=t.path;let s;if(i&&n&&(s=i[n]),(typeof s!="object"||typeof s=="object"&&s.isVolumeParameter!==!0)&&(s=new U),typeof e=="object"&&"value"in e){const r=e.value;s.initialize(r),s.overrideState=e.overrideState}else s.value=e;return s}}new aI;var lI=Object.defineProperty,cI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&lI(e,t,n),n};const B0=w("debugpost");class st extends R{get isPostProcessingEffect(){return!0}order=void 0;constructor(e=void 0){if(super(),e)for(const t of Object.keys(e)){const i=e[t],n=this[t];n instanceof U?n.initialize(i):n!==void 0&&(this[t]=i)}}active=!0;_manager=null;onEnable(){super.onEnable(),B0&&console.warn("Enable",this.constructor.name+(this.__internalDidAwakeAndStart?"":" (awake)")),this.__internalDidAwakeAndStart&&(this.active=!0),this.onEffectEnabled()}onDisable(){super.onDisable(),B0&&console.warn("Disable",this.constructor.name),this._manager?.removeEffect(this),this.active=!1}onEffectEnabled(e){e&&e.isPostProcessingManager===!0?this._manager=e:this._manager||(this._manager=iI(this)),this._manager.addEffect(this),this._manager.dirty=!0}init(){}_result;_postprocessingContext=null;get postprocessingContext(){return this._postprocessingContext}apply(e){return this._postprocessingContext=e,this._result||(this.initParameters(),this._result=this.onCreateEffect?.call(this)),this._result&&this.initParameters(),this._result}unapply(){}dispose(){B0&&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 i=this[t];i instanceof U&&i.__init()}}onEditorModification(e){const t=e.propertyName;if(this[t]instanceof U){const i=e.value;return this[t].value=i,!0}}}cI([u()],st.prototype,"active");var hI=Object.defineProperty,dI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&hI(e,t,n),n};const uI=w("debugpost"),F0={};function un(o,e){F0[o]=e}function pI(o){return o.__type in F0?F0[o.__type]:(uI&&o.__type&&console.warn("Unknown postprocessing type",o.__type,o),st)}class im{components=[];__init(e){this.components?.forEach(t=>{t.gameObject===void 0&&e.gameObject.addComponent(t),t.init()})}addEffect(e){this.components.push(e)}removeEffect(e){const t=this.components.indexOf(e);t>=0&&this.components.splice(t,1)}}dI([qe([o=>pI(o),st])],im.prototype,"components");var mI=Object.defineProperty,gI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&mI(e,t,n),n};const fI=w("debugpost");class Uh extends st{get typeName(){return"Antialiasing"}preset=new U(2);onCreateEffect(){const e=new T.POSTPROCESSING.MODULE.SMAAEffect({preset:this.preset?.value??T.POSTPROCESSING.MODULE.SMAAPreset.HIGH,edgeDetectionMode:T.POSTPROCESSING.MODULE.EdgeDetectionMode.LUMA});return this.preset.onValueChanged=t=>{fI&&console.log("Antialiasing preset changed to",t),e.applyPreset(t)},e}}gI([u(U)],Uh.prototype,"preset"),un("Antialiasing",Uh);var yI=Object.defineProperty,U0=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&yI(e,t,n),n};const nm=class eC extends st{static useSelectiveBloom=!1;get typeName(){return"Bloom"}threshold=new U(.9);intensity=new U(1);scatter=new U(.7);selectiveBloom;init(){this.threshold.valueProcessor=e=>e,this.intensity.valueProcessor=e=>e,this.scatter.valueProcessor=e=>e}onCreateEffect(){let e;if(this.selectiveBloom==null&&(this.selectiveBloom=eC.useSelectiveBloom),this.selectiveBloom){const t=e=new T.POSTPROCESSING.MODULE.SelectiveBloomEffect(this.context.scene,this.context.mainCamera,{blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});t.inverted=!0}else e=new T.POSTPROCESSING.MODULE.BloomEffect({blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});return this.intensity.onValueChanged=t=>{e.intensity=t},this.threshold.onValueChanged=t=>{e.luminanceMaterial.threshold=Math.pow(t,2.2)},this.scatter.onValueChanged=t=>{e.luminancePass.enabled=!0,e.luminanceMaterial.smoothing=t,e.mipmapBlurPass&&(e.mipmapBlurPass.radius=Ao.lerp(.1,.9,t))},e}};U0([u(U)],nm.prototype,"threshold"),U0([u(U)],nm.prototype,"intensity"),U0([u(U)],nm.prototype,"scatter");let om=nm;un("Bloom",om);var bI=Object.defineProperty,_I=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&bI(e,t,n),n};class zh extends st{get typeName(){return"ChromaticAberration"}intensity=new U(0);onCreateEffect(){const e=new T.POSTPROCESSING.MODULE.ChromaticAberrationEffect;return e.offset=new K(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}}_I([u(U)],zh.prototype,"intensity"),un("ChromaticAberration",zh);var Nh=(o=>(o[o.None=0]="None",o[o.Neutral=1]="Neutral",o[o.ACES=2]="ACES",o[o.AgX=3]="AgX",o[o.KhronosNeutral=4]="KhronosNeutral",o))(Nh||{});const sS=new Map;function z0(o){switch(o){case 0:return Vm;case 1:return Wm;case 2:return Ld;case 3:return Id;case 4:return ja;default:return sS.has(o)||(sS.set(o,!0),console.warn("[Postprocessing] Unknown tone mapping mode",o)),ja}}function vI(o){switch(o){case Vm:return 0;case Ld:return 2;case Id:return 3;case ja:return 1;case Wm:return 1;default:return 0}}function sm(o){switch(o){case Vm:return T.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR;case Ld:return T.POSTPROCESSING.MODULE.ToneMappingMode.ACES_FILMIC;case Id:return T.POSTPROCESSING.MODULE.ToneMappingMode.AGX;case ja:return T.POSTPROCESSING.MODULE.ToneMappingMode.NEUTRAL;case Wm:return T.POSTPROCESSING.MODULE.ToneMappingMode.REINHARD;default:return T.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR}}var wI=Object.defineProperty,rS=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&wI(e,t,n),n};const N0=w("debugpost");class ir extends st{get typeName(){return"ToneMapping"}mode=new U(void 0);exposure=new U(1);setMode(e){const t=Nh[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=nS(this);e&&super.onEffectEnabled(e)}_tonemappingEffect=null;onCreateEffect(){if(this.mode.isInitialized==!1){const i=vI(this.context.renderer.toneMapping);N0&&console.log("[PostProcessing] Initializing ToneMapping mode to renderer.toneMapping",this.context.renderer.toneMapping+" \u2192 "+i),this.mode.initialize(i)}this._tonemappingEffect?.dispose();const e=z0(this.mode.value),t=this._tonemappingEffect=new T.POSTPROCESSING.MODULE.ToneMappingEffect({mode:sm(e)});return this.mode.onValueChanged=i=>{if(typeof i=="string")i=aw(i),t.mode=sm(i);else{const n=z0(i);t.mode=sm(n)}t.name="ToneMapping ("+Nh[i]+")",N0&&console.log("[PostProcessing] ToneMapping mode changed to",Nh[i],e,t.mode)},N0&&console.log("[PostProcessing] Use ToneMapping",Nh[this.mode.value],e,t.mode,"renderer.tonemapping: "+this.context.renderer.toneMapping),t}onBeforeRender(){if(this._tonemappingEffect&&this.postprocessingContext?.handler.getEffectIsActive(this._tonemappingEffect)&&(this.mode.overrideState&&(this.context.renderer.toneMapping=z0(this.mode.value)),this.exposure.overrideState&&this.exposure.value!==void 0)){const e=Math.max(0,this.exposure.value);this.context.renderer.toneMappingExposure=e}}}rS([u(U)],ir.prototype,"mode"),rS([u(U)],ir.prototype,"exposure"),un("Tonemapping",ir);var xI=Object.defineProperty,rm=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&xI(e,t,n),n};class nr extends st{get typeName(){return"ColorAdjustments"}remap=!0;postExposure=new U(1);contrast=new U(0);hueShift=new U(0);saturation=new U(0);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(){const e=[];let t=this.postprocessingContext?.components.find(s=>s instanceof ir);t||(t=new ir,this.postprocessingContext?.components.push(t)),this.postExposure.onValueChanged=s=>{this.postExposure.overrideState&&t?t.exposure.value=s: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 i=new T.POSTPROCESSING.MODULE.BrightnessContrastEffect;this.contrast.onValueChanged=s=>i.contrast=s;const n=new T.POSTPROCESSING.MODULE.HueSaturationEffect;return this.hueShift.onValueChanged=s=>n.hue=s,this.saturation.onValueChanged=s=>n.saturation=s,e.push(i),e.push(n),e}}rm([u(U)],nr.prototype,"postExposure"),rm([u(U)],nr.prototype,"contrast"),rm([u(U)],nr.prototype,"hueShift"),rm([u(U)],nr.prototype,"saturation"),un("ColorAdjustments",nr);var SI=Object.defineProperty,ma=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&SI(e,t,n),n};const CI=w("debugpost");class Un extends st{get typeName(){return"DepthOfField"}mode;focusDistance=new U(1);focalLength=new U(.2);aperture=new U(20);gaussianMaxRadius=new U;resolutionScale=new U(1/window.devicePixelRatio);bokehScale=new U;init(){this.focalLength.valueProcessor=t=>{const i=t/300;return D.lerp(2,.01,i)};const e=20;this.aperture.valueProcessor=t=>{const i=1-t/32;return D.lerp(1,e,i)}}onCreateEffect(){if(this.mode===0){CI&&console.warn("DepthOfField: Mode is set to Off");return}const e=new T.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(){}}ma([u()],Un.prototype,"mode"),ma([u(U)],Un.prototype,"focusDistance"),ma([u(U)],Un.prototype,"focalLength"),ma([u(U)],Un.prototype,"aperture"),ma([u(U)],Un.prototype,"gaussianMaxRadius"),ma([u(U)],Un.prototype,"resolutionScale"),ma([u(U)],Un.prototype,"bokehScale"),un("DepthOfField",Un);class Wh extends st{effect;constructor(e){super(),this.effect=e}get typeName(){return this.effect.constructor.name}onCreateEffect(){return this.effect}}var PI=Object.defineProperty,OI=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&PI(e,t,n),n};class Vh extends st{get typeName(){return"PixelationEffect"}granularity=new U(10);onCreateEffect(){const e=new T.POSTPROCESSING.MODULE.PixelationEffect;return this.granularity.onValueChanged=t=>{e.granularity=t},e}}OI([u(U)],Vh.prototype,"granularity"),un("PixelationEffect",Vh);var kI=Object.defineProperty,$h=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&kI(e,t,n),n};class rs extends st{get typeName(){return"ScreenSpaceAmbientOcclusion"}intensity=new U(2);falloff=new U(1);samples=new U(9);color=new U(new oe(0,0,0));luminanceInfluence=new U(.7);onBeforeRender(){if(this._ssao&&this.context.mainCamera instanceof de){const e=this.context.mainCamera.far-this.context.mainCamera.near;this._ssao.ssaoMaterial.worldDistanceFalloff=e*.01,this._ssao.ssaoMaterial.worldDistanceThreshold=this.context.mainCamera.far}}_ssao;onCreateEffect(){const e=this.context.mainCamera,t=new T.POSTPROCESSING.MODULE.NormalPass(this.context.scene,e),i=new T.POSTPROCESSING.MODULE.DepthDownsamplingPass({normalBuffer:t.texture,resolutionScale:.5}),n=this._ssao=new T.POSTPROCESSING.MODULE.SSAOEffect(e,t.texture,{normalDepthBuffer:i.texture,worldDistanceThreshold:1,worldDistanceFalloff:1,worldProximityThreshold:.1,worldProximityFalloff:2,intensity:1,blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.MULTIPLY,luminanceInfluence:.5});this.intensity.onValueChanged=r=>{n.intensity=r},this.falloff.onValueChanged=r=>{n.ssaoMaterial.radius=r*.1},this.samples.onValueChanged=r=>{n.ssaoMaterial.samples=r},this.color.onValueChanged=r=>{n.color||(n.color=new oe),n.color.copy(r)},this.luminanceInfluence.onValueChanged=r=>{n.luminanceInfluence=r};const s=new Array;return s.push(t),s.push(i),s.push(n),s}}$h([u(U)],rs.prototype,"intensity"),$h([u(U)],rs.prototype,"falloff"),$h([u(U)],rs.prototype,"samples"),$h([u(U)],rs.prototype,"color"),$h([u(U)],rs.prototype,"luminanceInfluence"),un("ScreenSpaceAmbientOcclusion",rs);var MI=Object.defineProperty,ga=(o,e,t,i)=>{for(var n=void 0,s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&MI(e,t,n),n};const RI=w("debugN8AO");var W0=(o=>(o[o.Performance=0]="Performance",o[o.Low=1]="Low",o[o.Medium=2]="Medium",o[o.High=3]="High",o[o.Ultra=4]="Ultra",o))(W0||{});class zn extends st{get typeName(){return"ScreenSpaceAmbientOcclusionN8"}get pass(){return this._ssao}gammaCorrection=!0;aoRadius=new U(1);falloff=new U(1);intensity=new U(1);color=new U(new oe(0,0,0));screenspaceRadius=!1;quality=2;_ssao;onValidate(){this._ssao&&(this._ssao.setQualityMode(W0[this.quality]),this._ssao.configuration.gammaCorrection=this.gammaCorrection,this._ssao.configuration.screenSpaceRadius=this.screenspaceRadius)}onCreateEffect(){const e=this.context.mainCamera,t=this.context.domWidth,i=this.context.domHeight,n=this._ssao=new T.POSTPROCESSING_AO.MODULE.N8AOPostPass(this.context.scene,e,t,i);n.name="SSAO_N8";const s=W0[this.quality];if(n.setQualityMode(s),n.configuration.transparencyAware=!1,n.configuration.halfRes=window.devicePixelRatio>1,n.effectCompositerQuad?.material){const a=n.effectCompositerQuad.material;a.fragmentShader=a.fragmentShader.replace(`if (depth == 1.0) {
|
|
1311
1311
|
texel = vec4(0.0, 0.0, 0.0, 1.0);`,`if (depth == 1.0) {
|
|
1312
1312
|
gl_FragColor = sceneTexel;
|
|
1313
1313
|
return;`),a.needsUpdate=!0}const r=new Gn(t,i);return n.configuration.beautyRenderTarget=r,n.configuration.autoRenderBeauty=!1,n.configuration.gammaCorrection=this.gammaCorrection,n.configuration.screenSpaceRadius=this.screenspaceRadius,RI&&(n.enableDebugMode(),console.log(n),setInterval(()=>{console.log("SSAO",n.lastTime)},1e3),setInterval(()=>{console.log("SSAO",n.enabled,{ssao:n,autoRenderBeauty:n.configuration.autoRenderBeauty})},4e3)),this.intensity.onValueChanged=a=>{n.configuration.intensity=a},this.falloff.onValueChanged=a=>{n.configuration.distanceFalloff=a},this.aoRadius.onValueChanged=a=>{n.configuration.aoRadius=a},this.color.onValueChanged=a=>{n.color||(n.color=new oe),n.configuration.color.copy(a)},n}}ga([Mt(),u()],zn.prototype,"gammaCorrection"),ga([u(U)],zn.prototype,"aoRadius"),ga([u(U)],zn.prototype,"falloff"),ga([u(U)],zn.prototype,"intensity"),ga([u(U)],zn.prototype,"color"),ga([Mt(),u()],zn.prototype,"screenspaceRadius"),ga([Mt(),u()],zn.prototype,"quality"),un("ScreenSpaceAmbientOcclusionN8",zn);var EI=Object.defineProperty,TI=Object.getOwnPropertyDescriptor,aS=(o,e,t,i)=>{for(var n=TI(e,t),s=o.length-1,r;s>=0;s--)(r=o[s])&&(n=r(e,t,n)||n);return n&&EI(e,t,n),n};class Hh extends st{get typeName(){return"Sharpening"}order=mt.Sharpening;_effect;onCreateEffect(){return this._effect??=new(AI()),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}_amount=1;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}_radius=1}aS([u()],Hh.prototype,"amount"),aS([u()],Hh.prototype,"radius");function AI(){const o=`
|