@needle-tools/engine 5.1.0-canary.b4276b2 → 5.1.0-canary.be2bf97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{needle-engine.bundle-CPR-xoaB.umd.cjs → needle-engine.bundle-DTfojsUD.umd.cjs} +3 -3
- package/dist/{needle-engine.bundle-gJMpYUpr.js → needle-engine.bundle-DuRtL0ah.js} +2 -2
- package/dist/{needle-engine.bundle-6Gf-qAUW.min.js → needle-engine.bundle-gjRMqYLb.min.js} +1 -1
- package/dist/needle-engine.d.ts +22 -22
- 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/needle-engine.d.ts +1 -0
- package/package.json +1 -1
- package/plugins/dts-generator/dts.codegen.js +5 -5
- package/plugins/dts-generator/glb.extractor.js +12 -1
package/dist/{needle-engine.bundle-CPR-xoaB.umd.cjs → needle-engine.bundle-DTfojsUD.umd.cjs}
RENAMED
|
@@ -140,7 +140,7 @@ void main(){
|
|
|
140
140
|
#__vconsole .vc-mask {
|
|
141
141
|
overflow: hidden;
|
|
142
142
|
}
|
|
143
|
-
`,Io?.prepend(i),s===!0&&kv()<=0&&qv(),console.log("🌵 Debug console has loaded")}},e.onerror=()=>{console.warn("🌵 Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),Pl=!1,ei=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function CC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("needle-console","🌵 Inspect glTF"),e=()=>document.querySelector("#__vc_plug_"+s._id+" iframe");return s.on("renderTab",function(t){const i=globalThis["needle:codegen_files"];if(!i||i.length===0)return;let n=globalThis["needle:codegen_files"][0];const o=n.indexOf("?");o>-1&&(n=n.substring(0,o));const a=location.protocol+"//"+location.host+location.pathname+"/"+n,l=encodeURIComponent(a);s.fullUrl="https://viewer.needle.tools?inspect&file="+l;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';t(h)}),s.on("show",function(){const t=e();t&&t.src!==s.fullUrl&&(t.src=s.fullUrl)}),s.on("hide",function(){const t=e();t&&(t.src="")}),s.on("addTopBar",function(t){var i=new Array;i.push({name:"Open in new window ↗",onClick:function(n){window.open(s.fullUrl,"_blank"),ei?.hide()}}),i.push({name:"Reload",onClick:function(n){const o=e();o&&(o.src=s.fullUrl)}}),i.push({name:"Fullscreen",onClick:function(n){const o=e();o.requestFullscreen?o.requestFullscreen():o.webkitRequestFullscreen instanceof Function&&o.webkitRequestFullscreen()}}),t(i)}),s}const Hp="padding: 10px; font-family: monospace;",v_="margin-bottom: 10px;",jo="margin-bottom: 10px; margin-top: 15px;",PC="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",Xv="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",OC=Xv,MC=Xv+" word-break: break-all;";function An(s,e=!1){e&&s.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${PC}'>`;t+="<tbody>";for(const i of s){const n=typeof i.value=="boolean"?i.value?"✅":"❌":i.value;t+=`<tr><td style='${OC}'>${i.label}</td><td style='${MC}'>${n}</td></tr>`}return t+="</tbody></table>",t}function Qv(){try{if(document.createElement("canvas").getContext("webgl2"))return"✅"}catch{}return"❌"}function kC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("device-utilities","📱 Device Info");return s.on("renderTab",function(e){let t=`<div style='${Hp}'>`;const i=FC();t+=`<h3 style='${v_}'>Device: ${i}</h3>`,t+=An([{label:"💻 Desktop",value:exports.DeviceUtilities.isDesktop()},{label:"📱 Mobile Device",value:exports.DeviceUtilities.isMobileDevice()},{label:"🍎 iOS",value:exports.DeviceUtilities.isiOS()},{label:"📱 iPad",value:exports.DeviceUtilities.isiPad()},{label:"🤖 Android",value:exports.DeviceUtilities.isAndroidDevice()},{label:"🦊 Mozilla XR",value:exports.DeviceUtilities.isMozillaXR()},{label:"🌵 Needle App Clip",value:exports.DeviceUtilities.isNeedleAppClip()},{label:"🍏 macOS",value:exports.DeviceUtilities.isMacOS()},{label:"👓 VisionOS",value:exports.DeviceUtilities.isVisionOS()},{label:"🧭 Safari",value:exports.DeviceUtilities.isSafari()},{label:"🕶️ Meta Quest",value:exports.DeviceUtilities.isQuest()},{label:"🔗 QuickLook AR Support",value:exports.DeviceUtilities.supportsQuickLookAR()}],!0);const n=[],o=exports.DeviceUtilities.getiOSVersion();o&&n.push({label:"🍎 iOS Version",value:o});const r=exports.DeviceUtilities.getChromeVersion();r&&n.push({label:"🌐 Chrome Version",value:r});const a=exports.DeviceUtilities.getSafariVersion();a&&n.push({label:"🧭 Safari Version",value:a}),n.length>0&&(t+=An(n,!1)),t+="</div>",t+=`<div style='${Hp} 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?"✅":"❌"},{label:"WebGPU",value:"gpu"in navigator?"✅":"❌"},{label:"WebGL 2",value:Qv()}];t+=An(l,!1),t+="</div>",e(t)}),s}function EC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("graphics-info","🎨 Graphics Info");return s.on("renderTab",async function(e){let t=`<div style='${Hp}'>`;const i=RC();i.length>0&&(t+=`<h3 style='${jo}'>General GPU Info</h3>`,t+=An(i,!1));const n=AC();n.length>0&&(t+=`<h3 style='${jo}'>WebGL</h3>`,t+=An(n,!1));const o=DC();o.length>0&&(t+=`<h3 style='${jo}'>WebGL 2 Features</h3>`,t+=An(o,!1));const r=LC();r.length>0&&(t+=`<h3 style='${jo}'>WebGL Limits</h3>`,t+=An(r,!1));const a=IC();a.length>0&&(t+=`<h3 style='${jo}'>Texture Formats</h3>`,t+=An(a,!1));const l=await jC();if(l.length>0&&(t+=`<h3 style='${jo}'>WebGPU</h3>`,t+=An(l,!1)),exports.DeviceUtilities.isSafari()){const h=BC();h.length>0&&(t+=`<h3 style='${jo}'>Safari GPU Info</h3>`,t+=An(h,!1))}t+="</div>",e(t)}),s}function RC(){const s=[],e=window.devicePixelRatio;s.push({label:"Device Pixel Ratio",value:e.toString()}),s.push({label:"Width (px)",value:(window.innerWidth*e).toString()}),s.push({label:"Height (px)",value:(window.innerHeight*e).toString()});const i=exports.DeviceUtilities.isMobileDevice()?150:96,n=screen.width/i,o=screen.height/i,r=n*2.54,a=o*2.54;s.push({label:"Estimated Width (cm)",value:r.toFixed(1)}),s.push({label:"Estimated Height (cm)",value:a.toFixed(1)});const l=Yv();if(l){s.push({label:"GPU",value:l.renderer}),s.push({label:"Driver",value:l.vendor}),s.push({label:"ANGLE",value:l.angle||"Not detected"});const h=TC(l.renderer);h&&(h.manufacturer&&s.push({label:"Manufacturer",value:h.manufacturer}),h.cardVersion&&s.push({label:"Card Version",value:h.cardVersion}),h.brand&&s.push({label:"Brand",value:h.brand}),s.push({label:"Integrated",value:h.integrated?"Yes":"No"}),h.layer&&s.push({label:"WebGL Layer",value:h.layer}))}return s}function TC(s){if(!s)return null;const e=(h,d)=>{const u=d.match(h);return u&&u[0]},t=e(/(ANGLE)/g,s)||void 0,i=e(/((NVIDIA|AMD|Intel)[^\d]*[^\s]+)/,s)||s,n=i.split(" ");n.shift();const o=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:o,cardVersion:r,brand:a,integrated:o==="Intel",layer:t,card:i}}function AC(){const s=[],e=Yv();return e&&(s.push({label:"📊 WebGL Version",value:e.version}),s.push({label:"🎮 WebGL 2 Available",value:Qv()})),s}function DC(){const s=[];try{const t=document.createElement("canvas").getContext("webgl2");if(!t)return s;s.push({label:"Float Color Buffer",value:t.getExtension("EXT_color_buffer_float")?"✅":"❌"}),s.push({label:"Anisotropic Filtering",value:t.getExtension("EXT_texture_filter_anisotropic")?"✅":"❌"}),s.push({label:"Float Texture Linear",value:t.getExtension("OES_texture_float_linear")?"✅":"❌"}),s.push({label:"S3TC Compression",value:t.getExtension("WEBGL_compressed_texture_s3tc")?"✅":"❌"}),s.push({label:"ETC Compression",value:t.getExtension("WEBGL_compressed_texture_etc")?"✅":"❌"}),s.push({label:"PVRTC Compression",value:t.getExtension("WEBGL_compressed_texture_pvrtc")?"✅":"❌"}),s.push({label:"ASTC Compression",value:t.getExtension("WEBGL_compressed_texture_astc")?"✅":"❌"})}catch{}return s}function LC(){const s=[];try{const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t)return s;const i=t instanceof WebGL2RenderingContext;s.push({label:"📏 Max Texture Size",value:t.getParameter(t.MAX_TEXTURE_SIZE).toString()}),s.push({label:"🎨 Max Renderbuffer Size",value:t.getParameter(t.MAX_RENDERBUFFER_SIZE).toString()}),s.push({label:"🔗 Max Vertex Attribs",value:t.getParameter(t.MAX_VERTEX_ATTRIBS).toString()}),s.push({label:"🎯 Max Texture Units",value:t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS).toString()}),i&&(s.push({label:"⚡ Max Samples",value:t.getParameter(t.MAX_SAMPLES).toString()}),s.push({label:"🔄 Max Uniform Buffer Bindings",value:t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),s.push({label:"📐 Max 3D Texture Size",value:t.getParameter(t.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return s}function IC(){const s=[];try{document.createElement("canvas").getContext("webgl")&&(s.push({label:"WebGL 1 RGBA",value:"✅"}),s.push({label:"WebGL 1 RGB",value:"✅"}));const n=document.createElement("canvas").getContext("webgl2");n&&(s.push({label:"WebGL 2 RGBA32F",value:n.getExtension("EXT_color_buffer_float")?"✅":"❌"}),s.push({label:"WebGL 2 RGB32F",value:n.getExtension("EXT_color_buffer_float")?"✅":"❌"}),s.push({label:"WebGL 2 R11F_G11F_B10F",value:"✅"}),s.push({label:"WebGL 2 RGB565",value:"✅"}),s.push({label:"WebGL 2 RGB5_A1",value:"✅"}),s.push({label:"WebGL 2 RGBA4444",value:"✅"}))}catch{}return s}async function jC(){const s=[];if(!("gpu"in navigator))return s.push({label:"🚀 WebGPU Support",value:"❌ Not supported"}),s;s.push({label:"🚀 WebGPU Support",value:"✅ Supported"});try{const e=await navigator.gpu.requestAdapter();if(!e)return s.push({label:"🎯 Adapter",value:"No adapter available"}),s;s.push({label:"🎯 Adapter",value:e.name||"Unknown Adapter"});const t=await e.requestDevice();s.push({label:"🔧 Device",value:t.label||"WebGPU Device"}),s.push({label:"📏 Max Texture 2D",value:t.limits.maxTextureDimension2D.toString()}),s.push({label:"📐 Max Texture 3D",value:t.limits.maxTextureDimension3D.toString()}),s.push({label:"📊 Max Texture Array Layers",value:t.limits.maxTextureArrayLayers.toString()}),s.push({label:"💾 Max Buffer Size",value:`${(t.limits.maxBufferSize/1024/1024).toFixed(1)}MB`}),s.push({label:"🔗 Max Bind Groups",value:t.limits.maxBindGroups.toString()})}catch(e){s.push({label:"❌ Error",value:e.message})}return s}function Yv(){try{const s=document.createElement("canvas"),e=s.getContext("webgl2")||s.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),o=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:o,angle:r}}catch{return null}}function BC(){const s=[];try{const t=document.createElement("canvas").getContext("webgl");if(t){const i=t.getExtension("WEBGL_debug_renderer_info");if(i){const n=t.getParameter(i.UNMASKED_RENDERER_WEBGL);n&&n.includes("Apple")&&s.push({label:"🍎 Apple GPU",value:n})}}}catch{}try{const t=document.createElement("canvas").getContext("webgl");t&&(t.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&s.push({label:"🗜️ PVRTC Support",value:"✅"})}catch{}return s}function FC(){return exports.DeviceUtilities.isQuest()?"Meta Quest":exports.DeviceUtilities.isVisionOS()?"Vision Pro":exports.DeviceUtilities.isiOS()?exports.DeviceUtilities.isiPad()?"iPad":"iPhone/iPod":exports.DeviceUtilities.isAndroidDevice()?"Android Device":exports.DeviceUtilities.isMozillaXR()?"Mozilla XR Browser":exports.DeviceUtilities.isNeedleAppClip()?"Needle App Clip":exports.DeviceUtilities.isMacOS()?"Mac":exports.DeviceUtilities.isDesktop()?"Desktop PC":"Unknown Device"}function UC(){const s=document.querySelector("#__vconsole .vc-switch");return s||null}function zC(){const s=document.querySelector("#__vconsole");return s||null}const Uh=x("debugtypes");class NC{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){Uh&&console.warn("TypeStore: Created",this)}add(e,t){Uh&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?Uh&&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){Uh&&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 VC=Symbol("BuiltInType"),P=new NC,Jm=function(s){P.get(s.name)||P.add(s.name,s)};class $C{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)}}exports.AnimationUtils=void 0;(s=>{function e(d,u){const f=d.getRoot();return f&&(f.userData.static||f.matrixAutoUpdate===!1||f.matrixWorldAutoUpdate===!1)?((u===!0||u===void 0&&A())&&console.warn(`AnimationUtils: The root object (${f.name||f.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:f.userData.static,name:f.userData.name,tag:f.userData.tag,matrixAutoUpdate:f.matrixAutoUpdate,matrixWorldAutoUpdate:f.matrixWorldAutoUpdate}),!1):!0}s.testIfRootCanAnimate=e;function t(d){const u=d._actions;return u||null}s.tryGetActionsFromMixer=t;function i(d,u){if(u||(u=new Array),d)d.animations&&u.push(...d.animations);else return u;if(d.children)for(const f of d.children)i(f,u);return u}s.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function o(d,u,f){if(!d)return;if(d[n]===void 0){if(!f)return;d[n]=new Set}const m=d[n];f?m.add(u):m.has(u)&&m.delete(u)}s.setObjectAnimated=o;function r(d){if(!d)return!1;const u=d[n];return u!==void 0&&u.size>0}s.getObjectAnimated=r;function a(d){if(!d||!d.animations)return console.debug("No animations found in file"),null;const u="scene"in d?d.scene:d,f=new Array;for(let g=0;g<d.animations.length;g++){const b=d.animations[g];if(!b.tracks||b.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const y in b.tracks){const _=b.tracks[y],v=c.PropertyBinding.parseTrackName(_.name);let w=c.PropertyBinding.findNode(u,v.nodeName);if(!w){const O=_.__objectName??_.name.substring(0,_.name.indexOf("."));if(w=u.getObjectByProperty("uuid",O),!w)continue}let k=m(w)||m(u);if(!k){const O=P.get("Animation");if(k=u.addComponent(O),!k){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}f.push(k),k.addClip&&k.addClip(b)}}return f;function m(g){if(!g)return null;const b=g.userData?.components;if(b&&b.length>0)for(let y=0;y<b.length;y++){const _=b[y];if(_.isAnimationComponent===!0)return _}return m(g.parent)}}s.autoplayAnimations=a;function l(){return new c.AnimationClip("empty",0,[])}s.emptyClip=l;function h(d){const u=d?.duration??.3;let f={x:1,y:1,z:1};d?.scale!==void 0&&(typeof d.scale=="number"?f={x:d.scale,y:d.scale,z:d.scale}:f=d.scale);const m=d?.type??"linear",g=d?.scaleFactor??1.2,b=new Array,y=new Array;switch(m){case"linear":b.push(0,u),y.push(f.x,f.y,f.z,f.x*g,f.y*g,f.z*g);break;case"spring":b.push(0,u*.3,u*.5,u*.7,u*.9,u),y.push(f.x,f.y,f.z,f.x*g,f.y*g,f.z*g,f.x*.9,f.y*.9,f.z*.9,f.x*1.05,f.y*1.05,f.z*1.05,f.x*.98,f.y*.98,f.z*.98,f.x,f.y,f.z);break}const _=new c.KeyframeTrack(".scale",b,y);return new c.AnimationClip("scale",b[b.length-1],[_])}s.createScaleClip=h})(exports.AnimationUtils||(exports.AnimationUtils={}));const Be=function(s){return p(s)},p=function(s){if(s===void 0&&(s=null),!Array.isArray(s))s=w_(s);else for(let e=0;e<s.length;e++){const t=s[e];s[e]=w_(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]=s}};function w_(s){switch(s?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return s}const x_=x("debugcomponentevents");class xu{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 Kv=x("debugdefines");yo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');yo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');yo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');yo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');yo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.0-alpha.1";');yo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');yo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Sun Apr 12 2026 15:03:40 GMT+0000 (Coordinated Universal Time)";');yo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const ri="5.1.0-alpha.1",Ra="undefined",xc="Sun Apr 12 2026 15:03:40 GMT+0000 (Coordinated Universal Time)";Kv&&console.log(`Engine version: ${ri} (generator: ${Ra})
|
|
143
|
+
`,Io?.prepend(i),s===!0&&kv()<=0&&qv(),console.log("🌵 Debug console has loaded")}},e.onerror=()=>{console.warn("🌵 Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),Pl=!1,ei=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function CC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("needle-console","🌵 Inspect glTF"),e=()=>document.querySelector("#__vc_plug_"+s._id+" iframe");return s.on("renderTab",function(t){const i=globalThis["needle:codegen_files"];if(!i||i.length===0)return;let n=globalThis["needle:codegen_files"][0];const o=n.indexOf("?");o>-1&&(n=n.substring(0,o));const a=location.protocol+"//"+location.host+location.pathname+"/"+n,l=encodeURIComponent(a);s.fullUrl="https://viewer.needle.tools?inspect&file="+l;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';t(h)}),s.on("show",function(){const t=e();t&&t.src!==s.fullUrl&&(t.src=s.fullUrl)}),s.on("hide",function(){const t=e();t&&(t.src="")}),s.on("addTopBar",function(t){var i=new Array;i.push({name:"Open in new window ↗",onClick:function(n){window.open(s.fullUrl,"_blank"),ei?.hide()}}),i.push({name:"Reload",onClick:function(n){const o=e();o&&(o.src=s.fullUrl)}}),i.push({name:"Fullscreen",onClick:function(n){const o=e();o.requestFullscreen?o.requestFullscreen():o.webkitRequestFullscreen instanceof Function&&o.webkitRequestFullscreen()}}),t(i)}),s}const Hp="padding: 10px; font-family: monospace;",v_="margin-bottom: 10px;",jo="margin-bottom: 10px; margin-top: 15px;",PC="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",Xv="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",OC=Xv,MC=Xv+" word-break: break-all;";function An(s,e=!1){e&&s.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${PC}'>`;t+="<tbody>";for(const i of s){const n=typeof i.value=="boolean"?i.value?"✅":"❌":i.value;t+=`<tr><td style='${OC}'>${i.label}</td><td style='${MC}'>${n}</td></tr>`}return t+="</tbody></table>",t}function Qv(){try{if(document.createElement("canvas").getContext("webgl2"))return"✅"}catch{}return"❌"}function kC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("device-utilities","📱 Device Info");return s.on("renderTab",function(e){let t=`<div style='${Hp}'>`;const i=FC();t+=`<h3 style='${v_}'>Device: ${i}</h3>`,t+=An([{label:"💻 Desktop",value:exports.DeviceUtilities.isDesktop()},{label:"📱 Mobile Device",value:exports.DeviceUtilities.isMobileDevice()},{label:"🍎 iOS",value:exports.DeviceUtilities.isiOS()},{label:"📱 iPad",value:exports.DeviceUtilities.isiPad()},{label:"🤖 Android",value:exports.DeviceUtilities.isAndroidDevice()},{label:"🦊 Mozilla XR",value:exports.DeviceUtilities.isMozillaXR()},{label:"🌵 Needle App Clip",value:exports.DeviceUtilities.isNeedleAppClip()},{label:"🍏 macOS",value:exports.DeviceUtilities.isMacOS()},{label:"👓 VisionOS",value:exports.DeviceUtilities.isVisionOS()},{label:"🧭 Safari",value:exports.DeviceUtilities.isSafari()},{label:"🕶️ Meta Quest",value:exports.DeviceUtilities.isQuest()},{label:"🔗 QuickLook AR Support",value:exports.DeviceUtilities.supportsQuickLookAR()}],!0);const n=[],o=exports.DeviceUtilities.getiOSVersion();o&&n.push({label:"🍎 iOS Version",value:o});const r=exports.DeviceUtilities.getChromeVersion();r&&n.push({label:"🌐 Chrome Version",value:r});const a=exports.DeviceUtilities.getSafariVersion();a&&n.push({label:"🧭 Safari Version",value:a}),n.length>0&&(t+=An(n,!1)),t+="</div>",t+=`<div style='${Hp} 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?"✅":"❌"},{label:"WebGPU",value:"gpu"in navigator?"✅":"❌"},{label:"WebGL 2",value:Qv()}];t+=An(l,!1),t+="</div>",e(t)}),s}function EC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("graphics-info","🎨 Graphics Info");return s.on("renderTab",async function(e){let t=`<div style='${Hp}'>`;const i=RC();i.length>0&&(t+=`<h3 style='${jo}'>General GPU Info</h3>`,t+=An(i,!1));const n=AC();n.length>0&&(t+=`<h3 style='${jo}'>WebGL</h3>`,t+=An(n,!1));const o=DC();o.length>0&&(t+=`<h3 style='${jo}'>WebGL 2 Features</h3>`,t+=An(o,!1));const r=LC();r.length>0&&(t+=`<h3 style='${jo}'>WebGL Limits</h3>`,t+=An(r,!1));const a=IC();a.length>0&&(t+=`<h3 style='${jo}'>Texture Formats</h3>`,t+=An(a,!1));const l=await jC();if(l.length>0&&(t+=`<h3 style='${jo}'>WebGPU</h3>`,t+=An(l,!1)),exports.DeviceUtilities.isSafari()){const h=BC();h.length>0&&(t+=`<h3 style='${jo}'>Safari GPU Info</h3>`,t+=An(h,!1))}t+="</div>",e(t)}),s}function RC(){const s=[],e=window.devicePixelRatio;s.push({label:"Device Pixel Ratio",value:e.toString()}),s.push({label:"Width (px)",value:(window.innerWidth*e).toString()}),s.push({label:"Height (px)",value:(window.innerHeight*e).toString()});const i=exports.DeviceUtilities.isMobileDevice()?150:96,n=screen.width/i,o=screen.height/i,r=n*2.54,a=o*2.54;s.push({label:"Estimated Width (cm)",value:r.toFixed(1)}),s.push({label:"Estimated Height (cm)",value:a.toFixed(1)});const l=Yv();if(l){s.push({label:"GPU",value:l.renderer}),s.push({label:"Driver",value:l.vendor}),s.push({label:"ANGLE",value:l.angle||"Not detected"});const h=TC(l.renderer);h&&(h.manufacturer&&s.push({label:"Manufacturer",value:h.manufacturer}),h.cardVersion&&s.push({label:"Card Version",value:h.cardVersion}),h.brand&&s.push({label:"Brand",value:h.brand}),s.push({label:"Integrated",value:h.integrated?"Yes":"No"}),h.layer&&s.push({label:"WebGL Layer",value:h.layer}))}return s}function TC(s){if(!s)return null;const e=(h,d)=>{const u=d.match(h);return u&&u[0]},t=e(/(ANGLE)/g,s)||void 0,i=e(/((NVIDIA|AMD|Intel)[^\d]*[^\s]+)/,s)||s,n=i.split(" ");n.shift();const o=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:o,cardVersion:r,brand:a,integrated:o==="Intel",layer:t,card:i}}function AC(){const s=[],e=Yv();return e&&(s.push({label:"📊 WebGL Version",value:e.version}),s.push({label:"🎮 WebGL 2 Available",value:Qv()})),s}function DC(){const s=[];try{const t=document.createElement("canvas").getContext("webgl2");if(!t)return s;s.push({label:"Float Color Buffer",value:t.getExtension("EXT_color_buffer_float")?"✅":"❌"}),s.push({label:"Anisotropic Filtering",value:t.getExtension("EXT_texture_filter_anisotropic")?"✅":"❌"}),s.push({label:"Float Texture Linear",value:t.getExtension("OES_texture_float_linear")?"✅":"❌"}),s.push({label:"S3TC Compression",value:t.getExtension("WEBGL_compressed_texture_s3tc")?"✅":"❌"}),s.push({label:"ETC Compression",value:t.getExtension("WEBGL_compressed_texture_etc")?"✅":"❌"}),s.push({label:"PVRTC Compression",value:t.getExtension("WEBGL_compressed_texture_pvrtc")?"✅":"❌"}),s.push({label:"ASTC Compression",value:t.getExtension("WEBGL_compressed_texture_astc")?"✅":"❌"})}catch{}return s}function LC(){const s=[];try{const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t)return s;const i=t instanceof WebGL2RenderingContext;s.push({label:"📏 Max Texture Size",value:t.getParameter(t.MAX_TEXTURE_SIZE).toString()}),s.push({label:"🎨 Max Renderbuffer Size",value:t.getParameter(t.MAX_RENDERBUFFER_SIZE).toString()}),s.push({label:"🔗 Max Vertex Attribs",value:t.getParameter(t.MAX_VERTEX_ATTRIBS).toString()}),s.push({label:"🎯 Max Texture Units",value:t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS).toString()}),i&&(s.push({label:"⚡ Max Samples",value:t.getParameter(t.MAX_SAMPLES).toString()}),s.push({label:"🔄 Max Uniform Buffer Bindings",value:t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),s.push({label:"📐 Max 3D Texture Size",value:t.getParameter(t.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return s}function IC(){const s=[];try{document.createElement("canvas").getContext("webgl")&&(s.push({label:"WebGL 1 RGBA",value:"✅"}),s.push({label:"WebGL 1 RGB",value:"✅"}));const n=document.createElement("canvas").getContext("webgl2");n&&(s.push({label:"WebGL 2 RGBA32F",value:n.getExtension("EXT_color_buffer_float")?"✅":"❌"}),s.push({label:"WebGL 2 RGB32F",value:n.getExtension("EXT_color_buffer_float")?"✅":"❌"}),s.push({label:"WebGL 2 R11F_G11F_B10F",value:"✅"}),s.push({label:"WebGL 2 RGB565",value:"✅"}),s.push({label:"WebGL 2 RGB5_A1",value:"✅"}),s.push({label:"WebGL 2 RGBA4444",value:"✅"}))}catch{}return s}async function jC(){const s=[];if(!("gpu"in navigator))return s.push({label:"🚀 WebGPU Support",value:"❌ Not supported"}),s;s.push({label:"🚀 WebGPU Support",value:"✅ Supported"});try{const e=await navigator.gpu.requestAdapter();if(!e)return s.push({label:"🎯 Adapter",value:"No adapter available"}),s;s.push({label:"🎯 Adapter",value:e.name||"Unknown Adapter"});const t=await e.requestDevice();s.push({label:"🔧 Device",value:t.label||"WebGPU Device"}),s.push({label:"📏 Max Texture 2D",value:t.limits.maxTextureDimension2D.toString()}),s.push({label:"📐 Max Texture 3D",value:t.limits.maxTextureDimension3D.toString()}),s.push({label:"📊 Max Texture Array Layers",value:t.limits.maxTextureArrayLayers.toString()}),s.push({label:"💾 Max Buffer Size",value:`${(t.limits.maxBufferSize/1024/1024).toFixed(1)}MB`}),s.push({label:"🔗 Max Bind Groups",value:t.limits.maxBindGroups.toString()})}catch(e){s.push({label:"❌ Error",value:e.message})}return s}function Yv(){try{const s=document.createElement("canvas"),e=s.getContext("webgl2")||s.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),o=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:o,angle:r}}catch{return null}}function BC(){const s=[];try{const t=document.createElement("canvas").getContext("webgl");if(t){const i=t.getExtension("WEBGL_debug_renderer_info");if(i){const n=t.getParameter(i.UNMASKED_RENDERER_WEBGL);n&&n.includes("Apple")&&s.push({label:"🍎 Apple GPU",value:n})}}}catch{}try{const t=document.createElement("canvas").getContext("webgl");t&&(t.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&s.push({label:"🗜️ PVRTC Support",value:"✅"})}catch{}return s}function FC(){return exports.DeviceUtilities.isQuest()?"Meta Quest":exports.DeviceUtilities.isVisionOS()?"Vision Pro":exports.DeviceUtilities.isiOS()?exports.DeviceUtilities.isiPad()?"iPad":"iPhone/iPod":exports.DeviceUtilities.isAndroidDevice()?"Android Device":exports.DeviceUtilities.isMozillaXR()?"Mozilla XR Browser":exports.DeviceUtilities.isNeedleAppClip()?"Needle App Clip":exports.DeviceUtilities.isMacOS()?"Mac":exports.DeviceUtilities.isDesktop()?"Desktop PC":"Unknown Device"}function UC(){const s=document.querySelector("#__vconsole .vc-switch");return s||null}function zC(){const s=document.querySelector("#__vconsole");return s||null}const Uh=x("debugtypes");class NC{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){Uh&&console.warn("TypeStore: Created",this)}add(e,t){Uh&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?Uh&&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){Uh&&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 VC=Symbol("BuiltInType"),P=new NC,Jm=function(s){P.get(s.name)||P.add(s.name,s)};class $C{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)}}exports.AnimationUtils=void 0;(s=>{function e(d,u){const f=d.getRoot();return f&&(f.userData.static||f.matrixAutoUpdate===!1||f.matrixWorldAutoUpdate===!1)?((u===!0||u===void 0&&A())&&console.warn(`AnimationUtils: The root object (${f.name||f.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:f.userData.static,name:f.userData.name,tag:f.userData.tag,matrixAutoUpdate:f.matrixAutoUpdate,matrixWorldAutoUpdate:f.matrixWorldAutoUpdate}),!1):!0}s.testIfRootCanAnimate=e;function t(d){const u=d._actions;return u||null}s.tryGetActionsFromMixer=t;function i(d,u){if(u||(u=new Array),d)d.animations&&u.push(...d.animations);else return u;if(d.children)for(const f of d.children)i(f,u);return u}s.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function o(d,u,f){if(!d)return;if(d[n]===void 0){if(!f)return;d[n]=new Set}const m=d[n];f?m.add(u):m.has(u)&&m.delete(u)}s.setObjectAnimated=o;function r(d){if(!d)return!1;const u=d[n];return u!==void 0&&u.size>0}s.getObjectAnimated=r;function a(d){if(!d||!d.animations)return console.debug("No animations found in file"),null;const u="scene"in d?d.scene:d,f=new Array;for(let g=0;g<d.animations.length;g++){const b=d.animations[g];if(!b.tracks||b.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const y in b.tracks){const _=b.tracks[y],v=c.PropertyBinding.parseTrackName(_.name);let w=c.PropertyBinding.findNode(u,v.nodeName);if(!w){const O=_.__objectName??_.name.substring(0,_.name.indexOf("."));if(w=u.getObjectByProperty("uuid",O),!w)continue}let k=m(w)||m(u);if(!k){const O=P.get("Animation");if(k=u.addComponent(O),!k){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}f.push(k),k.addClip&&k.addClip(b)}}return f;function m(g){if(!g)return null;const b=g.userData?.components;if(b&&b.length>0)for(let y=0;y<b.length;y++){const _=b[y];if(_.isAnimationComponent===!0)return _}return m(g.parent)}}s.autoplayAnimations=a;function l(){return new c.AnimationClip("empty",0,[])}s.emptyClip=l;function h(d){const u=d?.duration??.3;let f={x:1,y:1,z:1};d?.scale!==void 0&&(typeof d.scale=="number"?f={x:d.scale,y:d.scale,z:d.scale}:f=d.scale);const m=d?.type??"linear",g=d?.scaleFactor??1.2,b=new Array,y=new Array;switch(m){case"linear":b.push(0,u),y.push(f.x,f.y,f.z,f.x*g,f.y*g,f.z*g);break;case"spring":b.push(0,u*.3,u*.5,u*.7,u*.9,u),y.push(f.x,f.y,f.z,f.x*g,f.y*g,f.z*g,f.x*.9,f.y*.9,f.z*.9,f.x*1.05,f.y*1.05,f.z*1.05,f.x*.98,f.y*.98,f.z*.98,f.x,f.y,f.z);break}const _=new c.KeyframeTrack(".scale",b,y);return new c.AnimationClip("scale",b[b.length-1],[_])}s.createScaleClip=h})(exports.AnimationUtils||(exports.AnimationUtils={}));const Be=function(s){return p(s)},p=function(s){if(s===void 0&&(s=null),!Array.isArray(s))s=w_(s);else for(let e=0;e<s.length;e++){const t=s[e];s[e]=w_(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]=s}};function w_(s){switch(s?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return s}const x_=x("debugcomponentevents");class xu{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 Kv=x("debugdefines");yo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');yo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');yo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');yo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');yo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.0-alpha.1";');yo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');yo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Sun Apr 12 2026 15:46:38 GMT+0000 (Coordinated Universal Time)";');yo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const ri="5.1.0-alpha.1",Ra="undefined",xc="Sun Apr 12 2026 15:46:38 GMT+0000 (Coordinated Universal Time)";Kv&&console.log(`Engine version: ${ri} (generator: ${Ra})
|
|
144
144
|
Project built at ${xc}`);const no=NEEDLE_PUBLIC_KEY,Un="needle_isActiveInHierarchy",qo="builtin_components",sc="needle_editor_guid";function yo(s){try{(0,eval)(s)}catch(e){Kv&&console.error(e)}}globalThis.NEEDLE_USE_RAPIER=globalThis.NEEDLE_USE_RAPIER!==void 0?globalThis.NEEDLE_USE_RAPIER:!0;globalThis.NEEDLE_USE_POSTPROCESSING=globalThis.NEEDLE_USE_POSTPROCESSING!==void 0?globalThis.NEEDLE_USE_POSTPROCESSING:!0;const eg={experimentalSmartHierarchyUpdate:!1},yi=Symbol("shadowDomOwner"),WC=x("debugpatch");function Su(s,e,t,i){const n=WC===e;if(!t&&!i)return;const o=e+"___needle";HC(s,e,t,i);const r=Object.getOwnPropertyDescriptor(s,e),a=s[e];n&&console.log("Patch",s.constructor.name,e,r,a),r?(n&&console.log("Apply patch with existing descriptor",s.constructor.name,e,r),typeof r.value=="function"&&(s[e]=C_(r.value,s,e))):(n&&console.log("Create patch with new property",s.constructor.name,e,r),Object.defineProperty(s,e,{set:function(l){if(typeof l=="function")this[o]=C_(l,s,e);else{const h=this[o];Zv(s,e,this,h,l),this[o]=l,Jv(s,e,this,h,l)}},get:function(){const l=this[o];return typeof l=="function"&&l[o]?l[o]:l}}))}function GC(s,e,t){const i=tg(s,e);if(i)for(let n=i.length-1;n>=0;n--){const o=i[n];o.prefix===t&&(o.prefix=null),o.postfix===t&&(o.postfix=null),!o.prefix&&!o.postfix&&i.splice(n,1)}}const S_=Symbol("Needle:Patches:WrappedFunction");function C_(s,e,t){if(s[S_])return s;const i=function(...n){Zv(e,t,this,...n);const o=s.apply(this,n);return Jv(e,t,this,o,...n),o};return i[S_]=!0,i}const xd="Needle:Patches";function qp(){return globalThis[xd]||(globalThis[xd]=new WeakMap),globalThis[xd]}function tg(s,e){const t=qp().get(s);return t?t.get(e):null}function HC(s,e,t,i){let n=qp().get(s);n||(n=new Map,qp().set(s,n));let o=n.get(e);o||(o=[],n.set(e,o)),o.push({prefix:t,postfix:i})}function Zv(s,e,t,...i){if(!t)return;const n=tg(s,e);if(n)for(const o of n)o.prefix?.call(t,...i)}function Jv(s,e,t,i,...n){if(!t)return;const o=tg(s,e);if(o)for(const r of o)r.postfix?.call(t,i,...n)}function qC(s,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>s.time.frame)return window.requestAnimationFrame(()=>i());const r=o.captureCanvas(e);r&&r instanceof Promise?r.then(()=>o.displayUI()):o.displayUI()};const n=Number.parseInt(t.get("spector")||"0")||0;console.log("Scheduled Spector capture at frame #"+n);const o=new window.SPECTOR.Spector;o.spyCanvases=!0,i();return}else A()&&console.debug("Spector available: Add '?spector=<frame>' to the URL to enable it and capture a frame.")}}function e0(s){const e=s;return!!(e.parser&&e.parser.json)}var Cu=(s=>(s[s.None=0]="None",s[s.DontExport=1]="DontExport",s))(Cu||{});const ig=Symbol("component-name");function ng(s){return s&&s.isComponent}const XC=Symbol("object"),Ff=new xi(()=>new c.Vector3,20);class t0{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return Ff.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return Ff.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return Ff.get().set(this._tangentVelocity.x,this._tangentVelocity.y,this._tangentVelocity.z)}constructor(e,t,i,n,o,r){this._point=e,this.distance=t,this._normal=i,this.impulse=n,this.friction=o,this._tangentVelocity=r}}class i0{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 n0{object;collider;constructor(e,t){this.object=e,this.collider=t}}class Yd{constructor(e){this.context=e,this.root.style.cssText=`
|
|
145
145
|
position: absolute;
|
|
146
146
|
width: 1px; height: 1px;
|
|
@@ -878,7 +878,7 @@ Possible solutions:
|
|
|
878
878
|
`,i),this._renderlooperrors>=3&&(console.warn("Stopping render loop due to error"),this.renderer.setAnimationLoop(null),Gt.sendError(U.Current,"renderloop",i instanceof Error?i:new Error(String(i)))),this.domElement.dispatchEvent(new CustomEvent("error",{detail:i}))}else this.internalStep(e,t)}updatePhysics(e){this.internalUpdatePhysics(e)}setCameraFocusRect(e,t){const i=this._focusRect;if(this._focusRect=e,t&&Object.assign(this.focusRectSettings,t),t?.damping===void 0&&i){let n=i;i instanceof HTMLElement&&(n=i.getBoundingClientRect()),n&&"top"in n&&n.bottom>=-100&&n.right>=-100&&n.top<=window.innerHeight+100&&n.left<=window.innerWidth+100&&(this.focusRectSettings.damping=.2)}}get focusRect(){return this._focusRect}get focusRectSize(){const e=this._focusRect;if(e&&(e instanceof DOMRect||"width"in e&&"height"in e&&"x"in e&&"y"in e))return{x:e.x,y:e.y,width:e.width,height:e.height};if(e instanceof HTMLElement){const t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height}}return null}focusRectSettings={damping:0,zoom:1,offsetX:0,offsetY:0};_focusRect=null;_lastTimestamp=0;_accumulatedTime=0;_dispatchReadyAfterFrame=!1;internalStep(e,t){this.internalOnBeforeRender(e,t)!==!1&&(this.internalOnRender(),this.internalOnAfterRender())}internalOnBeforeRender(e,t){this.renderer.info.autoReset=!!t,this.renderer.info.autoReset===!1&&this.renderer.info.reset(),this._needsVisibleUpdate=!0;const i=t!==null&&this._xrFrame===null;if(this._xrFrame=t,i&&this.domElement.dispatchEvent(new CustomEvent("xr-session-started",{detail:{context:this,session:this.xrSession,frame:t}})),this._currentFrameEvent=-1,this.isManagedExternally===!1&&this.isInXR===!1&&this.targetFrameRate!==void 0){this._lastTimestamp===0&&(this._lastTimestamp=e),this._accumulatedTime+=(e-this._lastTimestamp)/1e3,this._lastTimestamp=e;let n=this.targetFrameRate;if(typeof n=="object"&&(n=n.value),this._accumulatedTime<1/(n+1))return!1;this._accumulatedTime=0}if(this._stats?.begin(),U.Current=this,this.onHandlePaused())return!1;for(U.Current=this,this.time.update(),EP&&console.log("FPS",this.time.smoothedFps.toFixed(0)),ru(this),Rd(this.scene),bw(this),Cn(this,-1);this._cameraStack.length>0&&(!this.mainCameraComponent||this.mainCameraComponent.destroyed);){this._cameraStack.splice(this._cameraStack.length-1,1);const n=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(n)}if(this.pre_update_oneshot_callbacks){for(const n in this.pre_update_oneshot_callbacks)this.pre_update_oneshot_callbacks[n]();this.pre_update_oneshot_callbacks.length=0}if(this.pre_update_callbacks)for(const n in this.pre_update_callbacks)this.pre_update_callbacks[n]();this._currentFrameEvent=0;for(let n=0;n<this.scripts_earlyUpdate.length;n++){const o=this.scripts_earlyUpdate[n];o.activeAndEnabled&&o.earlyUpdate!==void 0&&(U.Current=this,o.earlyUpdate())}this.executeCoroutines(0),Cn(this,0),this._currentFrameEvent=1;for(let n=0;n<this.scripts_update.length;n++){const o=this.scripts_update[n];o.activeAndEnabled&&o.update!==void 0&&(U.Current=this,o.update())}this.executeCoroutines(1),Cn(this,1),this._currentFrameEvent=2;for(let n=0;n<this.scripts_lateUpdate.length;n++){const o=this.scripts_lateUpdate[n];o.activeAndEnabled&&o.lateUpdate!==void 0&&(U.Current=this,o.lateUpdate())}if(this.executeCoroutines(2),Cn(this,2),this.physicsSteps===void 0&&(this.physicsSteps=1),this.physics.engine&&this.physicsSteps>0&&this.internalUpdatePhysics(this.physicsSteps),this.isVisibleToUser||this.runInBackground){this._currentFrameEvent=3;for(let n=0;n<this.scripts_onBeforeRender.length;n++){const o=this.scripts_onBeforeRender[n];o.activeAndEnabled&&o.onBeforeRender!==void 0&&(U.Current=this,o.onBeforeRender(t))}if(this.executeCoroutines(3),Cn(this,3),this._needsUpdateSize&&this.updateSize(),this.pre_render_callbacks)for(const n in this.pre_render_callbacks)this.pre_render_callbacks[n](t);if(this._focusRect&&this.mainCamera instanceof c.PerspectiveCamera){const n=this.focusRectSettings,o=n.damping>0?this.time.deltaTime/n.damping:1;ZS(this._focusRect,this.focusRectSettings,o,this.mainCamera,this.renderer)}}return!0}internalUpdatePhysics(e){if(!this.physics.engine)return!1;const t=e,i=this.time.deltaTime/t;for(let n=0;n<t;n++)this._currentFrameEvent=9,this.executeCoroutines(9),this.physics.engine.step(i),this._currentFrameEvent=10,this.executeCoroutines(10);return this.physics.engine.postStep(),!0}internalOnRender(){this.isManagedExternally||(tO(this),this._currentFrameEvent=-1,X.nodeFrame.camera=this.mainCamera,X.nodeFrame.update(),this.renderNow(),this._currentFrameEvent=4)}internalOnAfterRender(){if(this.isVisibleToUser||this.runInBackground){for(let e=0;e<this.scripts_onAfterRender.length;e++){const t=this.scripts_onAfterRender[e];t.activeAndEnabled&&t.onAfterRender!==void 0&&(U.Current=this,t.onAfterRender())}if(this.executeCoroutines(4),Cn(this,4),this.post_render_callbacks)for(const e in this.post_render_callbacks)this.post_render_callbacks[e]()}if(this._currentFrameEvent=-1,this.connection.sendBufferedMessagesNow(),this._stats){this._stats.end();const e=this.time.fps<20?50:150;if(this.time.frameCount%e===0||this.time.frameCount===1){const t=window.performance&&window.performance.memory?`${(window.performance.memory.usedJSHeapSize/1024/1024).toFixed(2)} MB`:"n/a";console.log(this.renderer.info.render.calls+" DrawCalls",`
|
|
879
879
|
Render:`,{shaders:this.renderer.info.programs?.length,...this.renderer.info.render},`
|
|
880
880
|
Memory:`,{usedMemory:t,...this.renderer.info.memory},`
|
|
881
|
-
Target Framerate: `+this.targetFrameRate)}}this._dispatchReadyAfterFrame&&(this._dispatchReadyAfterFrame=!1,this.domElement.dispatchEvent(new CustomEvent("ready")),ae.dispatchCallback(le.ContextFirstFrameRendered,this))}_tempClearColor=new c.Color;_tempClearColor2=new c.Color;renderNow(e){if(!e&&(e=this.mainCamera,!e))return!1;if(this.handleRendererContextLost(),this._isRendering=!0,this.renderRequiredTextures(),this.renderer.toneMapping!==c.NoToneMapping&&V0(),this.postprocessing.update(),this.composer&&!this.isInXR){e&&"setMainCamera"in this.composer&&this.composer.passes[0]?.mainCamera!=e&&this.composer.setMainCamera(e);const t=this.renderer.getClearColor(this._tempClearColor),i=this.renderer.getClearAlpha();this._tempClearColor2.copy(t),this.renderer.setClearColor(t.convertSRGBToLinear(),this.renderer.getClearAlpha()),this.composer.render(this.time.deltaTime),this.renderer.setClearColor(this._tempClearColor2,i)}else e&&(this.isInXR&&exports.DeviceUtilities.isMacOS()&&this.renderer.clearDepth(),this.renderer.render(this.scene,e));return this._isRendering=!1,!0}_contextRestoreTries=0;handleRendererContextLost(){this.time.frame%10&&this.renderer.getContext().isContextLost()&&this._contextRestoreTries++<100&&(console.warn("Attempting to recover WebGL context..."),this.renderer.forceContextRestore())}_wasPaused=!1;onHandlePaused(){const e=this.evaluatePaused();if(this._wasPaused!==e){kP&&console.log("Paused?",e,"context:"+this.alias);for(let t=0;t<this.scripts_pausedChanged.length;t++){const i=this.scripts_pausedChanged[t];i.activeAndEnabled&&i.onPausedChanged!==void 0&&(U.Current=this,i.onPausedChanged(e,this._wasPaused))}}return this._wasPaused=e,e}evaluatePaused(){return this.isInXR?!1:this.isPaused?!0:this.runInBackground?!1:!this.isVisibleToUser}renderRequiredTextures(){if(!this.mainCamera||!this._requireDepthTexture&&!this._requireColorTexture)return;if(!this._renderTarget){if(this._renderTarget=new c.WebGLRenderTarget(this.domWidth,this.domHeight),this._requireDepthTexture){const i=new c.DepthTexture(this.domWidth,this.domHeight);this._renderTarget.depthTexture=i}this._requireColorTexture&&(this._renderTarget.texture=new c.Texture,this._renderTarget.texture.generateMipmaps=!1,this._renderTarget.texture.minFilter=c.NearestFilter,this._renderTarget.texture.magFilter=c.NearestFilter,this._renderTarget.texture.format=c.RGBAFormat)}const e=this._renderTarget;e.texture&&(e.texture.colorSpace=this.renderer.outputColorSpace);const t=this.renderer.getRenderTarget();this.renderer.setRenderTarget(e),this.renderer.render(this.scene,this.mainCamera),this.renderer.setRenderTarget(t)}executeCoroutines(e){if(this.coroutines[e]){const i=this.coroutines[e];for(let n=0;n<i.length;n++)try{const o=i[n];if(!o.comp||o.comp.destroyed||!o.main||o.comp.enabled===!1){RP&&console.log("Removing coroutine",o.comp,o.comp.enabled),i.splice(n,1),--n;continue}const a=o.chained;if(a&&a.length>0){const u=a[a.length-1].next();if(u.done&&a.pop(),t(u)&&(o.chained||(o.chained=[]),o.chained.push(u.value)),!u.done)continue}const l=o.main.next();if(l.done===!0){i.splice(n,1),--n;continue}const h=l.value;if(t(h)){if(h.next().done)continue;o.chained||(o.chained=[]),o.chained.push(h)}else if(h instanceof Promise){const d=h;o.chained||(o.chained=[]);const u=O0(d);o.chained?.push(u);continue}}catch(o){console.error(o)}}function t(i){return!!(i&&i.next&&i.return)}}}const Kf=x("debugwebxr");class iw{static tryFindAvatarObjects(e,t,i){if(i.head&&i.leftHand&&i.rightHand)return;const n=e.name.toLocaleLowerCase();!i.head&&n.includes("head")&&(Kf&&console.log("FOUND AVATAR HEAD",e.name),i.head=new K("",t,e)),n.includes("hand")&&(!i.leftHand&&n.includes("left")&&(Kf&&console.log("FOUND AVATAR LEFT HAND",e.name),i.leftHand=new K("",t,e)),!i.rightHand&&n.includes("right")&&(Kf&&console.log("FOUND AVATAR RIGHT HAND",e.name),i.rightHand=new K("",t,e)));for(let o=0;o<e.children.length;o++){if(i.head&&i.leftHand&&i.rightHand)return;const r=e.children[o];this.tryFindAvatarObjects(r,t,i)}}}class te extends c.Color{alpha=1;get isRGBAColor(){return!0}set a(e){this.alpha=e}get a(){return this.alpha}constructor(e,t,i,n){super(),typeof e=="number"&&typeof t=="number"&&typeof i=="number"?(this.set(e,t,i),this.alpha=typeof n=="number"?n:1):e!==void 0&&(this.set(e),this.alpha=1)}clone(){const e=super.clone();return e.alpha=this.alpha,e}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,"alpha"in e&&typeof e.alpha=="number"?this.alpha=e.alpha:typeof e.a=="number"&&(this.alpha=e.a),this}lerp(e,t){const i=e;return i.alpha!=null&&(this.alpha=I.lerp(this.alpha,i.alpha,t)),super.lerp(e,t)}lerpColors(e,t,i){const n=e,o=t;return n.alpha!=null&&o.alpha!=null&&(this.alpha=I.lerp(n.alpha,o.alpha,i)),super.lerpColors(e,t,i)}multiply(e){const t=e;return t.alpha!=null&&(this.alpha=this.alpha*t.alpha),super.multiply(e)}fromArray(e,t=0){return this.alpha=e[t+3],super.fromArray(e,t)}static fromColorRepresentation(e){if(typeof e=="string"){if(e.trim()==="transparent")return new te(0,0,0,0);if(e.startsWith("#")&&e.length===9){const t=parseInt(e.slice(1,9),16),i=t>>24&255,n=t>>16&255,o=t>>8&255,r=t>>0&255;return new te(i/255,n/255,o/255,r/255)}else if(e.startsWith("#")){const t=parseInt(e.slice(1),16),i=t>>16&255,n=t>>8&255,o=t>>0&255;return new te(i/255,n/255,o/255,1)}else if(e.startsWith("rgba")){const t=e.slice(5,-1).split(",").map(Number);return new te(t[0]/255,t[1]/255,t[2]/255,t[3])}else if(e.startsWith("rgb")){const t=e.slice(4,-1).split(",").map(Number);return new te(t[0]/255,t[1]/255,t[2]/255,1)}}else if(Array.isArray(e)){if(e.length===4)return new te(e[0],e[1],e[2],e[3]);if(e.length===3)return new te(e[0],e[1],e[2],1);console.error("Invalid color array length. Expected 3 or 4, got "+e.length)}return new te(e)}}const Mt=new c.Vector3,Z_=new c.Vector3,J_=new c.Quaternion,DP=x("debuggizmos"),sn=8947848,Zf=32;class B{constructor(){}static enabled=!0;static isGizmo(e){return e[rm]!==void 0}static setVisible(e){for(const t of Ai.timedObjectsBuffer)t.visible=e}static DrawLabel(e,t,i=.05,n=0,o,r,a){if(!B.enabled)return null;o||(o=sn);const l=H.active?.rigScale??1,h=Ai.getTextLabel(n,t,i*l,o,r);return a instanceof c.Object3D&&a.add(h),h.position.x=e.x,h.position.y=e.y,h.position.z=e.z,h}static DrawRay(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),Mt.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,an(r.material,i)}static DrawDirection(e,t,i=sn,n=0,o=!0,r=1){if(!B.enabled)return;const a=Ai.getLine(n),l=a.geometry.getAttribute("position");l.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(Mt.set(0,0,-r),J_.set(t.x,t.y,t.z,t.w),Mt.applyQuaternion(J_)):(Mt.set(t.x,t.y,t.z),Mt.multiplyScalar(r)),l.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),l.needsUpdate=!0,a.material.depthTest=o,a.material.depthWrite=!1,an(a.material,i)}static DrawLine(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),a.setXYZ(1,t.x,t.y,t.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,an(r.material,i)}static DrawCircle(e,t,i,n=sn,o=0,r=!0){if(!B.enabled)return;const a=Ai.getCircle(o);a.position.set(e.x,e.y,e.z),a.scale.set(i,i,i),a.quaternion.setFromUnitVectors(this._up,Mt.set(t.x,t.y,t.z).normalize()),a.material.depthTest=r,a.material.depthWrite=!1,a.material.fog=!1,an(a.material,n)}static DrawWireSphere(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getSphere(t,n,!0);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,an(r.material,i)}static DrawSphere(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getSphere(t,n,!1);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,an(r.material,i)}static DrawWireBox(e,t,i=sn,n=0,o=!0,r=void 0){if(!B.enabled)return;const a=Ai.getBox(n);a.position.set(e.x,e.y,e.z),a.scale.set(t.x,t.y,t.z),r?a.quaternion.copy(r):a.quaternion.identity(),a.material.depthTest=o,a.material.wireframe=!0,a.material.depthWrite=!1,a.material.fog=!1,an(a.material,i)}static DrawWireBox3(e,t=sn,i=0,n=!0){if(!B.enabled)return;const o=Ai.getBox(i);o.position.copy(e.getCenter(Mt)),o.scale.copy(e.getSize(Mt)),o.material.depthTest=n,o.material.wireframe=!0,o.material.depthWrite=!1,o.material.fog=!1,an(o.material,t)}static _up=new c.Vector3(0,1,0);static DrawArrow(e,t,i=sn,n=0,o=!0,r=!1){if(!B.enabled)return;const a=Ai.getArrowHead(n);a.position.set(t.x,t.y,t.z),a.quaternion.setFromUnitVectors(this._up.set(0,1,0),Mt.set(t.x,t.y,t.z).sub(Z_.set(e.x,e.y,e.z)).normalize());const h=Mt.set(t.x,t.y,t.z).sub(Z_.set(e.x,e.y,e.z)).length()*.1;a.scale.set(h,h,h),a.material.depthTest=o,a.material.wireframe=r,an(a.material,i),this.DrawLine(e,t,i,n,o)}static DrawWireMesh(e){const t=Ai.getMesh(e.duration??0);"mesh"in e?(t.geometry=e.mesh.geometry,t.matrixWorld.copy(e.mesh.matrixWorld)):(t.geometry=e.geometry,t.matrixWorld.copy(e.matrix)),t.matrixAutoUpdate=!1,t.matrixWorldAutoUpdate=!1,t.material.depthTest=e.depthTest??!0,t.material.wireframe=!0,an(t.material,e.color??sn)}}const LP=new c.BoxGeometry(1,1,1);function xg(s=null){const e=new c.Color(s??14540253),t=new c.EdgesGeometry(LP);return new c.LineSegments(t,new c.LineBasicMaterial({color:e}))}function an(s,e){if(Array.isArray(s)){for(const i of s)an(i,e);return}const t=e instanceof te?e.a:1;s.color.set(e),s.opacity=t,s.transparent=t<1}const rm=Symbol("GizmoCache");class Ai{static familyName="needle-gizmos";static ensureFont(){let e=ne.__webpack_exports__default.FontLibrary.getFontFamily(this.familyName);e||(e=ne.__webpack_exports__default.FontLibrary.addFontFamily(this.familyName),e.addVariant("normal","normal","https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json","https://cdn.needle.tools/static/fonts/msdf/arial/arial.png")?.addEventListener("ready",()=>{ne.__webpack_exports__default.update()}))}static getTextLabel(e,t,i,n,o){this.ensureFont();let r=this.textLabelCache.pop(),a=1;o&&typeof o=="string"&&o?.length>=8&&o.startsWith("#")?(a=parseInt(o.substring(7),16)/255,o=o.substring(0,7),DP&&console.log(o,a)):typeof o=="object"&&o.a!==void 0&&(a=o.a);const l={boxSizing:"border-box",fontFamily:this.familyName,width:"auto",fontSize:i,color:n,lineHeight:1,backgroundColor:o??void 0,backgroundOpacity:a,textContent:t,borderRadius:.5*i,padding:.8*i,whiteSpace:"pre",offset:.05*i};if(r)r.set(l);else{r=new ne.__webpack_exports__Text(l);const h=this,d=r;d.setText=function(u){this.set({textContent:u}),h.tmuiNeedsUpdate=!0}}return this.tmuiNeedsUpdate=!0,this.registerTimedObject(U.Current,r,e,this.textLabelCache),r}static getBox(e){let t=this.boxesCache.pop();if(!t){const i=new c.BoxGeometry(1,1,1);t=new c.Mesh(i)}return this.registerTimedObject(U.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");i||(i=new c.BufferAttribute(new Float32Array(6),3),t.geometry.setAttribute("position",i))}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.linesCache),t}static getCircle(e){let t=this.circlesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");if(!i){i=new c.BufferAttribute(new Float32Array(Zf*3),3),t.geometry.setAttribute("position",i);const n=F(0,1,0),o=F(0,0,1),r=F(o);r.cross(n).normalize();const a=F(r),l=Math.PI*2/(Zf-1);for(let h=0;h<Zf+1;h++){const d=l*h;n.copy(a).multiplyScalar(Math.cos(d)*1),r.copy(o).multiplyScalar(Math.sin(d)*1);const u=n.add(r);i.setXYZ(h,u.x,u.y,u.z)}}}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.circlesCache),t}static getSphere(e,t,i){let n=this.spheresCache.pop();return n||(n=new c.Mesh(new c.SphereGeometry(1,8,8))),n.scale.set(e,e,e),n.material.wireframe=i,this.registerTimedObject(U.Current,n,t,this.spheresCache),n}static getArrowHead(e){let t=this.arrowHeadsCache.pop();return t||(t=new c.Mesh(new c.CylinderGeometry(0,.5,1,8))),this.registerTimedObject(U.Current,t,e,this.arrowHeadsCache),t}static getMesh(e){let t=this.mesh.pop();return t||(t=new c.Mesh,t.material=new c.MeshBasicMaterial),this.registerTimedObject(U.Current,t,e,this.mesh),t}static linesCache=[];static circlesCache=[];static spheresCache=[];static boxesCache=[];static arrowHeadsCache=[];static mesh=[];static textLabelCache=[];static registerTimedObject(e,t,i,n){if(!e){console.error("No Needle Engine context available. Did you call a Gizmos function in global scope?");return}const o=this.contextBeforeRenderCallbacks.get(e),r=this.contextPostRenderCallbacks.get(e);if(o){if(e.pre_render_callbacks[e.pre_render_callbacks.length-1]!==o){const a=e.pre_render_callbacks.indexOf(o);a>=0&&e.pre_render_callbacks.splice(a,1),e.pre_render_callbacks.push(o)}}else{const a=()=>{this.onBeforeRender(e,this.timedObjectsBuffer)};this.contextBeforeRenderCallbacks.set(e,a),e.pre_render_callbacks.push(a)}if(r){if(e.post_render_callbacks[e.post_render_callbacks.length-1]!==r){const a=e.post_render_callbacks.indexOf(r);a>=0&&e.post_render_callbacks.splice(a,1),e.post_render_callbacks.push(r)}}else{const a=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,a),e.post_render_callbacks.push(a)}t.traverse(a=>{a.layers.disableAll(),a.layers.enable(2)}),t.renderOrder=999999,t[rm]=n,t.castShadow=!1,t.receiveShadow=!1,t.isGizmo=!0,this.timedObjectsBuffer.push(t),this.timesBuffer.push(U.Current.time.realtimeSinceStartup+i),e.scene.add(t)}static timedObjectsBuffer=new Array;static timesBuffer=new Array;static contextPostRenderCallbacks=new Map;static contextBeforeRenderCallbacks=new Map;static tmuiNeedsUpdate=!1;static onBeforeRender(e,t){this.tmuiNeedsUpdate&&(this.tmuiNeedsUpdate=!1,ne.__webpack_exports__default.update());for(let i=0;i<t.length;i++){const n=t[i];if(e.mainCamera&&n instanceof ne.__webpack_exports__default.MeshUIBaseElement){if(fr(n))continue;const o=e.isInVR,r=!1,a=!o;Gc(n,e.mainCamera,r,a)}}}static onPostRender(e,t,i){const n=e.time.realtimeSinceStartup;for(let o=t.length-1;o>=0;o--){const r=t[o];n>=i[o]-1e-6&&(t.splice(o,1),i.splice(o,1),r.removeFromParent(),fr(r)!=!0&&r[rm].push(r))}}}const Vt=x("debugphysics"),IP=x("debugworker"),eb=new c.Layers;class vo{static AllLayers=4294967295;ray;cam;screenPoint;raycaster;results;targets;recursive=!0;minDistance;maxDistance;lineThreshold;layerMask;ignore;testObject;useAcceleratedRaycast;allowSlowRaycastFallback=!0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new c.Vector2),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setLayer(e){eb.set(e),this.layerMask=eb}setMask(e){this.layerMask||(this.layerMask=new c.Layers);const t=this.layerMask;t?t.mask=e:this.layerMask=e}}class Sg{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}}class Ba{static _raycasting=0;static get raycasting(){return this._raycasting>0}raycastPhysicsFast(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycast(e,t,{maxDistance:i,solid:n})??null}raycastPhysicsFastAndGetNormal(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycastAndGetNormal(e,t,{maxDistance:i,solid:n})??null}sphereOverlapPhysics(e,t){return this.context.physics.engine?.sphereOverlap(e,t)??null}context;engine;constructor(e){this.context=e}raycaster=new c.Raycaster;defaultRaycastOptions=new vo;targetBuffer=new Array(1);defaultThresholds={Mesh:{},Line:{threshold:-1},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=new Array;sphereMask=new c.Layers;sphere=new c.Sphere;sphereOverlap(e,t,i=!0,n=!1,o=null){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;const r=this.sphereMask;r.enableAll(),r.disable(2);for(const a of this.context.scene.children)this.intersectSphere(a,e,t,r,this.sphereResults,i,n,o);return this.sphereResults.sort((a,l)=>a.distance-l.distance)}raycastFromRay(e,t=null){const i=t??this.defaultRaycastOptions;i.ray=e;const n=this.raycast(i);return i===this.defaultRaycastOptions&&(i.ray=void 0),n}raycast(e=null){Vt&&performance.mark("raycast.start"),e||(e=this.defaultRaycastOptions);const t=e.screenPoint??this.context.input.mousePositionRC,i=e.raycaster??this.raycaster;if(i.near=e.minDistance??0,i.far=e.maxDistance??1/0,i.params=this.defaultThresholds,e.lineThreshold===void 0&&(e.lineThreshold=-1),i.params.Line={threshold:e.lineThreshold},e.ray)i.ray.copy(e.ray);else{const a=e.cam??this.context.mainCamera;if(!a)return Vt&&console.error("Can not perform raycast - no main camera found"),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];const l=this.context.xrCamera;this.context.isInXR&&l instanceof c.ArrayCamera&&l.cameras.length>0?i.setFromCamera(t,l.cameras[0]):i.setFromCamera(t,a)}let n=e.targets;n||(n=this.targetBuffer,n.length=1,n[0]=this.context.scene);let o=e.results;this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),o||(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=new Array),o=this.defaultRaycastOptions.results),e.layerMask!==void 0?e.layerMask instanceof c.Layers?i.layers.mask=e.layerMask.mask:i.layers.mask=e.layerMask:(i.layers.enableAll(),i.layers.disable(2)),Vt&&console.time("raycast"),o.length=0,Ba._raycasting++,this.intersect(this.raycaster,n,o,e),o.sort((a,l)=>a.distance-l.distance);const r=e.ignore;return r!==void 0&&r.length>0&&(o=o.filter(a=>!r.includes(a.object))),Ba._raycasting--,Vt&&(console.timeEnd("raycast"),console.warn("#"+this.context.time.frame+", hits:",o?.length?[...o]:"nothing"),performance.mark("raycast.end"),performance.measure("raycast","raycast.start","raycast.end")),o}intersect(e,t,i,n){for(const o of t){if(!o||o.visible===!1||B.isGizmo(o)||n.lineThreshold!==void 0&&n.lineThreshold<0&&o instanceof c.Line)continue;let r=!0;const a=o,l=a.geometry;if(o.raycastAllowed===!1&&(r=!1),r&&n.testObject){const h=n.testObject?.(o);if(h===!1)continue;h==="continue in children"&&(r=!1)}else r&&(l&&tb(l)||(r=!1));if(r){const h=i.length,d=o.raycastPreference||"lod";let u=d!=="bounds";if(n.precise===!1&&(u=!1),l&&(u||=l.getAttribute("position")?.array?.length<64),a instanceof X.GroundedSkybox&&(u=!1),d==="lod"){const f=re.getRaycastMesh(o);f&&(a.geometry=f)}if(!u&&BP(a,e,i)||(n.useAcceleratedRaycast!==!1?su.runMeshBVHRaycast(e,a,i,this.context,n):e.intersectObject(a,!1,i)),a.geometry=l,Vt&&i.length!=h){const f=i[i.length-1];B.DrawWireSphere(f.point,.1,7798784,1,!1),B.DrawWireMesh({mesh:o,depthTest:!1,duration:.2,color:7798784})}}n.recursive!==!1&&this.intersect(e,o.children,i,n)}return i}tempBoundingBox=new c.Box3;intersectSphere(e,t,i,n,o,r,a,l){let h=e&&e.isMesh&&e.layers.test(n)&&!B.isGizmo(e);h&&=e.visible,h&&=!(e instanceof c.Line),h&&=!(e instanceof X.GroundedSkybox);const d=e,u=d.geometry;if(h&&l){const f=l(e);if(f===!1)return;f==="continue in children"&&(h=!1)}if(u&&tb(u)||(h=!1),h){if(a){const f=this.sphere;f.center.copy(t),f.radius=i;const m=o.length;if(su.runMeshBVHRaycast(this.sphere,d,o,this.context,{}),m!=o.length&&!r)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){d.matrixWorldNeedsUpdate&&d.updateWorldMatrix(!1,!1);const f=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(d.matrixWorld),m=this.sphere;if(m.center.copy(t),m.radius=i,m.intersectsBox(f)){const g=Y(e),b=g.distanceTo(m.center),y=new Sg(e,b,g);if(o.push(y),!r)return}}}if(e.children)for(const f of e.children){const m=o.length;if(this.intersectSphere(f,t,i,n,o,r,a,l),m!=o.length&&!r)return}}}function tb(s){return!(s.index&&s.index.array.length<3)}const Fo=new c.Sphere,Yh=new c.Plane,jP=new c.Matrix3;function BP(s,e,t){const i=s._computeIntersections;if(!i)return!1;let n=s["_computeIntersections:Needle"];return n||(n=s["_computeIntersections:Needle"]=function(o,r,a){const l=this,h=l.geometry.boundingSphere;if(h){if(l instanceof X.GroundedSkybox){Yh.setFromNormalAndCoplanarPoint(F(0,1,0),F(0,-l.position.y,0)),Yh.applyMatrix4(l.matrixWorld,jP);const u=o.ray.intersectPlane(Yh,F());if(u){Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const m=F(u).sub(o.ray.origin).length(),g=Fo.radius*.5;m<g&&r.push({distance:m,point:u,object:l,normal:Yh.normal.clone()})}return}Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const d=o.ray.intersectSphere(Fo,F());if(d){const u=F(d).sub(o.ray.origin),f=u.length();if(f>Fo.radius){const m=u.clone().normalize();r.push({distance:f,point:d,object:l,normal:m})}}}}),s._computeIntersections=n,e.intersectObject(s,!1,t),s._computeIntersections=i,!0}var su;(s=>{let e=0;function t(v,w,k,O,M){if(!w.geometry||!w.geometry.hasAttribute("position"))return!1;const D=w.geometry;if(w?.isSkinnedMesh){const L=w,j=L.bvhNeedsUpdate;if(!L.staticGenerator)l(),r&&(L.staticGenerator=new r(w),L.staticGenerator.applyWorldTransforms=!1,L.staticGeometry=L.staticGenerator.generate(),D.boundsTree=a?.call(L.staticGeometry),L.staticGeometryLastUpdate=performance.now()+Math.random()*200,L.bvhNeedsUpdate=!0);else if(D.boundsTree&&(L.autoUpdateMeshBvhInterval!==void 0&&L.autoUpdateMeshBvhInterval>=0||j===!0)){const V=performance.now(),W=V-L.staticGeometryLastUpdate,E=L.autoUpdateMeshBvhInterval??100;(j||W>E)&&(Vt&&console.warn(`Physics: updating skinned mesh bvh for ${w.name} after ${W.toFixed(2)}ms`),L.bvhNeedsUpdate=!1,L.staticGeometryLastUpdate=V,L.staticGenerator?.generate(L.staticGeometry),D.boundsTree.refit())}}else if(!D.boundsTree){d||_();let L=!0;if((O.xr||D[g]===!1||D.getAttribute("position")?.isInterleavedBufferAttribute||D.index&&D.index?.isInterleavedBufferAttribute||e>10)&&(L=!1),L&&f){if(D[m]===void 0){let j=null;if(y.length>0){const V=y.shift();V&&!V.running&&(j=V)}if(!j&&b.length<3)try{IP&&console.warn("[GenerateMeshBVHWorker] Creating worker with import.meta.url:",typeof document>"u"?require("url").pathToFileURL(__filename).href:ya&&ya.tagName.toUpperCase()==="SCRIPT"&&ya.src||new URL("needle-engine.bundle-CPR-xoaB.umd.cjs",document.baseURI).href),j=new f,b.push(j)}catch(V){V instanceof DOMException&&V.name==="SecurityError"?(console.warn("Failed to create MeshBVH worker, falling back to main thread generation. This can happen when running from file://, if the browser does not support workers or if the browser is blocking workers for other reasons."),console.debug(V),e+=10):(console.error("Failed to create MeshBVH worker. Please see below for more details:"),console.log(V)),e++}if(j!=null&&!j.running){const V=w.name;Vt&&console.log("<<<< worker start",V,j),D[m]="queued",performance.mark("bvh.create.start");const W=D.clone();try{j.generate(W).then(E=>{D[m]="done",D.boundsTree=E}).catch(E=>{D[m]="failed - "+E?.message,D[g]=!1,Vt&&console.error("Failed to generate mesh bvh on worker",E)}).finally(()=>{Vt&&console.log(">>>>> worker done",V,{hasBoundsTre:D.boundsTree!=null}),y.push(j),W.dispose(),performance.mark("bvh.create.end"),performance.measure("bvh.create (worker)","bvh.create.start","bvh.create.end")})}catch(E){console.error("Failed to generate mesh bvh on worker",E)}}else Vt&&console.warn("No worker available")}}else(!u||!L)&&(l(),o&&(performance.mark("bvh.create.start"),D.boundsTree=new o(D),performance.mark("bvh.create.end"),performance.measure("bvh.create","bvh.create.start","bvh.create.end")))}if(v instanceof c.Raycaster){const L=v,j=w.raycast;if(D.boundsTree)l(),n&&(w.acceleratedRaycast||(w.acceleratedRaycast=n.bind(w),Vt&&console.debug(`Physics: bind acceleratedRaycast fn to "${w.name}"`)),w.raycast=w.acceleratedRaycast);else if(Vt&&console.warn("No bounds tree found for mesh",w.name,{workerTask:D[m],hasAcceleratedRaycast:n!=null}),M.allowSlowRaycastFallback===!1&&(D.getAttribute("position")?.array?.length??0)>2e3)return Vt&&console.warn("Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false"),!1;const V=L.firstHitOnly;return L.firstHitOnly=!1,L.intersectObject(w,!1,k),L.firstHitOnly=V,w.raycast=j,!0}else if(v instanceof c.Sphere){const L=D.boundsTree;if(L){const j=v;if(h.copy(w.matrixWorld).invert(),j.applyMatrix4(h),L.intersectsSphere(j)){const W=Y(w),E=W.distanceTo(j.center),N=new Sg(w,E,W);k.push(N)}}return!0}return!1}s.runMeshBVHRaycast=t;let i=!1,n=null,o=null,r=null,a=null;function l(){i||(i=!0,Promise.resolve().then(()=>require("./vendor-DkMW3WY4.umd.cjs")).then(v=>v.index$1).then(v=>{n=v.acceleratedRaycast,o=v.MeshBVH,r=v.StaticGeometryGenerator,a=v.computeBoundsTree}).catch(v=>{(Vt||A())&&console.error("Failed to load BVH library...",v.message)}))}const h=new c.Matrix4;let d=!1,u=!1,f=null;const m=Symbol("Needle:MeshBVH-Worker"),g=Symbol("Needle:MeshBVH-CanUseWorker"),b=[],y=[];function _(){d=!0,u=!0,Promise.resolve().then(()=>lD).then(v=>{f=v.GenerateMeshBVHWorker}).catch(v=>{Vt||A()?console.warn("Failed to setup mesh bvh worker"):console.debug("Failed to setup mesh bvh worker",v)}).finally(()=>{u=!1})}})(su||(su={}));const ib=Symbol("gltf-loader-internal-usage-tracker"),FP=x("debugusers");class Sa{get name(){return"NEEDLE_internal_usage_tracker"}static isLoading(e){return Sa._loadingProcesses>0}static _loadingProcesses=0;parser;_getDependency;_loadingId;_loadedObjects=new Set;constructor(e){this.parser=e,this._getDependency=this.parser.getDependency,this._loadingId=Date.now().toString()}beforeRoot(){Sa._loadingProcesses++;const e=this,t=this._getDependency;return this.parser.getDependency=function(i,n){const o=t.call(this,i,n);return o.then(r=>(r&&(e._loadedObjects.add(r),r[ib]=e._loadingId),r)),o},null}afterRoot(e){Sa._loadingProcesses--,this.parser.getDependency=this._getDependency;for(const t of this._loadedObjects)delete t[ib],t instanceof c.Object3D&&(t.parent||t instanceof c.Mesh&&setTimeout(()=>{FP&&console.warn("> GLTF LOADER: Mesh not used in scene!",t),t.material=null,t.geometry=null},1e3));return null}}class nw{constructor(){window.addEventListener("unhandledrejection",e=>{if(e.defaultPrevented)return;const t=e?.reason?.path;if(t){const i=t[0];i&&i.tagName==="IMG"&&(console.warn(`Could not load image:
|
|
881
|
+
Target Framerate: `+this.targetFrameRate)}}this._dispatchReadyAfterFrame&&(this._dispatchReadyAfterFrame=!1,this.domElement.dispatchEvent(new CustomEvent("ready")),ae.dispatchCallback(le.ContextFirstFrameRendered,this))}_tempClearColor=new c.Color;_tempClearColor2=new c.Color;renderNow(e){if(!e&&(e=this.mainCamera,!e))return!1;if(this.handleRendererContextLost(),this._isRendering=!0,this.renderRequiredTextures(),this.renderer.toneMapping!==c.NoToneMapping&&V0(),this.postprocessing.update(),this.composer&&!this.isInXR){e&&"setMainCamera"in this.composer&&this.composer.passes[0]?.mainCamera!=e&&this.composer.setMainCamera(e);const t=this.renderer.getClearColor(this._tempClearColor),i=this.renderer.getClearAlpha();this._tempClearColor2.copy(t),this.renderer.setClearColor(t.convertSRGBToLinear(),this.renderer.getClearAlpha()),this.composer.render(this.time.deltaTime),this.renderer.setClearColor(this._tempClearColor2,i)}else e&&(this.isInXR&&exports.DeviceUtilities.isMacOS()&&this.renderer.clearDepth(),this.renderer.render(this.scene,e));return this._isRendering=!1,!0}_contextRestoreTries=0;handleRendererContextLost(){this.time.frame%10&&this.renderer.getContext().isContextLost()&&this._contextRestoreTries++<100&&(console.warn("Attempting to recover WebGL context..."),this.renderer.forceContextRestore())}_wasPaused=!1;onHandlePaused(){const e=this.evaluatePaused();if(this._wasPaused!==e){kP&&console.log("Paused?",e,"context:"+this.alias);for(let t=0;t<this.scripts_pausedChanged.length;t++){const i=this.scripts_pausedChanged[t];i.activeAndEnabled&&i.onPausedChanged!==void 0&&(U.Current=this,i.onPausedChanged(e,this._wasPaused))}}return this._wasPaused=e,e}evaluatePaused(){return this.isInXR?!1:this.isPaused?!0:this.runInBackground?!1:!this.isVisibleToUser}renderRequiredTextures(){if(!this.mainCamera||!this._requireDepthTexture&&!this._requireColorTexture)return;if(!this._renderTarget){if(this._renderTarget=new c.WebGLRenderTarget(this.domWidth,this.domHeight),this._requireDepthTexture){const i=new c.DepthTexture(this.domWidth,this.domHeight);this._renderTarget.depthTexture=i}this._requireColorTexture&&(this._renderTarget.texture=new c.Texture,this._renderTarget.texture.generateMipmaps=!1,this._renderTarget.texture.minFilter=c.NearestFilter,this._renderTarget.texture.magFilter=c.NearestFilter,this._renderTarget.texture.format=c.RGBAFormat)}const e=this._renderTarget;e.texture&&(e.texture.colorSpace=this.renderer.outputColorSpace);const t=this.renderer.getRenderTarget();this.renderer.setRenderTarget(e),this.renderer.render(this.scene,this.mainCamera),this.renderer.setRenderTarget(t)}executeCoroutines(e){if(this.coroutines[e]){const i=this.coroutines[e];for(let n=0;n<i.length;n++)try{const o=i[n];if(!o.comp||o.comp.destroyed||!o.main||o.comp.enabled===!1){RP&&console.log("Removing coroutine",o.comp,o.comp.enabled),i.splice(n,1),--n;continue}const a=o.chained;if(a&&a.length>0){const u=a[a.length-1].next();if(u.done&&a.pop(),t(u)&&(o.chained||(o.chained=[]),o.chained.push(u.value)),!u.done)continue}const l=o.main.next();if(l.done===!0){i.splice(n,1),--n;continue}const h=l.value;if(t(h)){if(h.next().done)continue;o.chained||(o.chained=[]),o.chained.push(h)}else if(h instanceof Promise){const d=h;o.chained||(o.chained=[]);const u=O0(d);o.chained?.push(u);continue}}catch(o){console.error(o)}}function t(i){return!!(i&&i.next&&i.return)}}}const Kf=x("debugwebxr");class iw{static tryFindAvatarObjects(e,t,i){if(i.head&&i.leftHand&&i.rightHand)return;const n=e.name.toLocaleLowerCase();!i.head&&n.includes("head")&&(Kf&&console.log("FOUND AVATAR HEAD",e.name),i.head=new K("",t,e)),n.includes("hand")&&(!i.leftHand&&n.includes("left")&&(Kf&&console.log("FOUND AVATAR LEFT HAND",e.name),i.leftHand=new K("",t,e)),!i.rightHand&&n.includes("right")&&(Kf&&console.log("FOUND AVATAR RIGHT HAND",e.name),i.rightHand=new K("",t,e)));for(let o=0;o<e.children.length;o++){if(i.head&&i.leftHand&&i.rightHand)return;const r=e.children[o];this.tryFindAvatarObjects(r,t,i)}}}class te extends c.Color{alpha=1;get isRGBAColor(){return!0}set a(e){this.alpha=e}get a(){return this.alpha}constructor(e,t,i,n){super(),typeof e=="number"&&typeof t=="number"&&typeof i=="number"?(this.set(e,t,i),this.alpha=typeof n=="number"?n:1):e!==void 0&&(this.set(e),this.alpha=1)}clone(){const e=super.clone();return e.alpha=this.alpha,e}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,"alpha"in e&&typeof e.alpha=="number"?this.alpha=e.alpha:typeof e.a=="number"&&(this.alpha=e.a),this}lerp(e,t){const i=e;return i.alpha!=null&&(this.alpha=I.lerp(this.alpha,i.alpha,t)),super.lerp(e,t)}lerpColors(e,t,i){const n=e,o=t;return n.alpha!=null&&o.alpha!=null&&(this.alpha=I.lerp(n.alpha,o.alpha,i)),super.lerpColors(e,t,i)}multiply(e){const t=e;return t.alpha!=null&&(this.alpha=this.alpha*t.alpha),super.multiply(e)}fromArray(e,t=0){return this.alpha=e[t+3],super.fromArray(e,t)}static fromColorRepresentation(e){if(typeof e=="string"){if(e.trim()==="transparent")return new te(0,0,0,0);if(e.startsWith("#")&&e.length===9){const t=parseInt(e.slice(1,9),16),i=t>>24&255,n=t>>16&255,o=t>>8&255,r=t>>0&255;return new te(i/255,n/255,o/255,r/255)}else if(e.startsWith("#")){const t=parseInt(e.slice(1),16),i=t>>16&255,n=t>>8&255,o=t>>0&255;return new te(i/255,n/255,o/255,1)}else if(e.startsWith("rgba")){const t=e.slice(5,-1).split(",").map(Number);return new te(t[0]/255,t[1]/255,t[2]/255,t[3])}else if(e.startsWith("rgb")){const t=e.slice(4,-1).split(",").map(Number);return new te(t[0]/255,t[1]/255,t[2]/255,1)}}else if(Array.isArray(e)){if(e.length===4)return new te(e[0],e[1],e[2],e[3]);if(e.length===3)return new te(e[0],e[1],e[2],1);console.error("Invalid color array length. Expected 3 or 4, got "+e.length)}return new te(e)}}const Mt=new c.Vector3,Z_=new c.Vector3,J_=new c.Quaternion,DP=x("debuggizmos"),sn=8947848,Zf=32;class B{constructor(){}static enabled=!0;static isGizmo(e){return e[rm]!==void 0}static setVisible(e){for(const t of Ai.timedObjectsBuffer)t.visible=e}static DrawLabel(e,t,i=.05,n=0,o,r,a){if(!B.enabled)return null;o||(o=sn);const l=H.active?.rigScale??1,h=Ai.getTextLabel(n,t,i*l,o,r);return a instanceof c.Object3D&&a.add(h),h.position.x=e.x,h.position.y=e.y,h.position.z=e.z,h}static DrawRay(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),Mt.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,an(r.material,i)}static DrawDirection(e,t,i=sn,n=0,o=!0,r=1){if(!B.enabled)return;const a=Ai.getLine(n),l=a.geometry.getAttribute("position");l.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(Mt.set(0,0,-r),J_.set(t.x,t.y,t.z,t.w),Mt.applyQuaternion(J_)):(Mt.set(t.x,t.y,t.z),Mt.multiplyScalar(r)),l.setXYZ(1,e.x+Mt.x,e.y+Mt.y,e.z+Mt.z),l.needsUpdate=!0,a.material.depthTest=o,a.material.depthWrite=!1,an(a.material,i)}static DrawLine(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),a.setXYZ(1,t.x,t.y,t.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,an(r.material,i)}static DrawCircle(e,t,i,n=sn,o=0,r=!0){if(!B.enabled)return;const a=Ai.getCircle(o);a.position.set(e.x,e.y,e.z),a.scale.set(i,i,i),a.quaternion.setFromUnitVectors(this._up,Mt.set(t.x,t.y,t.z).normalize()),a.material.depthTest=r,a.material.depthWrite=!1,a.material.fog=!1,an(a.material,n)}static DrawWireSphere(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getSphere(t,n,!0);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,an(r.material,i)}static DrawSphere(e,t,i=sn,n=0,o=!0){if(!B.enabled)return;const r=Ai.getSphere(t,n,!1);ur(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,an(r.material,i)}static DrawWireBox(e,t,i=sn,n=0,o=!0,r=void 0){if(!B.enabled)return;const a=Ai.getBox(n);a.position.set(e.x,e.y,e.z),a.scale.set(t.x,t.y,t.z),r?a.quaternion.copy(r):a.quaternion.identity(),a.material.depthTest=o,a.material.wireframe=!0,a.material.depthWrite=!1,a.material.fog=!1,an(a.material,i)}static DrawWireBox3(e,t=sn,i=0,n=!0){if(!B.enabled)return;const o=Ai.getBox(i);o.position.copy(e.getCenter(Mt)),o.scale.copy(e.getSize(Mt)),o.material.depthTest=n,o.material.wireframe=!0,o.material.depthWrite=!1,o.material.fog=!1,an(o.material,t)}static _up=new c.Vector3(0,1,0);static DrawArrow(e,t,i=sn,n=0,o=!0,r=!1){if(!B.enabled)return;const a=Ai.getArrowHead(n);a.position.set(t.x,t.y,t.z),a.quaternion.setFromUnitVectors(this._up.set(0,1,0),Mt.set(t.x,t.y,t.z).sub(Z_.set(e.x,e.y,e.z)).normalize());const h=Mt.set(t.x,t.y,t.z).sub(Z_.set(e.x,e.y,e.z)).length()*.1;a.scale.set(h,h,h),a.material.depthTest=o,a.material.wireframe=r,an(a.material,i),this.DrawLine(e,t,i,n,o)}static DrawWireMesh(e){const t=Ai.getMesh(e.duration??0);"mesh"in e?(t.geometry=e.mesh.geometry,t.matrixWorld.copy(e.mesh.matrixWorld)):(t.geometry=e.geometry,t.matrixWorld.copy(e.matrix)),t.matrixAutoUpdate=!1,t.matrixWorldAutoUpdate=!1,t.material.depthTest=e.depthTest??!0,t.material.wireframe=!0,an(t.material,e.color??sn)}}const LP=new c.BoxGeometry(1,1,1);function xg(s=null){const e=new c.Color(s??14540253),t=new c.EdgesGeometry(LP);return new c.LineSegments(t,new c.LineBasicMaterial({color:e}))}function an(s,e){if(Array.isArray(s)){for(const i of s)an(i,e);return}const t=e instanceof te?e.a:1;s.color.set(e),s.opacity=t,s.transparent=t<1}const rm=Symbol("GizmoCache");class Ai{static familyName="needle-gizmos";static ensureFont(){let e=ne.__webpack_exports__default.FontLibrary.getFontFamily(this.familyName);e||(e=ne.__webpack_exports__default.FontLibrary.addFontFamily(this.familyName),e.addVariant("normal","normal","https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json","https://cdn.needle.tools/static/fonts/msdf/arial/arial.png")?.addEventListener("ready",()=>{ne.__webpack_exports__default.update()}))}static getTextLabel(e,t,i,n,o){this.ensureFont();let r=this.textLabelCache.pop(),a=1;o&&typeof o=="string"&&o?.length>=8&&o.startsWith("#")?(a=parseInt(o.substring(7),16)/255,o=o.substring(0,7),DP&&console.log(o,a)):typeof o=="object"&&o.a!==void 0&&(a=o.a);const l={boxSizing:"border-box",fontFamily:this.familyName,width:"auto",fontSize:i,color:n,lineHeight:1,backgroundColor:o??void 0,backgroundOpacity:a,textContent:t,borderRadius:.5*i,padding:.8*i,whiteSpace:"pre",offset:.05*i};if(r)r.set(l);else{r=new ne.__webpack_exports__Text(l);const h=this,d=r;d.setText=function(u){this.set({textContent:u}),h.tmuiNeedsUpdate=!0}}return this.tmuiNeedsUpdate=!0,this.registerTimedObject(U.Current,r,e,this.textLabelCache),r}static getBox(e){let t=this.boxesCache.pop();if(!t){const i=new c.BoxGeometry(1,1,1);t=new c.Mesh(i)}return this.registerTimedObject(U.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");i||(i=new c.BufferAttribute(new Float32Array(6),3),t.geometry.setAttribute("position",i))}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.linesCache),t}static getCircle(e){let t=this.circlesCache.pop();if(!t){t=new c.Line;let i=t.geometry.getAttribute("position");if(!i){i=new c.BufferAttribute(new Float32Array(Zf*3),3),t.geometry.setAttribute("position",i);const n=F(0,1,0),o=F(0,0,1),r=F(o);r.cross(n).normalize();const a=F(r),l=Math.PI*2/(Zf-1);for(let h=0;h<Zf+1;h++){const d=l*h;n.copy(a).multiplyScalar(Math.cos(d)*1),r.copy(o).multiplyScalar(Math.sin(d)*1);const u=n.add(r);i.setXYZ(h,u.x,u.y,u.z)}}}return t.frustumCulled=!1,this.registerTimedObject(U.Current,t,e,this.circlesCache),t}static getSphere(e,t,i){let n=this.spheresCache.pop();return n||(n=new c.Mesh(new c.SphereGeometry(1,8,8))),n.scale.set(e,e,e),n.material.wireframe=i,this.registerTimedObject(U.Current,n,t,this.spheresCache),n}static getArrowHead(e){let t=this.arrowHeadsCache.pop();return t||(t=new c.Mesh(new c.CylinderGeometry(0,.5,1,8))),this.registerTimedObject(U.Current,t,e,this.arrowHeadsCache),t}static getMesh(e){let t=this.mesh.pop();return t||(t=new c.Mesh,t.material=new c.MeshBasicMaterial),this.registerTimedObject(U.Current,t,e,this.mesh),t}static linesCache=[];static circlesCache=[];static spheresCache=[];static boxesCache=[];static arrowHeadsCache=[];static mesh=[];static textLabelCache=[];static registerTimedObject(e,t,i,n){if(!e){console.error("No Needle Engine context available. Did you call a Gizmos function in global scope?");return}const o=this.contextBeforeRenderCallbacks.get(e),r=this.contextPostRenderCallbacks.get(e);if(o){if(e.pre_render_callbacks[e.pre_render_callbacks.length-1]!==o){const a=e.pre_render_callbacks.indexOf(o);a>=0&&e.pre_render_callbacks.splice(a,1),e.pre_render_callbacks.push(o)}}else{const a=()=>{this.onBeforeRender(e,this.timedObjectsBuffer)};this.contextBeforeRenderCallbacks.set(e,a),e.pre_render_callbacks.push(a)}if(r){if(e.post_render_callbacks[e.post_render_callbacks.length-1]!==r){const a=e.post_render_callbacks.indexOf(r);a>=0&&e.post_render_callbacks.splice(a,1),e.post_render_callbacks.push(r)}}else{const a=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,a),e.post_render_callbacks.push(a)}t.traverse(a=>{a.layers.disableAll(),a.layers.enable(2)}),t.renderOrder=999999,t[rm]=n,t.castShadow=!1,t.receiveShadow=!1,t.isGizmo=!0,this.timedObjectsBuffer.push(t),this.timesBuffer.push(U.Current.time.realtimeSinceStartup+i),e.scene.add(t)}static timedObjectsBuffer=new Array;static timesBuffer=new Array;static contextPostRenderCallbacks=new Map;static contextBeforeRenderCallbacks=new Map;static tmuiNeedsUpdate=!1;static onBeforeRender(e,t){this.tmuiNeedsUpdate&&(this.tmuiNeedsUpdate=!1,ne.__webpack_exports__default.update());for(let i=0;i<t.length;i++){const n=t[i];if(e.mainCamera&&n instanceof ne.__webpack_exports__default.MeshUIBaseElement){if(fr(n))continue;const o=e.isInVR,r=!1,a=!o;Gc(n,e.mainCamera,r,a)}}}static onPostRender(e,t,i){const n=e.time.realtimeSinceStartup;for(let o=t.length-1;o>=0;o--){const r=t[o];n>=i[o]-1e-6&&(t.splice(o,1),i.splice(o,1),r.removeFromParent(),fr(r)!=!0&&r[rm].push(r))}}}const Vt=x("debugphysics"),IP=x("debugworker"),eb=new c.Layers;class vo{static AllLayers=4294967295;ray;cam;screenPoint;raycaster;results;targets;recursive=!0;minDistance;maxDistance;lineThreshold;layerMask;ignore;testObject;useAcceleratedRaycast;allowSlowRaycastFallback=!0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new c.Vector2),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setLayer(e){eb.set(e),this.layerMask=eb}setMask(e){this.layerMask||(this.layerMask=new c.Layers);const t=this.layerMask;t?t.mask=e:this.layerMask=e}}class Sg{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}}class Ba{static _raycasting=0;static get raycasting(){return this._raycasting>0}raycastPhysicsFast(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycast(e,t,{maxDistance:i,solid:n})??null}raycastPhysicsFastAndGetNormal(e,t=void 0,i=1/0,n=!0){return this.context.physics.engine?.raycastAndGetNormal(e,t,{maxDistance:i,solid:n})??null}sphereOverlapPhysics(e,t){return this.context.physics.engine?.sphereOverlap(e,t)??null}context;engine;constructor(e){this.context=e}raycaster=new c.Raycaster;defaultRaycastOptions=new vo;targetBuffer=new Array(1);defaultThresholds={Mesh:{},Line:{threshold:-1},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=new Array;sphereMask=new c.Layers;sphere=new c.Sphere;sphereOverlap(e,t,i=!0,n=!1,o=null){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;const r=this.sphereMask;r.enableAll(),r.disable(2);for(const a of this.context.scene.children)this.intersectSphere(a,e,t,r,this.sphereResults,i,n,o);return this.sphereResults.sort((a,l)=>a.distance-l.distance)}raycastFromRay(e,t=null){const i=t??this.defaultRaycastOptions;i.ray=e;const n=this.raycast(i);return i===this.defaultRaycastOptions&&(i.ray=void 0),n}raycast(e=null){Vt&&performance.mark("raycast.start"),e||(e=this.defaultRaycastOptions);const t=e.screenPoint??this.context.input.mousePositionRC,i=e.raycaster??this.raycaster;if(i.near=e.minDistance??0,i.far=e.maxDistance??1/0,i.params=this.defaultThresholds,e.lineThreshold===void 0&&(e.lineThreshold=-1),i.params.Line={threshold:e.lineThreshold},e.ray)i.ray.copy(e.ray);else{const a=e.cam??this.context.mainCamera;if(!a)return Vt&&console.error("Can not perform raycast - no main camera found"),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];const l=this.context.xrCamera;this.context.isInXR&&l instanceof c.ArrayCamera&&l.cameras.length>0?i.setFromCamera(t,l.cameras[0]):i.setFromCamera(t,a)}let n=e.targets;n||(n=this.targetBuffer,n.length=1,n[0]=this.context.scene);let o=e.results;this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),o||(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=new Array),o=this.defaultRaycastOptions.results),e.layerMask!==void 0?e.layerMask instanceof c.Layers?i.layers.mask=e.layerMask.mask:i.layers.mask=e.layerMask:(i.layers.enableAll(),i.layers.disable(2)),Vt&&console.time("raycast"),o.length=0,Ba._raycasting++,this.intersect(this.raycaster,n,o,e),o.sort((a,l)=>a.distance-l.distance);const r=e.ignore;return r!==void 0&&r.length>0&&(o=o.filter(a=>!r.includes(a.object))),Ba._raycasting--,Vt&&(console.timeEnd("raycast"),console.warn("#"+this.context.time.frame+", hits:",o?.length?[...o]:"nothing"),performance.mark("raycast.end"),performance.measure("raycast","raycast.start","raycast.end")),o}intersect(e,t,i,n){for(const o of t){if(!o||o.visible===!1||B.isGizmo(o)||n.lineThreshold!==void 0&&n.lineThreshold<0&&o instanceof c.Line)continue;let r=!0;const a=o,l=a.geometry;if(o.raycastAllowed===!1&&(r=!1),r&&n.testObject){const h=n.testObject?.(o);if(h===!1)continue;h==="continue in children"&&(r=!1)}else r&&(l&&tb(l)||(r=!1));if(r){const h=i.length,d=o.raycastPreference||"lod";let u=d!=="bounds";if(n.precise===!1&&(u=!1),l&&(u||=l.getAttribute("position")?.array?.length<64),a instanceof X.GroundedSkybox&&(u=!1),d==="lod"){const f=re.getRaycastMesh(o);f&&(a.geometry=f)}if(!u&&BP(a,e,i)||(n.useAcceleratedRaycast!==!1?su.runMeshBVHRaycast(e,a,i,this.context,n):e.intersectObject(a,!1,i)),a.geometry=l,Vt&&i.length!=h){const f=i[i.length-1];B.DrawWireSphere(f.point,.1,7798784,1,!1),B.DrawWireMesh({mesh:o,depthTest:!1,duration:.2,color:7798784})}}n.recursive!==!1&&this.intersect(e,o.children,i,n)}return i}tempBoundingBox=new c.Box3;intersectSphere(e,t,i,n,o,r,a,l){let h=e&&e.isMesh&&e.layers.test(n)&&!B.isGizmo(e);h&&=e.visible,h&&=!(e instanceof c.Line),h&&=!(e instanceof X.GroundedSkybox);const d=e,u=d.geometry;if(h&&l){const f=l(e);if(f===!1)return;f==="continue in children"&&(h=!1)}if(u&&tb(u)||(h=!1),h){if(a){const f=this.sphere;f.center.copy(t),f.radius=i;const m=o.length;if(su.runMeshBVHRaycast(this.sphere,d,o,this.context,{}),m!=o.length&&!r)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){d.matrixWorldNeedsUpdate&&d.updateWorldMatrix(!1,!1);const f=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(d.matrixWorld),m=this.sphere;if(m.center.copy(t),m.radius=i,m.intersectsBox(f)){const g=Y(e),b=g.distanceTo(m.center),y=new Sg(e,b,g);if(o.push(y),!r)return}}}if(e.children)for(const f of e.children){const m=o.length;if(this.intersectSphere(f,t,i,n,o,r,a,l),m!=o.length&&!r)return}}}function tb(s){return!(s.index&&s.index.array.length<3)}const Fo=new c.Sphere,Yh=new c.Plane,jP=new c.Matrix3;function BP(s,e,t){const i=s._computeIntersections;if(!i)return!1;let n=s["_computeIntersections:Needle"];return n||(n=s["_computeIntersections:Needle"]=function(o,r,a){const l=this,h=l.geometry.boundingSphere;if(h){if(l instanceof X.GroundedSkybox){Yh.setFromNormalAndCoplanarPoint(F(0,1,0),F(0,-l.position.y,0)),Yh.applyMatrix4(l.matrixWorld,jP);const u=o.ray.intersectPlane(Yh,F());if(u){Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const m=F(u).sub(o.ray.origin).length(),g=Fo.radius*.5;m<g&&r.push({distance:m,point:u,object:l,normal:Yh.normal.clone()})}return}Fo.copy(h),Fo.applyMatrix4(l.matrixWorld);const d=o.ray.intersectSphere(Fo,F());if(d){const u=F(d).sub(o.ray.origin),f=u.length();if(f>Fo.radius){const m=u.clone().normalize();r.push({distance:f,point:d,object:l,normal:m})}}}}),s._computeIntersections=n,e.intersectObject(s,!1,t),s._computeIntersections=i,!0}var su;(s=>{let e=0;function t(v,w,k,O,M){if(!w.geometry||!w.geometry.hasAttribute("position"))return!1;const D=w.geometry;if(w?.isSkinnedMesh){const L=w,j=L.bvhNeedsUpdate;if(!L.staticGenerator)l(),r&&(L.staticGenerator=new r(w),L.staticGenerator.applyWorldTransforms=!1,L.staticGeometry=L.staticGenerator.generate(),D.boundsTree=a?.call(L.staticGeometry),L.staticGeometryLastUpdate=performance.now()+Math.random()*200,L.bvhNeedsUpdate=!0);else if(D.boundsTree&&(L.autoUpdateMeshBvhInterval!==void 0&&L.autoUpdateMeshBvhInterval>=0||j===!0)){const V=performance.now(),W=V-L.staticGeometryLastUpdate,E=L.autoUpdateMeshBvhInterval??100;(j||W>E)&&(Vt&&console.warn(`Physics: updating skinned mesh bvh for ${w.name} after ${W.toFixed(2)}ms`),L.bvhNeedsUpdate=!1,L.staticGeometryLastUpdate=V,L.staticGenerator?.generate(L.staticGeometry),D.boundsTree.refit())}}else if(!D.boundsTree){d||_();let L=!0;if((O.xr||D[g]===!1||D.getAttribute("position")?.isInterleavedBufferAttribute||D.index&&D.index?.isInterleavedBufferAttribute||e>10)&&(L=!1),L&&f){if(D[m]===void 0){let j=null;if(y.length>0){const V=y.shift();V&&!V.running&&(j=V)}if(!j&&b.length<3)try{IP&&console.warn("[GenerateMeshBVHWorker] Creating worker with import.meta.url:",typeof document>"u"?require("url").pathToFileURL(__filename).href:ya&&ya.tagName.toUpperCase()==="SCRIPT"&&ya.src||new URL("needle-engine.bundle-DTfojsUD.umd.cjs",document.baseURI).href),j=new f,b.push(j)}catch(V){V instanceof DOMException&&V.name==="SecurityError"?(console.warn("Failed to create MeshBVH worker, falling back to main thread generation. This can happen when running from file://, if the browser does not support workers or if the browser is blocking workers for other reasons."),console.debug(V),e+=10):(console.error("Failed to create MeshBVH worker. Please see below for more details:"),console.log(V)),e++}if(j!=null&&!j.running){const V=w.name;Vt&&console.log("<<<< worker start",V,j),D[m]="queued",performance.mark("bvh.create.start");const W=D.clone();try{j.generate(W).then(E=>{D[m]="done",D.boundsTree=E}).catch(E=>{D[m]="failed - "+E?.message,D[g]=!1,Vt&&console.error("Failed to generate mesh bvh on worker",E)}).finally(()=>{Vt&&console.log(">>>>> worker done",V,{hasBoundsTre:D.boundsTree!=null}),y.push(j),W.dispose(),performance.mark("bvh.create.end"),performance.measure("bvh.create (worker)","bvh.create.start","bvh.create.end")})}catch(E){console.error("Failed to generate mesh bvh on worker",E)}}else Vt&&console.warn("No worker available")}}else(!u||!L)&&(l(),o&&(performance.mark("bvh.create.start"),D.boundsTree=new o(D),performance.mark("bvh.create.end"),performance.measure("bvh.create","bvh.create.start","bvh.create.end")))}if(v instanceof c.Raycaster){const L=v,j=w.raycast;if(D.boundsTree)l(),n&&(w.acceleratedRaycast||(w.acceleratedRaycast=n.bind(w),Vt&&console.debug(`Physics: bind acceleratedRaycast fn to "${w.name}"`)),w.raycast=w.acceleratedRaycast);else if(Vt&&console.warn("No bounds tree found for mesh",w.name,{workerTask:D[m],hasAcceleratedRaycast:n!=null}),M.allowSlowRaycastFallback===!1&&(D.getAttribute("position")?.array?.length??0)>2e3)return Vt&&console.warn("Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false"),!1;const V=L.firstHitOnly;return L.firstHitOnly=!1,L.intersectObject(w,!1,k),L.firstHitOnly=V,w.raycast=j,!0}else if(v instanceof c.Sphere){const L=D.boundsTree;if(L){const j=v;if(h.copy(w.matrixWorld).invert(),j.applyMatrix4(h),L.intersectsSphere(j)){const W=Y(w),E=W.distanceTo(j.center),N=new Sg(w,E,W);k.push(N)}}return!0}return!1}s.runMeshBVHRaycast=t;let i=!1,n=null,o=null,r=null,a=null;function l(){i||(i=!0,Promise.resolve().then(()=>require("./vendor-DkMW3WY4.umd.cjs")).then(v=>v.index$1).then(v=>{n=v.acceleratedRaycast,o=v.MeshBVH,r=v.StaticGeometryGenerator,a=v.computeBoundsTree}).catch(v=>{(Vt||A())&&console.error("Failed to load BVH library...",v.message)}))}const h=new c.Matrix4;let d=!1,u=!1,f=null;const m=Symbol("Needle:MeshBVH-Worker"),g=Symbol("Needle:MeshBVH-CanUseWorker"),b=[],y=[];function _(){d=!0,u=!0,Promise.resolve().then(()=>lD).then(v=>{f=v.GenerateMeshBVHWorker}).catch(v=>{Vt||A()?console.warn("Failed to setup mesh bvh worker"):console.debug("Failed to setup mesh bvh worker",v)}).finally(()=>{u=!1})}})(su||(su={}));const ib=Symbol("gltf-loader-internal-usage-tracker"),FP=x("debugusers");class Sa{get name(){return"NEEDLE_internal_usage_tracker"}static isLoading(e){return Sa._loadingProcesses>0}static _loadingProcesses=0;parser;_getDependency;_loadingId;_loadedObjects=new Set;constructor(e){this.parser=e,this._getDependency=this.parser.getDependency,this._loadingId=Date.now().toString()}beforeRoot(){Sa._loadingProcesses++;const e=this,t=this._getDependency;return this.parser.getDependency=function(i,n){const o=t.call(this,i,n);return o.then(r=>(r&&(e._loadedObjects.add(r),r[ib]=e._loadingId),r)),o},null}afterRoot(e){Sa._loadingProcesses--,this.parser.getDependency=this._getDependency;for(const t of this._loadedObjects)delete t[ib],t instanceof c.Object3D&&(t.parent||t instanceof c.Mesh&&setTimeout(()=>{FP&&console.warn("> GLTF LOADER: Mesh not used in scene!",t),t.material=null,t.geometry=null},1e3));return null}}class nw{constructor(){window.addEventListener("unhandledrejection",e=>{if(e.defaultPrevented)return;const t=e?.reason?.path;if(t){const i=t[0];i&&i.tagName==="IMG"&&(console.warn(`Could not load image:
|
|
882
882
|
`+i.src),e.preventDefault())}})}}const Au=x("trackresources");function sw(){return Au==="dispose"}let vr=!0;Au===0&&(vr=!1);function UP(s){vr=s}function ow(){return vr}const rw=Symbol("disposable");function aw(s,e){s&&(s[rw]=e,or&&console.warn("Set disposable",e,s))}const lw=Symbol("disposed");function zP(s){return s[lw]===!0}function we(s){if(s){if(s[rw]===!1){or&&console.warn("Object is marked as not disposable",s);return}if(typeof s=="object"&&(s[lw]=!0),s instanceof c.Scene)we(s.environment),we(s.background),we(s.customDepthMaterial),we(s.customDistanceMaterial);else if(s instanceof c.SkinnedMesh)we(s.geometry),we(s.material),we(s.skeleton),we(s.bindMatrix),we(s.bindMatrixInverse),we(s.customDepthMaterial),we(s.customDistanceMaterial),s.visible=!1;else if(s instanceof c.Mesh)we(s.geometry),we(s.material),we(s.customDepthMaterial),we(s.customDistanceMaterial),s.visible=!1;else if(s instanceof c.Object3D)s.visible=!1;else if(s instanceof c.BufferGeometry){Hr(s);for(const e of Object.keys(s.attributes)){const t=s.attributes[e];we(t)}}else if(s instanceof c.BufferAttribute||s instanceof c.InterleavedBufferAttribute)or&&console.warn("BufferAttribute dispose not supported",s.count);else if(s instanceof Array)for(const e of s)e instanceof c.Material&&we(e);else if(s instanceof c.Material){Hr(s);for(const t of Object.keys(s)){const i=s[t];i instanceof c.Texture&&we(i)}const e=s.uniforms;if(e)for(const t of Object.keys(e)){const i=e[t];i instanceof c.Texture?we(i):i instanceof c.Uniform$1&&we(i.value)}}else s instanceof c.Texture?(Hr(s),Hr(s.source),s.source?.data instanceof ImageBitmap&&Hr(s.source.data)):s instanceof c.Skeleton?(Hr(s.boneTexture),s.boneTexture=null):s instanceof c.Bone||!(s instanceof c.Object3D)&&or&&console.warn("Unknown object type",s)}}function Hr(s){s&&((or||sw()||Au)&&console.warn("🧨 FREE",s),s instanceof ImageBitmap||"dispose"in s&&typeof s.dispose=="function"&&s.dispose())}function NP(s){}const VP=new Set;function Cg(s,e,t=null,i){if(i||(i=VP,i.clear()),!s)return i;const n=s[Mc];if(n)for(const o of n)i.has(o)||t?.call(null,o)!==!1&&(i.add(o),e&&Cg(o,!0,t,i));return i}function $P(s){return s[Gl]}const or=x("debugresourceusers")||x("debugmemory"),Mc=Symbol("needle-resource-users"),Gl=Symbol("needle-resource-users-count");function Ft(s,e){Su(s,e,function(t,i){vr&&!Ba.raycasting&&(ou(Mc,this,t,!1),ou(Mc,this,i,!0))})}vr&&(Ft(c.Mesh.prototype,"material"),Ft(c.Mesh.prototype,"geometry"),Ft(c.Material.prototype,"map"),Ft(c.Material.prototype,"bumpMap"),Ft(c.Material.prototype,"alphaMap"),Ft(c.Material.prototype,"normalMap"),Ft(c.Material.prototype,"displacementMap"),Ft(c.Material.prototype,"roughnessMap"),Ft(c.Material.prototype,"metalnessMap"),Ft(c.Material.prototype,"emissiveMap"),Ft(c.Material.prototype,"specularMap"),Ft(c.Material.prototype,"envMap"),Ft(c.Material.prototype,"lightMap"),Ft(c.Material.prototype,"aoMap"),Ft(c.Material.prototype,"gradientMap"));function WP(s){if(vr===!1)return;const e=s[Mc];if(e)for(const t of e)ou(Mc,t,s,!1)}vr&&Su(c.Material.prototype,"dispose",function(){WP(this)});let am=0;function ou(s,e,t,i){if(am>0)return;if(Array.isArray(t)){for(const o of t)ou(s,e,o,i);return}if(!t)return;let n=t[s];if(n||(n=new Set),i){if(e&&!n.has(e)){n.add(e);let o=t[Gl]||0;o+=1,t[Gl]=o,or&&console.warn(`🟢 Added user of "${t.type}"`,e,t,o,"users:",n)}}else if(e&&n.has(e)){n.delete(e);let o=t[Gl]||0;o>0&&(o-=1,t[Gl]=o),or&&console.warn(`🔴 Removed user of "${t.type}"`,e,t,o,"users:",n),o<=0&&(Sa.isLoading(t)||(Au&&console.warn(`🔴 Removed all user of "${t.type}"`,t),sw()&&we(t)))}t[s]=n}try{Su(c.WebGLRenderer.prototype,"render",function(){am++},function(){am--})}catch(s){console.warn("Could not wrap WebGLRenderer.render",s)}const kc=Symbol("NEEDLE_NEED_UPDATE_INSTANCE"),cw=Symbol("isUsingInstancing"),hw=Symbol("instancingRenderer"),Hl=Symbol("instancingAutoUpdateBounds");class $i{static isUsingInstancing(e){return e[cw]===!0}static getRenderer(e){return e[hw]||null}setAutoUpdateBounds(e,t){const i=$i.getRenderer(e);i&&(i[Hl]=t)}static markDirty(e,t=!0){if(e&&(this.isUsingInstancing(e)&&(e[kc]=!0,e.matrixWorldNeedsUpdate=!0),t))for(const i of e.children)$i.markDirty(i,!0)}}const dw=new Map;function uw(s,e){if(!s)return;if(!e){console.warn("No prototype found",s,s.prototype,s.constructor);return}const t=dw.get(e);t&&t.apply(s)}function Pg(s){const e=GP(s.prototype);dw.set(s,e)}function GP(s){return new HP(s)}class HP{$symbol;extensions;descriptors;constructor(e){this.$symbol=Symbol("prototype-extension"),this.extensions=Object.keys(e),this.descriptors=new Array;for(let t=0;t<this.extensions.length;t++){const i=this.extensions[t],n=Object.getOwnPropertyDescriptor(e,i);n&&this.descriptors.push(n)}}apply(e){if(!e[this.$symbol]){e[this.$symbol]=!0;for(let t=0;t<this.extensions.length;t++){const i=this.extensions[t],n=this.descriptors[t];n&&Object.defineProperty(e,i,n)}}}}function Du(s){s&&s.isObject3D===!0&&uw(s,c.Object3D)}let nb=!1;function qP(){if(nb)return;if(nb=!0,eg.experimentalSmartHierarchyUpdate){const i=c.Object3D.prototype.add;c.Object3D.prototype.add=function(...r){return ep(),i.apply(this,r)};const n=c.Object3D.prototype.attach;c.Object3D.prototype.attach=function(...r){return ep(),n.apply(this,r)};const o=c.Object3D.prototype.remove;c.Object3D.prototype.remove=function(...r){return ep(),o.apply(this,r)}}c.Object3D.prototype.SetActive=function(i){this.visible=i},c.Object3D.prototype.setActive=function(i){this.visible=i},c.Object3D.prototype.destroy=function(){Si(this)},c.Object3D.prototype.addComponent=function(i,n){return Hn(this,i,n)},c.Object3D.prototype.addNewComponent=function(i,n){return Hn(this,i,n)},c.Object3D.prototype.removeComponent=function(i){return Eg(this,i)},c.Object3D.prototype.getOrAddComponent=function(i,n){return Zc(this,i,n)},c.Object3D.prototype.getComponent=function(i){return wo(this,i)},c.Object3D.prototype.getComponents=function(i,n){return Ha(this,i,n)},c.Object3D.prototype.getComponentInChildren=function(i,n=!1){return Jc(this,i,n)},c.Object3D.prototype.getComponentsInChildren=function(i,n){return qa(this,i,n)},c.Object3D.prototype.getComponentInParent=function(i,n=!1){return Ec(this,i,n)},c.Object3D.prototype.getComponentsInParent=function(i,n){return Iu(this,i,n)},Object.getOwnPropertyDescriptor(c.Object3D.prototype,"activeSelf")||Object.defineProperty(c.Object3D.prototype,"activeSelf",{get:function(){return Ga(this)},set:function(i){lc(this,i)}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"raycastAllowed")||Object.defineProperty(c.Object3D.prototype,"raycastAllowed",{get:function(){return this.userData&&this.userData.raycastAllowed!==!1},set:function(i){const n=this;n.userData||(n.userData={}),n.userData.raycastAllowed=i}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"worldPosition")||Object.defineProperty(c.Object3D.prototype,"worldPosition",{get:function(){return this instanceof X.TransformControlsGizmo?Y(this.object):Y(this)},set:function(i){ct(this,i)}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"worldQuaternion")||Object.defineProperty(c.Object3D.prototype,"worldQuaternion",{get:function(){return this instanceof X.TransformControlsGizmo?pe(this.object):pe(this)},set:function(i){un(this,i)}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"worldRotation")||Object.defineProperty(c.Object3D.prototype,"worldRotation",{get:function(){return wu(this)},set:function(i){Uv(this,i)}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"worldScale")||Object.defineProperty(c.Object3D.prototype,"worldScale",{get:function(){return je(this)},set:function(i){Ea(this,i)}});const s=new c.Matrix4,e=new c.Vector3(0,0,0),t=new c.Vector3(0,1,0);Object.getOwnPropertyDescriptor(c.Object3D.prototype,"worldForward")||Object.defineProperty(c.Object3D.prototype,"worldForward",{get:function(){return F().set(0,0,1).applyQuaternion(pe(this))},set:function(i){const n=ii().setFromRotationMatrix(s.lookAt(e.set(0,0,0),i,t.set(0,1,0)));this.worldQuaternion=n}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"worldRight")||Object.defineProperty(c.Object3D.prototype,"worldRight",{get:function(){return F().set(1,0,0).applyQuaternion(pe(this))}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"worldUp")||Object.defineProperty(c.Object3D.prototype,"worldUp",{get:function(){return F().set(0,1,0).applyQuaternion(pe(this))}}),Object.getOwnPropertyDescriptor(c.Object3D.prototype,"contains")||Object.defineProperty(c.Object3D.prototype,"contains",{value:function(i){if(!i)return!1;if(this===i)return!0;for(const n of this.children)if(n.contains(i))return!0;return!1}}),Pg(c.Object3D)}const Md=x("debuggetcomponent"),rr=x("debuginstantiate");class yn{idProvider;parent;keepWorldPosition;position;rotation;scale;visible;context;components;clone(){const e=new yn;return e.idProvider=this.idProvider,e.parent=this.parent,e.keepWorldPosition=this.keepWorldPosition,e.position=Array.isArray(this.position)?[...this.position]:this.position?.clone(),e.rotation=Array.isArray(this.rotation)?[...this.rotation]:this.rotation?.clone(),e.scale=Array.isArray(this.scale)?[...this.scale]:this.scale?.clone(),e.visible=this.visible,e.context=this.context,e.components=this.components,e}cloneAssign(e){this.idProvider=e.idProvider,this.parent=e.parent,this.keepWorldPosition=e.keepWorldPosition,this.position=Array.isArray(e.position)?[...e.position]:e.position?.clone(),this.rotation=Array.isArray(e.rotation)?[...e.rotation]:e.rotation?.clone(),this.scale=Array.isArray(e.scale)?[...e.scale]:e.scale?.clone(),this.visible=e.visible,this.context=e.context,this.components=e.components}}function Ga(s){return s.visible}function lc(s,e){return typeof e=="number"&&(e=e>.5),s.visible=e,s.visible}function fw(s){return s[Un]||Lu(s)}function pw(s,e){s[cw]=e}function Lu(s){return $i.isUsingInstancing(s)}function Og(s,e){return ka(s,e,!0,!0)}const mw=Symbol("isDestroyed");function fr(s){return s[mw]}function gw(s,e){s[mw]=e}const lm=Symbol("isDontDestroy");function na(s,e=!0){s[lm]=e}const kd=[],Ed=[];function Si(s,e=!0,t=!1){kd.length=0,Ed.length=0,cm(s,e,!0);for(const i of kd)i.gameObject=null,i.context=null;for(const i of Ed)gw(i,!0),t&&we(i);Ed.length=0,kd.length=0}function cm(s,e=!0,t=!0){if(s==null)return;const i=s;if(i.isComponent){if(i[lm])return;kd.push(i);const r=i.gameObject;i.__internalDisable(),i.__internalDestroy(),i.gameObject=r;return}if(s[lm])return;const n=s;Md&&console.log(n),Ed.push(n);const o=n.userData?.components;if(o!=null&&Array.isArray(o)){let r=o.length;for(let a=0;a<o.length;a++){const l=o[a];cm(l,e,!1),o.length<r&&(r=o.length,a--)}}if(e&&n.children)for(const r of n.children)cm(r,e,!1);t&&n.removeFromParent()}function pr(s,e,t=!0){return yw(s,e,t)}function*Mg(s,e,t=!1,i=999,n=0){if(s?.userData.components&&!(n>i)){for(const o of s.userData.components)e&&o?.isComponent===!0&&o instanceof e?yield o:yield o;if(t===!0)for(const o of s.children)yield*Mg(o,e,!0,i,n+1)}}function yw(s,e,t,i=0){if(s){if(s.isObject3D,i>1e3){console.warn("Failed to iterate components: too many levels");return}if(s.userData?.components)for(let n=0;n<s.userData.components.length;n++){const o=s.userData.components[n];if(o?.isComponent===!0){const r=e(o);if(r!==void 0)return r}}if(t&&s.children){const n=i+1;for(let o=0;o<s.children.length;o++){const r=s.children[o];if(!r)continue;const a=yw(r,e,t,n);if(a!==void 0)return a}}}}function uo(s,e){if("isAssetReference"in s)return s.instantiate(e??void 0);let t=null;e!=null&&(e.x!==void 0?(t=new yn,t.position=e):t=e);let i=U.Current;t?.context&&(i=t.context),Md&&i.alias&&console.log("context",i.alias),t&&!t.idProvider&&(t.idProvider=new ht(Date.now()));const n=[],o={},r={},a=_w(i,s,t,n,o,r);a&&(YP(a,o),QP(r,o)),Md&&(Xd(s,!0),Xd(a,!0));const l={};if(t?.components!==!1){for(const h in n){const d=n[h],u=d.guid;t&&t.idProvider&&(d.guid=t.idProvider.generateUUID(),l[u]=d.guid,Md&&console.log(d.name,d.guid)),Tu(d,i),d.__internalNewInstanceCreated&&d.__internalNewInstanceCreated()}for(const h in n){const d=n[h];d.resolveGuids&&d.resolveGuids(l),d.enabled!==!1&&(d.enabled=!0)}ru(i)}return a}function _w(s,e,t,i,n,o){if(!e||e[yi])return null;const r=e.userData;e.userData={};const a=e.children;e.children=[];const l=e.clone(!1);if(Du(l),e.userData=r,e.children=a,n[e.uuid]={original:e,clone:l},rr&&console.log("ADD",e,l),e.type==="SkinnedMesh"&&(o[e.uuid]={original:e,clone:l}),t?.visible!==void 0&&(l.visible=t.visible),t?.idProvider){l.uuid=t.idProvider.generateUUID();const d=l;d&&(d.guid=l.uuid)}e.animations&&e.animations.length>0&&(l.animations=[...e.animations]);const h=e.parent;if(h&&h.add(l),t?.position)if(Array.isArray(t.position)){const d=new c.Vector3;d.fromArray(t.position),l.worldPosition=d}else l.worldPosition=t.position;else l.position.copy(e.position);if(t?.rotation){if(t.rotation instanceof c.Quaternion)l.worldQuaternion=t.rotation;else if(t.rotation instanceof c.Euler)l.worldQuaternion=ii().setFromEuler(t.rotation);else if(Array.isArray(t.rotation)){const d=new c.Euler;d.fromArray(t.rotation),l.worldQuaternion=ii().setFromEuler(d)}}else l.quaternion.copy(e.quaternion);if(t?.scale)if(Array.isArray(t.scale)){const d=new c.Vector3;d.fromArray(t.scale),t.scale=d}else l.scale.copy(t.scale);else l.scale.copy(e.scale);if(t?.parent&&t.parent!=="scene"){let d=null;if(typeof t.parent=="string"?d=ka(t.parent,s.scene,!0):d=t.parent,d){const u=t.keepWorldPosition===!0?d.attach:d.add;u?u.call(d,l):console.error("Invalid parent object",d,"received when instantiating:",e)}else console.warn("could not find parent:",t.parent)}for(const[d,u]of Object.entries(e.userData))d!=="components"&&(l.userData[d]=u);if(e.userData?.components){const d=e.userData.components,u=[];l.userData.components=u;for(let f=0;f<d.length;f++){const m=d[f],g=new m.constructor;XP(m,g),m[sc]!==void 0&&(g[sc]=m[sc]),u.push(g),g.gameObject=l,i.push(g),n[m.guid]={original:m,clone:g},xu.dispatchComponentLifecycleEvent("component-added",g)}}t&&(t.position=void 0,t.rotation=void 0,t.scale=void 0,t.parent=void 0,t.visible=void 0);for(const d in e.children){const u=e.children[d],f=_w(s,u,t,i,n,o);f&&(n[f.uuid]={original:u,clone:f},l.add(f))}return l}function XP(s,e,t){Aa(e,s,void 0,{})}function QP(s,e){for(const t in s){const i=s[t],n=i.original,o=n.skeleton,r=i.clone;if(!o){console.warn("Skinned mesh has no skeleton?",i);continue}const a=o.bones,l=r.skeleton.clone();r.skeleton=l,r.bindMatrix.clone().copy(n.bindMatrix),r.bindMatrixInverse.copy(n.bindMatrixInverse);const h=[];l.bones=h;for(let d=0;d<a.length;d++){const u=a[d],m=e[u.uuid].clone;h.push(m)}}for(const t in s){const i=s[t].clone;i.skeleton.update(),i.bind(i.skeleton,i.bindMatrix),i.updateMatrixWorld(!0)}}function YP(s,e){for(const t in e){const n=e[t].clone;if(n?.isObject3D&&n?.userData?.components)for(let o=0;o<n.userData.components.length;o++){const r=n.userData.components[o],a=Object.entries(r);for(const[l,h]of a)if(Array.isArray(h)){const d=[];r[l]=d;for(let u=0;u<h.length;u++){const f=h[u];if(typeof f!="object"){d.push(f);continue}const m=sb(r,l,f,e);m!==void 0?(rr&&console.log("Found new instance for",l,f,"->",m),d.push(m)):(rr&&console.warn("Could not find new instance for",l,f),d.push(f))}}else if(typeof h=="object"){const d=sb(r,l,h,e);d!==void 0?r[l]=d:rr&&console.warn("Could not find new instance for",l,h)}}}}function sb(s,e,t,i){if(t!=null)if(t.isComponent===!0){const n=t.gameObject;if(n){const o=n.uuid,r=i[o]?.clone;if(!r){rr&&console.log("reference did not change",e,s,t);return}const a=n.userData.components.indexOf(t);if(a>=0&&r.isObject3D)return rr&&console.log(e,o),r.userData.components[a];console.warn("could not find component",e,t)}}else if(t.isObject3D===!0){if(e==="gameObject")return;const n=t;if(n){const o=n.uuid,r=i[o]?.clone;if(r)return rr&&console.log(e,"old",t,"new",r),r}}else{if(t.isVector4||t.isVector3||t.isVector2||t.isQuaternion||t.isEuler)return t.clone();if(t.isColor===!0)return t.clone();if(t.isEventList===!0)return t.__internalOnInstantiate(i)}}function cc(s,e){try{e||s()}catch(t){return console.error(t),!1}return!0}const hm=x("debugnewscripts"),KP=x("debughierarchy"),Ce=[];function ZP(){return Ce.length>0}function ru(s){if(hm&&console.log("Register new components",s.new_scripts.length,[...s.new_scripts],s.alias?"element: "+s.alias:s.hash,s),s.new_scripts_pre_setup_callbacks.length>0){for(const e of s.new_scripts_pre_setup_callbacks)e&&e();s.new_scripts_pre_setup_callbacks.length=0}if(!(s.new_scripts.length<=0)){Ce.length=0,s.new_scripts.length>0&&Ce.push(...s.new_scripts),s.new_scripts.length=0;for(let e=0;e<Ce.length;e++)try{const t=Ce[e];if(t.isComponent!==!0){(A()||hm)&&console.error(`Registered script is not a Needle Engine component.
|
|
883
883
|
The script will be ignored. Please make sure your component extends "Behaviour" imported from "@needle-tools/engine"
|
|
884
884
|
`,t),Ce.splice(e,1),e--;continue}if(t.destroyed)continue;if(!t.gameObject){console.warn(`Component can not be initialized: no GameObject assigned.
|
|
@@ -1729,4 +1729,4 @@ Error:`,r),null}}updateColliderCollisionGroups(e){const t=e[bt],i=e.membership;l
|
|
|
1729
1729
|
---------------------------------
|
|
1730
1730
|
• `+r.passes.map(u=>u.name||u.constructor.name+"*").join(`
|
|
1731
1731
|
• `)+`
|
|
1732
|
-
`),Kt&&this._onCreateEffectsDebug(this._composer,o)}createPassForMergeableEffects(e,t,i,n){if(e.length>0){const o=new T.POSTPROCESSING.MODULE.EffectPass(i,...e);o.name=e.map(r=>r.name).join(", "),o.mainScene=n,o.enabled=!0,o.renderToScreen=!1,t.addPass(o),e.length=0}}handleDevicePixelRatio(){typeof this.context.devicePixelRatio=="number"&&this.context.requestSizeUpdate()}_menuEntry=null;_passIndices=null;_onCreateEffectsDebug(e,t){if(Kt==="passes"){const i=new T.POSTPROCESSING.MODULE.DepthEffect({blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.NORMAL,inverted:!0});i.name="Depth Effect";const n=new T.POSTPROCESSING.MODULE.EffectPass(t,i);if(n.name="Depth Effect Pass",n.enabled=!1,e.passes.push(n),this._passIndices!==null){const r=[e.passes[0]];this._passIndices.length>0&&r.push(...this._passIndices.filter(a=>a!==0).map(a=>e.passes[a]).filter(a=>a)),r.length>0&&console.log("[PostProcessing] Passes (selected) →",r),e.passes.length=0;for(const a of r)a.enabled=!0,a.renderToScreen=!1,e.addPass(a)}const o=this.context.menu;if(o&&this._passIndices===null){this._menuEntry&&this._menuEntry.remove();const r=document.createElement("select");r.multiple=!0;const a=document.createElement("option");a.innerText="Final Output",a.value="-1",r.appendChild(a);for(const l of e.passes){const h=document.createElement("option");h.innerText=l.name,h.value=`${e.passes.indexOf(l)}`,h.title=l.name,r.appendChild(h)}o.appendChild(r),this._menuEntry=r,r.addEventListener("change",()=>{const l=Array.from(r.selectedOptions).map(h=>parseInt(h.value));l.length===1&&l[0]===-1?this._passIndices=null:this._passIndices=l,this.applyEffects(this.context)})}}}}const oD=Object.freeze(Object.defineProperty({__proto__:null,PostProcessingHandler:$a},Symbol.toStringTag,{value:"Module"}));class pS{}const rD=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:ue,ActionCollection:xx,ActionModel:ti,AlignmentConstraint:oh,Animation:At,AnimationCurve:vh,AnimationExtension:ef,AnimationTrackHandler:Lc,Animator:dt,AnimatorController:vi,AnimatorControllerBuilder:Rg,Antialiasing:xh,Attractor:dl,AudioExtension:Mr,AudioListener:fs,AudioSource:Ci,AudioTrackHandler:ps,Avatar:po,AvatarBlink_Simple:Sr,AvatarEyeLook_Rotation:Vg,AvatarLoader:uS,AvatarMarker:Oe,AvatarModel:s_,Avatar_Brain_LookAt:jc,Avatar_MouthShapes:ah,Avatar_MustacheShake:zg,Avatar_POI:hr,AxesHelper:Ka,BaseUIComponent:Gi,BasicIKConstraint:Wg,BehaviorExtension:by,BehaviorModel:Ct,BloomEffect:gf,BoxCollider:Xu,BoxGizmo:Tr,BoxHelperComponent:xt,Button:Ls,CallInfo:hs,Camera:ai,CameraTargetReachedEvent:Dc,Canvas:za,CanvasGroup:mo,CapsuleCollider:vs,ChangeMaterialOnClick:dy,ChangeTransformOnClick:kr,CharacterController:Cr,CharacterControllerInput:Ps,ChromaticAberration:Sh,ClickThrough:Mf,ColorAdjustments:Eo,ColorBySpeedModule:hl,ColorOverLifetimeModule:ff,ContactShadows:lh,ControlTrackHandler:$u,CursorFollow:Nr,CustomBranding:Rr,Deletable:Xg,DeleteBox:ao,DepthOfField:wn,DeviceFlag:Qu,DocumentExtension:fS,DragControls:Jo,DropListener:Ms,Duplicatable:iy,EffectWrapper:zc,EmissionModule:Ts,EmphasizeOnClick:tl,EnvironmentScene:Wu,EventList:ie,EventListEvent:Bu,EventSystem:Ht,EventTrigger:Zu,FieldWithDefault:nx,FixedJoint:Ly,Fog:rl,GltfExport:ay,GltfExportBox:oy,Gradient:Dr,Graphic:yh,GraphicRaycaster:Uu,GridHelper:al,GridLayoutGroup:Oy,GroundProjectedEnv:Yn,GroupActionModel:er,HideOnStart:Fi,HingeJoint:bh,HorizontalLayoutGroup:Py,get HoverAnimation(){return exports.HoverAnimation},Image:gl,InheritVelocityModule:Uy,InputField:Yy,InstanceHandle:dr,InstancingHandler:_r,Interactable:qg,Keyframe:li,LODGroup:hf,LODModel:ll,Light:nt,LimitVelocityOverLifetimeModule:st,LogStats:Hg,LookAt:Ky,LookAtConstraint:xr,MainModule:It,MarkerTrackHandler:Vu,MaskableGraphic:_h,MeshCollider:xo,MeshRenderer:dh,MinMaxCurve:q,MinMaxGradient:Lr,NeedleMenu:Zn,NestedGltf:cl,Networking:By,NoiseModule:me,ObjectRaycaster:Wi,OffsetConstraint:Ar,OpenURL:yl,OrbitControls:ce,Outline:ol,Padding:Er,ParticleBurst:yu,ParticleSubEmitter:zy,ParticleSystem:Uc,ParticleSystemRenderer:Ki,PhysicsExtension:vy,PixelationEffect:Ch,PlayAnimationOnClick:Bc,PlayAudioOnClick:fo,PlayableDirector:Fa,PlayerColor:Na,PointerEventData:th,PostProcessingHandler:$a,PreliminaryAction:il,PreliminaryTrigger:fh,RawImage:Cf,Rect:kx,RectTransform:gn,ReflectionProbe:as,RegisteredAnimationInfo:oo,RemoteSkybox:Gu,Renderer:qt,RendererLightmap:Jg,Rigidbody:$e,RotationBySpeedModule:Yi,RotationOverLifetimeModule:vn,SceneSwitcher:We,ScreenCapture:Ro,ScreenSpaceAmbientOcclusion:As,ScreenSpaceAmbientOcclusionN8:xn,ScrollFollow:Is,SeeThrough:Ds,SetActiveOnClick:uy,ShadowCatcher:kh,ShapeModule:Fy,SharpeningEffect:Oh,SignalAsset:Nu,SignalReceiver:nh,SignalReceiverEvent:ih,SignalTrackHandler:Ic,Size:Mx,SizeBySpeedModule:pi,SizeOverLifetimeModule:Ir,SkinnedMeshRenderer:ey,SmoothFollow:bf,SpatialGrabRaycaster:mr,SpatialHtml:Ah,SpatialTrigger:vf,SpatialTriggerReceiver:Xn,SpectatorCamera:wf,SphereCollider:Za,SplineContainer:Ur,SplineData:Qn,SplineWalker:Ji,Sprite:ks,SpriteData:Oa,SpriteRenderer:ui,SpriteSheet:Ua,SubEmitterSystem:_u,SyncedCamera:Hy,SyncedRoom:Sn,SyncedTransform:mn,TapGestureTrigger:py,TeleportTarget:rf,TestRunner:qy,TestSimulateUserData:Xy,Text:Lt,TextBuilder:Sy,TextExtension:lf,TextureSheetAnimationModule:jt,TiltShiftEffect:es,ToneMappingEffect:go,TrailModule:Le,TransformData:Ae,TransformGizmo:zr,TriggerBuilder:Tt,TriggerModel:lo,UIRaycastUtils:Ag,UIRootComponent:mh,USDZExporter:qn,USDZText:ma,USDZUIExtension:ky,UsageMarker:ch,VariantAction:hy,VelocityOverLifetimeModule:Fe,VerticalLayoutGroup:Cy,VideoPlayer:tt,get ViewBox(){return exports.ViewBox},Vignette:Fr,VisibilityAction:ph,Voip:bn,Volume:fl,VolumeParameter:z,VolumeProfile:pf,WebARCameraBackground:Lh,WebARSessionRoot:Vi,WebXR:af,WebXRImageTracking:Ih,WebXRImageTrackingModel:Bs,WebXRPlaneTracking:Fs,WebXRTrackedImage:Va,XRControllerFollow:js,XRControllerModel:ws,XRControllerMovement:Oi,XRFlag:Ui,XRRig:Rf,XRState:Wt,__Ignore:pS},Symbol.toStringTag,{value:"Module"}));exports.SplineUtils=void 0;(s=>{function e(t,i=!1,n=.75){const o=new Ur,r=1-I.clamp(n,0,1);return t.forEach((a,l)=>{const h=new c.Vector3;l<t.length-1?h.subVectors(t[l+1],a).normalize().multiplyScalar(r):i&&t.length>1&&h.subVectors(t[0],a).normalize().multiplyScalar(r);const d=new Qn;d.position.copy(a),d.tangentIn.copy(h),d.tangentOut.copy(h),o.addKnot(d)}),o.closed=i,o}s.createFromPoints=e})(exports.SplineUtils||(exports.SplineUtils={}));class aD extends de.WorkerBase{constructor(){super(new Worker(new URL("/generateMeshBVH.worker-DiCnZlf3.js",typeof document>"u"?require("url").pathToFileURL(__filename).href:ya&&ya.tagName.toUpperCase()==="SCRIPT"&&ya.src||new URL("needle-engine.bundle-CPR-xoaB.umd.cjs",document.baseURI).href),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(e,t,i={}){return new Promise((n,o)=>{if(t.getAttribute("position").isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");e.onerror=h=>{o(new Error(`[GenerateMeshBVHWorker] ${h.message||"Unknown error. Please check the server console. If you're using vite try adding 'three-mesh-bvh' to 'optimizeDeps.exclude' in your vite.config.js"}`))},e.onmessage=h=>{const{data:d}=h;if(d.error)o(new Error(d.error)),e.onmessage=null;else if(d.serialized){const{serialized:u,position:f}=d,m=de.MeshBVH.deserialize(u,t,{setIndex:!1}),g=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=f,u.index)if(t.index)t.index.array=u.index;else{const b=new c.BufferAttribute(u.index,1,!1);t.setIndex(b)}g.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new c.Box3)),i.onProgress&&i.onProgress(d.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(d.progress)};const r=t.index?t.index.array:null,a=t.attributes.position.array,l=[a];r&&l.push(r),e.postMessage({index:r,position:a,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...t.groups]}},l.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const lD=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:aD},Symbol.toStringTag,{value:"Module"}));exports.$componentName=ig;exports.$physicsKey=XC;exports.ActionBuilder=ue;exports.ActionCollection=xx;exports.ActionModel=ti;exports.Addressables=S0;exports.AlignmentConstraint=oh;exports.AmbientMode=va;exports.Animation=At;exports.AnimationCurve=vh;exports.AnimationExtension=ef;exports.AnimationTrackHandler=Lc;exports.Animator=dt;exports.AnimatorConditionMode=si;exports.AnimatorController=vi;exports.AnimatorControllerBuilder=Rg;exports.AnimatorControllerParameterType=Zo;exports.AnimatorStateInfo=ql;exports.Antialiasing=xh;exports.Application=pn;exports.AssetDatabase=nw;exports.AssetReference=K;exports.Attractor=dl;exports.AudioExtension=Mr;exports.AudioListener=fs;exports.AudioSource=Ci;exports.AudioTrackHandler=ps;exports.Avatar=po;exports.AvatarBlink_Simple=Sr;exports.AvatarEyeLook_Rotation=Vg;exports.AvatarLoader=uS;exports.AvatarMarker=Oe;exports.AvatarModel=s_;exports.Avatar_Brain_LookAt=jc;exports.Avatar_MouthShapes=ah;exports.Avatar_MustacheShake=zg;exports.Avatar_POI=hr;exports.Axes=fa;exports.AxesHelper=Ka;exports.BUILD_TIME=xc;exports.BaseUIComponent=Gi;exports.BasicIKConstraint=Wg;exports.BehaviorExtension=by;exports.BehaviorModel=Ct;exports.BloomEffect=gf;exports.BoxCollider=Xu;exports.BoxGizmo=Tr;exports.BoxHelperComponent=xt;exports.Button=Ls;exports.ButtonsFactory=Ni;exports.CallDirection=Nw;exports.CallInfo=hs;exports.Camera=ai;exports.CameraTargetReachedEvent=Dc;exports.Canvas=za;exports.CanvasGroup=mo;exports.CapsuleCollider=vs;exports.ChangeMaterialOnClick=dy;exports.ChangeTransformOnClick=kr;exports.CharacterController=Cr;exports.CharacterControllerInput=Ps;exports.ChromaticAberration=Sh;exports.CircularBuffer=xi;exports.ClearFlags=cr;exports.ClickThrough=Mf;exports.ClipExtrapolation=Rn;exports.Collider=Qi;exports.Collision=i0;exports.CollisionDetectionMode=Fu;exports.ColorAdjustments=Eo;exports.ColorBySpeedModule=hl;exports.ColorOverLifetimeModule=ff;exports.Component=hO;exports.Component$1=R;exports.ComponentLifecycleEvents=xu;exports.Components=rD;exports.ConnectionEvents=A0;exports.ContactPoint=t0;exports.ContactShadows=lh;exports.Context=U;exports.ContextArgs=AP;exports.ContextEvent=le;exports.ContextRegistry=ae;exports.ControlTrackHandler=$u;exports.CursorFollow=Nr;exports.CustomBranding=Rr;exports.CustomShader=ve;exports.DefaultReflectionMode=iu;exports.Deletable=Xg;exports.DeleteBox=ao;exports.DepthOfField=wn;exports.DeviceFlag=Qu;exports.DocumentExtension=fS;exports.DragControls=Jo;exports.DragMode=Qg;exports.DropListener=Ms;exports.Duplicatable=iy;exports.EffectWrapper=zc;exports.EmissionModule=Ts;exports.EmphasizeOnClick=tl;exports.EngineLoadingView=Nc;exports.EnvironmentScene=Wu;exports.EventList=ie;exports.EventListEvent=Bu;exports.EventSystem=Ht;exports.EventTrigger=Zu;exports.FieldWithDefault=nx;exports.FileReference=sr;exports.FileReferenceSerializer=P0;exports.FileSpawnModel=tk;exports.File_Event=Qw;exports.FixedJoint=Ly;exports.Fog=rl;exports.FontStyle=xy;exports.FrameEvent=ge;exports.GENERATOR=Ra;exports.GameObject=S;exports.Gizmos=B;exports.GltfExport=ay;exports.GltfExportBox=oy;exports.Gradient=Dr;exports.Graphic=yh;exports.GraphicRaycaster=Uu;exports.Graphics=ho;exports.GridHelper=al;exports.GridLayoutGroup=Oy;exports.GroundProjectedEnv=Yn;exports.GroupActionModel=er;exports.HideFlags=Cu;exports.HideOnStart=Fi;exports.HingeJoint=bh;exports.HorizontalLayoutGroup=Py;exports.HorizontalWrapMode=Dx;exports.HostData=f1;exports.Image=gl;exports.ImageReference=nr;exports.ImageReferenceSerializer=C0;exports.InheritVelocityModule=Uy;exports.Input=M0;exports.InputEventQueue=ni;exports.InputEvents=Pe;exports.InputField=Yy;exports.InstanceHandle=dr;exports.InstancingHandler=_r;exports.InstancingUtil=$i;exports.InstantiateEvent=d0;exports.InstantiateIdProvider=ht;exports.InstantiateOptions=yn;exports.Interactable=qg;exports.JoinedRoomResponse=W1;exports.KeyEventArgs=j1;exports.Keyframe=li;exports.LODGroup=hf;exports.LODModel=ll;exports.LeftRoomResponse=G1;exports.Light=nt;exports.LightData=F0;exports.LimitVelocityOverLifetimeModule=st;exports.LoadingElementOptions=$A;exports.LogStats=Hg;exports.LogType=bi;exports.LookAt=Ky;exports.LookAtConstraint=xr;exports.MODULES=T;exports.MainModule=It;exports.MarkerTrackHandler=Vu;exports.MarkerType=Lg;exports.MaskableGraphic=_h;exports.MaterialPropertyBlock=_s;exports.Mathf=I;exports.MeshCollider=xo;exports.MeshRenderer=dh;exports.MinMaxCurve=q;exports.MinMaxGradient=Lr;exports.NEEDLE_ENGINE_FEATURE_FLAGS=eg;exports.NEKeyboardEvent=Wl;exports.NEPointerEvent=rs;exports.NeedleButtonElement=aS;exports.NeedleEngineWebComponent=n_;exports.NeedleMenu=Zn;exports.NeedlePatchesKey=xd;exports.NeedleXRController=_g;exports.NeedleXRSession=H;exports.NeedleXRSync=G0;exports.NeedleXRUtils=iw;exports.NestedGltf=cl;exports.NetworkConnection=L0;exports.NetworkedStreamEvents=Vn;exports.NetworkedStreams=rh;exports.Networking=By;exports.NewInstanceModel=f0;exports.NoiseModule=me;exports.ObjectRaycaster=Wi;exports.ObjectUtils=bo;exports.OffsetConstraint=Ar;exports.OneEuroFilter=vd;exports.OneEuroFilterXYZ=Gm;exports.OpenURL=yl;exports.OrbitControls=ce;exports.Outline=ol;exports.OwnershipEvent=D0;exports.OwnershipModel=gg;exports.PUBLIC_KEY=no;exports.Padding=Er;exports.ParticleBurst=yu;exports.ParticleSubEmitter=zy;exports.ParticleSystem=Uc;exports.ParticleSystemBaseBehaviour=ko;exports.ParticleSystemRenderer=Ki;exports.ParticleSystemShapeType=gu;exports.PeerHandle=ms;exports.PeerNetworking=T0;exports.Physics=Ba;exports.PhysicsExtension=vy;exports.PhysicsMaterialCombine=ot;exports.PixelationEffect=Ch;exports.PlayAnimationOnClick=Bc;exports.PlayAudioOnClick=fo;exports.PlayableDirector=Fa;exports.PlayerColor=Na;exports.PlayerState=oi;exports.PlayerStateEvent=Px;exports.PlayerSync=gy;exports.PlayerView=I0;exports.PlayerViewManager=j0;exports.PointerEventData=th;exports.PointerType=Mu;exports.PostProcessing=W0;exports.PostProcessingEffect=Qe;exports.PostProcessingEffectOrder=et;exports.PostProcessingHandler=$a;exports.Prefabs=Ta;exports.PreliminaryAction=il;exports.PreliminaryTrigger=fh;exports.PrimitiveType=Wa;exports.Progress=oe;exports.PromiseAllWithErrors=$m;exports.PromiseErrorResult=Np;exports.RGBAColor=te;exports.RapierPhysics=Ma;exports.RawImage=Cf;exports.RaycastOptions=vo;exports.Rect=kx;exports.RectTransform=gn;exports.ReflectionProbe=as;exports.RegisteredAnimationInfo=oo;exports.RemoteSkybox=Gu;exports.RenderTexture=zn;exports.RenderTextureSerializer=Rw;exports.Renderer=qt;exports.RendererData=B0;exports.RendererLightmap=Jg;exports.Rigidbody=$e;exports.RigidbodyConstraints=Ve;exports.RoomEvents=Z;exports.RotationBySpeedModule=Yi;exports.RotationOverLifetimeModule=vn;exports.SceneLightSettings=du;exports.SceneSwitcher=We;exports.ScreenCapture=Ro;exports.ScreenSpaceAmbientOcclusion=As;exports.ScreenSpaceAmbientOcclusionN8=xn;exports.ScrollFollow=Is;exports.SeeThrough=Ds;exports.SendQueue=cn;exports.SerializationContext=dg;exports.SetActiveOnClick=uy;exports.ShadowCatcher=kh;exports.ShapeModule=Fy;exports.ShapeOverlapResult=n0;exports.SharpeningEffect=Oh;exports.SignalAsset=Nu;exports.SignalReceiver=nh;exports.SignalReceiverEvent=ih;exports.SignalTrackHandler=Ic;exports.Size=Mx;exports.SizeBySpeedModule=pi;exports.SizeOverLifetimeModule=Ir;exports.SkinnedMeshRenderer=ey;exports.SmoothFollow=bf;exports.SpatialGrabRaycaster=mr;exports.SpatialHtml=Ah;exports.SpatialTrigger=vf;exports.SpatialTriggerReceiver=Xn;exports.SpectatorCamera=wf;exports.SphereCollider=Za;exports.SphereIntersection=Sg;exports.SplineContainer=Ur;exports.SplineData=Qn;exports.SplineWalker=Ji;exports.Sprite=ks;exports.SpriteData=Oa;exports.SpriteRenderer=ui;exports.SpriteSheet=Ua;exports.StateMachineBehaviour=mO;exports.StreamEndedEvent=Ug;exports.StreamReceivedEvent=zw;exports.SubEmitterSystem=_u;exports.SyncedCamera=Hy;exports.SyncedRoom=Sn;exports.SyncedTransform=mn;exports.TapGestureTrigger=py;exports.TeleportTarget=rf;exports.TestRunner=qy;exports.TestSimulateUserData=Xy;exports.Text=Lt;exports.TextAnchor=qe;exports.TextBuilder=Sy;exports.TextExtension=lf;exports.TextureSheetAnimationModule=jt;exports.TiltShiftEffect=es;exports.Time=N0;exports.ToneMappingEffect=go;exports.TrackHandler=Qa;exports.TrackType=gi;exports.TrailModule=Le;exports.TransformData=Ae;exports.TransformGizmo=zr;exports.TriggerBuilder=Tt;exports.TriggerModel=lo;exports.TypeStore=P;exports.UIRaycastUtils=Ag;exports.UIRootComponent=mh;exports.USDDocument=ly;exports.USDObject=Xe;exports.USDWriter=fx;exports.USDZExporter=px;exports.USDZExporter$1=qn;exports.USDZText=ma;exports.USDZUIExtension=ky;exports.UriSerializer=Tw;exports.UsageMarker=ch;exports.UserJoinedOrLeftRoomModel=H1;exports.VERSION=ri;exports.VariantAction=hy;exports.VelocityOverLifetimeModule=Fe;exports.VerticalLayoutGroup=Cy;exports.VerticalWrapMode=Ax;exports.VideoPlayer=tt;exports.ViewDevice=ys;exports.Vignette=Fr;exports.VisibilityAction=ph;exports.Voip=bn;exports.Volume=fl;exports.VolumeParameter=z;exports.VolumeProfile=pf;exports.WaitForFrames=A1;exports.WaitForPromise=O0;exports.WaitForSeconds=ug;exports.Watch=gs;exports.WebARCameraBackground=Lh;exports.WebARSessionRoot=Vi;exports.WebXR=af;exports.WebXRButtonFactory=co;exports.WebXRImageTracking=Ih;exports.WebXRImageTrackingModel=Bs;exports.WebXRPlaneTracking=Fs;exports.WebXRTrackedImage=Va;exports.XRControllerFollow=js;exports.XRControllerModel=ws;exports.XRControllerMovement=Oi;exports.XRFlag=Ui;exports.XRRig=Rf;exports.XRState=Wt;exports.XRStateFlag=Bn;exports.__Ignore=pS;exports.__internalNotifyObjectDestroyed=NP;exports.activeInHierarchyFieldName=Un;exports.addAttributeChangeCallback=Nm;exports.addComponent=Hn;exports.addCustomExtensionPlugin=Pk;exports.addNewComponent=ar;exports.addPatch=Su;exports.apply=Du;exports.applyHMRChanges=cO;exports.applyPrototypeExtensions=uw;exports.beginListenDestroy=u0;exports.beginListenInstantiate=g0;exports.binaryIdentifierCasts=fg;exports.build_scene_functions=TP;exports.builtinComponentKeyName=qo;exports.calculateProgress01=i_;exports.clearMessages=VS;exports.colorSerializer=SO;exports.compareAssociation=b0;exports.componentSerializer=Ad;exports.copyTexture=Nv;exports.createMotion=kw;exports.debugNet=Zt;exports.debugOwner=ia;exports.decompressGpuTexture=_x;exports.deepClone=$c;exports.delay=bs;exports.delayForFrames=Wc;exports.deserializeObject=eu;exports.destroy=Si;exports.destroyComponentInstance=xw;exports.determineMimeTypeFromExtension=Yw;exports.disposeObjectResources=we;exports.disposeStream=hn;exports.editorGuidKeyName=sc;exports.enableSpatialConsole=_a;exports.euler=PO;exports.eventListSerializer=EO;exports.exportAsGLTF=iD;exports.findByGuid=Og;exports.findObjectOfType=Xa;exports.findObjectsOfType=Cw;exports.findResourceUsers=Cg;exports.fitCamera=Lw;exports.fitObjectIntoVolume=$v;exports.foreachComponent=pr;exports.foreachComponentEnumerator=Mg;exports.forward=aC;exports.generateQRCode=Z0;exports.generateSeed=m0;exports.getBoundingBox=ci;exports.getCameraController=Dv;exports.getComponent=wo;exports.getComponentInChildren=Jc;exports.getComponentInParent=Ec;exports.getComponents=Ha;exports.getComponentsInChildren=qa;exports.getComponentsInParent=Iu;exports.getFormattedDate=cx;exports.getIconElement=lt;exports.getIconTexture=sm;exports.getLoader=fn;exports.getOrAddComponent=Zc;exports.getParam=x;exports.getParentHierarchyPath=hC;exports.getPath=vS;exports.getPeerOptions=z1;exports.getPeerjsInstance=R0;exports.getResourceUserCount=$P;exports.getSceneData=z0;exports.getTempColor=Bv;exports.getTempQuaternion=ii;exports.getTempVector=F;exports.getUrlParams=Vc;exports.getVisibleInCustomShadowRendering=Vv;exports.getWorldDirection=Fv;exports.getWorldEuler=Xm;exports.getWorldPosition=Y;exports.getWorldQuaternion=pe;exports.getWorldRotation=wu;exports.getWorldScale=je;exports.hasCommercialLicense=Gn;exports.hasIndieLicense=Xc;exports.hasPointerEventComponent=lu;exports.hasProLicense=Wn;exports.hideDebugConsole=qv;exports.imageToCanvas=bx;exports.initEngine=JA;exports.initPhysics=dS;exports.instantiate=uo;exports.invokeLoadedImportPluginHooks=ix;exports.invokeXRSessionEnd=K0;exports.invokeXRSessionStart=Y0;exports.isActiveInHierarchy=fw;exports.isActiveSelf=Ga;exports.isAndroidDevice=OS;exports.isAnimationAction=zv;exports.isComponent=ng;exports.isDebugMode=gS;exports.isDesktop=xS;exports.isDestroyed=fr;exports.isDevEnvironment=A;exports.isDisposed=zP;exports.isExporting=eD;exports.isGLTFModel=e0;exports.isHostedOnGlitch=wv;exports.isHotReloadEnabled=mm;exports.isHotReloading=aO;exports.isIPad=CS;exports.isIconElement=J0;exports.isLocalNetwork=wi;exports.isMacOS=kS;exports.isMobileDevice=SS;exports.isMozillaXR=MS;exports.isQuest=TS;exports.isResourceTrackingEnabled=ow;exports.isSafari=RS;exports.isUsingInstancing=Lu;exports.isiOS=ES;exports.isiPad=PS;exports.loadAsset=IA;exports.loadPMREM=Fg;exports.loadSync=t_;exports.logHierarchy=Xd;exports.lookAtInverse=JS;exports.lookAtObject=Gc;exports.lookAtScreenPoint=eC;exports.makeId=_S;exports.makeIdFromRandomWords=Cv;exports.makeNameSafe=Pi;exports.markAsInstancedRendered=pw;exports.microphonePermissionsGranted=AS;exports.nameof=mS;exports.nameofFactory=xv;exports.needle=eP;exports.objectSerializer=Ew;exports.offBeforeXRSession=Q0;exports.offXRSessionEnd=X0;exports.offXRSessionStart=q0;exports.onAfterRender=e1;exports.onBeforeRender=JC;exports.onBeforeXRSession=xP;exports.onClear=KC;exports.onDestroy=ZC;exports.onInitialized=og;exports.onStart=Ou;exports.onSyncDestroy=u1;exports.onSyncInstantiate=p0;exports.onUpdate=a0;exports.onXRSessionEnd=vg;exports.onXRSessionStart=Eu;exports.parseSync=oS;exports.placeOnSurface=Wv;exports.postprocessFBXMaterials=Km;exports.prefix=NO;exports.pushState=Sv;exports.randomNumber=bS;exports.registerBinaryType=pg;exports.registerComponent=Tu;exports.registerComponentExtension=Kg;exports.registerCustomEffectType=Zi;exports.registerExportExtensions=Zg;exports.registerExtensions=fu;exports.registerHotReloadType=Pw;exports.registerLoader=o0;exports.registerPrefabProvider=y0;exports.registerPrototypeExtensions=Pg;exports.registerType=Jm;exports.relativePathPrefix=Ov;exports.removeAttributeChangeCallback=Vm;exports.removeComponent=Eg;exports.removeCustomImportExtensionType=Ok;exports.removePatch=GC;exports.resolveUrl=xs;exports.sanitizeString=Pv;exports.saveImage=iS;exports.screenshot=pA;exports.screenshot2=e_;exports.sendDestroyed=ag;exports.serializable=p;exports.serializeObject=w0;exports.serializeable=Be;exports.setActive=lc;exports.setAllowBalloonMessages=Rv;exports.setAllowOverlayMessages=FS;exports.setAutoFitEnabled=Hd;exports.setCameraController=Wp;exports.setDestroyed=gw;exports.setDevEnvironment=qS;exports.setDisposable=aw;exports.setDontDestroy=na;exports.setOrAddParamsToUrl=zp;exports.setParam=yS;exports.setParamWithoutReload=wc;exports.setPeerOptions=N1;exports.setResourceTrackingEnabled=UP;exports.setState=Um;exports.setVisibleInCustomShadowRendering=Ym;exports.setWorldEuler=Qm;exports.setWorldPosition=ct;exports.setWorldPositionXYZ=ur;exports.setWorldQuaternion=un;exports.setWorldQuaternionXYZW=qm;exports.setWorldRotation=Uv;exports.setWorldRotationXYZ=Hc;exports.setWorldScale=Ea;exports.showBalloonError=qc;exports.showBalloonMessage=Se;exports.showBalloonWarning=fe;exports.showDebugConsole=Zm;exports.slerp=Iv;exports.syncDestroy=Qc;exports.syncField=Bg;exports.syncInstantiate=lg;exports.textureToCanvas=dC;exports.toSourceId=Mv;exports.tryCastBinary=k0;exports.tryDetermineMimetypeFromBinary=Zw;exports.tryDetermineMimetypeFromURL=Kw;exports.tryFindObject=ka;exports.tryGetGuid=E0;exports.unregisterHotReloadType=Ow;exports.unregisterPrefabProvider=m1;exports.unwatchWrite=zm;exports.useForAutoFit=Lv;exports.validate=Pt;exports.watchWrite=vu;
|
|
1732
|
+
`),Kt&&this._onCreateEffectsDebug(this._composer,o)}createPassForMergeableEffects(e,t,i,n){if(e.length>0){const o=new T.POSTPROCESSING.MODULE.EffectPass(i,...e);o.name=e.map(r=>r.name).join(", "),o.mainScene=n,o.enabled=!0,o.renderToScreen=!1,t.addPass(o),e.length=0}}handleDevicePixelRatio(){typeof this.context.devicePixelRatio=="number"&&this.context.requestSizeUpdate()}_menuEntry=null;_passIndices=null;_onCreateEffectsDebug(e,t){if(Kt==="passes"){const i=new T.POSTPROCESSING.MODULE.DepthEffect({blendFunction:T.POSTPROCESSING.MODULE.BlendFunction.NORMAL,inverted:!0});i.name="Depth Effect";const n=new T.POSTPROCESSING.MODULE.EffectPass(t,i);if(n.name="Depth Effect Pass",n.enabled=!1,e.passes.push(n),this._passIndices!==null){const r=[e.passes[0]];this._passIndices.length>0&&r.push(...this._passIndices.filter(a=>a!==0).map(a=>e.passes[a]).filter(a=>a)),r.length>0&&console.log("[PostProcessing] Passes (selected) →",r),e.passes.length=0;for(const a of r)a.enabled=!0,a.renderToScreen=!1,e.addPass(a)}const o=this.context.menu;if(o&&this._passIndices===null){this._menuEntry&&this._menuEntry.remove();const r=document.createElement("select");r.multiple=!0;const a=document.createElement("option");a.innerText="Final Output",a.value="-1",r.appendChild(a);for(const l of e.passes){const h=document.createElement("option");h.innerText=l.name,h.value=`${e.passes.indexOf(l)}`,h.title=l.name,r.appendChild(h)}o.appendChild(r),this._menuEntry=r,r.addEventListener("change",()=>{const l=Array.from(r.selectedOptions).map(h=>parseInt(h.value));l.length===1&&l[0]===-1?this._passIndices=null:this._passIndices=l,this.applyEffects(this.context)})}}}}const oD=Object.freeze(Object.defineProperty({__proto__:null,PostProcessingHandler:$a},Symbol.toStringTag,{value:"Module"}));class pS{}const rD=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:ue,ActionCollection:xx,ActionModel:ti,AlignmentConstraint:oh,Animation:At,AnimationCurve:vh,AnimationExtension:ef,AnimationTrackHandler:Lc,Animator:dt,AnimatorController:vi,AnimatorControllerBuilder:Rg,Antialiasing:xh,Attractor:dl,AudioExtension:Mr,AudioListener:fs,AudioSource:Ci,AudioTrackHandler:ps,Avatar:po,AvatarBlink_Simple:Sr,AvatarEyeLook_Rotation:Vg,AvatarLoader:uS,AvatarMarker:Oe,AvatarModel:s_,Avatar_Brain_LookAt:jc,Avatar_MouthShapes:ah,Avatar_MustacheShake:zg,Avatar_POI:hr,AxesHelper:Ka,BaseUIComponent:Gi,BasicIKConstraint:Wg,BehaviorExtension:by,BehaviorModel:Ct,BloomEffect:gf,BoxCollider:Xu,BoxGizmo:Tr,BoxHelperComponent:xt,Button:Ls,CallInfo:hs,Camera:ai,CameraTargetReachedEvent:Dc,Canvas:za,CanvasGroup:mo,CapsuleCollider:vs,ChangeMaterialOnClick:dy,ChangeTransformOnClick:kr,CharacterController:Cr,CharacterControllerInput:Ps,ChromaticAberration:Sh,ClickThrough:Mf,ColorAdjustments:Eo,ColorBySpeedModule:hl,ColorOverLifetimeModule:ff,ContactShadows:lh,ControlTrackHandler:$u,CursorFollow:Nr,CustomBranding:Rr,Deletable:Xg,DeleteBox:ao,DepthOfField:wn,DeviceFlag:Qu,DocumentExtension:fS,DragControls:Jo,DropListener:Ms,Duplicatable:iy,EffectWrapper:zc,EmissionModule:Ts,EmphasizeOnClick:tl,EnvironmentScene:Wu,EventList:ie,EventListEvent:Bu,EventSystem:Ht,EventTrigger:Zu,FieldWithDefault:nx,FixedJoint:Ly,Fog:rl,GltfExport:ay,GltfExportBox:oy,Gradient:Dr,Graphic:yh,GraphicRaycaster:Uu,GridHelper:al,GridLayoutGroup:Oy,GroundProjectedEnv:Yn,GroupActionModel:er,HideOnStart:Fi,HingeJoint:bh,HorizontalLayoutGroup:Py,get HoverAnimation(){return exports.HoverAnimation},Image:gl,InheritVelocityModule:Uy,InputField:Yy,InstanceHandle:dr,InstancingHandler:_r,Interactable:qg,Keyframe:li,LODGroup:hf,LODModel:ll,Light:nt,LimitVelocityOverLifetimeModule:st,LogStats:Hg,LookAt:Ky,LookAtConstraint:xr,MainModule:It,MarkerTrackHandler:Vu,MaskableGraphic:_h,MeshCollider:xo,MeshRenderer:dh,MinMaxCurve:q,MinMaxGradient:Lr,NeedleMenu:Zn,NestedGltf:cl,Networking:By,NoiseModule:me,ObjectRaycaster:Wi,OffsetConstraint:Ar,OpenURL:yl,OrbitControls:ce,Outline:ol,Padding:Er,ParticleBurst:yu,ParticleSubEmitter:zy,ParticleSystem:Uc,ParticleSystemRenderer:Ki,PhysicsExtension:vy,PixelationEffect:Ch,PlayAnimationOnClick:Bc,PlayAudioOnClick:fo,PlayableDirector:Fa,PlayerColor:Na,PointerEventData:th,PostProcessingHandler:$a,PreliminaryAction:il,PreliminaryTrigger:fh,RawImage:Cf,Rect:kx,RectTransform:gn,ReflectionProbe:as,RegisteredAnimationInfo:oo,RemoteSkybox:Gu,Renderer:qt,RendererLightmap:Jg,Rigidbody:$e,RotationBySpeedModule:Yi,RotationOverLifetimeModule:vn,SceneSwitcher:We,ScreenCapture:Ro,ScreenSpaceAmbientOcclusion:As,ScreenSpaceAmbientOcclusionN8:xn,ScrollFollow:Is,SeeThrough:Ds,SetActiveOnClick:uy,ShadowCatcher:kh,ShapeModule:Fy,SharpeningEffect:Oh,SignalAsset:Nu,SignalReceiver:nh,SignalReceiverEvent:ih,SignalTrackHandler:Ic,Size:Mx,SizeBySpeedModule:pi,SizeOverLifetimeModule:Ir,SkinnedMeshRenderer:ey,SmoothFollow:bf,SpatialGrabRaycaster:mr,SpatialHtml:Ah,SpatialTrigger:vf,SpatialTriggerReceiver:Xn,SpectatorCamera:wf,SphereCollider:Za,SplineContainer:Ur,SplineData:Qn,SplineWalker:Ji,Sprite:ks,SpriteData:Oa,SpriteRenderer:ui,SpriteSheet:Ua,SubEmitterSystem:_u,SyncedCamera:Hy,SyncedRoom:Sn,SyncedTransform:mn,TapGestureTrigger:py,TeleportTarget:rf,TestRunner:qy,TestSimulateUserData:Xy,Text:Lt,TextBuilder:Sy,TextExtension:lf,TextureSheetAnimationModule:jt,TiltShiftEffect:es,ToneMappingEffect:go,TrailModule:Le,TransformData:Ae,TransformGizmo:zr,TriggerBuilder:Tt,TriggerModel:lo,UIRaycastUtils:Ag,UIRootComponent:mh,USDZExporter:qn,USDZText:ma,USDZUIExtension:ky,UsageMarker:ch,VariantAction:hy,VelocityOverLifetimeModule:Fe,VerticalLayoutGroup:Cy,VideoPlayer:tt,get ViewBox(){return exports.ViewBox},Vignette:Fr,VisibilityAction:ph,Voip:bn,Volume:fl,VolumeParameter:z,VolumeProfile:pf,WebARCameraBackground:Lh,WebARSessionRoot:Vi,WebXR:af,WebXRImageTracking:Ih,WebXRImageTrackingModel:Bs,WebXRPlaneTracking:Fs,WebXRTrackedImage:Va,XRControllerFollow:js,XRControllerModel:ws,XRControllerMovement:Oi,XRFlag:Ui,XRRig:Rf,XRState:Wt,__Ignore:pS},Symbol.toStringTag,{value:"Module"}));exports.SplineUtils=void 0;(s=>{function e(t,i=!1,n=.75){const o=new Ur,r=1-I.clamp(n,0,1);return t.forEach((a,l)=>{const h=new c.Vector3;l<t.length-1?h.subVectors(t[l+1],a).normalize().multiplyScalar(r):i&&t.length>1&&h.subVectors(t[0],a).normalize().multiplyScalar(r);const d=new Qn;d.position.copy(a),d.tangentIn.copy(h),d.tangentOut.copy(h),o.addKnot(d)}),o.closed=i,o}s.createFromPoints=e})(exports.SplineUtils||(exports.SplineUtils={}));class aD extends de.WorkerBase{constructor(){super(new Worker(new URL("/generateMeshBVH.worker-DiCnZlf3.js",typeof document>"u"?require("url").pathToFileURL(__filename).href:ya&&ya.tagName.toUpperCase()==="SCRIPT"&&ya.src||new URL("needle-engine.bundle-DTfojsUD.umd.cjs",document.baseURI).href),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(e,t,i={}){return new Promise((n,o)=>{if(t.getAttribute("position").isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");e.onerror=h=>{o(new Error(`[GenerateMeshBVHWorker] ${h.message||"Unknown error. Please check the server console. If you're using vite try adding 'three-mesh-bvh' to 'optimizeDeps.exclude' in your vite.config.js"}`))},e.onmessage=h=>{const{data:d}=h;if(d.error)o(new Error(d.error)),e.onmessage=null;else if(d.serialized){const{serialized:u,position:f}=d,m=de.MeshBVH.deserialize(u,t,{setIndex:!1}),g=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=f,u.index)if(t.index)t.index.array=u.index;else{const b=new c.BufferAttribute(u.index,1,!1);t.setIndex(b)}g.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new c.Box3)),i.onProgress&&i.onProgress(d.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(d.progress)};const r=t.index?t.index.array:null,a=t.attributes.position.array,l=[a];r&&l.push(r),e.postMessage({index:r,position:a,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...t.groups]}},l.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const lD=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:aD},Symbol.toStringTag,{value:"Module"}));exports.$componentName=ig;exports.$physicsKey=XC;exports.ActionBuilder=ue;exports.ActionCollection=xx;exports.ActionModel=ti;exports.Addressables=S0;exports.AlignmentConstraint=oh;exports.AmbientMode=va;exports.Animation=At;exports.AnimationCurve=vh;exports.AnimationExtension=ef;exports.AnimationTrackHandler=Lc;exports.Animator=dt;exports.AnimatorConditionMode=si;exports.AnimatorController=vi;exports.AnimatorControllerBuilder=Rg;exports.AnimatorControllerParameterType=Zo;exports.AnimatorStateInfo=ql;exports.Antialiasing=xh;exports.Application=pn;exports.AssetDatabase=nw;exports.AssetReference=K;exports.Attractor=dl;exports.AudioExtension=Mr;exports.AudioListener=fs;exports.AudioSource=Ci;exports.AudioTrackHandler=ps;exports.Avatar=po;exports.AvatarBlink_Simple=Sr;exports.AvatarEyeLook_Rotation=Vg;exports.AvatarLoader=uS;exports.AvatarMarker=Oe;exports.AvatarModel=s_;exports.Avatar_Brain_LookAt=jc;exports.Avatar_MouthShapes=ah;exports.Avatar_MustacheShake=zg;exports.Avatar_POI=hr;exports.Axes=fa;exports.AxesHelper=Ka;exports.BUILD_TIME=xc;exports.BaseUIComponent=Gi;exports.BasicIKConstraint=Wg;exports.BehaviorExtension=by;exports.BehaviorModel=Ct;exports.BloomEffect=gf;exports.BoxCollider=Xu;exports.BoxGizmo=Tr;exports.BoxHelperComponent=xt;exports.Button=Ls;exports.ButtonsFactory=Ni;exports.CallDirection=Nw;exports.CallInfo=hs;exports.Camera=ai;exports.CameraTargetReachedEvent=Dc;exports.Canvas=za;exports.CanvasGroup=mo;exports.CapsuleCollider=vs;exports.ChangeMaterialOnClick=dy;exports.ChangeTransformOnClick=kr;exports.CharacterController=Cr;exports.CharacterControllerInput=Ps;exports.ChromaticAberration=Sh;exports.CircularBuffer=xi;exports.ClearFlags=cr;exports.ClickThrough=Mf;exports.ClipExtrapolation=Rn;exports.Collider=Qi;exports.Collision=i0;exports.CollisionDetectionMode=Fu;exports.ColorAdjustments=Eo;exports.ColorBySpeedModule=hl;exports.ColorOverLifetimeModule=ff;exports.Component=hO;exports.Component$1=R;exports.ComponentLifecycleEvents=xu;exports.Components=rD;exports.ConnectionEvents=A0;exports.ContactPoint=t0;exports.ContactShadows=lh;exports.Context=U;exports.ContextArgs=AP;exports.ContextEvent=le;exports.ContextRegistry=ae;exports.ControlTrackHandler=$u;exports.CursorFollow=Nr;exports.CustomBranding=Rr;exports.CustomShader=ve;exports.DefaultReflectionMode=iu;exports.Deletable=Xg;exports.DeleteBox=ao;exports.DepthOfField=wn;exports.DeviceFlag=Qu;exports.DocumentExtension=fS;exports.DragControls=Jo;exports.DragMode=Qg;exports.DropListener=Ms;exports.Duplicatable=iy;exports.EffectWrapper=zc;exports.EmissionModule=Ts;exports.EmphasizeOnClick=tl;exports.EngineLoadingView=Nc;exports.EnvironmentScene=Wu;exports.EventList=ie;exports.EventListEvent=Bu;exports.EventSystem=Ht;exports.EventTrigger=Zu;exports.FieldWithDefault=nx;exports.FileReference=sr;exports.FileReferenceSerializer=P0;exports.FileSpawnModel=tk;exports.File_Event=Qw;exports.FixedJoint=Ly;exports.Fog=rl;exports.FontStyle=xy;exports.FrameEvent=ge;exports.GENERATOR=Ra;exports.GameObject=S;exports.Gizmos=B;exports.GltfExport=ay;exports.GltfExportBox=oy;exports.Gradient=Dr;exports.Graphic=yh;exports.GraphicRaycaster=Uu;exports.Graphics=ho;exports.GridHelper=al;exports.GridLayoutGroup=Oy;exports.GroundProjectedEnv=Yn;exports.GroupActionModel=er;exports.HideFlags=Cu;exports.HideOnStart=Fi;exports.HingeJoint=bh;exports.HorizontalLayoutGroup=Py;exports.HorizontalWrapMode=Dx;exports.HostData=f1;exports.Image=gl;exports.ImageReference=nr;exports.ImageReferenceSerializer=C0;exports.InheritVelocityModule=Uy;exports.Input=M0;exports.InputEventQueue=ni;exports.InputEvents=Pe;exports.InputField=Yy;exports.InstanceHandle=dr;exports.InstancingHandler=_r;exports.InstancingUtil=$i;exports.InstantiateEvent=d0;exports.InstantiateIdProvider=ht;exports.InstantiateOptions=yn;exports.Interactable=qg;exports.JoinedRoomResponse=W1;exports.KeyEventArgs=j1;exports.Keyframe=li;exports.LODGroup=hf;exports.LODModel=ll;exports.LeftRoomResponse=G1;exports.Light=nt;exports.LightData=F0;exports.LimitVelocityOverLifetimeModule=st;exports.LoadingElementOptions=$A;exports.LogStats=Hg;exports.LogType=bi;exports.LookAt=Ky;exports.LookAtConstraint=xr;exports.MODULES=T;exports.MainModule=It;exports.MarkerTrackHandler=Vu;exports.MarkerType=Lg;exports.MaskableGraphic=_h;exports.MaterialPropertyBlock=_s;exports.Mathf=I;exports.MeshCollider=xo;exports.MeshRenderer=dh;exports.MinMaxCurve=q;exports.MinMaxGradient=Lr;exports.NEEDLE_ENGINE_FEATURE_FLAGS=eg;exports.NEKeyboardEvent=Wl;exports.NEPointerEvent=rs;exports.NeedleButtonElement=aS;exports.NeedleEngineWebComponent=n_;exports.NeedleMenu=Zn;exports.NeedlePatchesKey=xd;exports.NeedleXRController=_g;exports.NeedleXRSession=H;exports.NeedleXRSync=G0;exports.NeedleXRUtils=iw;exports.NestedGltf=cl;exports.NetworkConnection=L0;exports.NetworkedStreamEvents=Vn;exports.NetworkedStreams=rh;exports.Networking=By;exports.NewInstanceModel=f0;exports.NoiseModule=me;exports.ObjectRaycaster=Wi;exports.ObjectUtils=bo;exports.OffsetConstraint=Ar;exports.OneEuroFilter=vd;exports.OneEuroFilterXYZ=Gm;exports.OpenURL=yl;exports.OrbitControls=ce;exports.Outline=ol;exports.OwnershipEvent=D0;exports.OwnershipModel=gg;exports.PUBLIC_KEY=no;exports.Padding=Er;exports.ParticleBurst=yu;exports.ParticleSubEmitter=zy;exports.ParticleSystem=Uc;exports.ParticleSystemBaseBehaviour=ko;exports.ParticleSystemRenderer=Ki;exports.ParticleSystemShapeType=gu;exports.PeerHandle=ms;exports.PeerNetworking=T0;exports.Physics=Ba;exports.PhysicsExtension=vy;exports.PhysicsMaterialCombine=ot;exports.PixelationEffect=Ch;exports.PlayAnimationOnClick=Bc;exports.PlayAudioOnClick=fo;exports.PlayableDirector=Fa;exports.PlayerColor=Na;exports.PlayerState=oi;exports.PlayerStateEvent=Px;exports.PlayerSync=gy;exports.PlayerView=I0;exports.PlayerViewManager=j0;exports.PointerEventData=th;exports.PointerType=Mu;exports.PostProcessing=W0;exports.PostProcessingEffect=Qe;exports.PostProcessingEffectOrder=et;exports.PostProcessingHandler=$a;exports.Prefabs=Ta;exports.PreliminaryAction=il;exports.PreliminaryTrigger=fh;exports.PrimitiveType=Wa;exports.Progress=oe;exports.PromiseAllWithErrors=$m;exports.PromiseErrorResult=Np;exports.RGBAColor=te;exports.RapierPhysics=Ma;exports.RawImage=Cf;exports.RaycastOptions=vo;exports.Rect=kx;exports.RectTransform=gn;exports.ReflectionProbe=as;exports.RegisteredAnimationInfo=oo;exports.RemoteSkybox=Gu;exports.RenderTexture=zn;exports.RenderTextureSerializer=Rw;exports.Renderer=qt;exports.RendererData=B0;exports.RendererLightmap=Jg;exports.Rigidbody=$e;exports.RigidbodyConstraints=Ve;exports.RoomEvents=Z;exports.RotationBySpeedModule=Yi;exports.RotationOverLifetimeModule=vn;exports.SceneLightSettings=du;exports.SceneSwitcher=We;exports.ScreenCapture=Ro;exports.ScreenSpaceAmbientOcclusion=As;exports.ScreenSpaceAmbientOcclusionN8=xn;exports.ScrollFollow=Is;exports.SeeThrough=Ds;exports.SendQueue=cn;exports.SerializationContext=dg;exports.SetActiveOnClick=uy;exports.ShadowCatcher=kh;exports.ShapeModule=Fy;exports.ShapeOverlapResult=n0;exports.SharpeningEffect=Oh;exports.SignalAsset=Nu;exports.SignalReceiver=nh;exports.SignalReceiverEvent=ih;exports.SignalTrackHandler=Ic;exports.Size=Mx;exports.SizeBySpeedModule=pi;exports.SizeOverLifetimeModule=Ir;exports.SkinnedMeshRenderer=ey;exports.SmoothFollow=bf;exports.SpatialGrabRaycaster=mr;exports.SpatialHtml=Ah;exports.SpatialTrigger=vf;exports.SpatialTriggerReceiver=Xn;exports.SpectatorCamera=wf;exports.SphereCollider=Za;exports.SphereIntersection=Sg;exports.SplineContainer=Ur;exports.SplineData=Qn;exports.SplineWalker=Ji;exports.Sprite=ks;exports.SpriteData=Oa;exports.SpriteRenderer=ui;exports.SpriteSheet=Ua;exports.StateMachineBehaviour=mO;exports.StreamEndedEvent=Ug;exports.StreamReceivedEvent=zw;exports.SubEmitterSystem=_u;exports.SyncedCamera=Hy;exports.SyncedRoom=Sn;exports.SyncedTransform=mn;exports.TapGestureTrigger=py;exports.TeleportTarget=rf;exports.TestRunner=qy;exports.TestSimulateUserData=Xy;exports.Text=Lt;exports.TextAnchor=qe;exports.TextBuilder=Sy;exports.TextExtension=lf;exports.TextureSheetAnimationModule=jt;exports.TiltShiftEffect=es;exports.Time=N0;exports.ToneMappingEffect=go;exports.TrackHandler=Qa;exports.TrackType=gi;exports.TrailModule=Le;exports.TransformData=Ae;exports.TransformGizmo=zr;exports.TriggerBuilder=Tt;exports.TriggerModel=lo;exports.TypeStore=P;exports.UIRaycastUtils=Ag;exports.UIRootComponent=mh;exports.USDDocument=ly;exports.USDObject=Xe;exports.USDWriter=fx;exports.USDZExporter=px;exports.USDZExporter$1=qn;exports.USDZText=ma;exports.USDZUIExtension=ky;exports.UriSerializer=Tw;exports.UsageMarker=ch;exports.UserJoinedOrLeftRoomModel=H1;exports.VERSION=ri;exports.VariantAction=hy;exports.VelocityOverLifetimeModule=Fe;exports.VerticalLayoutGroup=Cy;exports.VerticalWrapMode=Ax;exports.VideoPlayer=tt;exports.ViewDevice=ys;exports.Vignette=Fr;exports.VisibilityAction=ph;exports.Voip=bn;exports.Volume=fl;exports.VolumeParameter=z;exports.VolumeProfile=pf;exports.WaitForFrames=A1;exports.WaitForPromise=O0;exports.WaitForSeconds=ug;exports.Watch=gs;exports.WebARCameraBackground=Lh;exports.WebARSessionRoot=Vi;exports.WebXR=af;exports.WebXRButtonFactory=co;exports.WebXRImageTracking=Ih;exports.WebXRImageTrackingModel=Bs;exports.WebXRPlaneTracking=Fs;exports.WebXRTrackedImage=Va;exports.XRControllerFollow=js;exports.XRControllerModel=ws;exports.XRControllerMovement=Oi;exports.XRFlag=Ui;exports.XRRig=Rf;exports.XRState=Wt;exports.XRStateFlag=Bn;exports.__Ignore=pS;exports.__internalNotifyObjectDestroyed=NP;exports.activeInHierarchyFieldName=Un;exports.addAttributeChangeCallback=Nm;exports.addComponent=Hn;exports.addCustomExtensionPlugin=Pk;exports.addNewComponent=ar;exports.addPatch=Su;exports.apply=Du;exports.applyHMRChanges=cO;exports.applyPrototypeExtensions=uw;exports.beginListenDestroy=u0;exports.beginListenInstantiate=g0;exports.binaryIdentifierCasts=fg;exports.build_scene_functions=TP;exports.builtinComponentKeyName=qo;exports.calculateProgress01=i_;exports.clearMessages=VS;exports.colorSerializer=SO;exports.compareAssociation=b0;exports.componentSerializer=Ad;exports.copyTexture=Nv;exports.createMotion=kw;exports.debugNet=Zt;exports.debugOwner=ia;exports.decompressGpuTexture=_x;exports.deepClone=$c;exports.delay=bs;exports.delayForFrames=Wc;exports.deserializeObject=eu;exports.destroy=Si;exports.destroyComponentInstance=xw;exports.determineMimeTypeFromExtension=Yw;exports.disposeObjectResources=we;exports.disposeStream=hn;exports.editorGuidKeyName=sc;exports.enableSpatialConsole=_a;exports.euler=PO;exports.eventListSerializer=EO;exports.exportAsGLTF=iD;exports.findByGuid=Og;exports.findObjectOfType=Xa;exports.findObjectsOfType=Cw;exports.findResourceUsers=Cg;exports.fitCamera=Lw;exports.fitObjectIntoVolume=$v;exports.foreachComponent=pr;exports.foreachComponentEnumerator=Mg;exports.forward=aC;exports.generateQRCode=Z0;exports.generateSeed=m0;exports.getBoundingBox=ci;exports.getCameraController=Dv;exports.getComponent=wo;exports.getComponentInChildren=Jc;exports.getComponentInParent=Ec;exports.getComponents=Ha;exports.getComponentsInChildren=qa;exports.getComponentsInParent=Iu;exports.getFormattedDate=cx;exports.getIconElement=lt;exports.getIconTexture=sm;exports.getLoader=fn;exports.getOrAddComponent=Zc;exports.getParam=x;exports.getParentHierarchyPath=hC;exports.getPath=vS;exports.getPeerOptions=z1;exports.getPeerjsInstance=R0;exports.getResourceUserCount=$P;exports.getSceneData=z0;exports.getTempColor=Bv;exports.getTempQuaternion=ii;exports.getTempVector=F;exports.getUrlParams=Vc;exports.getVisibleInCustomShadowRendering=Vv;exports.getWorldDirection=Fv;exports.getWorldEuler=Xm;exports.getWorldPosition=Y;exports.getWorldQuaternion=pe;exports.getWorldRotation=wu;exports.getWorldScale=je;exports.hasCommercialLicense=Gn;exports.hasIndieLicense=Xc;exports.hasPointerEventComponent=lu;exports.hasProLicense=Wn;exports.hideDebugConsole=qv;exports.imageToCanvas=bx;exports.initEngine=JA;exports.initPhysics=dS;exports.instantiate=uo;exports.invokeLoadedImportPluginHooks=ix;exports.invokeXRSessionEnd=K0;exports.invokeXRSessionStart=Y0;exports.isActiveInHierarchy=fw;exports.isActiveSelf=Ga;exports.isAndroidDevice=OS;exports.isAnimationAction=zv;exports.isComponent=ng;exports.isDebugMode=gS;exports.isDesktop=xS;exports.isDestroyed=fr;exports.isDevEnvironment=A;exports.isDisposed=zP;exports.isExporting=eD;exports.isGLTFModel=e0;exports.isHostedOnGlitch=wv;exports.isHotReloadEnabled=mm;exports.isHotReloading=aO;exports.isIPad=CS;exports.isIconElement=J0;exports.isLocalNetwork=wi;exports.isMacOS=kS;exports.isMobileDevice=SS;exports.isMozillaXR=MS;exports.isQuest=TS;exports.isResourceTrackingEnabled=ow;exports.isSafari=RS;exports.isUsingInstancing=Lu;exports.isiOS=ES;exports.isiPad=PS;exports.loadAsset=IA;exports.loadPMREM=Fg;exports.loadSync=t_;exports.logHierarchy=Xd;exports.lookAtInverse=JS;exports.lookAtObject=Gc;exports.lookAtScreenPoint=eC;exports.makeId=_S;exports.makeIdFromRandomWords=Cv;exports.makeNameSafe=Pi;exports.markAsInstancedRendered=pw;exports.microphonePermissionsGranted=AS;exports.nameof=mS;exports.nameofFactory=xv;exports.needle=eP;exports.objectSerializer=Ew;exports.offBeforeXRSession=Q0;exports.offXRSessionEnd=X0;exports.offXRSessionStart=q0;exports.onAfterRender=e1;exports.onBeforeRender=JC;exports.onBeforeXRSession=xP;exports.onClear=KC;exports.onDestroy=ZC;exports.onInitialized=og;exports.onStart=Ou;exports.onSyncDestroy=u1;exports.onSyncInstantiate=p0;exports.onUpdate=a0;exports.onXRSessionEnd=vg;exports.onXRSessionStart=Eu;exports.parseSync=oS;exports.placeOnSurface=Wv;exports.postprocessFBXMaterials=Km;exports.prefix=NO;exports.pushState=Sv;exports.randomNumber=bS;exports.registerBinaryType=pg;exports.registerComponent=Tu;exports.registerComponentExtension=Kg;exports.registerCustomEffectType=Zi;exports.registerExportExtensions=Zg;exports.registerExtensions=fu;exports.registerHotReloadType=Pw;exports.registerLoader=o0;exports.registerPrefabProvider=y0;exports.registerPrototypeExtensions=Pg;exports.registerType=Jm;exports.relativePathPrefix=Ov;exports.removeAttributeChangeCallback=Vm;exports.removeComponent=Eg;exports.removeCustomImportExtensionType=Ok;exports.removePatch=GC;exports.resolveUrl=xs;exports.sanitizeString=Pv;exports.saveImage=iS;exports.screenshot=pA;exports.screenshot2=e_;exports.sendDestroyed=ag;exports.serializable=p;exports.serializeObject=w0;exports.serializeable=Be;exports.setActive=lc;exports.setAllowBalloonMessages=Rv;exports.setAllowOverlayMessages=FS;exports.setAutoFitEnabled=Hd;exports.setCameraController=Wp;exports.setDestroyed=gw;exports.setDevEnvironment=qS;exports.setDisposable=aw;exports.setDontDestroy=na;exports.setOrAddParamsToUrl=zp;exports.setParam=yS;exports.setParamWithoutReload=wc;exports.setPeerOptions=N1;exports.setResourceTrackingEnabled=UP;exports.setState=Um;exports.setVisibleInCustomShadowRendering=Ym;exports.setWorldEuler=Qm;exports.setWorldPosition=ct;exports.setWorldPositionXYZ=ur;exports.setWorldQuaternion=un;exports.setWorldQuaternionXYZW=qm;exports.setWorldRotation=Uv;exports.setWorldRotationXYZ=Hc;exports.setWorldScale=Ea;exports.showBalloonError=qc;exports.showBalloonMessage=Se;exports.showBalloonWarning=fe;exports.showDebugConsole=Zm;exports.slerp=Iv;exports.syncDestroy=Qc;exports.syncField=Bg;exports.syncInstantiate=lg;exports.textureToCanvas=dC;exports.toSourceId=Mv;exports.tryCastBinary=k0;exports.tryDetermineMimetypeFromBinary=Zw;exports.tryDetermineMimetypeFromURL=Kw;exports.tryFindObject=ka;exports.tryGetGuid=E0;exports.unregisterHotReloadType=Ow;exports.unregisterPrefabProvider=m1;exports.unwatchWrite=zm;exports.useForAutoFit=Lv;exports.validate=Pt;exports.watchWrite=vu;
|
|
@@ -2275,9 +2275,9 @@ Lo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUIL
|
|
|
2275
2275
|
Lo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');
|
|
2276
2276
|
Lo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.0-alpha.1";');
|
|
2277
2277
|
Lo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
|
|
2278
|
-
Lo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Sun Apr 12 2026 15:
|
|
2278
|
+
Lo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Sun Apr 12 2026 15:46:38 GMT+0000 (Coordinated Universal Time)";');
|
|
2279
2279
|
Lo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "' + NEEDLE_PUBLIC_KEY + '";');
|
|
2280
|
-
const Ei = "5.1.0-alpha.1", Bc = "undefined", tu = "Sun Apr 12 2026 15:
|
|
2280
|
+
const Ei = "5.1.0-alpha.1", Bc = "undefined", tu = "Sun Apr 12 2026 15:46:38 GMT+0000 (Coordinated Universal Time)";
|
|
2281
2281
|
C0 && console.log(`Engine version: ${Ei} (generator: ${Bc})
|
|
2282
2282
|
Project built at ${tu}`);
|
|
2283
2283
|
const br = NEEDLE_PUBLIC_KEY, ks = "needle_isActiveInHierarchy", pa = "builtin_components", Sd = "needle_editor_guid";
|
|
@@ -140,7 +140,7 @@ void main(){
|
|
|
140
140
|
#__vconsole .vc-mask {
|
|
141
141
|
overflow: hidden;
|
|
142
142
|
}
|
|
143
|
-
`,Er?.prepend(i),o===!0&&x_()<=0&&Z_(),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.":"")),Mc=!1,gi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function Ek(){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"),gi?.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 Ag="padding: 10px; font-family: monospace;",J_="margin-bottom: 10px;",Rr="margin-bottom: 10px; margin-top: 15px;",Rk="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",ev="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",Tk=ev,Ak=ev+" word-break: break-all;";function Kn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${Rk}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${Tk}'>${i.label}</td><td style='${Ak}'>${n}</td></tr>`}return t+="</tbody></table>",t}function tv(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function Ik(){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='${Ag}'>`;const i=Vk();t+=`<h3 style='${J_}'>Device: ${i}</h3>`,t+=Kn([{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+=Kn(n,!1)),t+="</div>",t+=`<div style='${Ag} margin-top: 20px;'>`,t+=`<h3 style='${J_}'>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:tv()}];t+=Kn(l,!1),t+="</div>",e(t)}),o}function Lk(){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='${Ag}'>`;const i=jk();i.length>0&&(t+=`<h3 style='${Rr}'>General GPU Info</h3>`,t+=Kn(i,!1));const n=Bk();n.length>0&&(t+=`<h3 style='${Rr}'>WebGL</h3>`,t+=Kn(n,!1));const s=Fk();s.length>0&&(t+=`<h3 style='${Rr}'>WebGL 2 Features</h3>`,t+=Kn(s,!1));const r=Uk();r.length>0&&(t+=`<h3 style='${Rr}'>WebGL Limits</h3>`,t+=Kn(r,!1));const a=zk();a.length>0&&(t+=`<h3 style='${Rr}'>Texture Formats</h3>`,t+=Kn(a,!1));const l=await Nk();if(l.length>0&&(t+=`<h3 style='${Rr}'>WebGPU</h3>`,t+=Kn(l,!1)),I.isSafari()){const c=Wk();c.length>0&&(t+=`<h3 style='${Rr}'>Safari GPU Info</h3>`,t+=Kn(c,!1))}t+="</div>",e(t)}),o}function jk(){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=iv();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=Dk(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 Dk(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 Bk(){const o=[],e=iv();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:tv()})),o}function Fk(){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 Uk(){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 zk(){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 Nk(){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 iv(){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 Wk(){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 Vk(){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 $k(){return document.querySelector("#__vconsole .vc-switch")||null}function Hk(){return document.querySelector("#__vconsole")||null}const iu=w("debugtypes");class Gk{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){iu&&console.warn("TypeStore: Created",this)}add(e,t){iu&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?iu&&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){iu&&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 qk=Symbol("BuiltInType"),P=new Gk,Ig=function(o){P.get(o.name)||P.add(o.name,o)};class Xk{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)}}var fi;(o=>{function e(h,d){const p=h.getRoot();return p&&(p.userData.static||p.matrixAutoUpdate===!1||p.matrixWorldAutoUpdate===!1)?((d===!0||d===void 0&&A())&&console.warn(`AnimationUtils: The root object (${p.name||p.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:p.userData.static,name:p.userData.name,tag:p.userData.tag,matrixAutoUpdate:p.matrixAutoUpdate,matrixWorldAutoUpdate:p.matrixWorldAutoUpdate}),!1):!0}o.testIfRootCanAnimate=e;function t(h){return h._actions||null}o.tryGetActionsFromMixer=t;function i(h,d){if(d||(d=new Array),h)h.animations&&d.push(...h.animations);else return d;if(h.children)for(const p of h.children)i(p,d);return d}o.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function s(h,d,p){if(!h)return;if(h[n]===void 0){if(!p)return;h[n]=new Set}const m=h[n];p?m.add(d):m.has(d)&&m.delete(d)}o.setObjectAnimated=s;function r(h){if(!h)return!1;const d=h[n];return d!==void 0&&d.size>0}o.getObjectAnimated=r;function a(h){if(!h||!h.animations)return console.debug("No animations found in file"),null;const d="scene"in h?h.scene:h,p=new Array;for(let g=0;g<h.animations.length;g++){const f=h.animations[g];if(!f.tracks||f.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const y in f.tracks){const b=f.tracks[y],v=La.parseTrackName(b.name);let C=La.findNode(d,v.nodeName);if(!C){const k=b.__objectName??b.name.substring(0,b.name.indexOf("."));if(C=d.getObjectByProperty("uuid",k),!C)continue}let O=m(C)||m(d);if(!O){const k=P.get("Animation");if(O=d.addComponent(k),!O){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}p.push(O),O.addClip&&O.addClip(f)}}return p;function m(g){if(!g)return null;const f=g.userData?.components;if(f&&f.length>0)for(let y=0;y<f.length;y++){const b=f[y];if(b.isAnimationComponent===!0)return b}return m(g.parent)}}o.autoplayAnimations=a;function l(){return new Ii("empty",0,[])}o.emptyClip=l;function c(h){const d=h?.duration??.3;let p={x:1,y:1,z:1};h?.scale!==void 0&&(typeof h.scale=="number"?p={x:h.scale,y:h.scale,z:h.scale}:p=h.scale);const m=h?.type??"linear",g=h?.scaleFactor??1.2,f=new Array,y=new Array;switch(m){case"linear":f.push(0,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g);break;case"spring":f.push(0,d*.3,d*.5,d*.7,d*.9,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g,p.x*.9,p.y*.9,p.z*.9,p.x*1.05,p.y*1.05,p.z*1.05,p.x*.98,p.y*.98,p.z*.98,p.x,p.y,p.z);break}const b=new xC(".scale",f,y);return new Ii("scale",f[f.length-1],[b])}o.createScaleClip=c})(fi||(fi={}));const qe=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=nv(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=nv(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 nv(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const ov=w("debugcomponentevents");class nu{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),ov&&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(ov&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const sv=w("debugdefines");Ms('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Ms('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Ms('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Ms('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Ms('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.0-alpha.1";'),Ms('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Ms('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Sun Apr 12 2026 15:03:40 GMT+0000 (Coordinated Universal Time)";'),Ms('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const yi="5.1.0-alpha.1",$a="undefined",Ec="Sun Apr 12 2026 15:03:40 GMT+0000 (Coordinated Universal Time)";sv&&console.log(`Engine version: ${yi} (generator: ${$a})
|
|
143
|
+
`,Er?.prepend(i),o===!0&&x_()<=0&&Z_(),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.":"")),Mc=!1,gi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function Ek(){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"),gi?.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 Ag="padding: 10px; font-family: monospace;",J_="margin-bottom: 10px;",Rr="margin-bottom: 10px; margin-top: 15px;",Rk="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",ev="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",Tk=ev,Ak=ev+" word-break: break-all;";function Kn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${Rk}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${Tk}'>${i.label}</td><td style='${Ak}'>${n}</td></tr>`}return t+="</tbody></table>",t}function tv(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function Ik(){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='${Ag}'>`;const i=Vk();t+=`<h3 style='${J_}'>Device: ${i}</h3>`,t+=Kn([{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+=Kn(n,!1)),t+="</div>",t+=`<div style='${Ag} margin-top: 20px;'>`,t+=`<h3 style='${J_}'>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:tv()}];t+=Kn(l,!1),t+="</div>",e(t)}),o}function Lk(){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='${Ag}'>`;const i=jk();i.length>0&&(t+=`<h3 style='${Rr}'>General GPU Info</h3>`,t+=Kn(i,!1));const n=Bk();n.length>0&&(t+=`<h3 style='${Rr}'>WebGL</h3>`,t+=Kn(n,!1));const s=Fk();s.length>0&&(t+=`<h3 style='${Rr}'>WebGL 2 Features</h3>`,t+=Kn(s,!1));const r=Uk();r.length>0&&(t+=`<h3 style='${Rr}'>WebGL Limits</h3>`,t+=Kn(r,!1));const a=zk();a.length>0&&(t+=`<h3 style='${Rr}'>Texture Formats</h3>`,t+=Kn(a,!1));const l=await Nk();if(l.length>0&&(t+=`<h3 style='${Rr}'>WebGPU</h3>`,t+=Kn(l,!1)),I.isSafari()){const c=Wk();c.length>0&&(t+=`<h3 style='${Rr}'>Safari GPU Info</h3>`,t+=Kn(c,!1))}t+="</div>",e(t)}),o}function jk(){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=iv();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=Dk(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 Dk(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 Bk(){const o=[],e=iv();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:tv()})),o}function Fk(){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 Uk(){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 zk(){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 Nk(){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 iv(){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 Wk(){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 Vk(){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 $k(){return document.querySelector("#__vconsole .vc-switch")||null}function Hk(){return document.querySelector("#__vconsole")||null}const iu=w("debugtypes");class Gk{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){iu&&console.warn("TypeStore: Created",this)}add(e,t){iu&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?iu&&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){iu&&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 qk=Symbol("BuiltInType"),P=new Gk,Ig=function(o){P.get(o.name)||P.add(o.name,o)};class Xk{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)}}var fi;(o=>{function e(h,d){const p=h.getRoot();return p&&(p.userData.static||p.matrixAutoUpdate===!1||p.matrixWorldAutoUpdate===!1)?((d===!0||d===void 0&&A())&&console.warn(`AnimationUtils: The root object (${p.name||p.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:p.userData.static,name:p.userData.name,tag:p.userData.tag,matrixAutoUpdate:p.matrixAutoUpdate,matrixWorldAutoUpdate:p.matrixWorldAutoUpdate}),!1):!0}o.testIfRootCanAnimate=e;function t(h){return h._actions||null}o.tryGetActionsFromMixer=t;function i(h,d){if(d||(d=new Array),h)h.animations&&d.push(...h.animations);else return d;if(h.children)for(const p of h.children)i(p,d);return d}o.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function s(h,d,p){if(!h)return;if(h[n]===void 0){if(!p)return;h[n]=new Set}const m=h[n];p?m.add(d):m.has(d)&&m.delete(d)}o.setObjectAnimated=s;function r(h){if(!h)return!1;const d=h[n];return d!==void 0&&d.size>0}o.getObjectAnimated=r;function a(h){if(!h||!h.animations)return console.debug("No animations found in file"),null;const d="scene"in h?h.scene:h,p=new Array;for(let g=0;g<h.animations.length;g++){const f=h.animations[g];if(!f.tracks||f.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const y in f.tracks){const b=f.tracks[y],v=La.parseTrackName(b.name);let C=La.findNode(d,v.nodeName);if(!C){const k=b.__objectName??b.name.substring(0,b.name.indexOf("."));if(C=d.getObjectByProperty("uuid",k),!C)continue}let O=m(C)||m(d);if(!O){const k=P.get("Animation");if(O=d.addComponent(k),!O){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}p.push(O),O.addClip&&O.addClip(f)}}return p;function m(g){if(!g)return null;const f=g.userData?.components;if(f&&f.length>0)for(let y=0;y<f.length;y++){const b=f[y];if(b.isAnimationComponent===!0)return b}return m(g.parent)}}o.autoplayAnimations=a;function l(){return new Ii("empty",0,[])}o.emptyClip=l;function c(h){const d=h?.duration??.3;let p={x:1,y:1,z:1};h?.scale!==void 0&&(typeof h.scale=="number"?p={x:h.scale,y:h.scale,z:h.scale}:p=h.scale);const m=h?.type??"linear",g=h?.scaleFactor??1.2,f=new Array,y=new Array;switch(m){case"linear":f.push(0,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g);break;case"spring":f.push(0,d*.3,d*.5,d*.7,d*.9,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g,p.x*.9,p.y*.9,p.z*.9,p.x*1.05,p.y*1.05,p.z*1.05,p.x*.98,p.y*.98,p.z*.98,p.x,p.y,p.z);break}const b=new xC(".scale",f,y);return new Ii("scale",f[f.length-1],[b])}o.createScaleClip=c})(fi||(fi={}));const qe=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=nv(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=nv(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 nv(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const ov=w("debugcomponentevents");class nu{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),ov&&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(ov&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const sv=w("debugdefines");Ms('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Ms('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Ms('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Ms('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Ms('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.0-alpha.1";'),Ms('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Ms('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Sun Apr 12 2026 15:46:38 GMT+0000 (Coordinated Universal Time)";'),Ms('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const yi="5.1.0-alpha.1",$a="undefined",Ec="Sun Apr 12 2026 15:46:38 GMT+0000 (Coordinated Universal Time)";sv&&console.log(`Engine version: ${yi} (generator: ${$a})
|
|
144
144
|
Project built at ${Ec}`);const ks=NEEDLE_PUBLIC_KEY,Jn="needle_isActiveInHierarchy",Tr="builtin_components",Rc="needle_editor_guid";function Ms(o){try{(0,eval)(o)}catch(e){sv&&console.error(e)}}globalThis.NEEDLE_USE_RAPIER=globalThis.NEEDLE_USE_RAPIER!==void 0?globalThis.NEEDLE_USE_RAPIER:!0,globalThis.NEEDLE_USE_POSTPROCESSING=globalThis.NEEDLE_USE_POSTPROCESSING!==void 0?globalThis.NEEDLE_USE_POSTPROCESSING:!0;const Lg={experimentalSmartHierarchyUpdate:!1},Ui=Symbol("shadowDomOwner"),Qk=w("debugpatch");function ou(o,e,t,i){const n=Qk===e;if(!t&&!i)return;const s=e+"___needle";Zk(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]=av(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]=av(l,o,e);else{const c=this[s];lv(o,e,this,c,l),this[s]=l,cv(o,e,this,c,l)}},get:function(){const l=this[s];return typeof l=="function"&&l[s]?l[s]:l}}))}function Yk(o,e,t){const i=Dg(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 rv=Symbol("Needle:Patches:WrappedFunction");function av(o,e,t){if(o[rv])return o;const i=function(...n){lv(e,t,this,...n);const s=o.apply(this,n);return cv(e,t,this,s,...n),s};return i[rv]=!0,i}const su="Needle:Patches";function jg(){return globalThis[su]||(globalThis[su]=new WeakMap),globalThis[su]}function Dg(o,e){const t=jg().get(o);return t?t.get(e):null}function Zk(o,e,t,i){let n=jg().get(o);n||(n=new Map,jg().set(o,n));let s=n.get(e);s||(s=[],n.set(e,s)),s.push({prefix:t,postfix:i})}function lv(o,e,t,...i){if(!t)return;const n=Dg(o,e);if(n)for(const s of n)s.prefix?.call(t,...i)}function cv(o,e,t,i,...n){if(!t)return;const s=Dg(o,e);if(s)for(const r of s)r.postfix?.call(t,i,...n)}function Kk(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 hv(o){const e=o;return!!(e.parser&&e.parser.json)}var ru=(o=>(o[o.None=0]="None",o[o.DontExport=1]="DontExport",o))(ru||{});const Bg=Symbol("component-name");function Fg(o){return o&&o.isComponent}const Jk=Symbol("object"),Ug=new Bi(()=>new _,20);class dv{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return Ug.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return Ug.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return Ug.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 uv{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 pv{object;collider;constructor(e,t){this.object=e,this.collider=t}}class Dm{constructor(e){this.context=e,this.root.style.cssText=`
|
|
145
145
|
position: absolute;
|
|
146
146
|
width: 1px; height: 1px;
|
package/dist/needle-engine.d.ts
CHANGED
|
@@ -23546,6 +23546,28 @@ export declare class OrbitControls extends Component implements ICameraControlle
|
|
|
23546
23546
|
export { }
|
|
23547
23547
|
|
|
23548
23548
|
|
|
23549
|
+
declare module 'three' {
|
|
23550
|
+
interface SkinnedMesh {
|
|
23551
|
+
staticGenerator?: StaticGeometryGenerator;
|
|
23552
|
+
staticGeometry?: BufferGeometry;
|
|
23553
|
+
staticGeometryLastUpdate?: number;
|
|
23554
|
+
}
|
|
23555
|
+
interface Mesh {
|
|
23556
|
+
acceleratedRaycast?: any;
|
|
23557
|
+
}
|
|
23558
|
+
interface SkinnedMesh {
|
|
23559
|
+
/** @deprecated use autoUpdateMeshBvhInterval */
|
|
23560
|
+
autoUpdateMeshBVH?: boolean;
|
|
23561
|
+
/**
|
|
23562
|
+
* Interval in milliseconds to automatically update the mesh BVH. When set to >= 0 the BVH will be updated every x milliseconds.
|
|
23563
|
+
* @default undefined (disabled)
|
|
23564
|
+
*/
|
|
23565
|
+
autoUpdateMeshBvhInterval?: number;
|
|
23566
|
+
bvhNeedsUpdate?: boolean;
|
|
23567
|
+
}
|
|
23568
|
+
}
|
|
23569
|
+
|
|
23570
|
+
|
|
23549
23571
|
declare module 'three' {
|
|
23550
23572
|
interface Object3D {
|
|
23551
23573
|
get guid(): string | undefined;
|
|
@@ -23691,25 +23713,3 @@ declare module 'three' {
|
|
|
23691
23713
|
slerp(end: Vector3, t: number): Vector3;
|
|
23692
23714
|
}
|
|
23693
23715
|
}
|
|
23694
|
-
|
|
23695
|
-
|
|
23696
|
-
declare module 'three' {
|
|
23697
|
-
interface SkinnedMesh {
|
|
23698
|
-
staticGenerator?: StaticGeometryGenerator;
|
|
23699
|
-
staticGeometry?: BufferGeometry;
|
|
23700
|
-
staticGeometryLastUpdate?: number;
|
|
23701
|
-
}
|
|
23702
|
-
interface Mesh {
|
|
23703
|
-
acceleratedRaycast?: any;
|
|
23704
|
-
}
|
|
23705
|
-
interface SkinnedMesh {
|
|
23706
|
-
/** @deprecated use autoUpdateMeshBvhInterval */
|
|
23707
|
-
autoUpdateMeshBVH?: boolean;
|
|
23708
|
-
/**
|
|
23709
|
-
* Interval in milliseconds to automatically update the mesh BVH. When set to >= 0 the BVH will be updated every x milliseconds.
|
|
23710
|
-
* @default undefined (disabled)
|
|
23711
|
-
*/
|
|
23712
|
-
autoUpdateMeshBvhInterval?: number;
|
|
23713
|
-
bvhNeedsUpdate?: boolean;
|
|
23714
|
-
}
|
|
23715
|
-
}
|
package/dist/needle-engine.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { initEngine as i, GameObject as r, onClear as a, onDestroy as s, onInitialized as l, onAfterRender as d, onBeforeRender as c, onUpdate as m, onStart as p, TypeStore as g, loadAsset as S, NeedleXRSession as u, Context as C, VERSION as y, Component as E, Components as R } from "./needle-engine.bundle-
|
|
2
|
-
import { $componentName as T, $physicsKey as b, ActionBuilder as M, ActionCollection as I, ActionModel as D, Addressables as O, AlignmentConstraint as x, AmbientMode as k, Animation as L, AnimationCurve as B, AnimationExtension as N, AnimationTrackHandler as F, AnimationUtils as w, Animator as U, AnimatorConditionMode as W, AnimatorController as G, AnimatorControllerBuilder as H, AnimatorControllerParameterType as X, AnimatorStateInfo as z, Antialiasing as V, Application as _, AssetDatabase as j, AssetReference as Z, Attractor as K, AudioExtension as Q, AudioListener as $, AudioSource as Y, AudioTrackHandler as J, Avatar as q, AvatarBlink_Simple as ee, AvatarEyeLook_Rotation as te, AvatarLoader as oe, AvatarMarker as re, AvatarModel as ne, Avatar_Brain_LookAt as ie, Avatar_MouthShapes as ae, Avatar_MustacheShake as se, Avatar_POI as le, Axes as de, AxesHelper as ce, BUILD_TIME as me, BaseUIComponent as pe, BasicIKConstraint as ge, BehaviorExtension as Se, BehaviorModel as ue, Component$1 as Ce, BlobStorage as ye, BloomEffect as Ee, BoxCollider as Re, BoxGizmo as he, BoxHelperComponent as fe, Button as ve, ButtonsFactory as Pe, CallDirection as Ae, CallInfo as Te, Camera as be, CameraTargetReachedEvent as Me, Canvas as Ie, CanvasGroup as De, CapsuleCollider as Oe, ChangeMaterialOnClick as xe, ChangeTransformOnClick as ke, CharacterController as Le, CharacterControllerInput as Be, ChromaticAberration as Ne, CircularBuffer as Fe, ClearFlags as we, ClickThrough as Ue, ClipExtrapolation as We, Collider as Ge, Collision as He, CollisionDetectionMode as Xe, ColorAdjustments as ze, ColorBySpeedModule as Ve, ColorOverLifetimeModule as _e, Component$1 as je, ComponentLifecycleEvents as Ze, ConnectionEvents as Ke, ContactPoint as Qe, ContactShadows as $e, ContextArgs as Ye, ContextEvent as Je, ContextRegistry as qe, ControlTrackHandler as et, CursorFollow as tt, CustomBranding as ot, CustomShader as rt, DefaultReflectionMode as nt, Deletable as it, DeleteBox as at, DepthOfField as st, DeviceFlag as lt, DeviceUtilities as dt, DocumentExtension as ct, DragControls as mt, DragMode as pt, DropListener as gt, Duplicatable as St, EffectWrapper as ut, EmissionModule as Ct, EmphasizeOnClick as yt, EngineLoadingView as Et, EnvironmentScene as Rt, EventList as ht, EventListEvent as ft, EventSystem as vt, EventTrigger as Pt, FieldWithDefault as At, FileReference as Tt, FileReferenceSerializer as bt, FileSpawnModel as Mt, File_Event as It, FixedJoint as Dt, Fog as Ot, FontStyle as xt, FrameEvent as kt, GENERATOR as Lt, Gizmos as Bt, GltfExport as Nt, GltfExportBox as Ft, Gradient as wt, Graphic as Ut, GraphicRaycaster as Wt, Graphics as Gt, GridHelper as Ht, GridLayoutGroup as Xt, GroundProjectedEnv as zt, GroupActionModel as Vt, HideFlags as _t, HideOnStart as jt, HingeJoint as Zt, HorizontalLayoutGroup as Kt, HorizontalWrapMode as Qt, HostData as $t, HoverAnimation as Yt, Image as Jt, ImageReference as qt, ImageReferenceSerializer as eo, InheritVelocityModule as to, Input as oo, InputEventQueue as ro, InputEvents as no, InputField as io, InstanceHandle as ao, InstancingHandler as so, InstancingUtil as lo, InstantiateEvent as co, InstantiateIdProvider as mo, InstantiateOptions as po, Interactable as go, InternalScreenshotUtils as So, JoinedRoomResponse as uo, KeyEventArgs as Co, Keyframe as yo, LODGroup as Eo, LODModel as Ro, LeftRoomResponse as ho, Light as fo, LightData as vo, LimitVelocityOverLifetimeModule as Po, LoadingElementOptions as Ao, LogStats as To, LogType as bo, LookAt as Mo, LookAtConstraint as Io, MainModule as Do, MarkerTrackHandler as Oo, MarkerType as xo, MaskableGraphic as ko, MaterialPropertyBlock as Lo, MaterialX as Bo, Mathf as No, MeshCollider as Fo, MeshRenderer as wo, MinMaxCurve as Uo, MinMaxGradient as Wo, NEEDLE_ENGINE_FEATURE_FLAGS as Go, MODULES as Ho, NEKeyboardEvent as Xo, NEPointerEvent as zo, NeedleButtonElement as Vo, ContextRegistry as _o, NeedleEngineModelLoader as jo, NeedleEngineWebComponent as Zo, NeedleMenu as Ko, NeedlePatchesKey as Qo, USDZExporter as $o, NeedleXRController as Yo, NeedleXRSync as Jo, NeedleXRUtils as qo, NestedGltf as er, NetworkConnection as tr, NetworkedStreamEvents as or, NetworkedStreams as rr, Networking as nr, NewInstanceModel as ir, NoiseModule as ar, ObjectRaycaster as sr, ObjectUtils as lr, OffsetConstraint as dr, OneEuroFilter as cr, OneEuroFilterXYZ as mr, OpenURL as pr, OrbitControls as gr, Outline as Sr, OwnershipEvent as ur, OwnershipModel as Cr, PUBLIC_KEY as yr, Padding as Er, ParticleBurst as Rr, ParticleSubEmitter as hr, ParticleSystem as fr, ParticleSystemBaseBehaviour as vr, ParticleSystemRenderer as Pr, ParticleSystemShapeType as Ar, PeerHandle as Tr, PeerNetworking as br, Physics as Mr, PhysicsExtension as Ir, PhysicsMaterialCombine as Dr, PixelationEffect as Or, PlayAnimationOnClick as xr, PlayAudioOnClick as kr, PlayableDirector as Lr, PlayerColor as Br, PlayerState as Nr, PlayerStateEvent as Fr, PlayerSync as wr, PlayerView as Ur, PlayerViewManager as Wr, PointerEventData as Gr, PointerType as Hr, PostProcessing as Xr, PostProcessingEffect as zr, PostProcessingEffectOrder as Vr, PostProcessingHandler as _r, Volume as jr, Prefabs as Zr, PreliminaryAction as Kr, PreliminaryTrigger as Qr, PreviewHelper as $r, PrimitiveType as Yr, Progress as Jr, PromiseAllWithErrors as qr, PromiseErrorResult as en, RGBAColor as tn, RapierPhysics as on, RawImage as rn, RaycastOptions as nn, Rect as an, RectTransform as sn, ReflectionProbe as ln, RegisteredAnimationInfo as dn, RemoteSkybox as cn, RenderTexture as mn, RenderTextureSerializer as pn, Renderer as gn, RendererData as Sn, RendererLightmap as un, Rigidbody as Cn, RigidbodyConstraints as yn, RoomEvents as En, RotationBySpeedModule as Rn, RotationOverLifetimeModule as hn, SceneLightSettings as fn, SceneSwitcher as vn, ScreenCapture as Pn, ScreenSpaceAmbientOcclusion as An, ScreenSpaceAmbientOcclusionN8 as Tn, ScrollFollow as bn, SeeThrough as Mn, SendQueue as In, SerializationContext as Dn, SetActiveOnClick as On, ShadowCatcher as xn, ShapeModule as kn, ShapeOverlapResult as Ln, SharpeningEffect as Bn, SignalAsset as Nn, SignalReceiver as Fn, SignalReceiverEvent as wn, SignalTrackHandler as Un, Size as Wn, SizeBySpeedModule as Gn, SizeOverLifetimeModule as Hn, SkinnedMeshRenderer as Xn, SmoothFollow as zn, SpatialGrabRaycaster as Vn, SpatialHtml as _n, SpatialTrigger as jn, SpatialTriggerReceiver as Zn, SpectatorCamera as Kn, SphereCollider as Qn, SphereIntersection as $n, SplineContainer as Yn, SplineData as Jn, SplineUtils as qn, SplineWalker as ei, Sprite as ti, SpriteData as oi, SpriteRenderer as ri, SpriteSheet as ni, StateMachineBehaviour as ii, StreamEndedEvent as ai, StreamReceivedEvent as si, SubEmitterSystem as li, SyncedCamera as di, SyncedRoom as ci, SyncedTransform as mi, TapGestureTrigger as pi, TeleportTarget as gi, TestRunner as Si, TestSimulateUserData as ui, Text as Ci, TextAnchor as yi, TextBuilder as Ei, TextExtension as Ri, TextureSheetAnimationModule as hi, TiltShiftEffect as fi, Time as vi, ToneMappingEffect as Pi, TrackHandler as Ai, TrackType as Ti, TrailModule as bi, TransformData as Mi, TransformGizmo as Ii, TriggerBuilder as Di, TriggerModel as Oi, UIRaycastUtils as xi, UIRootComponent as ki, USDDocument as Li, USDObject as Bi, USDWriter as Ni, USDZExporter$1 as Fi, USDZText as wi, USDZUIExtension as Ui, UriSerializer as Wi, UsageMarker as Gi, UserJoinedOrLeftRoomModel as Hi, VariantAction as Xi, VelocityOverLifetimeModule as zi, VerticalLayoutGroup as Vi, VerticalWrapMode as _i, VideoPlayer as ji, ViewBox as Zi, ViewDevice as Ki, Vignette as Qi, VisibilityAction as $i, Voip as Yi, Volume as Ji, VolumeParameter as qi, VolumeProfile as ea, WaitForFrames as ta, WaitForPromise as oa, WaitForSeconds as ra, Watch as na, WebARCameraBackground as ia, WebARSessionRoot as aa, WebXR as sa, WebXRButtonFactory as la, WebXRImageTracking as da, WebXRImageTrackingModel as ca, WebXRPlaneTracking as ma, WebXRTrackedImage as pa, XRControllerFollow as ga, XRControllerModel as Sa, XRControllerMovement as ua, XRFlag as Ca, XRRig as ya, XRState as Ea, XRStateFlag as Ra, __Ignore as ha, __internalNotifyObjectDestroyed as fa, activeInHierarchyFieldName as va, addAttributeChangeCallback as Pa, addComponent as Aa, addCustomExtensionPlugin as Ta, addNewComponent as ba, addPatch as Ma, apply as Ia, applyHMRChanges as Da, applyPrototypeExtensions as Oa, beginListenDestroy as xa, beginListenInstantiate as ka, binaryIdentifierCasts as La, build_scene_functions as Ba, builtinComponentKeyName as Na, calculateProgress01 as Fa, clearMessages as wa, clearMessages as Ua, colorSerializer as Wa, compareAssociation as Ga, componentSerializer as Ha, copyTexture as Xa, createMotion as za, debugNet as Va, debugOwner as _a, decompressGpuTexture as ja, deepClone as Za, delay as Ka, delayForFrames as Qa, deserializeObject as $a, destroy as Ya, destroyComponentInstance as Ja, determineMimeTypeFromExtension as qa, disposeObjectResources as es, disposeStream as ts, editorGuidKeyName as os, enableSpatialConsole as rs, euler as ns, eventListSerializer as is, exportAsGLTF as as, findByGuid as ss, findObjectOfType as ls, findObjectsOfType as ds, findResourceUsers as cs, fitCamera as ms, fitObjectIntoVolume as ps, foreachComponent as gs, foreachComponentEnumerator as Ss, forward as us, generateQRCode as Cs, generateSeed as ys, getBoundingBox as Es, getCameraController as Rs, getComponent as hs, getComponentInChildren as fs, getComponentInParent as vs, getComponents as Ps, getComponentsInChildren as As, getComponentsInParent as Ts, getFormattedDate as bs, getIconElement as Ms, getIconTexture as Is, getLoader as Ds, getOrAddComponent as Os, getParam as xs, getParentHierarchyPath as ks, getPath as Ls, getPeerOptions as Bs, getPeerjsInstance as Ns, getResourceUserCount as Fs, getSceneData as ws, getTempColor as Us, getTempQuaternion as Ws, getTempVector as Gs, getUrlParams as Hs, getVisibleInCustomShadowRendering as Xs, getWorldDirection as zs, getWorldEuler as Vs, getWorldPosition as _s, getWorldQuaternion as js, getWorldRotation as Zs, getWorldScale as Ks, hasCommercialLicense as Qs, hasIndieLicense as $s, hasPointerEventComponent as Ys, hasProLicense as Js, hideDebugConsole as qs, imageToCanvas as el, initPhysics as tl, instantiate as ol, invokeLoadedImportPluginHooks as rl, invokeXRSessionEnd as nl, invokeXRSessionStart as il, isActiveInHierarchy as al, isActiveSelf as sl, isAndroidDevice as ll, isAnimationAction as dl, isComponent as cl, isDebugMode as ml, isDesktop as pl, isDestroyed as gl, isDevEnvironment as Sl, isDisposed as ul, isExporting as Cl, isGLTFModel as yl, isHostedOnGlitch as El, isHotReloadEnabled as Rl, isHotReloading as hl, isIPad as fl, isIconElement as vl, isLocalNetwork as Pl, isMacOS as Al, isMobileDevice as Tl, isMozillaXR as bl, isQuest as Ml, isResourceTrackingEnabled as Il, isSafari as Dl, isUsingInstancing as Ol, isiOS as xl, isiPad as kl, loadPMREM as Ll, loadSync as Bl, logHierarchy as Nl, lookAtInverse as Fl, lookAtObject as wl, lookAtScreenPoint as Ul, makeId as Wl, makeIdFromRandomWords as Gl, makeNameSafe as Hl, markAsInstancedRendered as Xl, microphonePermissionsGranted as zl, nameof as Vl, nameofFactory as _l, needle as jl, objectSerializer as Zl, offBeforeXRSession as Kl, offXRSessionEnd as Ql, offXRSessionStart as $l, onBeforeXRSession as Yl, onSyncDestroy as Jl, onSyncInstantiate as ql, onXRSessionEnd as ed, onXRSessionStart as td, parseSync as od, placeOnSurface as rd, postprocessFBXMaterials as nd, prefix as id, pushState as ad, randomNumber as sd, registerBinaryType as ld, registerComponent as dd, registerComponentExtension as cd, registerCustomEffectType as md, registerExportExtensions as pd, registerExtensions as gd, registerHotReloadType as Sd, registerLoader as ud, registerPrefabProvider as Cd, registerPrototypeExtensions as yd, registerType as Ed, relativePathPrefix as Rd, removeAttributeChangeCallback as hd, removeComponent as fd, removeCustomImportExtensionType as vd, removePatch as Pd, resolveUrl as Ad, sanitizeString as Td, saveImage as bd, screenshot as Md, screenshot2 as Id, sendDestroyed as Dd, serializable as Od, serializeObject as xd, serializeable as kd, setActive as Ld, setAllowBalloonMessages as Bd, setAllowOverlayMessages as Nd, setAutoFitEnabled as Fd, setCameraController as wd, setDestroyed as Ud, setDevEnvironment as Wd, setDisposable as Gd, setDontDestroy as Hd, setOrAddParamsToUrl as Xd, setParam as zd, setParamWithoutReload as Vd, setPeerOptions as _d, setResourceTrackingEnabled as jd, setState as Zd, setVisibleInCustomShadowRendering as Kd, setWorldEuler as Qd, setWorldPosition as $d, setWorldPositionXYZ as Yd, setWorldQuaternion as Jd, setWorldQuaternionXYZW as qd, setWorldRotation as ec, setWorldRotationXYZ as tc, setWorldScale as oc, showBalloonError as rc, showBalloonMessage as nc, showBalloonWarning as ic, showDebugConsole as ac, slerp as sc, syncDestroy as lc, syncField as dc, syncInstantiate as cc, textureToCanvas as mc, toSourceId as pc, tryCastBinary as gc, tryDetermineMimetypeFromBinary as Sc, tryDetermineMimetypeFromURL as uc, tryFindObject as Cc, tryGetGuid as yc, unregisterHotReloadType as Ec, unregisterPrefabProvider as Rc, unwatchWrite as hc, useForAutoFit as fc, validate as vc, watchWrite as Pc } from "./needle-engine.bundle-gJMpYUpr.js";
|
|
1
|
+
import { initEngine as i, GameObject as r, onClear as a, onDestroy as s, onInitialized as l, onAfterRender as d, onBeforeRender as c, onUpdate as m, onStart as p, TypeStore as g, loadAsset as S, NeedleXRSession as u, Context as C, VERSION as y, Component as E, Components as R } from "./needle-engine.bundle-DuRtL0ah.js";
|
|
2
|
+
import { $componentName as T, $physicsKey as b, ActionBuilder as M, ActionCollection as I, ActionModel as D, Addressables as O, AlignmentConstraint as x, AmbientMode as k, Animation as L, AnimationCurve as B, AnimationExtension as N, AnimationTrackHandler as F, AnimationUtils as w, Animator as U, AnimatorConditionMode as W, AnimatorController as G, AnimatorControllerBuilder as H, AnimatorControllerParameterType as X, AnimatorStateInfo as z, Antialiasing as V, Application as _, AssetDatabase as j, AssetReference as Z, Attractor as K, AudioExtension as Q, AudioListener as $, AudioSource as Y, AudioTrackHandler as J, Avatar as q, AvatarBlink_Simple as ee, AvatarEyeLook_Rotation as te, AvatarLoader as oe, AvatarMarker as re, AvatarModel as ne, Avatar_Brain_LookAt as ie, Avatar_MouthShapes as ae, Avatar_MustacheShake as se, Avatar_POI as le, Axes as de, AxesHelper as ce, BUILD_TIME as me, BaseUIComponent as pe, BasicIKConstraint as ge, BehaviorExtension as Se, BehaviorModel as ue, Component$1 as Ce, BlobStorage as ye, BloomEffect as Ee, BoxCollider as Re, BoxGizmo as he, BoxHelperComponent as fe, Button as ve, ButtonsFactory as Pe, CallDirection as Ae, CallInfo as Te, Camera as be, CameraTargetReachedEvent as Me, Canvas as Ie, CanvasGroup as De, CapsuleCollider as Oe, ChangeMaterialOnClick as xe, ChangeTransformOnClick as ke, CharacterController as Le, CharacterControllerInput as Be, ChromaticAberration as Ne, CircularBuffer as Fe, ClearFlags as we, ClickThrough as Ue, ClipExtrapolation as We, Collider as Ge, Collision as He, CollisionDetectionMode as Xe, ColorAdjustments as ze, ColorBySpeedModule as Ve, ColorOverLifetimeModule as _e, Component$1 as je, ComponentLifecycleEvents as Ze, ConnectionEvents as Ke, ContactPoint as Qe, ContactShadows as $e, ContextArgs as Ye, ContextEvent as Je, ContextRegistry as qe, ControlTrackHandler as et, CursorFollow as tt, CustomBranding as ot, CustomShader as rt, DefaultReflectionMode as nt, Deletable as it, DeleteBox as at, DepthOfField as st, DeviceFlag as lt, DeviceUtilities as dt, DocumentExtension as ct, DragControls as mt, DragMode as pt, DropListener as gt, Duplicatable as St, EffectWrapper as ut, EmissionModule as Ct, EmphasizeOnClick as yt, EngineLoadingView as Et, EnvironmentScene as Rt, EventList as ht, EventListEvent as ft, EventSystem as vt, EventTrigger as Pt, FieldWithDefault as At, FileReference as Tt, FileReferenceSerializer as bt, FileSpawnModel as Mt, File_Event as It, FixedJoint as Dt, Fog as Ot, FontStyle as xt, FrameEvent as kt, GENERATOR as Lt, Gizmos as Bt, GltfExport as Nt, GltfExportBox as Ft, Gradient as wt, Graphic as Ut, GraphicRaycaster as Wt, Graphics as Gt, GridHelper as Ht, GridLayoutGroup as Xt, GroundProjectedEnv as zt, GroupActionModel as Vt, HideFlags as _t, HideOnStart as jt, HingeJoint as Zt, HorizontalLayoutGroup as Kt, HorizontalWrapMode as Qt, HostData as $t, HoverAnimation as Yt, Image as Jt, ImageReference as qt, ImageReferenceSerializer as eo, InheritVelocityModule as to, Input as oo, InputEventQueue as ro, InputEvents as no, InputField as io, InstanceHandle as ao, InstancingHandler as so, InstancingUtil as lo, InstantiateEvent as co, InstantiateIdProvider as mo, InstantiateOptions as po, Interactable as go, InternalScreenshotUtils as So, JoinedRoomResponse as uo, KeyEventArgs as Co, Keyframe as yo, LODGroup as Eo, LODModel as Ro, LeftRoomResponse as ho, Light as fo, LightData as vo, LimitVelocityOverLifetimeModule as Po, LoadingElementOptions as Ao, LogStats as To, LogType as bo, LookAt as Mo, LookAtConstraint as Io, MainModule as Do, MarkerTrackHandler as Oo, MarkerType as xo, MaskableGraphic as ko, MaterialPropertyBlock as Lo, MaterialX as Bo, Mathf as No, MeshCollider as Fo, MeshRenderer as wo, MinMaxCurve as Uo, MinMaxGradient as Wo, NEEDLE_ENGINE_FEATURE_FLAGS as Go, MODULES as Ho, NEKeyboardEvent as Xo, NEPointerEvent as zo, NeedleButtonElement as Vo, ContextRegistry as _o, NeedleEngineModelLoader as jo, NeedleEngineWebComponent as Zo, NeedleMenu as Ko, NeedlePatchesKey as Qo, USDZExporter as $o, NeedleXRController as Yo, NeedleXRSync as Jo, NeedleXRUtils as qo, NestedGltf as er, NetworkConnection as tr, NetworkedStreamEvents as or, NetworkedStreams as rr, Networking as nr, NewInstanceModel as ir, NoiseModule as ar, ObjectRaycaster as sr, ObjectUtils as lr, OffsetConstraint as dr, OneEuroFilter as cr, OneEuroFilterXYZ as mr, OpenURL as pr, OrbitControls as gr, Outline as Sr, OwnershipEvent as ur, OwnershipModel as Cr, PUBLIC_KEY as yr, Padding as Er, ParticleBurst as Rr, ParticleSubEmitter as hr, ParticleSystem as fr, ParticleSystemBaseBehaviour as vr, ParticleSystemRenderer as Pr, ParticleSystemShapeType as Ar, PeerHandle as Tr, PeerNetworking as br, Physics as Mr, PhysicsExtension as Ir, PhysicsMaterialCombine as Dr, PixelationEffect as Or, PlayAnimationOnClick as xr, PlayAudioOnClick as kr, PlayableDirector as Lr, PlayerColor as Br, PlayerState as Nr, PlayerStateEvent as Fr, PlayerSync as wr, PlayerView as Ur, PlayerViewManager as Wr, PointerEventData as Gr, PointerType as Hr, PostProcessing as Xr, PostProcessingEffect as zr, PostProcessingEffectOrder as Vr, PostProcessingHandler as _r, Volume as jr, Prefabs as Zr, PreliminaryAction as Kr, PreliminaryTrigger as Qr, PreviewHelper as $r, PrimitiveType as Yr, Progress as Jr, PromiseAllWithErrors as qr, PromiseErrorResult as en, RGBAColor as tn, RapierPhysics as on, RawImage as rn, RaycastOptions as nn, Rect as an, RectTransform as sn, ReflectionProbe as ln, RegisteredAnimationInfo as dn, RemoteSkybox as cn, RenderTexture as mn, RenderTextureSerializer as pn, Renderer as gn, RendererData as Sn, RendererLightmap as un, Rigidbody as Cn, RigidbodyConstraints as yn, RoomEvents as En, RotationBySpeedModule as Rn, RotationOverLifetimeModule as hn, SceneLightSettings as fn, SceneSwitcher as vn, ScreenCapture as Pn, ScreenSpaceAmbientOcclusion as An, ScreenSpaceAmbientOcclusionN8 as Tn, ScrollFollow as bn, SeeThrough as Mn, SendQueue as In, SerializationContext as Dn, SetActiveOnClick as On, ShadowCatcher as xn, ShapeModule as kn, ShapeOverlapResult as Ln, SharpeningEffect as Bn, SignalAsset as Nn, SignalReceiver as Fn, SignalReceiverEvent as wn, SignalTrackHandler as Un, Size as Wn, SizeBySpeedModule as Gn, SizeOverLifetimeModule as Hn, SkinnedMeshRenderer as Xn, SmoothFollow as zn, SpatialGrabRaycaster as Vn, SpatialHtml as _n, SpatialTrigger as jn, SpatialTriggerReceiver as Zn, SpectatorCamera as Kn, SphereCollider as Qn, SphereIntersection as $n, SplineContainer as Yn, SplineData as Jn, SplineUtils as qn, SplineWalker as ei, Sprite as ti, SpriteData as oi, SpriteRenderer as ri, SpriteSheet as ni, StateMachineBehaviour as ii, StreamEndedEvent as ai, StreamReceivedEvent as si, SubEmitterSystem as li, SyncedCamera as di, SyncedRoom as ci, SyncedTransform as mi, TapGestureTrigger as pi, TeleportTarget as gi, TestRunner as Si, TestSimulateUserData as ui, Text as Ci, TextAnchor as yi, TextBuilder as Ei, TextExtension as Ri, TextureSheetAnimationModule as hi, TiltShiftEffect as fi, Time as vi, ToneMappingEffect as Pi, TrackHandler as Ai, TrackType as Ti, TrailModule as bi, TransformData as Mi, TransformGizmo as Ii, TriggerBuilder as Di, TriggerModel as Oi, UIRaycastUtils as xi, UIRootComponent as ki, USDDocument as Li, USDObject as Bi, USDWriter as Ni, USDZExporter$1 as Fi, USDZText as wi, USDZUIExtension as Ui, UriSerializer as Wi, UsageMarker as Gi, UserJoinedOrLeftRoomModel as Hi, VariantAction as Xi, VelocityOverLifetimeModule as zi, VerticalLayoutGroup as Vi, VerticalWrapMode as _i, VideoPlayer as ji, ViewBox as Zi, ViewDevice as Ki, Vignette as Qi, VisibilityAction as $i, Voip as Yi, Volume as Ji, VolumeParameter as qi, VolumeProfile as ea, WaitForFrames as ta, WaitForPromise as oa, WaitForSeconds as ra, Watch as na, WebARCameraBackground as ia, WebARSessionRoot as aa, WebXR as sa, WebXRButtonFactory as la, WebXRImageTracking as da, WebXRImageTrackingModel as ca, WebXRPlaneTracking as ma, WebXRTrackedImage as pa, XRControllerFollow as ga, XRControllerModel as Sa, XRControllerMovement as ua, XRFlag as Ca, XRRig as ya, XRState as Ea, XRStateFlag as Ra, __Ignore as ha, __internalNotifyObjectDestroyed as fa, activeInHierarchyFieldName as va, addAttributeChangeCallback as Pa, addComponent as Aa, addCustomExtensionPlugin as Ta, addNewComponent as ba, addPatch as Ma, apply as Ia, applyHMRChanges as Da, applyPrototypeExtensions as Oa, beginListenDestroy as xa, beginListenInstantiate as ka, binaryIdentifierCasts as La, build_scene_functions as Ba, builtinComponentKeyName as Na, calculateProgress01 as Fa, clearMessages as wa, clearMessages as Ua, colorSerializer as Wa, compareAssociation as Ga, componentSerializer as Ha, copyTexture as Xa, createMotion as za, debugNet as Va, debugOwner as _a, decompressGpuTexture as ja, deepClone as Za, delay as Ka, delayForFrames as Qa, deserializeObject as $a, destroy as Ya, destroyComponentInstance as Ja, determineMimeTypeFromExtension as qa, disposeObjectResources as es, disposeStream as ts, editorGuidKeyName as os, enableSpatialConsole as rs, euler as ns, eventListSerializer as is, exportAsGLTF as as, findByGuid as ss, findObjectOfType as ls, findObjectsOfType as ds, findResourceUsers as cs, fitCamera as ms, fitObjectIntoVolume as ps, foreachComponent as gs, foreachComponentEnumerator as Ss, forward as us, generateQRCode as Cs, generateSeed as ys, getBoundingBox as Es, getCameraController as Rs, getComponent as hs, getComponentInChildren as fs, getComponentInParent as vs, getComponents as Ps, getComponentsInChildren as As, getComponentsInParent as Ts, getFormattedDate as bs, getIconElement as Ms, getIconTexture as Is, getLoader as Ds, getOrAddComponent as Os, getParam as xs, getParentHierarchyPath as ks, getPath as Ls, getPeerOptions as Bs, getPeerjsInstance as Ns, getResourceUserCount as Fs, getSceneData as ws, getTempColor as Us, getTempQuaternion as Ws, getTempVector as Gs, getUrlParams as Hs, getVisibleInCustomShadowRendering as Xs, getWorldDirection as zs, getWorldEuler as Vs, getWorldPosition as _s, getWorldQuaternion as js, getWorldRotation as Zs, getWorldScale as Ks, hasCommercialLicense as Qs, hasIndieLicense as $s, hasPointerEventComponent as Ys, hasProLicense as Js, hideDebugConsole as qs, imageToCanvas as el, initPhysics as tl, instantiate as ol, invokeLoadedImportPluginHooks as rl, invokeXRSessionEnd as nl, invokeXRSessionStart as il, isActiveInHierarchy as al, isActiveSelf as sl, isAndroidDevice as ll, isAnimationAction as dl, isComponent as cl, isDebugMode as ml, isDesktop as pl, isDestroyed as gl, isDevEnvironment as Sl, isDisposed as ul, isExporting as Cl, isGLTFModel as yl, isHostedOnGlitch as El, isHotReloadEnabled as Rl, isHotReloading as hl, isIPad as fl, isIconElement as vl, isLocalNetwork as Pl, isMacOS as Al, isMobileDevice as Tl, isMozillaXR as bl, isQuest as Ml, isResourceTrackingEnabled as Il, isSafari as Dl, isUsingInstancing as Ol, isiOS as xl, isiPad as kl, loadPMREM as Ll, loadSync as Bl, logHierarchy as Nl, lookAtInverse as Fl, lookAtObject as wl, lookAtScreenPoint as Ul, makeId as Wl, makeIdFromRandomWords as Gl, makeNameSafe as Hl, markAsInstancedRendered as Xl, microphonePermissionsGranted as zl, nameof as Vl, nameofFactory as _l, needle as jl, objectSerializer as Zl, offBeforeXRSession as Kl, offXRSessionEnd as Ql, offXRSessionStart as $l, onBeforeXRSession as Yl, onSyncDestroy as Jl, onSyncInstantiate as ql, onXRSessionEnd as ed, onXRSessionStart as td, parseSync as od, placeOnSurface as rd, postprocessFBXMaterials as nd, prefix as id, pushState as ad, randomNumber as sd, registerBinaryType as ld, registerComponent as dd, registerComponentExtension as cd, registerCustomEffectType as md, registerExportExtensions as pd, registerExtensions as gd, registerHotReloadType as Sd, registerLoader as ud, registerPrefabProvider as Cd, registerPrototypeExtensions as yd, registerType as Ed, relativePathPrefix as Rd, removeAttributeChangeCallback as hd, removeComponent as fd, removeCustomImportExtensionType as vd, removePatch as Pd, resolveUrl as Ad, sanitizeString as Td, saveImage as bd, screenshot as Md, screenshot2 as Id, sendDestroyed as Dd, serializable as Od, serializeObject as xd, serializeable as kd, setActive as Ld, setAllowBalloonMessages as Bd, setAllowOverlayMessages as Nd, setAutoFitEnabled as Fd, setCameraController as wd, setDestroyed as Ud, setDevEnvironment as Wd, setDisposable as Gd, setDontDestroy as Hd, setOrAddParamsToUrl as Xd, setParam as zd, setParamWithoutReload as Vd, setPeerOptions as _d, setResourceTrackingEnabled as jd, setState as Zd, setVisibleInCustomShadowRendering as Kd, setWorldEuler as Qd, setWorldPosition as $d, setWorldPositionXYZ as Yd, setWorldQuaternion as Jd, setWorldQuaternionXYZW as qd, setWorldRotation as ec, setWorldRotationXYZ as tc, setWorldScale as oc, showBalloonError as rc, showBalloonMessage as nc, showBalloonWarning as ic, showDebugConsole as ac, slerp as sc, syncDestroy as lc, syncField as dc, syncInstantiate as cc, textureToCanvas as mc, toSourceId as pc, tryCastBinary as gc, tryDetermineMimetypeFromBinary as Sc, tryDetermineMimetypeFromURL as uc, tryFindObject as Cc, tryGetGuid as yc, unregisterHotReloadType as Ec, unregisterPrefabProvider as Rc, unwatchWrite as hc, useForAutoFit as fc, validate as vc, watchWrite as Pc } from "./needle-engine.bundle-DuRtL0ah.js";
|
|
3
3
|
import { THREE as h } from "./three.js";
|
|
4
4
|
import { NEEDLE_progressive as Tc } from "./gltf-progressive-DUlhxdv4.js";
|
|
5
5
|
i();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{initEngine as y,GameObject as s,onClear as o,onDestroy as r,onInitialized as n,onAfterRender as i,onBeforeRender as l,onUpdate as d,onStart as c,TypeStore as m,loadAsset as p,NeedleXRSession as g,Context as u,VERSION as S,Component as E,Components as R}from"./needle-engine.bundle-6Gf-qAUW.min.js";import{$componentName as h,$physicsKey as f,ActionBuilder as v,ActionCollection as P,ActionModel as A,Addressables as T,AlignmentConstraint as M,AmbientMode as b,Animation as I,AnimationCurve as D,AnimationExtension as O,AnimationTrackHandler as x,AnimationUtils as k,Animator as L,AnimatorConditionMode as B,AnimatorController as F,AnimatorControllerBuilder as N,AnimatorControllerParameterType as W,AnimatorStateInfo as w,Antialiasing as G,Application as U,AssetDatabase as H,AssetReference as X,Attractor as z,AudioExtension as V,AudioListener as _,AudioSource as j,AudioTrackHandler as K,Avatar as Q,AvatarBlink_Simple as Z,AvatarEyeLook_Rotation as Y,AvatarLoader as J,AvatarMarker as $,AvatarModel as q,Avatar_Brain_LookAt as ee,Avatar_MouthShapes as ae,Avatar_MustacheShake as se,Avatar_POI as te,Axes as oe,AxesHelper as re,BUILD_TIME as ne,BaseUIComponent as ie,BasicIKConstraint as le,BehaviorExtension as de,BehaviorModel as ce,Component$1 as me,BlobStorage as pe,BloomEffect as ge,BoxCollider as ue,BoxGizmo as Se,BoxHelperComponent as Ce,Button as ye,ButtonsFactory as Ee,CallDirection as Re,CallInfo as he,Camera as fe,CameraTargetReachedEvent as ve,Canvas as Pe,CanvasGroup as Ae,CapsuleCollider as Te,ChangeMaterialOnClick as Me,ChangeTransformOnClick as be,CharacterController as Ie,CharacterControllerInput as De,ChromaticAberration as Oe,CircularBuffer as xe,ClearFlags as ke,ClickThrough as Le,ClipExtrapolation as Be,Collider as Fe,Collision as Ne,CollisionDetectionMode as We,ColorAdjustments as we,ColorBySpeedModule as Ge,ColorOverLifetimeModule as Ue,Component$1 as He,ComponentLifecycleEvents as Xe,ConnectionEvents as ze,ContactPoint as Ve,ContactShadows as _e,ContextArgs as je,ContextEvent as Ke,ContextRegistry as Qe,ControlTrackHandler as Ze,CursorFollow as Ye,CustomBranding as Je,CustomShader as $e,DefaultReflectionMode as qe,Deletable as ea,DeleteBox as aa,DepthOfField as sa,DeviceFlag as ta,DeviceUtilities as oa,DocumentExtension as ra,DragControls as na,DragMode as ia,DropListener as la,Duplicatable as da,EffectWrapper as ca,EmissionModule as ma,EmphasizeOnClick as pa,EngineLoadingView as ga,EnvironmentScene as ua,EventList as Sa,EventListEvent as Ca,EventSystem as ya,EventTrigger as Ea,FieldWithDefault as Ra,FileReference as ha,FileReferenceSerializer as fa,FileSpawnModel as va,File_Event as Pa,FixedJoint as Aa,Fog as Ta,FontStyle as Ma,FrameEvent as ba,GENERATOR as Ia,Gizmos as Da,GltfExport as Oa,GltfExportBox as xa,Gradient as ka,Graphic as La,GraphicRaycaster as Ba,Graphics as Fa,GridHelper as Na,GridLayoutGroup as Wa,GroundProjectedEnv as wa,GroupActionModel as Ga,HideFlags as Ua,HideOnStart as Ha,HingeJoint as Xa,HorizontalLayoutGroup as za,HorizontalWrapMode as Va,HostData as _a,HoverAnimation as ja,Image as Ka,ImageReference as Qa,ImageReferenceSerializer as Za,InheritVelocityModule as Ya,Input as Ja,InputEventQueue as $a,InputEvents as qa,InputField as es,InstanceHandle as as,InstancingHandler as ss,InstancingUtil as ts,InstantiateEvent as os,InstantiateIdProvider as rs,InstantiateOptions as ns,Interactable as is,InternalScreenshotUtils as ls,JoinedRoomResponse as ds,KeyEventArgs as cs,Keyframe as ms,LODGroup as ps,LODModel as gs,LeftRoomResponse as us,Light as Ss,LightData as Cs,LimitVelocityOverLifetimeModule as ys,LoadingElementOptions as Es,LogStats as Rs,LogType as hs,LookAt as fs,LookAtConstraint as vs,MainModule as Ps,MarkerTrackHandler as As,MarkerType as Ts,MaskableGraphic as Ms,MaterialPropertyBlock as bs,MaterialX as Is,Mathf as Ds,MeshCollider as Os,MeshRenderer as xs,MinMaxCurve as ks,MinMaxGradient as Ls,NEEDLE_ENGINE_FEATURE_FLAGS as Bs,MODULES as Fs,NEKeyboardEvent as Ns,NEPointerEvent as Ws,NeedleButtonElement as ws,ContextRegistry as Gs,NeedleEngineModelLoader as Us,NeedleEngineWebComponent as Hs,NeedleMenu as Xs,NeedlePatchesKey as zs,USDZExporter as Vs,NeedleXRController as _s,NeedleXRSync as js,NeedleXRUtils as Ks,NestedGltf as Qs,NetworkConnection as Zs,NetworkedStreamEvents as Ys,NetworkedStreams as Js,Networking as $s,NewInstanceModel as qs,NoiseModule as et,ObjectRaycaster as at,ObjectUtils as st,OffsetConstraint as tt,OneEuroFilter as ot,OneEuroFilterXYZ as rt,OpenURL as nt,OrbitControls as it,Outline as lt,OwnershipEvent as dt,OwnershipModel as ct,PUBLIC_KEY as mt,Padding as pt,ParticleBurst as gt,ParticleSubEmitter as ut,ParticleSystem as St,ParticleSystemBaseBehaviour as Ct,ParticleSystemRenderer as yt,ParticleSystemShapeType as Et,PeerHandle as Rt,PeerNetworking as ht,Physics as ft,PhysicsExtension as vt,PhysicsMaterialCombine as Pt,PixelationEffect as At,PlayAnimationOnClick as Tt,PlayAudioOnClick as Mt,PlayableDirector as bt,PlayerColor as It,PlayerState as Dt,PlayerStateEvent as Ot,PlayerSync as xt,PlayerView as kt,PlayerViewManager as Lt,PointerEventData as Bt,PointerType as Ft,PostProcessing as Nt,PostProcessingEffect as Wt,PostProcessingEffectOrder as wt,PostProcessingHandler as Gt,Volume as Ut,Prefabs as Ht,PreliminaryAction as Xt,PreliminaryTrigger as zt,PreviewHelper as Vt,PrimitiveType as _t,Progress as jt,PromiseAllWithErrors as Kt,PromiseErrorResult as Qt,RGBAColor as Zt,RapierPhysics as Yt,RawImage as Jt,RaycastOptions as $t,Rect as qt,RectTransform as eo,ReflectionProbe as ao,RegisteredAnimationInfo as so,RemoteSkybox as to,RenderTexture as oo,RenderTextureSerializer as ro,Renderer as no,RendererData as io,RendererLightmap as lo,Rigidbody as co,RigidbodyConstraints as mo,RoomEvents as po,RotationBySpeedModule as go,RotationOverLifetimeModule as uo,SceneLightSettings as So,SceneSwitcher as Co,ScreenCapture as yo,ScreenSpaceAmbientOcclusion as Eo,ScreenSpaceAmbientOcclusionN8 as Ro,ScrollFollow as ho,SeeThrough as fo,SendQueue as vo,SerializationContext as Po,SetActiveOnClick as Ao,ShadowCatcher as To,ShapeModule as Mo,ShapeOverlapResult as bo,SharpeningEffect as Io,SignalAsset as Do,SignalReceiver as Oo,SignalReceiverEvent as xo,SignalTrackHandler as ko,Size as Lo,SizeBySpeedModule as Bo,SizeOverLifetimeModule as Fo,SkinnedMeshRenderer as No,SmoothFollow as Wo,SpatialGrabRaycaster as wo,SpatialHtml as Go,SpatialTrigger as Uo,SpatialTriggerReceiver as Ho,SpectatorCamera as Xo,SphereCollider as zo,SphereIntersection as Vo,SplineContainer as _o,SplineData as jo,SplineUtils as Ko,SplineWalker as Qo,Sprite as Zo,SpriteData as Yo,SpriteRenderer as Jo,SpriteSheet as $o,StateMachineBehaviour as qo,StreamEndedEvent as er,StreamReceivedEvent as ar,SubEmitterSystem as sr,SyncedCamera as tr,SyncedRoom as or,SyncedTransform as rr,TapGestureTrigger as nr,TeleportTarget as ir,TestRunner as lr,TestSimulateUserData as dr,Text as cr,TextAnchor as mr,TextBuilder as pr,TextExtension as gr,TextureSheetAnimationModule as ur,TiltShiftEffect as Sr,Time as Cr,ToneMappingEffect as yr,TrackHandler as Er,TrackType as Rr,TrailModule as hr,TransformData as fr,TransformGizmo as vr,TriggerBuilder as Pr,TriggerModel as Ar,UIRaycastUtils as Tr,UIRootComponent as Mr,USDDocument as br,USDObject as Ir,USDWriter as Dr,USDZExporter$1 as Or,USDZText as xr,USDZUIExtension as kr,UriSerializer as Lr,UsageMarker as Br,UserJoinedOrLeftRoomModel as Fr,VariantAction as Nr,VelocityOverLifetimeModule as Wr,VerticalLayoutGroup as wr,VerticalWrapMode as Gr,VideoPlayer as Ur,ViewBox as Hr,ViewDevice as Xr,Vignette as zr,VisibilityAction as Vr,Voip as _r,Volume as jr,VolumeParameter as Kr,VolumeProfile as Qr,WaitForFrames as Zr,WaitForPromise as Yr,WaitForSeconds as Jr,Watch as $r,WebARCameraBackground as qr,WebARSessionRoot as en,WebXR as an,WebXRButtonFactory as sn,WebXRImageTracking as tn,WebXRImageTrackingModel as on,WebXRPlaneTracking as rn,WebXRTrackedImage as nn,XRControllerFollow as ln,XRControllerModel as dn,XRControllerMovement as cn,XRFlag as mn,XRRig as pn,XRState as gn,XRStateFlag as un,__Ignore as Sn,__internalNotifyObjectDestroyed as Cn,activeInHierarchyFieldName as yn,addAttributeChangeCallback as En,addComponent as Rn,addCustomExtensionPlugin as hn,addNewComponent as fn,addPatch as vn,apply as Pn,applyHMRChanges as An,applyPrototypeExtensions as Tn,beginListenDestroy as Mn,beginListenInstantiate as bn,binaryIdentifierCasts as In,build_scene_functions as Dn,builtinComponentKeyName as On,calculateProgress01 as xn,clearMessages as kn,clearMessages as Ln,colorSerializer as Bn,compareAssociation as Fn,componentSerializer as Nn,copyTexture as Wn,createMotion as wn,debugNet as Gn,debugOwner as Un,decompressGpuTexture as Hn,deepClone as Xn,delay as zn,delayForFrames as Vn,deserializeObject as _n,destroy as jn,destroyComponentInstance as Kn,determineMimeTypeFromExtension as Qn,disposeObjectResources as Zn,disposeStream as Yn,editorGuidKeyName as Jn,enableSpatialConsole as $n,euler as qn,eventListSerializer as ei,exportAsGLTF as ai,findByGuid as si,findObjectOfType as ti,findObjectsOfType as oi,findResourceUsers as ri,fitCamera as ni,fitObjectIntoVolume as ii,foreachComponent as li,foreachComponentEnumerator as di,forward as ci,generateQRCode as mi,generateSeed as pi,getBoundingBox as gi,getCameraController as ui,getComponent as Si,getComponentInChildren as Ci,getComponentInParent as yi,getComponents as Ei,getComponentsInChildren as Ri,getComponentsInParent as hi,getFormattedDate as fi,getIconElement as vi,getIconTexture as Pi,getLoader as Ai,getOrAddComponent as Ti,getParam as Mi,getParentHierarchyPath as bi,getPath as Ii,getPeerOptions as Di,getPeerjsInstance as Oi,getResourceUserCount as xi,getSceneData as ki,getTempColor as Li,getTempQuaternion as Bi,getTempVector as Fi,getUrlParams as Ni,getVisibleInCustomShadowRendering as Wi,getWorldDirection as wi,getWorldEuler as Gi,getWorldPosition as Ui,getWorldQuaternion as Hi,getWorldRotation as Xi,getWorldScale as zi,hasCommercialLicense as Vi,hasIndieLicense as _i,hasPointerEventComponent as ji,hasProLicense as Ki,hideDebugConsole as Qi,imageToCanvas as Zi,initPhysics as Yi,instantiate as Ji,invokeLoadedImportPluginHooks as $i,invokeXRSessionEnd as qi,invokeXRSessionStart as el,isActiveInHierarchy as al,isActiveSelf as sl,isAndroidDevice as tl,isAnimationAction as ol,isComponent as rl,isDebugMode as nl,isDesktop as il,isDestroyed as ll,isDevEnvironment as dl,isDisposed as cl,isExporting as ml,isGLTFModel as pl,isHostedOnGlitch as gl,isHotReloadEnabled as ul,isHotReloading as Sl,isIPad as Cl,isIconElement as yl,isLocalNetwork as El,isMacOS as Rl,isMobileDevice as hl,isMozillaXR as fl,isQuest as vl,isResourceTrackingEnabled as Pl,isSafari as Al,isUsingInstancing as Tl,isiOS as Ml,isiPad as bl,loadPMREM as Il,loadSync as Dl,logHierarchy as Ol,lookAtInverse as xl,lookAtObject as kl,lookAtScreenPoint as Ll,makeId as Bl,makeIdFromRandomWords as Fl,makeNameSafe as Nl,markAsInstancedRendered as Wl,microphonePermissionsGranted as wl,nameof as Gl,nameofFactory as Ul,needle as Hl,objectSerializer as Xl,offBeforeXRSession as zl,offXRSessionEnd as Vl,offXRSessionStart as _l,onBeforeXRSession as jl,onSyncDestroy as Kl,onSyncInstantiate as Ql,onXRSessionEnd as Zl,onXRSessionStart as Yl,parseSync as Jl,placeOnSurface as $l,postprocessFBXMaterials as ql,prefix as ed,pushState as ad,randomNumber as sd,registerBinaryType as td,registerComponent as od,registerComponentExtension as rd,registerCustomEffectType as nd,registerExportExtensions as id,registerExtensions as ld,registerHotReloadType as dd,registerLoader as cd,registerPrefabProvider as md,registerPrototypeExtensions as pd,registerType as gd,relativePathPrefix as ud,removeAttributeChangeCallback as Sd,removeComponent as Cd,removeCustomImportExtensionType as yd,removePatch as Ed,resolveUrl as Rd,sanitizeString as hd,saveImage as fd,screenshot as vd,screenshot2 as Pd,sendDestroyed as Ad,serializable as Td,serializeObject as Md,serializeable as bd,setActive as Id,setAllowBalloonMessages as Dd,setAllowOverlayMessages as Od,setAutoFitEnabled as xd,setCameraController as kd,setDestroyed as Ld,setDevEnvironment as Bd,setDisposable as Fd,setDontDestroy as Nd,setOrAddParamsToUrl as Wd,setParam as wd,setParamWithoutReload as Gd,setPeerOptions as Ud,setResourceTrackingEnabled as Hd,setState as Xd,setVisibleInCustomShadowRendering as zd,setWorldEuler as Vd,setWorldPosition as _d,setWorldPositionXYZ as jd,setWorldQuaternion as Kd,setWorldQuaternionXYZW as Qd,setWorldRotation as Zd,setWorldRotationXYZ as Yd,setWorldScale as Jd,showBalloonError as $d,showBalloonMessage as qd,showBalloonWarning as ec,showDebugConsole as ac,slerp as sc,syncDestroy as tc,syncField as oc,syncInstantiate as rc,textureToCanvas as nc,toSourceId as ic,tryCastBinary as lc,tryDetermineMimetypeFromBinary as dc,tryDetermineMimetypeFromURL as cc,tryFindObject as mc,tryGetGuid as pc,unregisterHotReloadType as gc,unregisterPrefabProvider as uc,unwatchWrite as Sc,useForAutoFit as Cc,validate as yc,watchWrite as Ec}from"./needle-engine.bundle-6Gf-qAUW.min.js";import{THREE as Rc}from"./three.min.js";import{NEEDLE_progressive as hc}from"./gltf-progressive-CN_mbb66.min.js";y();const a={VERSION:S,Context:u,NeedleXRSession:g,assets:{loadFromURL:p},types:m,onStart:c,onUpdate:d,onBeforeRender:l,onAfterRender:i,onInitializedContext:n,onDestroyContext:r,onClearContext:o};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function C(e){for(const t in e)a[t]=e[t]}C(E),C(R);for(const e of Object.getOwnPropertyNames(s))switch(e){case"prototype":case"constructor":case"length":case"name":continue;default:a[e]=s[e];break}if(!globalThis.Needle)globalThis.Needle=a;else for(const e in a)globalThis.Needle[e]=a[e];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=Rc;export{h as $componentName,f as $physicsKey,v as ActionBuilder,P as ActionCollection,A as ActionModel,T as Addressables,M as AlignmentConstraint,b as AmbientMode,I as Animation,D as AnimationCurve,O as AnimationExtension,x as AnimationTrackHandler,k as AnimationUtils,L as Animator,B as AnimatorConditionMode,F as AnimatorController,N as AnimatorControllerBuilder,W as AnimatorControllerParameterType,w as AnimatorStateInfo,G as Antialiasing,U as Application,H as AssetDatabase,X as AssetReference,z as Attractor,V as AudioExtension,_ as AudioListener,j as AudioSource,K as AudioTrackHandler,Q as Avatar,Z as AvatarBlink_Simple,Y as AvatarEyeLook_Rotation,J as AvatarLoader,$ as AvatarMarker,q as AvatarModel,ee as Avatar_Brain_LookAt,ae as Avatar_MouthShapes,se as Avatar_MustacheShake,te as Avatar_POI,oe as Axes,re as AxesHelper,ne as BUILD_TIME,ie as BaseUIComponent,le as BasicIKConstraint,de as BehaviorExtension,ce as BehaviorModel,me as Behaviour,pe as BlobStorage,ge as BloomEffect,ue as BoxCollider,Se as BoxGizmo,Ce as BoxHelperComponent,ye as Button,Ee as ButtonsFactory,Re as CallDirection,he as CallInfo,fe as Camera,ve as CameraTargetReachedEvent,Pe as Canvas,Ae as CanvasGroup,Te as CapsuleCollider,Me as ChangeMaterialOnClick,be as ChangeTransformOnClick,Ie as CharacterController,De as CharacterControllerInput,Oe as ChromaticAberration,xe as CircularBuffer,ke as ClearFlags,Le as ClickThrough,Be as ClipExtrapolation,Fe as Collider,Ne as Collision,We as CollisionDetectionMode,we as ColorAdjustments,Ge as ColorBySpeedModule,Ue as ColorOverLifetimeModule,He as Component,Xe as ComponentLifecycleEvents,ze as ConnectionEvents,Ve as ContactPoint,_e as ContactShadows,u as Context,je as ContextArgs,Ke as ContextEvent,Qe as ContextRegistry,Ze as ControlTrackHandler,Ye as CursorFollow,Je as CustomBranding,$e as CustomShader,qe as DefaultReflectionMode,ea as Deletable,aa as DeleteBox,sa as DepthOfField,ta as DeviceFlag,oa as DeviceUtilities,ra as DocumentExtension,na as DragControls,ia as DragMode,la as DropListener,da as Duplicatable,ca as EffectWrapper,ma as EmissionModule,pa as EmphasizeOnClick,ga as EngineLoadingView,ua as EnvironmentScene,Sa as EventList,Ca as EventListEvent,ya as EventSystem,Ea as EventTrigger,Ra as FieldWithDefault,ha as FileReference,fa as FileReferenceSerializer,va as FileSpawnModel,Pa as File_Event,Aa as FixedJoint,Ta as Fog,Ma as FontStyle,ba as FrameEvent,Ia as GENERATOR,s as GameObject,Da as Gizmos,Oa as GltfExport,xa as GltfExportBox,ka as Gradient,La as Graphic,Ba as GraphicRaycaster,Fa as Graphics,Na as GridHelper,Wa as GridLayoutGroup,wa as GroundProjectedEnv,Ga as GroupActionModel,Ua as HideFlags,Ha as HideOnStart,Xa as HingeJoint,za as HorizontalLayoutGroup,Va as HorizontalWrapMode,_a as HostData,ja as HoverAnimation,Ka as Image,Qa as ImageReference,Za as ImageReferenceSerializer,Ya as InheritVelocityModule,Ja as Input,$a as InputEventQueue,qa as InputEvents,es as InputField,as as InstanceHandle,ss as InstancingHandler,ts as InstancingUtil,os as InstantiateEvent,rs as InstantiateIdProvider,ns as InstantiateOptions,is as Interactable,ls as InternalScreenshotUtils,ds as JoinedRoomResponse,cs as KeyEventArgs,ms as Keyframe,ps as LODGroup,gs as LODModel,us as LeftRoomResponse,Ss as Light,Cs as LightData,ys as LimitVelocityOverLifetimeModule,Es as LoadingElementOptions,Rs as LogStats,hs as LogType,fs as LookAt,vs as LookAtConstraint,Ps as MainModule,As as MarkerTrackHandler,Ts as MarkerType,Ms as MaskableGraphic,bs as MaterialPropertyBlock,Is as MaterialX,Ds as Mathf,Os as MeshCollider,xs as MeshRenderer,ks as MinMaxCurve,Ls as MinMaxGradient,Bs as NEEDLE_ENGINE_FEATURE_FLAGS,Fs as NEEDLE_ENGINE_MODULES,hc as NEEDLE_progressive,Ns as NEKeyboardEvent,Ws as NEPointerEvent,ws as NeedleButtonElement,Gs as NeedleEngine,Us as NeedleEngineModelLoader,Hs as NeedleEngineWebComponent,Xs as NeedleMenu,zs as NeedlePatchesKey,Vs as NeedleUSDZExporter,_s as NeedleXRController,g as NeedleXRSession,js as NeedleXRSync,Ks as NeedleXRUtils,Qs as NestedGltf,Zs as NetworkConnection,Ys as NetworkedStreamEvents,Js as NetworkedStreams,$s as Networking,qs as NewInstanceModel,et as NoiseModule,at as ObjectRaycaster,st as ObjectUtils,tt as OffsetConstraint,ot as OneEuroFilter,rt as OneEuroFilterXYZ,nt as OpenURL,it as OrbitControls,lt as Outline,dt as OwnershipEvent,ct as OwnershipModel,mt as PUBLIC_KEY,pt as Padding,gt as ParticleBurst,ut as ParticleSubEmitter,St as ParticleSystem,Ct as ParticleSystemBaseBehaviour,yt as ParticleSystemRenderer,Et as ParticleSystemShapeType,Rt as PeerHandle,ht as PeerNetworking,ft as Physics,vt as PhysicsExtension,Pt as PhysicsMaterialCombine,At as PixelationEffect,Tt as PlayAnimationOnClick,Mt as PlayAudioOnClick,bt as PlayableDirector,It as PlayerColor,Dt as PlayerState,Ot as PlayerStateEvent,xt as PlayerSync,kt as PlayerView,Lt as PlayerViewManager,Bt as PointerEventData,Ft as PointerType,Nt as PostProcessing,Wt as PostProcessingEffect,wt as PostProcessingEffectOrder,Gt as PostProcessingHandler,Ut as PostProcessingManager,Ht as Prefabs,Xt as PreliminaryAction,zt as PreliminaryTrigger,Vt as PreviewHelper,_t as PrimitiveType,jt as Progress,Kt as PromiseAllWithErrors,Qt as PromiseErrorResult,Zt as RGBAColor,Yt as RapierPhysics,Jt as RawImage,$t as RaycastOptions,qt as Rect,eo as RectTransform,ao as ReflectionProbe,so as RegisteredAnimationInfo,to as RemoteSkybox,oo as RenderTexture,ro as RenderTextureSerializer,no as Renderer,io as RendererData,lo as RendererLightmap,co as Rigidbody,mo as RigidbodyConstraints,po as RoomEvents,go as RotationBySpeedModule,uo as RotationOverLifetimeModule,So as SceneLightSettings,Co as SceneSwitcher,yo as ScreenCapture,Eo as ScreenSpaceAmbientOcclusion,Ro as ScreenSpaceAmbientOcclusionN8,ho as ScrollFollow,fo as SeeThrough,vo as SendQueue,Po as SerializationContext,Ao as SetActiveOnClick,To as ShadowCatcher,Mo as ShapeModule,bo as ShapeOverlapResult,Io as SharpeningEffect,Do as SignalAsset,Oo as SignalReceiver,xo as SignalReceiverEvent,ko as SignalTrackHandler,Lo as Size,Bo as SizeBySpeedModule,Fo as SizeOverLifetimeModule,No as SkinnedMeshRenderer,Wo as SmoothFollow,wo as SpatialGrabRaycaster,Go as SpatialHtml,Uo as SpatialTrigger,Ho as SpatialTriggerReceiver,Xo as SpectatorCamera,zo as SphereCollider,Vo as SphereIntersection,_o as SplineContainer,jo as SplineData,Ko as SplineUtils,Qo as SplineWalker,Zo as Sprite,Yo as SpriteData,Jo as SpriteRenderer,$o as SpriteSheet,qo as StateMachineBehaviour,er as StreamEndedEvent,ar as StreamReceivedEvent,sr as SubEmitterSystem,tr as SyncedCamera,or as SyncedRoom,rr as SyncedTransform,nr as TapGestureTrigger,ir as TeleportTarget,lr as TestRunner,dr as TestSimulateUserData,cr as Text,mr as TextAnchor,pr as TextBuilder,gr as TextExtension,ur as TextureSheetAnimationModule,Sr as TiltShiftEffect,Cr as Time,yr as ToneMappingEffect,Er as TrackHandler,Rr as TrackType,hr as TrailModule,fr as TransformData,vr as TransformGizmo,Pr as TriggerBuilder,Ar as TriggerModel,m as TypeStore,Tr as UIRaycastUtils,Mr as UIRootComponent,br as USDDocument,Ir as USDObject,Dr as USDWriter,Or as USDZExporter,xr as USDZText,kr as USDZUIExtension,Lr as UriSerializer,Br as UsageMarker,Fr as UserJoinedOrLeftRoomModel,S as VERSION,Nr as VariantAction,Wr as VelocityOverLifetimeModule,wr as VerticalLayoutGroup,Gr as VerticalWrapMode,Ur as VideoPlayer,Hr as ViewBox,Xr as ViewDevice,zr as Vignette,Vr as VisibilityAction,_r as Voip,jr as Volume,Kr as VolumeParameter,Qr as VolumeProfile,Zr as WaitForFrames,Yr as WaitForPromise,Jr as WaitForSeconds,$r as Watch,qr as WebARCameraBackground,en as WebARSessionRoot,an as WebXR,sn as WebXRButtonFactory,tn as WebXRImageTracking,on as WebXRImageTrackingModel,rn as WebXRPlaneTracking,nn as WebXRTrackedImage,ln as XRControllerFollow,dn as XRControllerModel,cn as XRControllerMovement,mn as XRFlag,pn as XRRig,gn as XRState,un as XRStateFlag,Sn as __Ignore,Cn as __internalNotifyObjectDestroyed,yn as activeInHierarchyFieldName,En as addAttributeChangeCallback,Rn as addComponent,hn as addCustomExtensionPlugin,fn as addNewComponent,vn as addPatch,Pn as apply,An as applyHMRChanges,Tn as applyPrototypeExtensions,Mn as beginListenDestroy,bn as beginListenInstantiate,In as binaryIdentifierCasts,Dn as build_scene_functions,On as builtinComponentKeyName,xn as calculateProgress01,kn as clearBalloonMessages,Ln as clearOverlayMessages,Bn as colorSerializer,Fn as compareAssociation,Nn as componentSerializer,Wn as copyTexture,wn as createMotion,Gn as debugNet,Un as debugOwner,Hn as decompressGpuTexture,Xn as deepClone,zn as delay,Vn as delayForFrames,_n as deserializeObject,jn as destroy,Kn as destroyComponentInstance,Qn as determineMimeTypeFromExtension,Zn as disposeObjectResources,Yn as disposeStream,Jn as editorGuidKeyName,$n as enableSpatialConsole,qn as euler,ei as eventListSerializer,ai as exportAsGLTF,si as findByGuid,ti as findObjectOfType,oi as findObjectsOfType,ri as findResourceUsers,ni as fitCamera,ii as fitObjectIntoVolume,li as foreachComponent,di as foreachComponentEnumerator,ci as forward,mi as generateQRCode,pi as generateSeed,gi as getBoundingBox,ui as getCameraController,Si as getComponent,Ci as getComponentInChildren,yi as getComponentInParent,Ei as getComponents,Ri as getComponentsInChildren,hi as getComponentsInParent,fi as getFormattedDate,vi as getIconElement,Pi as getIconTexture,Ai as getLoader,Ti as getOrAddComponent,Mi as getParam,bi as getParentHierarchyPath,Ii as getPath,Di as getPeerOptions,Oi as getPeerjsInstance,xi as getResourceUserCount,ki as getSceneData,Li as getTempColor,Bi as getTempQuaternion,Fi as getTempVector,Ni as getUrlParams,Wi as getVisibleInCustomShadowRendering,wi as getWorldDirection,Gi as getWorldEuler,Ui as getWorldPosition,Hi as getWorldQuaternion,Xi as getWorldRotation,zi as getWorldScale,Vi as hasCommercialLicense,_i as hasIndieLicense,ji as hasPointerEventComponent,Ki as hasProLicense,Qi as hideDebugConsole,Zi as imageToCanvas,Yi as initPhysics,Ji as instantiate,$i as invokeLoadedImportPluginHooks,qi as invokeXRSessionEnd,el as invokeXRSessionStart,al as isActiveInHierarchy,sl as isActiveSelf,tl as isAndroidDevice,ol as isAnimationAction,rl as isComponent,nl as isDebugMode,il as isDesktop,ll as isDestroyed,dl as isDevEnvironment,cl as isDisposed,ml as isExporting,pl as isGLTFModel,gl as isHostedOnGlitch,ul as isHotReloadEnabled,Sl as isHotReloading,Cl as isIPad,yl as isIconElement,El as isLocalNetwork,Rl as isMacOS,hl as isMobileDevice,fl as isMozillaXR,vl as isQuest,Pl as isResourceTrackingEnabled,Al as isSafari,Tl as isUsingInstancing,Ml as isiOS,bl as isiPad,p as loadAsset,Il as loadPMREM,Dl as loadSync,Ol as logHierarchy,xl as lookAtInverse,kl as lookAtObject,Ll as lookAtScreenPoint,Bl as makeId,Fl as makeIdFromRandomWords,Nl as makeNameSafeForUSD,Wl as markAsInstancedRendered,wl as microphonePermissionsGranted,Gl as nameof,Ul as nameofFactory,Hl as needle,Xl as objectSerializer,zl as offBeforeXRSession,Vl as offXRSessionEnd,_l as offXRSessionStart,i as onAfterRender,l as onBeforeRender,jl as onBeforeXRSession,o as onClear,r as onDestroy,n as onInitialized,c as onStart,Kl as onSyncDestroy,Ql as onSyncInstantiate,d as onUpdate,Zl as onXRSessionEnd,Yl as onXRSessionStart,Jl as parseSync,$l as placeOnSurface,ql as postprocessFBXMaterials,ed as prefix,ad as pushState,sd as randomNumber,td as registerBinaryType,od as registerComponent,rd as registerComponentExtension,nd as registerCustomEffectType,id as registerExportExtensions,ld as registerExtensions,dd as registerHotReloadType,cd as registerLoader,md as registerPrefabProvider,pd as registerPrototypeExtensions,gd as registerType,ud as relativePathPrefix,Sd as removeAttributeChangeCallback,Cd as removeComponent,yd as removeCustomImportExtensionType,Ed as removePatch,Rd as resolveUrl,hd as sanitizeString,fd as saveImage,vd as screenshot,Pd as screenshot2,Ad as sendDestroyed,Td as serializable,Md as serializeObject,bd as serializeable,Id as setActive,Dd as setAllowBalloonMessages,Od as setAllowOverlayMessages,xd as setAutoFitEnabled,kd as setCameraController,Ld as setDestroyed,Bd as setDevEnvironment,Fd as setDisposable,Nd as setDontDestroy,Wd as setOrAddParamsToUrl,wd as setParam,Gd as setParamWithoutReload,Ud as setPeerOptions,Hd as setResourceTrackingEnabled,Xd as setState,zd as setVisibleInCustomShadowRendering,Vd as setWorldEuler,_d as setWorldPosition,jd as setWorldPositionXYZ,Kd as setWorldQuaternion,Qd as setWorldQuaternionXYZW,Zd as setWorldRotation,Yd as setWorldRotationXYZ,Jd as setWorldScale,$d as showBalloonError,qd as showBalloonMessage,ec as showBalloonWarning,ac as showDebugConsole,sc as slerp,tc as syncDestroy,oc as syncField,rc as syncInstantiate,nc as textureToCanvas,ic as toSourceId,lc as tryCastBinary,dc as tryDetermineMimetypeFromBinary,cc as tryDetermineMimetypeFromURL,mc as tryFindObject,pc as tryGetGuid,gc as unregisterHotReloadType,uc as unregisterPrefabProvider,Sc as unwatchWrite,Cc as useForAutoFit,yc as validate,Ec as watchWrite};
|
|
1
|
+
import{initEngine as y,GameObject as s,onClear as o,onDestroy as r,onInitialized as n,onAfterRender as i,onBeforeRender as l,onUpdate as d,onStart as c,TypeStore as m,loadAsset as p,NeedleXRSession as g,Context as u,VERSION as S,Component as E,Components as R}from"./needle-engine.bundle-gjRMqYLb.min.js";import{$componentName as h,$physicsKey as f,ActionBuilder as v,ActionCollection as P,ActionModel as A,Addressables as T,AlignmentConstraint as M,AmbientMode as b,Animation as I,AnimationCurve as D,AnimationExtension as O,AnimationTrackHandler as x,AnimationUtils as k,Animator as L,AnimatorConditionMode as B,AnimatorController as F,AnimatorControllerBuilder as N,AnimatorControllerParameterType as W,AnimatorStateInfo as w,Antialiasing as G,Application as U,AssetDatabase as H,AssetReference as X,Attractor as z,AudioExtension as V,AudioListener as _,AudioSource as j,AudioTrackHandler as K,Avatar as Q,AvatarBlink_Simple as Z,AvatarEyeLook_Rotation as Y,AvatarLoader as J,AvatarMarker as $,AvatarModel as q,Avatar_Brain_LookAt as ee,Avatar_MouthShapes as ae,Avatar_MustacheShake as se,Avatar_POI as te,Axes as oe,AxesHelper as re,BUILD_TIME as ne,BaseUIComponent as ie,BasicIKConstraint as le,BehaviorExtension as de,BehaviorModel as ce,Component$1 as me,BlobStorage as pe,BloomEffect as ge,BoxCollider as ue,BoxGizmo as Se,BoxHelperComponent as Ce,Button as ye,ButtonsFactory as Ee,CallDirection as Re,CallInfo as he,Camera as fe,CameraTargetReachedEvent as ve,Canvas as Pe,CanvasGroup as Ae,CapsuleCollider as Te,ChangeMaterialOnClick as Me,ChangeTransformOnClick as be,CharacterController as Ie,CharacterControllerInput as De,ChromaticAberration as Oe,CircularBuffer as xe,ClearFlags as ke,ClickThrough as Le,ClipExtrapolation as Be,Collider as Fe,Collision as Ne,CollisionDetectionMode as We,ColorAdjustments as we,ColorBySpeedModule as Ge,ColorOverLifetimeModule as Ue,Component$1 as He,ComponentLifecycleEvents as Xe,ConnectionEvents as ze,ContactPoint as Ve,ContactShadows as _e,ContextArgs as je,ContextEvent as Ke,ContextRegistry as Qe,ControlTrackHandler as Ze,CursorFollow as Ye,CustomBranding as Je,CustomShader as $e,DefaultReflectionMode as qe,Deletable as ea,DeleteBox as aa,DepthOfField as sa,DeviceFlag as ta,DeviceUtilities as oa,DocumentExtension as ra,DragControls as na,DragMode as ia,DropListener as la,Duplicatable as da,EffectWrapper as ca,EmissionModule as ma,EmphasizeOnClick as pa,EngineLoadingView as ga,EnvironmentScene as ua,EventList as Sa,EventListEvent as Ca,EventSystem as ya,EventTrigger as Ea,FieldWithDefault as Ra,FileReference as ha,FileReferenceSerializer as fa,FileSpawnModel as va,File_Event as Pa,FixedJoint as Aa,Fog as Ta,FontStyle as Ma,FrameEvent as ba,GENERATOR as Ia,Gizmos as Da,GltfExport as Oa,GltfExportBox as xa,Gradient as ka,Graphic as La,GraphicRaycaster as Ba,Graphics as Fa,GridHelper as Na,GridLayoutGroup as Wa,GroundProjectedEnv as wa,GroupActionModel as Ga,HideFlags as Ua,HideOnStart as Ha,HingeJoint as Xa,HorizontalLayoutGroup as za,HorizontalWrapMode as Va,HostData as _a,HoverAnimation as ja,Image as Ka,ImageReference as Qa,ImageReferenceSerializer as Za,InheritVelocityModule as Ya,Input as Ja,InputEventQueue as $a,InputEvents as qa,InputField as es,InstanceHandle as as,InstancingHandler as ss,InstancingUtil as ts,InstantiateEvent as os,InstantiateIdProvider as rs,InstantiateOptions as ns,Interactable as is,InternalScreenshotUtils as ls,JoinedRoomResponse as ds,KeyEventArgs as cs,Keyframe as ms,LODGroup as ps,LODModel as gs,LeftRoomResponse as us,Light as Ss,LightData as Cs,LimitVelocityOverLifetimeModule as ys,LoadingElementOptions as Es,LogStats as Rs,LogType as hs,LookAt as fs,LookAtConstraint as vs,MainModule as Ps,MarkerTrackHandler as As,MarkerType as Ts,MaskableGraphic as Ms,MaterialPropertyBlock as bs,MaterialX as Is,Mathf as Ds,MeshCollider as Os,MeshRenderer as xs,MinMaxCurve as ks,MinMaxGradient as Ls,NEEDLE_ENGINE_FEATURE_FLAGS as Bs,MODULES as Fs,NEKeyboardEvent as Ns,NEPointerEvent as Ws,NeedleButtonElement as ws,ContextRegistry as Gs,NeedleEngineModelLoader as Us,NeedleEngineWebComponent as Hs,NeedleMenu as Xs,NeedlePatchesKey as zs,USDZExporter as Vs,NeedleXRController as _s,NeedleXRSync as js,NeedleXRUtils as Ks,NestedGltf as Qs,NetworkConnection as Zs,NetworkedStreamEvents as Ys,NetworkedStreams as Js,Networking as $s,NewInstanceModel as qs,NoiseModule as et,ObjectRaycaster as at,ObjectUtils as st,OffsetConstraint as tt,OneEuroFilter as ot,OneEuroFilterXYZ as rt,OpenURL as nt,OrbitControls as it,Outline as lt,OwnershipEvent as dt,OwnershipModel as ct,PUBLIC_KEY as mt,Padding as pt,ParticleBurst as gt,ParticleSubEmitter as ut,ParticleSystem as St,ParticleSystemBaseBehaviour as Ct,ParticleSystemRenderer as yt,ParticleSystemShapeType as Et,PeerHandle as Rt,PeerNetworking as ht,Physics as ft,PhysicsExtension as vt,PhysicsMaterialCombine as Pt,PixelationEffect as At,PlayAnimationOnClick as Tt,PlayAudioOnClick as Mt,PlayableDirector as bt,PlayerColor as It,PlayerState as Dt,PlayerStateEvent as Ot,PlayerSync as xt,PlayerView as kt,PlayerViewManager as Lt,PointerEventData as Bt,PointerType as Ft,PostProcessing as Nt,PostProcessingEffect as Wt,PostProcessingEffectOrder as wt,PostProcessingHandler as Gt,Volume as Ut,Prefabs as Ht,PreliminaryAction as Xt,PreliminaryTrigger as zt,PreviewHelper as Vt,PrimitiveType as _t,Progress as jt,PromiseAllWithErrors as Kt,PromiseErrorResult as Qt,RGBAColor as Zt,RapierPhysics as Yt,RawImage as Jt,RaycastOptions as $t,Rect as qt,RectTransform as eo,ReflectionProbe as ao,RegisteredAnimationInfo as so,RemoteSkybox as to,RenderTexture as oo,RenderTextureSerializer as ro,Renderer as no,RendererData as io,RendererLightmap as lo,Rigidbody as co,RigidbodyConstraints as mo,RoomEvents as po,RotationBySpeedModule as go,RotationOverLifetimeModule as uo,SceneLightSettings as So,SceneSwitcher as Co,ScreenCapture as yo,ScreenSpaceAmbientOcclusion as Eo,ScreenSpaceAmbientOcclusionN8 as Ro,ScrollFollow as ho,SeeThrough as fo,SendQueue as vo,SerializationContext as Po,SetActiveOnClick as Ao,ShadowCatcher as To,ShapeModule as Mo,ShapeOverlapResult as bo,SharpeningEffect as Io,SignalAsset as Do,SignalReceiver as Oo,SignalReceiverEvent as xo,SignalTrackHandler as ko,Size as Lo,SizeBySpeedModule as Bo,SizeOverLifetimeModule as Fo,SkinnedMeshRenderer as No,SmoothFollow as Wo,SpatialGrabRaycaster as wo,SpatialHtml as Go,SpatialTrigger as Uo,SpatialTriggerReceiver as Ho,SpectatorCamera as Xo,SphereCollider as zo,SphereIntersection as Vo,SplineContainer as _o,SplineData as jo,SplineUtils as Ko,SplineWalker as Qo,Sprite as Zo,SpriteData as Yo,SpriteRenderer as Jo,SpriteSheet as $o,StateMachineBehaviour as qo,StreamEndedEvent as er,StreamReceivedEvent as ar,SubEmitterSystem as sr,SyncedCamera as tr,SyncedRoom as or,SyncedTransform as rr,TapGestureTrigger as nr,TeleportTarget as ir,TestRunner as lr,TestSimulateUserData as dr,Text as cr,TextAnchor as mr,TextBuilder as pr,TextExtension as gr,TextureSheetAnimationModule as ur,TiltShiftEffect as Sr,Time as Cr,ToneMappingEffect as yr,TrackHandler as Er,TrackType as Rr,TrailModule as hr,TransformData as fr,TransformGizmo as vr,TriggerBuilder as Pr,TriggerModel as Ar,UIRaycastUtils as Tr,UIRootComponent as Mr,USDDocument as br,USDObject as Ir,USDWriter as Dr,USDZExporter$1 as Or,USDZText as xr,USDZUIExtension as kr,UriSerializer as Lr,UsageMarker as Br,UserJoinedOrLeftRoomModel as Fr,VariantAction as Nr,VelocityOverLifetimeModule as Wr,VerticalLayoutGroup as wr,VerticalWrapMode as Gr,VideoPlayer as Ur,ViewBox as Hr,ViewDevice as Xr,Vignette as zr,VisibilityAction as Vr,Voip as _r,Volume as jr,VolumeParameter as Kr,VolumeProfile as Qr,WaitForFrames as Zr,WaitForPromise as Yr,WaitForSeconds as Jr,Watch as $r,WebARCameraBackground as qr,WebARSessionRoot as en,WebXR as an,WebXRButtonFactory as sn,WebXRImageTracking as tn,WebXRImageTrackingModel as on,WebXRPlaneTracking as rn,WebXRTrackedImage as nn,XRControllerFollow as ln,XRControllerModel as dn,XRControllerMovement as cn,XRFlag as mn,XRRig as pn,XRState as gn,XRStateFlag as un,__Ignore as Sn,__internalNotifyObjectDestroyed as Cn,activeInHierarchyFieldName as yn,addAttributeChangeCallback as En,addComponent as Rn,addCustomExtensionPlugin as hn,addNewComponent as fn,addPatch as vn,apply as Pn,applyHMRChanges as An,applyPrototypeExtensions as Tn,beginListenDestroy as Mn,beginListenInstantiate as bn,binaryIdentifierCasts as In,build_scene_functions as Dn,builtinComponentKeyName as On,calculateProgress01 as xn,clearMessages as kn,clearMessages as Ln,colorSerializer as Bn,compareAssociation as Fn,componentSerializer as Nn,copyTexture as Wn,createMotion as wn,debugNet as Gn,debugOwner as Un,decompressGpuTexture as Hn,deepClone as Xn,delay as zn,delayForFrames as Vn,deserializeObject as _n,destroy as jn,destroyComponentInstance as Kn,determineMimeTypeFromExtension as Qn,disposeObjectResources as Zn,disposeStream as Yn,editorGuidKeyName as Jn,enableSpatialConsole as $n,euler as qn,eventListSerializer as ei,exportAsGLTF as ai,findByGuid as si,findObjectOfType as ti,findObjectsOfType as oi,findResourceUsers as ri,fitCamera as ni,fitObjectIntoVolume as ii,foreachComponent as li,foreachComponentEnumerator as di,forward as ci,generateQRCode as mi,generateSeed as pi,getBoundingBox as gi,getCameraController as ui,getComponent as Si,getComponentInChildren as Ci,getComponentInParent as yi,getComponents as Ei,getComponentsInChildren as Ri,getComponentsInParent as hi,getFormattedDate as fi,getIconElement as vi,getIconTexture as Pi,getLoader as Ai,getOrAddComponent as Ti,getParam as Mi,getParentHierarchyPath as bi,getPath as Ii,getPeerOptions as Di,getPeerjsInstance as Oi,getResourceUserCount as xi,getSceneData as ki,getTempColor as Li,getTempQuaternion as Bi,getTempVector as Fi,getUrlParams as Ni,getVisibleInCustomShadowRendering as Wi,getWorldDirection as wi,getWorldEuler as Gi,getWorldPosition as Ui,getWorldQuaternion as Hi,getWorldRotation as Xi,getWorldScale as zi,hasCommercialLicense as Vi,hasIndieLicense as _i,hasPointerEventComponent as ji,hasProLicense as Ki,hideDebugConsole as Qi,imageToCanvas as Zi,initPhysics as Yi,instantiate as Ji,invokeLoadedImportPluginHooks as $i,invokeXRSessionEnd as qi,invokeXRSessionStart as el,isActiveInHierarchy as al,isActiveSelf as sl,isAndroidDevice as tl,isAnimationAction as ol,isComponent as rl,isDebugMode as nl,isDesktop as il,isDestroyed as ll,isDevEnvironment as dl,isDisposed as cl,isExporting as ml,isGLTFModel as pl,isHostedOnGlitch as gl,isHotReloadEnabled as ul,isHotReloading as Sl,isIPad as Cl,isIconElement as yl,isLocalNetwork as El,isMacOS as Rl,isMobileDevice as hl,isMozillaXR as fl,isQuest as vl,isResourceTrackingEnabled as Pl,isSafari as Al,isUsingInstancing as Tl,isiOS as Ml,isiPad as bl,loadPMREM as Il,loadSync as Dl,logHierarchy as Ol,lookAtInverse as xl,lookAtObject as kl,lookAtScreenPoint as Ll,makeId as Bl,makeIdFromRandomWords as Fl,makeNameSafe as Nl,markAsInstancedRendered as Wl,microphonePermissionsGranted as wl,nameof as Gl,nameofFactory as Ul,needle as Hl,objectSerializer as Xl,offBeforeXRSession as zl,offXRSessionEnd as Vl,offXRSessionStart as _l,onBeforeXRSession as jl,onSyncDestroy as Kl,onSyncInstantiate as Ql,onXRSessionEnd as Zl,onXRSessionStart as Yl,parseSync as Jl,placeOnSurface as $l,postprocessFBXMaterials as ql,prefix as ed,pushState as ad,randomNumber as sd,registerBinaryType as td,registerComponent as od,registerComponentExtension as rd,registerCustomEffectType as nd,registerExportExtensions as id,registerExtensions as ld,registerHotReloadType as dd,registerLoader as cd,registerPrefabProvider as md,registerPrototypeExtensions as pd,registerType as gd,relativePathPrefix as ud,removeAttributeChangeCallback as Sd,removeComponent as Cd,removeCustomImportExtensionType as yd,removePatch as Ed,resolveUrl as Rd,sanitizeString as hd,saveImage as fd,screenshot as vd,screenshot2 as Pd,sendDestroyed as Ad,serializable as Td,serializeObject as Md,serializeable as bd,setActive as Id,setAllowBalloonMessages as Dd,setAllowOverlayMessages as Od,setAutoFitEnabled as xd,setCameraController as kd,setDestroyed as Ld,setDevEnvironment as Bd,setDisposable as Fd,setDontDestroy as Nd,setOrAddParamsToUrl as Wd,setParam as wd,setParamWithoutReload as Gd,setPeerOptions as Ud,setResourceTrackingEnabled as Hd,setState as Xd,setVisibleInCustomShadowRendering as zd,setWorldEuler as Vd,setWorldPosition as _d,setWorldPositionXYZ as jd,setWorldQuaternion as Kd,setWorldQuaternionXYZW as Qd,setWorldRotation as Zd,setWorldRotationXYZ as Yd,setWorldScale as Jd,showBalloonError as $d,showBalloonMessage as qd,showBalloonWarning as ec,showDebugConsole as ac,slerp as sc,syncDestroy as tc,syncField as oc,syncInstantiate as rc,textureToCanvas as nc,toSourceId as ic,tryCastBinary as lc,tryDetermineMimetypeFromBinary as dc,tryDetermineMimetypeFromURL as cc,tryFindObject as mc,tryGetGuid as pc,unregisterHotReloadType as gc,unregisterPrefabProvider as uc,unwatchWrite as Sc,useForAutoFit as Cc,validate as yc,watchWrite as Ec}from"./needle-engine.bundle-gjRMqYLb.min.js";import{THREE as Rc}from"./three.min.js";import{NEEDLE_progressive as hc}from"./gltf-progressive-CN_mbb66.min.js";y();const a={VERSION:S,Context:u,NeedleXRSession:g,assets:{loadFromURL:p},types:m,onStart:c,onUpdate:d,onBeforeRender:l,onAfterRender:i,onInitializedContext:n,onDestroyContext:r,onClearContext:o};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function C(e){for(const t in e)a[t]=e[t]}C(E),C(R);for(const e of Object.getOwnPropertyNames(s))switch(e){case"prototype":case"constructor":case"length":case"name":continue;default:a[e]=s[e];break}if(!globalThis.Needle)globalThis.Needle=a;else for(const e in a)globalThis.Needle[e]=a[e];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=Rc;export{h as $componentName,f as $physicsKey,v as ActionBuilder,P as ActionCollection,A as ActionModel,T as Addressables,M as AlignmentConstraint,b as AmbientMode,I as Animation,D as AnimationCurve,O as AnimationExtension,x as AnimationTrackHandler,k as AnimationUtils,L as Animator,B as AnimatorConditionMode,F as AnimatorController,N as AnimatorControllerBuilder,W as AnimatorControllerParameterType,w as AnimatorStateInfo,G as Antialiasing,U as Application,H as AssetDatabase,X as AssetReference,z as Attractor,V as AudioExtension,_ as AudioListener,j as AudioSource,K as AudioTrackHandler,Q as Avatar,Z as AvatarBlink_Simple,Y as AvatarEyeLook_Rotation,J as AvatarLoader,$ as AvatarMarker,q as AvatarModel,ee as Avatar_Brain_LookAt,ae as Avatar_MouthShapes,se as Avatar_MustacheShake,te as Avatar_POI,oe as Axes,re as AxesHelper,ne as BUILD_TIME,ie as BaseUIComponent,le as BasicIKConstraint,de as BehaviorExtension,ce as BehaviorModel,me as Behaviour,pe as BlobStorage,ge as BloomEffect,ue as BoxCollider,Se as BoxGizmo,Ce as BoxHelperComponent,ye as Button,Ee as ButtonsFactory,Re as CallDirection,he as CallInfo,fe as Camera,ve as CameraTargetReachedEvent,Pe as Canvas,Ae as CanvasGroup,Te as CapsuleCollider,Me as ChangeMaterialOnClick,be as ChangeTransformOnClick,Ie as CharacterController,De as CharacterControllerInput,Oe as ChromaticAberration,xe as CircularBuffer,ke as ClearFlags,Le as ClickThrough,Be as ClipExtrapolation,Fe as Collider,Ne as Collision,We as CollisionDetectionMode,we as ColorAdjustments,Ge as ColorBySpeedModule,Ue as ColorOverLifetimeModule,He as Component,Xe as ComponentLifecycleEvents,ze as ConnectionEvents,Ve as ContactPoint,_e as ContactShadows,u as Context,je as ContextArgs,Ke as ContextEvent,Qe as ContextRegistry,Ze as ControlTrackHandler,Ye as CursorFollow,Je as CustomBranding,$e as CustomShader,qe as DefaultReflectionMode,ea as Deletable,aa as DeleteBox,sa as DepthOfField,ta as DeviceFlag,oa as DeviceUtilities,ra as DocumentExtension,na as DragControls,ia as DragMode,la as DropListener,da as Duplicatable,ca as EffectWrapper,ma as EmissionModule,pa as EmphasizeOnClick,ga as EngineLoadingView,ua as EnvironmentScene,Sa as EventList,Ca as EventListEvent,ya as EventSystem,Ea as EventTrigger,Ra as FieldWithDefault,ha as FileReference,fa as FileReferenceSerializer,va as FileSpawnModel,Pa as File_Event,Aa as FixedJoint,Ta as Fog,Ma as FontStyle,ba as FrameEvent,Ia as GENERATOR,s as GameObject,Da as Gizmos,Oa as GltfExport,xa as GltfExportBox,ka as Gradient,La as Graphic,Ba as GraphicRaycaster,Fa as Graphics,Na as GridHelper,Wa as GridLayoutGroup,wa as GroundProjectedEnv,Ga as GroupActionModel,Ua as HideFlags,Ha as HideOnStart,Xa as HingeJoint,za as HorizontalLayoutGroup,Va as HorizontalWrapMode,_a as HostData,ja as HoverAnimation,Ka as Image,Qa as ImageReference,Za as ImageReferenceSerializer,Ya as InheritVelocityModule,Ja as Input,$a as InputEventQueue,qa as InputEvents,es as InputField,as as InstanceHandle,ss as InstancingHandler,ts as InstancingUtil,os as InstantiateEvent,rs as InstantiateIdProvider,ns as InstantiateOptions,is as Interactable,ls as InternalScreenshotUtils,ds as JoinedRoomResponse,cs as KeyEventArgs,ms as Keyframe,ps as LODGroup,gs as LODModel,us as LeftRoomResponse,Ss as Light,Cs as LightData,ys as LimitVelocityOverLifetimeModule,Es as LoadingElementOptions,Rs as LogStats,hs as LogType,fs as LookAt,vs as LookAtConstraint,Ps as MainModule,As as MarkerTrackHandler,Ts as MarkerType,Ms as MaskableGraphic,bs as MaterialPropertyBlock,Is as MaterialX,Ds as Mathf,Os as MeshCollider,xs as MeshRenderer,ks as MinMaxCurve,Ls as MinMaxGradient,Bs as NEEDLE_ENGINE_FEATURE_FLAGS,Fs as NEEDLE_ENGINE_MODULES,hc as NEEDLE_progressive,Ns as NEKeyboardEvent,Ws as NEPointerEvent,ws as NeedleButtonElement,Gs as NeedleEngine,Us as NeedleEngineModelLoader,Hs as NeedleEngineWebComponent,Xs as NeedleMenu,zs as NeedlePatchesKey,Vs as NeedleUSDZExporter,_s as NeedleXRController,g as NeedleXRSession,js as NeedleXRSync,Ks as NeedleXRUtils,Qs as NestedGltf,Zs as NetworkConnection,Ys as NetworkedStreamEvents,Js as NetworkedStreams,$s as Networking,qs as NewInstanceModel,et as NoiseModule,at as ObjectRaycaster,st as ObjectUtils,tt as OffsetConstraint,ot as OneEuroFilter,rt as OneEuroFilterXYZ,nt as OpenURL,it as OrbitControls,lt as Outline,dt as OwnershipEvent,ct as OwnershipModel,mt as PUBLIC_KEY,pt as Padding,gt as ParticleBurst,ut as ParticleSubEmitter,St as ParticleSystem,Ct as ParticleSystemBaseBehaviour,yt as ParticleSystemRenderer,Et as ParticleSystemShapeType,Rt as PeerHandle,ht as PeerNetworking,ft as Physics,vt as PhysicsExtension,Pt as PhysicsMaterialCombine,At as PixelationEffect,Tt as PlayAnimationOnClick,Mt as PlayAudioOnClick,bt as PlayableDirector,It as PlayerColor,Dt as PlayerState,Ot as PlayerStateEvent,xt as PlayerSync,kt as PlayerView,Lt as PlayerViewManager,Bt as PointerEventData,Ft as PointerType,Nt as PostProcessing,Wt as PostProcessingEffect,wt as PostProcessingEffectOrder,Gt as PostProcessingHandler,Ut as PostProcessingManager,Ht as Prefabs,Xt as PreliminaryAction,zt as PreliminaryTrigger,Vt as PreviewHelper,_t as PrimitiveType,jt as Progress,Kt as PromiseAllWithErrors,Qt as PromiseErrorResult,Zt as RGBAColor,Yt as RapierPhysics,Jt as RawImage,$t as RaycastOptions,qt as Rect,eo as RectTransform,ao as ReflectionProbe,so as RegisteredAnimationInfo,to as RemoteSkybox,oo as RenderTexture,ro as RenderTextureSerializer,no as Renderer,io as RendererData,lo as RendererLightmap,co as Rigidbody,mo as RigidbodyConstraints,po as RoomEvents,go as RotationBySpeedModule,uo as RotationOverLifetimeModule,So as SceneLightSettings,Co as SceneSwitcher,yo as ScreenCapture,Eo as ScreenSpaceAmbientOcclusion,Ro as ScreenSpaceAmbientOcclusionN8,ho as ScrollFollow,fo as SeeThrough,vo as SendQueue,Po as SerializationContext,Ao as SetActiveOnClick,To as ShadowCatcher,Mo as ShapeModule,bo as ShapeOverlapResult,Io as SharpeningEffect,Do as SignalAsset,Oo as SignalReceiver,xo as SignalReceiverEvent,ko as SignalTrackHandler,Lo as Size,Bo as SizeBySpeedModule,Fo as SizeOverLifetimeModule,No as SkinnedMeshRenderer,Wo as SmoothFollow,wo as SpatialGrabRaycaster,Go as SpatialHtml,Uo as SpatialTrigger,Ho as SpatialTriggerReceiver,Xo as SpectatorCamera,zo as SphereCollider,Vo as SphereIntersection,_o as SplineContainer,jo as SplineData,Ko as SplineUtils,Qo as SplineWalker,Zo as Sprite,Yo as SpriteData,Jo as SpriteRenderer,$o as SpriteSheet,qo as StateMachineBehaviour,er as StreamEndedEvent,ar as StreamReceivedEvent,sr as SubEmitterSystem,tr as SyncedCamera,or as SyncedRoom,rr as SyncedTransform,nr as TapGestureTrigger,ir as TeleportTarget,lr as TestRunner,dr as TestSimulateUserData,cr as Text,mr as TextAnchor,pr as TextBuilder,gr as TextExtension,ur as TextureSheetAnimationModule,Sr as TiltShiftEffect,Cr as Time,yr as ToneMappingEffect,Er as TrackHandler,Rr as TrackType,hr as TrailModule,fr as TransformData,vr as TransformGizmo,Pr as TriggerBuilder,Ar as TriggerModel,m as TypeStore,Tr as UIRaycastUtils,Mr as UIRootComponent,br as USDDocument,Ir as USDObject,Dr as USDWriter,Or as USDZExporter,xr as USDZText,kr as USDZUIExtension,Lr as UriSerializer,Br as UsageMarker,Fr as UserJoinedOrLeftRoomModel,S as VERSION,Nr as VariantAction,Wr as VelocityOverLifetimeModule,wr as VerticalLayoutGroup,Gr as VerticalWrapMode,Ur as VideoPlayer,Hr as ViewBox,Xr as ViewDevice,zr as Vignette,Vr as VisibilityAction,_r as Voip,jr as Volume,Kr as VolumeParameter,Qr as VolumeProfile,Zr as WaitForFrames,Yr as WaitForPromise,Jr as WaitForSeconds,$r as Watch,qr as WebARCameraBackground,en as WebARSessionRoot,an as WebXR,sn as WebXRButtonFactory,tn as WebXRImageTracking,on as WebXRImageTrackingModel,rn as WebXRPlaneTracking,nn as WebXRTrackedImage,ln as XRControllerFollow,dn as XRControllerModel,cn as XRControllerMovement,mn as XRFlag,pn as XRRig,gn as XRState,un as XRStateFlag,Sn as __Ignore,Cn as __internalNotifyObjectDestroyed,yn as activeInHierarchyFieldName,En as addAttributeChangeCallback,Rn as addComponent,hn as addCustomExtensionPlugin,fn as addNewComponent,vn as addPatch,Pn as apply,An as applyHMRChanges,Tn as applyPrototypeExtensions,Mn as beginListenDestroy,bn as beginListenInstantiate,In as binaryIdentifierCasts,Dn as build_scene_functions,On as builtinComponentKeyName,xn as calculateProgress01,kn as clearBalloonMessages,Ln as clearOverlayMessages,Bn as colorSerializer,Fn as compareAssociation,Nn as componentSerializer,Wn as copyTexture,wn as createMotion,Gn as debugNet,Un as debugOwner,Hn as decompressGpuTexture,Xn as deepClone,zn as delay,Vn as delayForFrames,_n as deserializeObject,jn as destroy,Kn as destroyComponentInstance,Qn as determineMimeTypeFromExtension,Zn as disposeObjectResources,Yn as disposeStream,Jn as editorGuidKeyName,$n as enableSpatialConsole,qn as euler,ei as eventListSerializer,ai as exportAsGLTF,si as findByGuid,ti as findObjectOfType,oi as findObjectsOfType,ri as findResourceUsers,ni as fitCamera,ii as fitObjectIntoVolume,li as foreachComponent,di as foreachComponentEnumerator,ci as forward,mi as generateQRCode,pi as generateSeed,gi as getBoundingBox,ui as getCameraController,Si as getComponent,Ci as getComponentInChildren,yi as getComponentInParent,Ei as getComponents,Ri as getComponentsInChildren,hi as getComponentsInParent,fi as getFormattedDate,vi as getIconElement,Pi as getIconTexture,Ai as getLoader,Ti as getOrAddComponent,Mi as getParam,bi as getParentHierarchyPath,Ii as getPath,Di as getPeerOptions,Oi as getPeerjsInstance,xi as getResourceUserCount,ki as getSceneData,Li as getTempColor,Bi as getTempQuaternion,Fi as getTempVector,Ni as getUrlParams,Wi as getVisibleInCustomShadowRendering,wi as getWorldDirection,Gi as getWorldEuler,Ui as getWorldPosition,Hi as getWorldQuaternion,Xi as getWorldRotation,zi as getWorldScale,Vi as hasCommercialLicense,_i as hasIndieLicense,ji as hasPointerEventComponent,Ki as hasProLicense,Qi as hideDebugConsole,Zi as imageToCanvas,Yi as initPhysics,Ji as instantiate,$i as invokeLoadedImportPluginHooks,qi as invokeXRSessionEnd,el as invokeXRSessionStart,al as isActiveInHierarchy,sl as isActiveSelf,tl as isAndroidDevice,ol as isAnimationAction,rl as isComponent,nl as isDebugMode,il as isDesktop,ll as isDestroyed,dl as isDevEnvironment,cl as isDisposed,ml as isExporting,pl as isGLTFModel,gl as isHostedOnGlitch,ul as isHotReloadEnabled,Sl as isHotReloading,Cl as isIPad,yl as isIconElement,El as isLocalNetwork,Rl as isMacOS,hl as isMobileDevice,fl as isMozillaXR,vl as isQuest,Pl as isResourceTrackingEnabled,Al as isSafari,Tl as isUsingInstancing,Ml as isiOS,bl as isiPad,p as loadAsset,Il as loadPMREM,Dl as loadSync,Ol as logHierarchy,xl as lookAtInverse,kl as lookAtObject,Ll as lookAtScreenPoint,Bl as makeId,Fl as makeIdFromRandomWords,Nl as makeNameSafeForUSD,Wl as markAsInstancedRendered,wl as microphonePermissionsGranted,Gl as nameof,Ul as nameofFactory,Hl as needle,Xl as objectSerializer,zl as offBeforeXRSession,Vl as offXRSessionEnd,_l as offXRSessionStart,i as onAfterRender,l as onBeforeRender,jl as onBeforeXRSession,o as onClear,r as onDestroy,n as onInitialized,c as onStart,Kl as onSyncDestroy,Ql as onSyncInstantiate,d as onUpdate,Zl as onXRSessionEnd,Yl as onXRSessionStart,Jl as parseSync,$l as placeOnSurface,ql as postprocessFBXMaterials,ed as prefix,ad as pushState,sd as randomNumber,td as registerBinaryType,od as registerComponent,rd as registerComponentExtension,nd as registerCustomEffectType,id as registerExportExtensions,ld as registerExtensions,dd as registerHotReloadType,cd as registerLoader,md as registerPrefabProvider,pd as registerPrototypeExtensions,gd as registerType,ud as relativePathPrefix,Sd as removeAttributeChangeCallback,Cd as removeComponent,yd as removeCustomImportExtensionType,Ed as removePatch,Rd as resolveUrl,hd as sanitizeString,fd as saveImage,vd as screenshot,Pd as screenshot2,Ad as sendDestroyed,Td as serializable,Md as serializeObject,bd as serializeable,Id as setActive,Dd as setAllowBalloonMessages,Od as setAllowOverlayMessages,xd as setAutoFitEnabled,kd as setCameraController,Ld as setDestroyed,Bd as setDevEnvironment,Fd as setDisposable,Nd as setDontDestroy,Wd as setOrAddParamsToUrl,wd as setParam,Gd as setParamWithoutReload,Ud as setPeerOptions,Hd as setResourceTrackingEnabled,Xd as setState,zd as setVisibleInCustomShadowRendering,Vd as setWorldEuler,_d as setWorldPosition,jd as setWorldPositionXYZ,Kd as setWorldQuaternion,Qd as setWorldQuaternionXYZW,Zd as setWorldRotation,Yd as setWorldRotationXYZ,Jd as setWorldScale,$d as showBalloonError,qd as showBalloonMessage,ec as showBalloonWarning,ac as showDebugConsole,sc as slerp,tc as syncDestroy,oc as syncField,rc as syncInstantiate,nc as textureToCanvas,ic as toSourceId,lc as tryCastBinary,dc as tryDetermineMimetypeFromBinary,cc as tryDetermineMimetypeFromURL,mc as tryFindObject,pc as tryGetGuid,gc as unregisterHotReloadType,uc as unregisterPrefabProvider,Sc as unwatchWrite,Cc as useForAutoFit,yc as validate,Ec as watchWrite};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./needle-engine.bundle-CPR-xoaB.umd.cjs"),i=require("./three.umd.cjs"),a=require("./gltf-progressive-BmblPzFj.umd.cjs");e.initEngine();const o={VERSION:e.VERSION,Context:e.Context,NeedleXRSession:e.NeedleXRSession,assets:{loadFromURL:e.loadAsset},types:e.TypeStore,onStart:e.onStart,onUpdate:e.onUpdate,onBeforeRender:e.onBeforeRender,onAfterRender:e.onAfterRender,onInitializedContext:e.onInitialized,onDestroyContext:e.onDestroy,onClearContext:e.onClear};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function n(t){for(const r in t)o[r]=t[r]}n(e.Component);n(e.Components);for(const t of Object.getOwnPropertyNames(e.GameObject))switch(t){case"prototype":case"constructor":case"length":case"name":continue;default:o[t]=e.GameObject[t];break}if(!globalThis.Needle)globalThis.Needle=o;else for(const t in o)globalThis.Needle[t]=o[t];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=i.THREE;exports.$componentName=e.$componentName;exports.$physicsKey=e.$physicsKey;exports.ActionBuilder=e.ActionBuilder;exports.ActionCollection=e.ActionCollection;exports.ActionModel=e.ActionModel;exports.Addressables=e.Addressables;exports.AlignmentConstraint=e.AlignmentConstraint;exports.AmbientMode=e.AmbientMode;exports.Animation=e.Animation;exports.AnimationCurve=e.AnimationCurve;exports.AnimationExtension=e.AnimationExtension;exports.AnimationTrackHandler=e.AnimationTrackHandler;Object.defineProperty(exports,"AnimationUtils",{enumerable:!0,get:()=>e.AnimationUtils});exports.Animator=e.Animator;exports.AnimatorConditionMode=e.AnimatorConditionMode;exports.AnimatorController=e.AnimatorController;exports.AnimatorControllerBuilder=e.AnimatorControllerBuilder;exports.AnimatorControllerParameterType=e.AnimatorControllerParameterType;exports.AnimatorStateInfo=e.AnimatorStateInfo;exports.Antialiasing=e.Antialiasing;exports.Application=e.Application;exports.AssetDatabase=e.AssetDatabase;exports.AssetReference=e.AssetReference;exports.Attractor=e.Attractor;exports.AudioExtension=e.AudioExtension;exports.AudioListener=e.AudioListener;exports.AudioSource=e.AudioSource;exports.AudioTrackHandler=e.AudioTrackHandler;exports.Avatar=e.Avatar;exports.AvatarBlink_Simple=e.AvatarBlink_Simple;exports.AvatarEyeLook_Rotation=e.AvatarEyeLook_Rotation;exports.AvatarLoader=e.AvatarLoader;exports.AvatarMarker=e.AvatarMarker;exports.AvatarModel=e.AvatarModel;exports.Avatar_Brain_LookAt=e.Avatar_Brain_LookAt;exports.Avatar_MouthShapes=e.Avatar_MouthShapes;exports.Avatar_MustacheShake=e.Avatar_MustacheShake;exports.Avatar_POI=e.Avatar_POI;exports.Axes=e.Axes;exports.AxesHelper=e.AxesHelper;exports.BUILD_TIME=e.BUILD_TIME;exports.BaseUIComponent=e.BaseUIComponent;exports.BasicIKConstraint=e.BasicIKConstraint;exports.BehaviorExtension=e.BehaviorExtension;exports.BehaviorModel=e.BehaviorModel;exports.Behaviour=e.Component$1;Object.defineProperty(exports,"BlobStorage",{enumerable:!0,get:()=>e.BlobStorage});exports.BloomEffect=e.BloomEffect;exports.BoxCollider=e.BoxCollider;exports.BoxGizmo=e.BoxGizmo;exports.BoxHelperComponent=e.BoxHelperComponent;exports.Button=e.Button;exports.ButtonsFactory=e.ButtonsFactory;exports.CallDirection=e.CallDirection;exports.CallInfo=e.CallInfo;exports.Camera=e.Camera;exports.CameraTargetReachedEvent=e.CameraTargetReachedEvent;exports.Canvas=e.Canvas;exports.CanvasGroup=e.CanvasGroup;exports.CapsuleCollider=e.CapsuleCollider;exports.ChangeMaterialOnClick=e.ChangeMaterialOnClick;exports.ChangeTransformOnClick=e.ChangeTransformOnClick;exports.CharacterController=e.CharacterController;exports.CharacterControllerInput=e.CharacterControllerInput;exports.ChromaticAberration=e.ChromaticAberration;exports.CircularBuffer=e.CircularBuffer;exports.ClearFlags=e.ClearFlags;exports.ClickThrough=e.ClickThrough;exports.ClipExtrapolation=e.ClipExtrapolation;exports.Collider=e.Collider;exports.Collision=e.Collision;exports.CollisionDetectionMode=e.CollisionDetectionMode;exports.ColorAdjustments=e.ColorAdjustments;exports.ColorBySpeedModule=e.ColorBySpeedModule;exports.ColorOverLifetimeModule=e.ColorOverLifetimeModule;exports.Component=e.Component$1;exports.ComponentLifecycleEvents=e.ComponentLifecycleEvents;exports.ConnectionEvents=e.ConnectionEvents;exports.ContactPoint=e.ContactPoint;exports.ContactShadows=e.ContactShadows;exports.Context=e.Context;exports.ContextArgs=e.ContextArgs;exports.ContextEvent=e.ContextEvent;exports.ContextRegistry=e.ContextRegistry;exports.ControlTrackHandler=e.ControlTrackHandler;exports.CursorFollow=e.CursorFollow;exports.CustomBranding=e.CustomBranding;exports.CustomShader=e.CustomShader;exports.DefaultReflectionMode=e.DefaultReflectionMode;exports.Deletable=e.Deletable;exports.DeleteBox=e.DeleteBox;exports.DepthOfField=e.DepthOfField;exports.DeviceFlag=e.DeviceFlag;Object.defineProperty(exports,"DeviceUtilities",{enumerable:!0,get:()=>e.DeviceUtilities});exports.DocumentExtension=e.DocumentExtension;exports.DragControls=e.DragControls;exports.DragMode=e.DragMode;exports.DropListener=e.DropListener;exports.Duplicatable=e.Duplicatable;exports.EffectWrapper=e.EffectWrapper;exports.EmissionModule=e.EmissionModule;exports.EmphasizeOnClick=e.EmphasizeOnClick;exports.EngineLoadingView=e.EngineLoadingView;exports.EnvironmentScene=e.EnvironmentScene;exports.EventList=e.EventList;exports.EventListEvent=e.EventListEvent;exports.EventSystem=e.EventSystem;exports.EventTrigger=e.EventTrigger;exports.FieldWithDefault=e.FieldWithDefault;exports.FileReference=e.FileReference;exports.FileReferenceSerializer=e.FileReferenceSerializer;exports.FileSpawnModel=e.FileSpawnModel;exports.File_Event=e.File_Event;exports.FixedJoint=e.FixedJoint;exports.Fog=e.Fog;exports.FontStyle=e.FontStyle;exports.FrameEvent=e.FrameEvent;exports.GENERATOR=e.GENERATOR;exports.GameObject=e.GameObject;exports.Gizmos=e.Gizmos;exports.GltfExport=e.GltfExport;exports.GltfExportBox=e.GltfExportBox;exports.Gradient=e.Gradient;exports.Graphic=e.Graphic;exports.GraphicRaycaster=e.GraphicRaycaster;exports.Graphics=e.Graphics;exports.GridHelper=e.GridHelper;exports.GridLayoutGroup=e.GridLayoutGroup;exports.GroundProjectedEnv=e.GroundProjectedEnv;exports.GroupActionModel=e.GroupActionModel;exports.HideFlags=e.HideFlags;exports.HideOnStart=e.HideOnStart;exports.HingeJoint=e.HingeJoint;exports.HorizontalLayoutGroup=e.HorizontalLayoutGroup;exports.HorizontalWrapMode=e.HorizontalWrapMode;exports.HostData=e.HostData;Object.defineProperty(exports,"HoverAnimation",{enumerable:!0,get:()=>e.HoverAnimation});exports.Image=e.Image;exports.ImageReference=e.ImageReference;exports.ImageReferenceSerializer=e.ImageReferenceSerializer;exports.InheritVelocityModule=e.InheritVelocityModule;exports.Input=e.Input;exports.InputEventQueue=e.InputEventQueue;exports.InputEvents=e.InputEvents;exports.InputField=e.InputField;exports.InstanceHandle=e.InstanceHandle;exports.InstancingHandler=e.InstancingHandler;exports.InstancingUtil=e.InstancingUtil;exports.InstantiateEvent=e.InstantiateEvent;exports.InstantiateIdProvider=e.InstantiateIdProvider;exports.InstantiateOptions=e.InstantiateOptions;exports.Interactable=e.Interactable;Object.defineProperty(exports,"InternalScreenshotUtils",{enumerable:!0,get:()=>e.InternalScreenshotUtils});exports.JoinedRoomResponse=e.JoinedRoomResponse;exports.KeyEventArgs=e.KeyEventArgs;exports.Keyframe=e.Keyframe;exports.LODGroup=e.LODGroup;exports.LODModel=e.LODModel;exports.LeftRoomResponse=e.LeftRoomResponse;exports.Light=e.Light;exports.LightData=e.LightData;exports.LimitVelocityOverLifetimeModule=e.LimitVelocityOverLifetimeModule;exports.LoadingElementOptions=e.LoadingElementOptions;exports.LogStats=e.LogStats;exports.LogType=e.LogType;exports.LookAt=e.LookAt;exports.LookAtConstraint=e.LookAtConstraint;exports.MainModule=e.MainModule;exports.MarkerTrackHandler=e.MarkerTrackHandler;exports.MarkerType=e.MarkerType;exports.MaskableGraphic=e.MaskableGraphic;exports.MaterialPropertyBlock=e.MaterialPropertyBlock;Object.defineProperty(exports,"MaterialX",{enumerable:!0,get:()=>e.MaterialX});exports.Mathf=e.Mathf;exports.MeshCollider=e.MeshCollider;exports.MeshRenderer=e.MeshRenderer;exports.MinMaxCurve=e.MinMaxCurve;exports.MinMaxGradient=e.MinMaxGradient;exports.NEEDLE_ENGINE_FEATURE_FLAGS=e.NEEDLE_ENGINE_FEATURE_FLAGS;exports.NEEDLE_ENGINE_MODULES=e.MODULES;exports.NEKeyboardEvent=e.NEKeyboardEvent;exports.NEPointerEvent=e.NEPointerEvent;exports.NeedleButtonElement=e.NeedleButtonElement;exports.NeedleEngine=e.ContextRegistry;Object.defineProperty(exports,"NeedleEngineModelLoader",{enumerable:!0,get:()=>e.NeedleEngineModelLoader});exports.NeedleEngineWebComponent=e.NeedleEngineWebComponent;exports.NeedleMenu=e.NeedleMenu;exports.NeedlePatchesKey=e.NeedlePatchesKey;exports.NeedleUSDZExporter=e.USDZExporter;exports.NeedleXRController=e.NeedleXRController;exports.NeedleXRSession=e.NeedleXRSession;exports.NeedleXRSync=e.NeedleXRSync;exports.NeedleXRUtils=e.NeedleXRUtils;exports.NestedGltf=e.NestedGltf;exports.NetworkConnection=e.NetworkConnection;exports.NetworkedStreamEvents=e.NetworkedStreamEvents;exports.NetworkedStreams=e.NetworkedStreams;exports.Networking=e.Networking;exports.NewInstanceModel=e.NewInstanceModel;exports.NoiseModule=e.NoiseModule;exports.ObjectRaycaster=e.ObjectRaycaster;exports.ObjectUtils=e.ObjectUtils;exports.OffsetConstraint=e.OffsetConstraint;exports.OneEuroFilter=e.OneEuroFilter;exports.OneEuroFilterXYZ=e.OneEuroFilterXYZ;exports.OpenURL=e.OpenURL;exports.OrbitControls=e.OrbitControls;exports.Outline=e.Outline;exports.OwnershipEvent=e.OwnershipEvent;exports.OwnershipModel=e.OwnershipModel;exports.PUBLIC_KEY=e.PUBLIC_KEY;exports.Padding=e.Padding;exports.ParticleBurst=e.ParticleBurst;exports.ParticleSubEmitter=e.ParticleSubEmitter;exports.ParticleSystem=e.ParticleSystem;exports.ParticleSystemBaseBehaviour=e.ParticleSystemBaseBehaviour;exports.ParticleSystemRenderer=e.ParticleSystemRenderer;exports.ParticleSystemShapeType=e.ParticleSystemShapeType;exports.PeerHandle=e.PeerHandle;exports.PeerNetworking=e.PeerNetworking;exports.Physics=e.Physics;exports.PhysicsExtension=e.PhysicsExtension;exports.PhysicsMaterialCombine=e.PhysicsMaterialCombine;exports.PixelationEffect=e.PixelationEffect;exports.PlayAnimationOnClick=e.PlayAnimationOnClick;exports.PlayAudioOnClick=e.PlayAudioOnClick;exports.PlayableDirector=e.PlayableDirector;exports.PlayerColor=e.PlayerColor;exports.PlayerState=e.PlayerState;exports.PlayerStateEvent=e.PlayerStateEvent;exports.PlayerSync=e.PlayerSync;exports.PlayerView=e.PlayerView;exports.PlayerViewManager=e.PlayerViewManager;exports.PointerEventData=e.PointerEventData;exports.PointerType=e.PointerType;exports.PostProcessing=e.PostProcessing;exports.PostProcessingEffect=e.PostProcessingEffect;exports.PostProcessingEffectOrder=e.PostProcessingEffectOrder;exports.PostProcessingHandler=e.PostProcessingHandler;exports.PostProcessingManager=e.Volume;exports.Prefabs=e.Prefabs;exports.PreliminaryAction=e.PreliminaryAction;exports.PreliminaryTrigger=e.PreliminaryTrigger;Object.defineProperty(exports,"PreviewHelper",{enumerable:!0,get:()=>e.PreviewHelper});exports.PrimitiveType=e.PrimitiveType;exports.Progress=e.Progress;exports.PromiseAllWithErrors=e.PromiseAllWithErrors;exports.PromiseErrorResult=e.PromiseErrorResult;exports.RGBAColor=e.RGBAColor;exports.RapierPhysics=e.RapierPhysics;exports.RawImage=e.RawImage;exports.RaycastOptions=e.RaycastOptions;exports.Rect=e.Rect;exports.RectTransform=e.RectTransform;exports.ReflectionProbe=e.ReflectionProbe;exports.RegisteredAnimationInfo=e.RegisteredAnimationInfo;exports.RemoteSkybox=e.RemoteSkybox;exports.RenderTexture=e.RenderTexture;exports.RenderTextureSerializer=e.RenderTextureSerializer;exports.Renderer=e.Renderer;exports.RendererData=e.RendererData;exports.RendererLightmap=e.RendererLightmap;exports.Rigidbody=e.Rigidbody;exports.RigidbodyConstraints=e.RigidbodyConstraints;exports.RoomEvents=e.RoomEvents;exports.RotationBySpeedModule=e.RotationBySpeedModule;exports.RotationOverLifetimeModule=e.RotationOverLifetimeModule;exports.SceneLightSettings=e.SceneLightSettings;exports.SceneSwitcher=e.SceneSwitcher;exports.ScreenCapture=e.ScreenCapture;exports.ScreenSpaceAmbientOcclusion=e.ScreenSpaceAmbientOcclusion;exports.ScreenSpaceAmbientOcclusionN8=e.ScreenSpaceAmbientOcclusionN8;exports.ScrollFollow=e.ScrollFollow;exports.SeeThrough=e.SeeThrough;exports.SendQueue=e.SendQueue;exports.SerializationContext=e.SerializationContext;exports.SetActiveOnClick=e.SetActiveOnClick;exports.ShadowCatcher=e.ShadowCatcher;exports.ShapeModule=e.ShapeModule;exports.ShapeOverlapResult=e.ShapeOverlapResult;exports.SharpeningEffect=e.SharpeningEffect;exports.SignalAsset=e.SignalAsset;exports.SignalReceiver=e.SignalReceiver;exports.SignalReceiverEvent=e.SignalReceiverEvent;exports.SignalTrackHandler=e.SignalTrackHandler;exports.Size=e.Size;exports.SizeBySpeedModule=e.SizeBySpeedModule;exports.SizeOverLifetimeModule=e.SizeOverLifetimeModule;exports.SkinnedMeshRenderer=e.SkinnedMeshRenderer;exports.SmoothFollow=e.SmoothFollow;exports.SpatialGrabRaycaster=e.SpatialGrabRaycaster;exports.SpatialHtml=e.SpatialHtml;exports.SpatialTrigger=e.SpatialTrigger;exports.SpatialTriggerReceiver=e.SpatialTriggerReceiver;exports.SpectatorCamera=e.SpectatorCamera;exports.SphereCollider=e.SphereCollider;exports.SphereIntersection=e.SphereIntersection;exports.SplineContainer=e.SplineContainer;exports.SplineData=e.SplineData;Object.defineProperty(exports,"SplineUtils",{enumerable:!0,get:()=>e.SplineUtils});exports.SplineWalker=e.SplineWalker;exports.Sprite=e.Sprite;exports.SpriteData=e.SpriteData;exports.SpriteRenderer=e.SpriteRenderer;exports.SpriteSheet=e.SpriteSheet;exports.StateMachineBehaviour=e.StateMachineBehaviour;exports.StreamEndedEvent=e.StreamEndedEvent;exports.StreamReceivedEvent=e.StreamReceivedEvent;exports.SubEmitterSystem=e.SubEmitterSystem;exports.SyncedCamera=e.SyncedCamera;exports.SyncedRoom=e.SyncedRoom;exports.SyncedTransform=e.SyncedTransform;exports.TapGestureTrigger=e.TapGestureTrigger;exports.TeleportTarget=e.TeleportTarget;exports.TestRunner=e.TestRunner;exports.TestSimulateUserData=e.TestSimulateUserData;exports.Text=e.Text;exports.TextAnchor=e.TextAnchor;exports.TextBuilder=e.TextBuilder;exports.TextExtension=e.TextExtension;exports.TextureSheetAnimationModule=e.TextureSheetAnimationModule;exports.TiltShiftEffect=e.TiltShiftEffect;exports.Time=e.Time;exports.ToneMappingEffect=e.ToneMappingEffect;exports.TrackHandler=e.TrackHandler;exports.TrackType=e.TrackType;exports.TrailModule=e.TrailModule;exports.TransformData=e.TransformData;exports.TransformGizmo=e.TransformGizmo;exports.TriggerBuilder=e.TriggerBuilder;exports.TriggerModel=e.TriggerModel;exports.TypeStore=e.TypeStore;exports.UIRaycastUtils=e.UIRaycastUtils;exports.UIRootComponent=e.UIRootComponent;exports.USDDocument=e.USDDocument;exports.USDObject=e.USDObject;exports.USDWriter=e.USDWriter;exports.USDZExporter=e.USDZExporter$1;exports.USDZText=e.USDZText;exports.USDZUIExtension=e.USDZUIExtension;exports.UriSerializer=e.UriSerializer;exports.UsageMarker=e.UsageMarker;exports.UserJoinedOrLeftRoomModel=e.UserJoinedOrLeftRoomModel;exports.VERSION=e.VERSION;exports.VariantAction=e.VariantAction;exports.VelocityOverLifetimeModule=e.VelocityOverLifetimeModule;exports.VerticalLayoutGroup=e.VerticalLayoutGroup;exports.VerticalWrapMode=e.VerticalWrapMode;exports.VideoPlayer=e.VideoPlayer;Object.defineProperty(exports,"ViewBox",{enumerable:!0,get:()=>e.ViewBox});exports.ViewDevice=e.ViewDevice;exports.Vignette=e.Vignette;exports.VisibilityAction=e.VisibilityAction;exports.Voip=e.Voip;exports.Volume=e.Volume;exports.VolumeParameter=e.VolumeParameter;exports.VolumeProfile=e.VolumeProfile;exports.WaitForFrames=e.WaitForFrames;exports.WaitForPromise=e.WaitForPromise;exports.WaitForSeconds=e.WaitForSeconds;exports.Watch=e.Watch;exports.WebARCameraBackground=e.WebARCameraBackground;exports.WebARSessionRoot=e.WebARSessionRoot;exports.WebXR=e.WebXR;exports.WebXRButtonFactory=e.WebXRButtonFactory;exports.WebXRImageTracking=e.WebXRImageTracking;exports.WebXRImageTrackingModel=e.WebXRImageTrackingModel;exports.WebXRPlaneTracking=e.WebXRPlaneTracking;exports.WebXRTrackedImage=e.WebXRTrackedImage;exports.XRControllerFollow=e.XRControllerFollow;exports.XRControllerModel=e.XRControllerModel;exports.XRControllerMovement=e.XRControllerMovement;exports.XRFlag=e.XRFlag;exports.XRRig=e.XRRig;exports.XRState=e.XRState;exports.XRStateFlag=e.XRStateFlag;exports.__Ignore=e.__Ignore;exports.__internalNotifyObjectDestroyed=e.__internalNotifyObjectDestroyed;exports.activeInHierarchyFieldName=e.activeInHierarchyFieldName;exports.addAttributeChangeCallback=e.addAttributeChangeCallback;exports.addComponent=e.addComponent;exports.addCustomExtensionPlugin=e.addCustomExtensionPlugin;exports.addNewComponent=e.addNewComponent;exports.addPatch=e.addPatch;exports.apply=e.apply;exports.applyHMRChanges=e.applyHMRChanges;exports.applyPrototypeExtensions=e.applyPrototypeExtensions;exports.beginListenDestroy=e.beginListenDestroy;exports.beginListenInstantiate=e.beginListenInstantiate;exports.binaryIdentifierCasts=e.binaryIdentifierCasts;exports.build_scene_functions=e.build_scene_functions;exports.builtinComponentKeyName=e.builtinComponentKeyName;exports.calculateProgress01=e.calculateProgress01;exports.clearBalloonMessages=e.clearMessages;exports.clearOverlayMessages=e.clearMessages;exports.colorSerializer=e.colorSerializer;exports.compareAssociation=e.compareAssociation;exports.componentSerializer=e.componentSerializer;exports.copyTexture=e.copyTexture;exports.createMotion=e.createMotion;exports.debugNet=e.debugNet;exports.debugOwner=e.debugOwner;exports.decompressGpuTexture=e.decompressGpuTexture;exports.deepClone=e.deepClone;exports.delay=e.delay;exports.delayForFrames=e.delayForFrames;exports.deserializeObject=e.deserializeObject;exports.destroy=e.destroy;exports.destroyComponentInstance=e.destroyComponentInstance;exports.determineMimeTypeFromExtension=e.determineMimeTypeFromExtension;exports.disposeObjectResources=e.disposeObjectResources;exports.disposeStream=e.disposeStream;exports.editorGuidKeyName=e.editorGuidKeyName;exports.enableSpatialConsole=e.enableSpatialConsole;exports.euler=e.euler;exports.eventListSerializer=e.eventListSerializer;exports.exportAsGLTF=e.exportAsGLTF;exports.findByGuid=e.findByGuid;exports.findObjectOfType=e.findObjectOfType;exports.findObjectsOfType=e.findObjectsOfType;exports.findResourceUsers=e.findResourceUsers;exports.fitCamera=e.fitCamera;exports.fitObjectIntoVolume=e.fitObjectIntoVolume;exports.foreachComponent=e.foreachComponent;exports.foreachComponentEnumerator=e.foreachComponentEnumerator;exports.forward=e.forward;exports.generateQRCode=e.generateQRCode;exports.generateSeed=e.generateSeed;exports.getBoundingBox=e.getBoundingBox;exports.getCameraController=e.getCameraController;exports.getComponent=e.getComponent;exports.getComponentInChildren=e.getComponentInChildren;exports.getComponentInParent=e.getComponentInParent;exports.getComponents=e.getComponents;exports.getComponentsInChildren=e.getComponentsInChildren;exports.getComponentsInParent=e.getComponentsInParent;exports.getFormattedDate=e.getFormattedDate;exports.getIconElement=e.getIconElement;exports.getIconTexture=e.getIconTexture;exports.getLoader=e.getLoader;exports.getOrAddComponent=e.getOrAddComponent;exports.getParam=e.getParam;exports.getParentHierarchyPath=e.getParentHierarchyPath;exports.getPath=e.getPath;exports.getPeerOptions=e.getPeerOptions;exports.getPeerjsInstance=e.getPeerjsInstance;exports.getResourceUserCount=e.getResourceUserCount;exports.getSceneData=e.getSceneData;exports.getTempColor=e.getTempColor;exports.getTempQuaternion=e.getTempQuaternion;exports.getTempVector=e.getTempVector;exports.getUrlParams=e.getUrlParams;exports.getVisibleInCustomShadowRendering=e.getVisibleInCustomShadowRendering;exports.getWorldDirection=e.getWorldDirection;exports.getWorldEuler=e.getWorldEuler;exports.getWorldPosition=e.getWorldPosition;exports.getWorldQuaternion=e.getWorldQuaternion;exports.getWorldRotation=e.getWorldRotation;exports.getWorldScale=e.getWorldScale;exports.hasCommercialLicense=e.hasCommercialLicense;exports.hasIndieLicense=e.hasIndieLicense;exports.hasPointerEventComponent=e.hasPointerEventComponent;exports.hasProLicense=e.hasProLicense;exports.hideDebugConsole=e.hideDebugConsole;exports.imageToCanvas=e.imageToCanvas;exports.initPhysics=e.initPhysics;exports.instantiate=e.instantiate;exports.invokeLoadedImportPluginHooks=e.invokeLoadedImportPluginHooks;exports.invokeXRSessionEnd=e.invokeXRSessionEnd;exports.invokeXRSessionStart=e.invokeXRSessionStart;exports.isActiveInHierarchy=e.isActiveInHierarchy;exports.isActiveSelf=e.isActiveSelf;exports.isAndroidDevice=e.isAndroidDevice;exports.isAnimationAction=e.isAnimationAction;exports.isComponent=e.isComponent;exports.isDebugMode=e.isDebugMode;exports.isDesktop=e.isDesktop;exports.isDestroyed=e.isDestroyed;exports.isDevEnvironment=e.isDevEnvironment;exports.isDisposed=e.isDisposed;exports.isExporting=e.isExporting;exports.isGLTFModel=e.isGLTFModel;exports.isHostedOnGlitch=e.isHostedOnGlitch;exports.isHotReloadEnabled=e.isHotReloadEnabled;exports.isHotReloading=e.isHotReloading;exports.isIPad=e.isIPad;exports.isIconElement=e.isIconElement;exports.isLocalNetwork=e.isLocalNetwork;exports.isMacOS=e.isMacOS;exports.isMobileDevice=e.isMobileDevice;exports.isMozillaXR=e.isMozillaXR;exports.isQuest=e.isQuest;exports.isResourceTrackingEnabled=e.isResourceTrackingEnabled;exports.isSafari=e.isSafari;exports.isUsingInstancing=e.isUsingInstancing;exports.isiOS=e.isiOS;exports.isiPad=e.isiPad;exports.loadAsset=e.loadAsset;exports.loadPMREM=e.loadPMREM;exports.loadSync=e.loadSync;exports.logHierarchy=e.logHierarchy;exports.lookAtInverse=e.lookAtInverse;exports.lookAtObject=e.lookAtObject;exports.lookAtScreenPoint=e.lookAtScreenPoint;exports.makeId=e.makeId;exports.makeIdFromRandomWords=e.makeIdFromRandomWords;exports.makeNameSafeForUSD=e.makeNameSafe;exports.markAsInstancedRendered=e.markAsInstancedRendered;exports.microphonePermissionsGranted=e.microphonePermissionsGranted;exports.nameof=e.nameof;exports.nameofFactory=e.nameofFactory;exports.needle=e.needle;exports.objectSerializer=e.objectSerializer;exports.offBeforeXRSession=e.offBeforeXRSession;exports.offXRSessionEnd=e.offXRSessionEnd;exports.offXRSessionStart=e.offXRSessionStart;exports.onAfterRender=e.onAfterRender;exports.onBeforeRender=e.onBeforeRender;exports.onBeforeXRSession=e.onBeforeXRSession;exports.onClear=e.onClear;exports.onDestroy=e.onDestroy;exports.onInitialized=e.onInitialized;exports.onStart=e.onStart;exports.onSyncDestroy=e.onSyncDestroy;exports.onSyncInstantiate=e.onSyncInstantiate;exports.onUpdate=e.onUpdate;exports.onXRSessionEnd=e.onXRSessionEnd;exports.onXRSessionStart=e.onXRSessionStart;exports.parseSync=e.parseSync;exports.placeOnSurface=e.placeOnSurface;exports.postprocessFBXMaterials=e.postprocessFBXMaterials;exports.prefix=e.prefix;exports.pushState=e.pushState;exports.randomNumber=e.randomNumber;exports.registerBinaryType=e.registerBinaryType;exports.registerComponent=e.registerComponent;exports.registerComponentExtension=e.registerComponentExtension;exports.registerCustomEffectType=e.registerCustomEffectType;exports.registerExportExtensions=e.registerExportExtensions;exports.registerExtensions=e.registerExtensions;exports.registerHotReloadType=e.registerHotReloadType;exports.registerLoader=e.registerLoader;exports.registerPrefabProvider=e.registerPrefabProvider;exports.registerPrototypeExtensions=e.registerPrototypeExtensions;exports.registerType=e.registerType;exports.relativePathPrefix=e.relativePathPrefix;exports.removeAttributeChangeCallback=e.removeAttributeChangeCallback;exports.removeComponent=e.removeComponent;exports.removeCustomImportExtensionType=e.removeCustomImportExtensionType;exports.removePatch=e.removePatch;exports.resolveUrl=e.resolveUrl;exports.sanitizeString=e.sanitizeString;exports.saveImage=e.saveImage;exports.screenshot=e.screenshot;exports.screenshot2=e.screenshot2;exports.sendDestroyed=e.sendDestroyed;exports.serializable=e.serializable;exports.serializeObject=e.serializeObject;exports.serializeable=e.serializeable;exports.setActive=e.setActive;exports.setAllowBalloonMessages=e.setAllowBalloonMessages;exports.setAllowOverlayMessages=e.setAllowOverlayMessages;exports.setAutoFitEnabled=e.setAutoFitEnabled;exports.setCameraController=e.setCameraController;exports.setDestroyed=e.setDestroyed;exports.setDevEnvironment=e.setDevEnvironment;exports.setDisposable=e.setDisposable;exports.setDontDestroy=e.setDontDestroy;exports.setOrAddParamsToUrl=e.setOrAddParamsToUrl;exports.setParam=e.setParam;exports.setParamWithoutReload=e.setParamWithoutReload;exports.setPeerOptions=e.setPeerOptions;exports.setResourceTrackingEnabled=e.setResourceTrackingEnabled;exports.setState=e.setState;exports.setVisibleInCustomShadowRendering=e.setVisibleInCustomShadowRendering;exports.setWorldEuler=e.setWorldEuler;exports.setWorldPosition=e.setWorldPosition;exports.setWorldPositionXYZ=e.setWorldPositionXYZ;exports.setWorldQuaternion=e.setWorldQuaternion;exports.setWorldQuaternionXYZW=e.setWorldQuaternionXYZW;exports.setWorldRotation=e.setWorldRotation;exports.setWorldRotationXYZ=e.setWorldRotationXYZ;exports.setWorldScale=e.setWorldScale;exports.showBalloonError=e.showBalloonError;exports.showBalloonMessage=e.showBalloonMessage;exports.showBalloonWarning=e.showBalloonWarning;exports.showDebugConsole=e.showDebugConsole;exports.slerp=e.slerp;exports.syncDestroy=e.syncDestroy;exports.syncField=e.syncField;exports.syncInstantiate=e.syncInstantiate;exports.textureToCanvas=e.textureToCanvas;exports.toSourceId=e.toSourceId;exports.tryCastBinary=e.tryCastBinary;exports.tryDetermineMimetypeFromBinary=e.tryDetermineMimetypeFromBinary;exports.tryDetermineMimetypeFromURL=e.tryDetermineMimetypeFromURL;exports.tryFindObject=e.tryFindObject;exports.tryGetGuid=e.tryGetGuid;exports.unregisterHotReloadType=e.unregisterHotReloadType;exports.unregisterPrefabProvider=e.unregisterPrefabProvider;exports.unwatchWrite=e.unwatchWrite;exports.useForAutoFit=e.useForAutoFit;exports.validate=e.validate;exports.watchWrite=e.watchWrite;exports.NEEDLE_progressive=a.NEEDLE_progressive;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./needle-engine.bundle-DTfojsUD.umd.cjs"),i=require("./three.umd.cjs"),a=require("./gltf-progressive-BmblPzFj.umd.cjs");e.initEngine();const o={VERSION:e.VERSION,Context:e.Context,NeedleXRSession:e.NeedleXRSession,assets:{loadFromURL:e.loadAsset},types:e.TypeStore,onStart:e.onStart,onUpdate:e.onUpdate,onBeforeRender:e.onBeforeRender,onAfterRender:e.onAfterRender,onInitializedContext:e.onInitialized,onDestroyContext:e.onDestroy,onClearContext:e.onClear};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function n(t){for(const r in t)o[r]=t[r]}n(e.Component);n(e.Components);for(const t of Object.getOwnPropertyNames(e.GameObject))switch(t){case"prototype":case"constructor":case"length":case"name":continue;default:o[t]=e.GameObject[t];break}if(!globalThis.Needle)globalThis.Needle=o;else for(const t in o)globalThis.Needle[t]=o[t];globalThis.THREE?console.warn("Three.js is already imported"):globalThis.THREE=i.THREE;exports.$componentName=e.$componentName;exports.$physicsKey=e.$physicsKey;exports.ActionBuilder=e.ActionBuilder;exports.ActionCollection=e.ActionCollection;exports.ActionModel=e.ActionModel;exports.Addressables=e.Addressables;exports.AlignmentConstraint=e.AlignmentConstraint;exports.AmbientMode=e.AmbientMode;exports.Animation=e.Animation;exports.AnimationCurve=e.AnimationCurve;exports.AnimationExtension=e.AnimationExtension;exports.AnimationTrackHandler=e.AnimationTrackHandler;Object.defineProperty(exports,"AnimationUtils",{enumerable:!0,get:()=>e.AnimationUtils});exports.Animator=e.Animator;exports.AnimatorConditionMode=e.AnimatorConditionMode;exports.AnimatorController=e.AnimatorController;exports.AnimatorControllerBuilder=e.AnimatorControllerBuilder;exports.AnimatorControllerParameterType=e.AnimatorControllerParameterType;exports.AnimatorStateInfo=e.AnimatorStateInfo;exports.Antialiasing=e.Antialiasing;exports.Application=e.Application;exports.AssetDatabase=e.AssetDatabase;exports.AssetReference=e.AssetReference;exports.Attractor=e.Attractor;exports.AudioExtension=e.AudioExtension;exports.AudioListener=e.AudioListener;exports.AudioSource=e.AudioSource;exports.AudioTrackHandler=e.AudioTrackHandler;exports.Avatar=e.Avatar;exports.AvatarBlink_Simple=e.AvatarBlink_Simple;exports.AvatarEyeLook_Rotation=e.AvatarEyeLook_Rotation;exports.AvatarLoader=e.AvatarLoader;exports.AvatarMarker=e.AvatarMarker;exports.AvatarModel=e.AvatarModel;exports.Avatar_Brain_LookAt=e.Avatar_Brain_LookAt;exports.Avatar_MouthShapes=e.Avatar_MouthShapes;exports.Avatar_MustacheShake=e.Avatar_MustacheShake;exports.Avatar_POI=e.Avatar_POI;exports.Axes=e.Axes;exports.AxesHelper=e.AxesHelper;exports.BUILD_TIME=e.BUILD_TIME;exports.BaseUIComponent=e.BaseUIComponent;exports.BasicIKConstraint=e.BasicIKConstraint;exports.BehaviorExtension=e.BehaviorExtension;exports.BehaviorModel=e.BehaviorModel;exports.Behaviour=e.Component$1;Object.defineProperty(exports,"BlobStorage",{enumerable:!0,get:()=>e.BlobStorage});exports.BloomEffect=e.BloomEffect;exports.BoxCollider=e.BoxCollider;exports.BoxGizmo=e.BoxGizmo;exports.BoxHelperComponent=e.BoxHelperComponent;exports.Button=e.Button;exports.ButtonsFactory=e.ButtonsFactory;exports.CallDirection=e.CallDirection;exports.CallInfo=e.CallInfo;exports.Camera=e.Camera;exports.CameraTargetReachedEvent=e.CameraTargetReachedEvent;exports.Canvas=e.Canvas;exports.CanvasGroup=e.CanvasGroup;exports.CapsuleCollider=e.CapsuleCollider;exports.ChangeMaterialOnClick=e.ChangeMaterialOnClick;exports.ChangeTransformOnClick=e.ChangeTransformOnClick;exports.CharacterController=e.CharacterController;exports.CharacterControllerInput=e.CharacterControllerInput;exports.ChromaticAberration=e.ChromaticAberration;exports.CircularBuffer=e.CircularBuffer;exports.ClearFlags=e.ClearFlags;exports.ClickThrough=e.ClickThrough;exports.ClipExtrapolation=e.ClipExtrapolation;exports.Collider=e.Collider;exports.Collision=e.Collision;exports.CollisionDetectionMode=e.CollisionDetectionMode;exports.ColorAdjustments=e.ColorAdjustments;exports.ColorBySpeedModule=e.ColorBySpeedModule;exports.ColorOverLifetimeModule=e.ColorOverLifetimeModule;exports.Component=e.Component$1;exports.ComponentLifecycleEvents=e.ComponentLifecycleEvents;exports.ConnectionEvents=e.ConnectionEvents;exports.ContactPoint=e.ContactPoint;exports.ContactShadows=e.ContactShadows;exports.Context=e.Context;exports.ContextArgs=e.ContextArgs;exports.ContextEvent=e.ContextEvent;exports.ContextRegistry=e.ContextRegistry;exports.ControlTrackHandler=e.ControlTrackHandler;exports.CursorFollow=e.CursorFollow;exports.CustomBranding=e.CustomBranding;exports.CustomShader=e.CustomShader;exports.DefaultReflectionMode=e.DefaultReflectionMode;exports.Deletable=e.Deletable;exports.DeleteBox=e.DeleteBox;exports.DepthOfField=e.DepthOfField;exports.DeviceFlag=e.DeviceFlag;Object.defineProperty(exports,"DeviceUtilities",{enumerable:!0,get:()=>e.DeviceUtilities});exports.DocumentExtension=e.DocumentExtension;exports.DragControls=e.DragControls;exports.DragMode=e.DragMode;exports.DropListener=e.DropListener;exports.Duplicatable=e.Duplicatable;exports.EffectWrapper=e.EffectWrapper;exports.EmissionModule=e.EmissionModule;exports.EmphasizeOnClick=e.EmphasizeOnClick;exports.EngineLoadingView=e.EngineLoadingView;exports.EnvironmentScene=e.EnvironmentScene;exports.EventList=e.EventList;exports.EventListEvent=e.EventListEvent;exports.EventSystem=e.EventSystem;exports.EventTrigger=e.EventTrigger;exports.FieldWithDefault=e.FieldWithDefault;exports.FileReference=e.FileReference;exports.FileReferenceSerializer=e.FileReferenceSerializer;exports.FileSpawnModel=e.FileSpawnModel;exports.File_Event=e.File_Event;exports.FixedJoint=e.FixedJoint;exports.Fog=e.Fog;exports.FontStyle=e.FontStyle;exports.FrameEvent=e.FrameEvent;exports.GENERATOR=e.GENERATOR;exports.GameObject=e.GameObject;exports.Gizmos=e.Gizmos;exports.GltfExport=e.GltfExport;exports.GltfExportBox=e.GltfExportBox;exports.Gradient=e.Gradient;exports.Graphic=e.Graphic;exports.GraphicRaycaster=e.GraphicRaycaster;exports.Graphics=e.Graphics;exports.GridHelper=e.GridHelper;exports.GridLayoutGroup=e.GridLayoutGroup;exports.GroundProjectedEnv=e.GroundProjectedEnv;exports.GroupActionModel=e.GroupActionModel;exports.HideFlags=e.HideFlags;exports.HideOnStart=e.HideOnStart;exports.HingeJoint=e.HingeJoint;exports.HorizontalLayoutGroup=e.HorizontalLayoutGroup;exports.HorizontalWrapMode=e.HorizontalWrapMode;exports.HostData=e.HostData;Object.defineProperty(exports,"HoverAnimation",{enumerable:!0,get:()=>e.HoverAnimation});exports.Image=e.Image;exports.ImageReference=e.ImageReference;exports.ImageReferenceSerializer=e.ImageReferenceSerializer;exports.InheritVelocityModule=e.InheritVelocityModule;exports.Input=e.Input;exports.InputEventQueue=e.InputEventQueue;exports.InputEvents=e.InputEvents;exports.InputField=e.InputField;exports.InstanceHandle=e.InstanceHandle;exports.InstancingHandler=e.InstancingHandler;exports.InstancingUtil=e.InstancingUtil;exports.InstantiateEvent=e.InstantiateEvent;exports.InstantiateIdProvider=e.InstantiateIdProvider;exports.InstantiateOptions=e.InstantiateOptions;exports.Interactable=e.Interactable;Object.defineProperty(exports,"InternalScreenshotUtils",{enumerable:!0,get:()=>e.InternalScreenshotUtils});exports.JoinedRoomResponse=e.JoinedRoomResponse;exports.KeyEventArgs=e.KeyEventArgs;exports.Keyframe=e.Keyframe;exports.LODGroup=e.LODGroup;exports.LODModel=e.LODModel;exports.LeftRoomResponse=e.LeftRoomResponse;exports.Light=e.Light;exports.LightData=e.LightData;exports.LimitVelocityOverLifetimeModule=e.LimitVelocityOverLifetimeModule;exports.LoadingElementOptions=e.LoadingElementOptions;exports.LogStats=e.LogStats;exports.LogType=e.LogType;exports.LookAt=e.LookAt;exports.LookAtConstraint=e.LookAtConstraint;exports.MainModule=e.MainModule;exports.MarkerTrackHandler=e.MarkerTrackHandler;exports.MarkerType=e.MarkerType;exports.MaskableGraphic=e.MaskableGraphic;exports.MaterialPropertyBlock=e.MaterialPropertyBlock;Object.defineProperty(exports,"MaterialX",{enumerable:!0,get:()=>e.MaterialX});exports.Mathf=e.Mathf;exports.MeshCollider=e.MeshCollider;exports.MeshRenderer=e.MeshRenderer;exports.MinMaxCurve=e.MinMaxCurve;exports.MinMaxGradient=e.MinMaxGradient;exports.NEEDLE_ENGINE_FEATURE_FLAGS=e.NEEDLE_ENGINE_FEATURE_FLAGS;exports.NEEDLE_ENGINE_MODULES=e.MODULES;exports.NEKeyboardEvent=e.NEKeyboardEvent;exports.NEPointerEvent=e.NEPointerEvent;exports.NeedleButtonElement=e.NeedleButtonElement;exports.NeedleEngine=e.ContextRegistry;Object.defineProperty(exports,"NeedleEngineModelLoader",{enumerable:!0,get:()=>e.NeedleEngineModelLoader});exports.NeedleEngineWebComponent=e.NeedleEngineWebComponent;exports.NeedleMenu=e.NeedleMenu;exports.NeedlePatchesKey=e.NeedlePatchesKey;exports.NeedleUSDZExporter=e.USDZExporter;exports.NeedleXRController=e.NeedleXRController;exports.NeedleXRSession=e.NeedleXRSession;exports.NeedleXRSync=e.NeedleXRSync;exports.NeedleXRUtils=e.NeedleXRUtils;exports.NestedGltf=e.NestedGltf;exports.NetworkConnection=e.NetworkConnection;exports.NetworkedStreamEvents=e.NetworkedStreamEvents;exports.NetworkedStreams=e.NetworkedStreams;exports.Networking=e.Networking;exports.NewInstanceModel=e.NewInstanceModel;exports.NoiseModule=e.NoiseModule;exports.ObjectRaycaster=e.ObjectRaycaster;exports.ObjectUtils=e.ObjectUtils;exports.OffsetConstraint=e.OffsetConstraint;exports.OneEuroFilter=e.OneEuroFilter;exports.OneEuroFilterXYZ=e.OneEuroFilterXYZ;exports.OpenURL=e.OpenURL;exports.OrbitControls=e.OrbitControls;exports.Outline=e.Outline;exports.OwnershipEvent=e.OwnershipEvent;exports.OwnershipModel=e.OwnershipModel;exports.PUBLIC_KEY=e.PUBLIC_KEY;exports.Padding=e.Padding;exports.ParticleBurst=e.ParticleBurst;exports.ParticleSubEmitter=e.ParticleSubEmitter;exports.ParticleSystem=e.ParticleSystem;exports.ParticleSystemBaseBehaviour=e.ParticleSystemBaseBehaviour;exports.ParticleSystemRenderer=e.ParticleSystemRenderer;exports.ParticleSystemShapeType=e.ParticleSystemShapeType;exports.PeerHandle=e.PeerHandle;exports.PeerNetworking=e.PeerNetworking;exports.Physics=e.Physics;exports.PhysicsExtension=e.PhysicsExtension;exports.PhysicsMaterialCombine=e.PhysicsMaterialCombine;exports.PixelationEffect=e.PixelationEffect;exports.PlayAnimationOnClick=e.PlayAnimationOnClick;exports.PlayAudioOnClick=e.PlayAudioOnClick;exports.PlayableDirector=e.PlayableDirector;exports.PlayerColor=e.PlayerColor;exports.PlayerState=e.PlayerState;exports.PlayerStateEvent=e.PlayerStateEvent;exports.PlayerSync=e.PlayerSync;exports.PlayerView=e.PlayerView;exports.PlayerViewManager=e.PlayerViewManager;exports.PointerEventData=e.PointerEventData;exports.PointerType=e.PointerType;exports.PostProcessing=e.PostProcessing;exports.PostProcessingEffect=e.PostProcessingEffect;exports.PostProcessingEffectOrder=e.PostProcessingEffectOrder;exports.PostProcessingHandler=e.PostProcessingHandler;exports.PostProcessingManager=e.Volume;exports.Prefabs=e.Prefabs;exports.PreliminaryAction=e.PreliminaryAction;exports.PreliminaryTrigger=e.PreliminaryTrigger;Object.defineProperty(exports,"PreviewHelper",{enumerable:!0,get:()=>e.PreviewHelper});exports.PrimitiveType=e.PrimitiveType;exports.Progress=e.Progress;exports.PromiseAllWithErrors=e.PromiseAllWithErrors;exports.PromiseErrorResult=e.PromiseErrorResult;exports.RGBAColor=e.RGBAColor;exports.RapierPhysics=e.RapierPhysics;exports.RawImage=e.RawImage;exports.RaycastOptions=e.RaycastOptions;exports.Rect=e.Rect;exports.RectTransform=e.RectTransform;exports.ReflectionProbe=e.ReflectionProbe;exports.RegisteredAnimationInfo=e.RegisteredAnimationInfo;exports.RemoteSkybox=e.RemoteSkybox;exports.RenderTexture=e.RenderTexture;exports.RenderTextureSerializer=e.RenderTextureSerializer;exports.Renderer=e.Renderer;exports.RendererData=e.RendererData;exports.RendererLightmap=e.RendererLightmap;exports.Rigidbody=e.Rigidbody;exports.RigidbodyConstraints=e.RigidbodyConstraints;exports.RoomEvents=e.RoomEvents;exports.RotationBySpeedModule=e.RotationBySpeedModule;exports.RotationOverLifetimeModule=e.RotationOverLifetimeModule;exports.SceneLightSettings=e.SceneLightSettings;exports.SceneSwitcher=e.SceneSwitcher;exports.ScreenCapture=e.ScreenCapture;exports.ScreenSpaceAmbientOcclusion=e.ScreenSpaceAmbientOcclusion;exports.ScreenSpaceAmbientOcclusionN8=e.ScreenSpaceAmbientOcclusionN8;exports.ScrollFollow=e.ScrollFollow;exports.SeeThrough=e.SeeThrough;exports.SendQueue=e.SendQueue;exports.SerializationContext=e.SerializationContext;exports.SetActiveOnClick=e.SetActiveOnClick;exports.ShadowCatcher=e.ShadowCatcher;exports.ShapeModule=e.ShapeModule;exports.ShapeOverlapResult=e.ShapeOverlapResult;exports.SharpeningEffect=e.SharpeningEffect;exports.SignalAsset=e.SignalAsset;exports.SignalReceiver=e.SignalReceiver;exports.SignalReceiverEvent=e.SignalReceiverEvent;exports.SignalTrackHandler=e.SignalTrackHandler;exports.Size=e.Size;exports.SizeBySpeedModule=e.SizeBySpeedModule;exports.SizeOverLifetimeModule=e.SizeOverLifetimeModule;exports.SkinnedMeshRenderer=e.SkinnedMeshRenderer;exports.SmoothFollow=e.SmoothFollow;exports.SpatialGrabRaycaster=e.SpatialGrabRaycaster;exports.SpatialHtml=e.SpatialHtml;exports.SpatialTrigger=e.SpatialTrigger;exports.SpatialTriggerReceiver=e.SpatialTriggerReceiver;exports.SpectatorCamera=e.SpectatorCamera;exports.SphereCollider=e.SphereCollider;exports.SphereIntersection=e.SphereIntersection;exports.SplineContainer=e.SplineContainer;exports.SplineData=e.SplineData;Object.defineProperty(exports,"SplineUtils",{enumerable:!0,get:()=>e.SplineUtils});exports.SplineWalker=e.SplineWalker;exports.Sprite=e.Sprite;exports.SpriteData=e.SpriteData;exports.SpriteRenderer=e.SpriteRenderer;exports.SpriteSheet=e.SpriteSheet;exports.StateMachineBehaviour=e.StateMachineBehaviour;exports.StreamEndedEvent=e.StreamEndedEvent;exports.StreamReceivedEvent=e.StreamReceivedEvent;exports.SubEmitterSystem=e.SubEmitterSystem;exports.SyncedCamera=e.SyncedCamera;exports.SyncedRoom=e.SyncedRoom;exports.SyncedTransform=e.SyncedTransform;exports.TapGestureTrigger=e.TapGestureTrigger;exports.TeleportTarget=e.TeleportTarget;exports.TestRunner=e.TestRunner;exports.TestSimulateUserData=e.TestSimulateUserData;exports.Text=e.Text;exports.TextAnchor=e.TextAnchor;exports.TextBuilder=e.TextBuilder;exports.TextExtension=e.TextExtension;exports.TextureSheetAnimationModule=e.TextureSheetAnimationModule;exports.TiltShiftEffect=e.TiltShiftEffect;exports.Time=e.Time;exports.ToneMappingEffect=e.ToneMappingEffect;exports.TrackHandler=e.TrackHandler;exports.TrackType=e.TrackType;exports.TrailModule=e.TrailModule;exports.TransformData=e.TransformData;exports.TransformGizmo=e.TransformGizmo;exports.TriggerBuilder=e.TriggerBuilder;exports.TriggerModel=e.TriggerModel;exports.TypeStore=e.TypeStore;exports.UIRaycastUtils=e.UIRaycastUtils;exports.UIRootComponent=e.UIRootComponent;exports.USDDocument=e.USDDocument;exports.USDObject=e.USDObject;exports.USDWriter=e.USDWriter;exports.USDZExporter=e.USDZExporter$1;exports.USDZText=e.USDZText;exports.USDZUIExtension=e.USDZUIExtension;exports.UriSerializer=e.UriSerializer;exports.UsageMarker=e.UsageMarker;exports.UserJoinedOrLeftRoomModel=e.UserJoinedOrLeftRoomModel;exports.VERSION=e.VERSION;exports.VariantAction=e.VariantAction;exports.VelocityOverLifetimeModule=e.VelocityOverLifetimeModule;exports.VerticalLayoutGroup=e.VerticalLayoutGroup;exports.VerticalWrapMode=e.VerticalWrapMode;exports.VideoPlayer=e.VideoPlayer;Object.defineProperty(exports,"ViewBox",{enumerable:!0,get:()=>e.ViewBox});exports.ViewDevice=e.ViewDevice;exports.Vignette=e.Vignette;exports.VisibilityAction=e.VisibilityAction;exports.Voip=e.Voip;exports.Volume=e.Volume;exports.VolumeParameter=e.VolumeParameter;exports.VolumeProfile=e.VolumeProfile;exports.WaitForFrames=e.WaitForFrames;exports.WaitForPromise=e.WaitForPromise;exports.WaitForSeconds=e.WaitForSeconds;exports.Watch=e.Watch;exports.WebARCameraBackground=e.WebARCameraBackground;exports.WebARSessionRoot=e.WebARSessionRoot;exports.WebXR=e.WebXR;exports.WebXRButtonFactory=e.WebXRButtonFactory;exports.WebXRImageTracking=e.WebXRImageTracking;exports.WebXRImageTrackingModel=e.WebXRImageTrackingModel;exports.WebXRPlaneTracking=e.WebXRPlaneTracking;exports.WebXRTrackedImage=e.WebXRTrackedImage;exports.XRControllerFollow=e.XRControllerFollow;exports.XRControllerModel=e.XRControllerModel;exports.XRControllerMovement=e.XRControllerMovement;exports.XRFlag=e.XRFlag;exports.XRRig=e.XRRig;exports.XRState=e.XRState;exports.XRStateFlag=e.XRStateFlag;exports.__Ignore=e.__Ignore;exports.__internalNotifyObjectDestroyed=e.__internalNotifyObjectDestroyed;exports.activeInHierarchyFieldName=e.activeInHierarchyFieldName;exports.addAttributeChangeCallback=e.addAttributeChangeCallback;exports.addComponent=e.addComponent;exports.addCustomExtensionPlugin=e.addCustomExtensionPlugin;exports.addNewComponent=e.addNewComponent;exports.addPatch=e.addPatch;exports.apply=e.apply;exports.applyHMRChanges=e.applyHMRChanges;exports.applyPrototypeExtensions=e.applyPrototypeExtensions;exports.beginListenDestroy=e.beginListenDestroy;exports.beginListenInstantiate=e.beginListenInstantiate;exports.binaryIdentifierCasts=e.binaryIdentifierCasts;exports.build_scene_functions=e.build_scene_functions;exports.builtinComponentKeyName=e.builtinComponentKeyName;exports.calculateProgress01=e.calculateProgress01;exports.clearBalloonMessages=e.clearMessages;exports.clearOverlayMessages=e.clearMessages;exports.colorSerializer=e.colorSerializer;exports.compareAssociation=e.compareAssociation;exports.componentSerializer=e.componentSerializer;exports.copyTexture=e.copyTexture;exports.createMotion=e.createMotion;exports.debugNet=e.debugNet;exports.debugOwner=e.debugOwner;exports.decompressGpuTexture=e.decompressGpuTexture;exports.deepClone=e.deepClone;exports.delay=e.delay;exports.delayForFrames=e.delayForFrames;exports.deserializeObject=e.deserializeObject;exports.destroy=e.destroy;exports.destroyComponentInstance=e.destroyComponentInstance;exports.determineMimeTypeFromExtension=e.determineMimeTypeFromExtension;exports.disposeObjectResources=e.disposeObjectResources;exports.disposeStream=e.disposeStream;exports.editorGuidKeyName=e.editorGuidKeyName;exports.enableSpatialConsole=e.enableSpatialConsole;exports.euler=e.euler;exports.eventListSerializer=e.eventListSerializer;exports.exportAsGLTF=e.exportAsGLTF;exports.findByGuid=e.findByGuid;exports.findObjectOfType=e.findObjectOfType;exports.findObjectsOfType=e.findObjectsOfType;exports.findResourceUsers=e.findResourceUsers;exports.fitCamera=e.fitCamera;exports.fitObjectIntoVolume=e.fitObjectIntoVolume;exports.foreachComponent=e.foreachComponent;exports.foreachComponentEnumerator=e.foreachComponentEnumerator;exports.forward=e.forward;exports.generateQRCode=e.generateQRCode;exports.generateSeed=e.generateSeed;exports.getBoundingBox=e.getBoundingBox;exports.getCameraController=e.getCameraController;exports.getComponent=e.getComponent;exports.getComponentInChildren=e.getComponentInChildren;exports.getComponentInParent=e.getComponentInParent;exports.getComponents=e.getComponents;exports.getComponentsInChildren=e.getComponentsInChildren;exports.getComponentsInParent=e.getComponentsInParent;exports.getFormattedDate=e.getFormattedDate;exports.getIconElement=e.getIconElement;exports.getIconTexture=e.getIconTexture;exports.getLoader=e.getLoader;exports.getOrAddComponent=e.getOrAddComponent;exports.getParam=e.getParam;exports.getParentHierarchyPath=e.getParentHierarchyPath;exports.getPath=e.getPath;exports.getPeerOptions=e.getPeerOptions;exports.getPeerjsInstance=e.getPeerjsInstance;exports.getResourceUserCount=e.getResourceUserCount;exports.getSceneData=e.getSceneData;exports.getTempColor=e.getTempColor;exports.getTempQuaternion=e.getTempQuaternion;exports.getTempVector=e.getTempVector;exports.getUrlParams=e.getUrlParams;exports.getVisibleInCustomShadowRendering=e.getVisibleInCustomShadowRendering;exports.getWorldDirection=e.getWorldDirection;exports.getWorldEuler=e.getWorldEuler;exports.getWorldPosition=e.getWorldPosition;exports.getWorldQuaternion=e.getWorldQuaternion;exports.getWorldRotation=e.getWorldRotation;exports.getWorldScale=e.getWorldScale;exports.hasCommercialLicense=e.hasCommercialLicense;exports.hasIndieLicense=e.hasIndieLicense;exports.hasPointerEventComponent=e.hasPointerEventComponent;exports.hasProLicense=e.hasProLicense;exports.hideDebugConsole=e.hideDebugConsole;exports.imageToCanvas=e.imageToCanvas;exports.initPhysics=e.initPhysics;exports.instantiate=e.instantiate;exports.invokeLoadedImportPluginHooks=e.invokeLoadedImportPluginHooks;exports.invokeXRSessionEnd=e.invokeXRSessionEnd;exports.invokeXRSessionStart=e.invokeXRSessionStart;exports.isActiveInHierarchy=e.isActiveInHierarchy;exports.isActiveSelf=e.isActiveSelf;exports.isAndroidDevice=e.isAndroidDevice;exports.isAnimationAction=e.isAnimationAction;exports.isComponent=e.isComponent;exports.isDebugMode=e.isDebugMode;exports.isDesktop=e.isDesktop;exports.isDestroyed=e.isDestroyed;exports.isDevEnvironment=e.isDevEnvironment;exports.isDisposed=e.isDisposed;exports.isExporting=e.isExporting;exports.isGLTFModel=e.isGLTFModel;exports.isHostedOnGlitch=e.isHostedOnGlitch;exports.isHotReloadEnabled=e.isHotReloadEnabled;exports.isHotReloading=e.isHotReloading;exports.isIPad=e.isIPad;exports.isIconElement=e.isIconElement;exports.isLocalNetwork=e.isLocalNetwork;exports.isMacOS=e.isMacOS;exports.isMobileDevice=e.isMobileDevice;exports.isMozillaXR=e.isMozillaXR;exports.isQuest=e.isQuest;exports.isResourceTrackingEnabled=e.isResourceTrackingEnabled;exports.isSafari=e.isSafari;exports.isUsingInstancing=e.isUsingInstancing;exports.isiOS=e.isiOS;exports.isiPad=e.isiPad;exports.loadAsset=e.loadAsset;exports.loadPMREM=e.loadPMREM;exports.loadSync=e.loadSync;exports.logHierarchy=e.logHierarchy;exports.lookAtInverse=e.lookAtInverse;exports.lookAtObject=e.lookAtObject;exports.lookAtScreenPoint=e.lookAtScreenPoint;exports.makeId=e.makeId;exports.makeIdFromRandomWords=e.makeIdFromRandomWords;exports.makeNameSafeForUSD=e.makeNameSafe;exports.markAsInstancedRendered=e.markAsInstancedRendered;exports.microphonePermissionsGranted=e.microphonePermissionsGranted;exports.nameof=e.nameof;exports.nameofFactory=e.nameofFactory;exports.needle=e.needle;exports.objectSerializer=e.objectSerializer;exports.offBeforeXRSession=e.offBeforeXRSession;exports.offXRSessionEnd=e.offXRSessionEnd;exports.offXRSessionStart=e.offXRSessionStart;exports.onAfterRender=e.onAfterRender;exports.onBeforeRender=e.onBeforeRender;exports.onBeforeXRSession=e.onBeforeXRSession;exports.onClear=e.onClear;exports.onDestroy=e.onDestroy;exports.onInitialized=e.onInitialized;exports.onStart=e.onStart;exports.onSyncDestroy=e.onSyncDestroy;exports.onSyncInstantiate=e.onSyncInstantiate;exports.onUpdate=e.onUpdate;exports.onXRSessionEnd=e.onXRSessionEnd;exports.onXRSessionStart=e.onXRSessionStart;exports.parseSync=e.parseSync;exports.placeOnSurface=e.placeOnSurface;exports.postprocessFBXMaterials=e.postprocessFBXMaterials;exports.prefix=e.prefix;exports.pushState=e.pushState;exports.randomNumber=e.randomNumber;exports.registerBinaryType=e.registerBinaryType;exports.registerComponent=e.registerComponent;exports.registerComponentExtension=e.registerComponentExtension;exports.registerCustomEffectType=e.registerCustomEffectType;exports.registerExportExtensions=e.registerExportExtensions;exports.registerExtensions=e.registerExtensions;exports.registerHotReloadType=e.registerHotReloadType;exports.registerLoader=e.registerLoader;exports.registerPrefabProvider=e.registerPrefabProvider;exports.registerPrototypeExtensions=e.registerPrototypeExtensions;exports.registerType=e.registerType;exports.relativePathPrefix=e.relativePathPrefix;exports.removeAttributeChangeCallback=e.removeAttributeChangeCallback;exports.removeComponent=e.removeComponent;exports.removeCustomImportExtensionType=e.removeCustomImportExtensionType;exports.removePatch=e.removePatch;exports.resolveUrl=e.resolveUrl;exports.sanitizeString=e.sanitizeString;exports.saveImage=e.saveImage;exports.screenshot=e.screenshot;exports.screenshot2=e.screenshot2;exports.sendDestroyed=e.sendDestroyed;exports.serializable=e.serializable;exports.serializeObject=e.serializeObject;exports.serializeable=e.serializeable;exports.setActive=e.setActive;exports.setAllowBalloonMessages=e.setAllowBalloonMessages;exports.setAllowOverlayMessages=e.setAllowOverlayMessages;exports.setAutoFitEnabled=e.setAutoFitEnabled;exports.setCameraController=e.setCameraController;exports.setDestroyed=e.setDestroyed;exports.setDevEnvironment=e.setDevEnvironment;exports.setDisposable=e.setDisposable;exports.setDontDestroy=e.setDontDestroy;exports.setOrAddParamsToUrl=e.setOrAddParamsToUrl;exports.setParam=e.setParam;exports.setParamWithoutReload=e.setParamWithoutReload;exports.setPeerOptions=e.setPeerOptions;exports.setResourceTrackingEnabled=e.setResourceTrackingEnabled;exports.setState=e.setState;exports.setVisibleInCustomShadowRendering=e.setVisibleInCustomShadowRendering;exports.setWorldEuler=e.setWorldEuler;exports.setWorldPosition=e.setWorldPosition;exports.setWorldPositionXYZ=e.setWorldPositionXYZ;exports.setWorldQuaternion=e.setWorldQuaternion;exports.setWorldQuaternionXYZW=e.setWorldQuaternionXYZW;exports.setWorldRotation=e.setWorldRotation;exports.setWorldRotationXYZ=e.setWorldRotationXYZ;exports.setWorldScale=e.setWorldScale;exports.showBalloonError=e.showBalloonError;exports.showBalloonMessage=e.showBalloonMessage;exports.showBalloonWarning=e.showBalloonWarning;exports.showDebugConsole=e.showDebugConsole;exports.slerp=e.slerp;exports.syncDestroy=e.syncDestroy;exports.syncField=e.syncField;exports.syncInstantiate=e.syncInstantiate;exports.textureToCanvas=e.textureToCanvas;exports.toSourceId=e.toSourceId;exports.tryCastBinary=e.tryCastBinary;exports.tryDetermineMimetypeFromBinary=e.tryDetermineMimetypeFromBinary;exports.tryDetermineMimetypeFromURL=e.tryDetermineMimetypeFromURL;exports.tryFindObject=e.tryFindObject;exports.tryGetGuid=e.tryGetGuid;exports.unregisterHotReloadType=e.unregisterHotReloadType;exports.unregisterPrefabProvider=e.unregisterPrefabProvider;exports.unwatchWrite=e.unwatchWrite;exports.useForAutoFit=e.useForAutoFit;exports.validate=e.validate;exports.watchWrite=e.watchWrite;exports.NEEDLE_progressive=a.NEEDLE_progressive;
|
package/lib/needle-engine.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "5.1.0-canary.
|
|
3
|
+
"version": "5.1.0-canary.be2bf97",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
|
|
5
5
|
"main": "dist/needle-engine.min.js",
|
|
6
6
|
"exports": {
|
|
@@ -154,7 +154,7 @@ function collectTypeAliases(_key, node, nodePath, aliases) {
|
|
|
154
154
|
for (const [childKey, childNode] of Array.from(node.children.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
155
155
|
const childAlias = typeAliasName(`${nodePath}/${childKey}`);
|
|
156
156
|
const childSummary = nodeSummary(childNode);
|
|
157
|
-
lines.push(` /**
|
|
157
|
+
lines.push(` /** ${childSummary} */`);
|
|
158
158
|
lines.push(` ${propKey(childKey)}: ${childAlias};`);
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -172,6 +172,7 @@ function collectTypeAliases(_key, node, nodePath, aliases) {
|
|
|
172
172
|
*/
|
|
173
173
|
/** @param {string} threeType @returns {string} */
|
|
174
174
|
function nodeEmoji(threeType) {
|
|
175
|
+
if (threeType.includes("Scene")) return "🎬";
|
|
175
176
|
if (threeType.includes("SkinnedMesh")) return "🦴";
|
|
176
177
|
if (threeType.includes("Mesh")) return "⊞";
|
|
177
178
|
if (threeType.includes("PerspectiveCamera") || threeType.includes("OrthographicCamera") || threeType.includes("Camera")) return "👁";
|
|
@@ -221,9 +222,8 @@ export function generateDts(entries) {
|
|
|
221
222
|
`// Auto-generated by @needle-tools/engine — do not edit`,
|
|
222
223
|
`// Regenerated on each vite dev-server start and GLB change.`,
|
|
223
224
|
`// Augments the base "needle-bindings" declaration in @needle-tools/engine.`,
|
|
224
|
-
|
|
225
|
-
`import type * as
|
|
226
|
-
`import type * as THREE from "../../node_modules/@types/three/index.d.ts";`,
|
|
225
|
+
`import type * as NE from "../../lib/needle-engine.js";`,
|
|
226
|
+
`import type * as THREE from "three";`,
|
|
227
227
|
];
|
|
228
228
|
|
|
229
229
|
/** @type {string[]} */
|
|
@@ -271,7 +271,7 @@ export function generateDts(entries) {
|
|
|
271
271
|
for (const [rootKey, rootNode] of Array.from(roots.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
272
272
|
const alias = typeAliasName(`${glbKey}/${rootKey}`);
|
|
273
273
|
const summary = nodeSummary(rootNode);
|
|
274
|
-
interfaceLines.push(` /**
|
|
274
|
+
interfaceLines.push(` /** ${summary} */`);
|
|
275
275
|
interfaceLines.push(` ${propKey(rootKey)}: ${alias};`);
|
|
276
276
|
}
|
|
277
277
|
interfaceLines.push(` };`);
|
|
@@ -152,6 +152,15 @@ export function extractComponentBindings(json) {
|
|
|
152
152
|
const nodes = /** @type {Array<Record<string, unknown>>} */ (Array.isArray(json.nodes) ? json.nodes : []);
|
|
153
153
|
const cameras = /** @type {Array<Record<string, unknown>>} */ (Array.isArray(json.cameras) ? json.cameras : []);
|
|
154
154
|
const meshes = /** @type {Array<Record<string, unknown>>} */ (Array.isArray(json.meshes) ? json.meshes : []);
|
|
155
|
+
|
|
156
|
+
// Collect scene root node indices — these map to THREE.Scene at runtime
|
|
157
|
+
const scenes = /** @type {Array<Record<string, unknown>>} */ (Array.isArray(json.scenes) ? json.scenes : []);
|
|
158
|
+
/** @type {Set<number>} */
|
|
159
|
+
const sceneRootNodeIndices = new Set();
|
|
160
|
+
for (const scene of scenes) {
|
|
161
|
+
const sceneNodes = Array.isArray(scene.nodes) ? /** @type {number[]} */ (scene.nodes) : [];
|
|
162
|
+
for (const idx of sceneNodes) sceneRootNodeIndices.add(idx);
|
|
163
|
+
}
|
|
155
164
|
/** @type {Array<{nodeName: string, nodePath: string, componentName: string, fields: Record<string, unknown>, nodeThreeType: string}>} */
|
|
156
165
|
const results = [];
|
|
157
166
|
/** @type {Record<string, number>} */
|
|
@@ -167,7 +176,9 @@ export function extractComponentBindings(json) {
|
|
|
167
176
|
if (!nodeName) continue;
|
|
168
177
|
|
|
169
178
|
const nodePath = pathMap.get(i) ?? nodeName;
|
|
170
|
-
const nodeThreeType =
|
|
179
|
+
const nodeThreeType = sceneRootNodeIndices.has(i)
|
|
180
|
+
? `import("three").Scene`
|
|
181
|
+
: inferNodeThreeType(/** @type {Record<string, unknown>} */ (node), cameras, meshes);
|
|
171
182
|
const ext = node.extensions?.[NEEDLE_COMPONENTS_EXTENSION];
|
|
172
183
|
|
|
173
184
|
if (!ext || typeof ext !== "object") {
|