@needle-tools/engine 4.17.0-alpha → 4.17.0-next.191a8c1
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-lfK3bN2F.min.js → needle-engine.bundle-1K4OXMEl.min.js} +1 -1
- package/dist/{needle-engine.bundle-DfKc7T9V.js → needle-engine.bundle-Bs6RukiW.js} +2 -2
- package/dist/{needle-engine.bundle-Cn3cV2Xd.umd.cjs → needle-engine.bundle-CNKc71CA.umd.cjs} +3 -3
- package/dist/needle-engine.d.ts +15 -15
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/package.json +3 -2
|
@@ -141,7 +141,7 @@ void main(){
|
|
|
141
141
|
#__vconsole .vc-mask {
|
|
142
142
|
overflow: hidden;
|
|
143
143
|
}
|
|
144
|
-
`,Or?.prepend(i),o===!0&&a_()<=0&&j_(),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.":"")),vc=!1,ui=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function tk(){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"),ui?.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 yg="padding: 10px; font-family: monospace;",B_="margin-bottom: 10px;",kr="margin-bottom: 10px; margin-top: 15px;",ik="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",F_="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",nk=F_,ok=F_+" word-break: break-all;";function Gn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${ik}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${nk}'>${i.label}</td><td style='${ok}'>${n}</td></tr>`}return t+="</tbody></table>",t}function U_(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function sk(){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='${yg}'>`;const i=gk();t+=`<h3 style='${B_}'>Device: ${i}</h3>`,t+=Gn([{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+=Gn(n,!1)),t+="</div>",t+=`<div style='${yg} margin-top: 20px;'>`,t+=`<h3 style='${B_}'>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:U_()}];t+=Gn(l,!1),t+="</div>",e(t)}),o}function rk(){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='${yg}'>`;const i=ak();i.length>0&&(t+=`<h3 style='${kr}'>General GPU Info</h3>`,t+=Gn(i,!1));const n=ck();n.length>0&&(t+=`<h3 style='${kr}'>WebGL</h3>`,t+=Gn(n,!1));const s=hk();s.length>0&&(t+=`<h3 style='${kr}'>WebGL 2 Features</h3>`,t+=Gn(s,!1));const r=dk();r.length>0&&(t+=`<h3 style='${kr}'>WebGL Limits</h3>`,t+=Gn(r,!1));const a=uk();a.length>0&&(t+=`<h3 style='${kr}'>Texture Formats</h3>`,t+=Gn(a,!1));const l=await pk();if(l.length>0&&(t+=`<h3 style='${kr}'>WebGPU</h3>`,t+=Gn(l,!1)),I.isSafari()){const c=mk();c.length>0&&(t+=`<h3 style='${kr}'>Safari GPU Info</h3>`,t+=Gn(c,!1))}t+="</div>",e(t)}),o}function ak(){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=z_();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=lk(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 lk(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 ck(){const o=[],e=z_();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:U_()})),o}function hk(){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 dk(){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 uk(){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 pk(){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 z_(){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 mk(){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 gk(){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 fk(){return document.querySelector("#__vconsole .vc-switch")||null}function yk(){return document.querySelector("#__vconsole")||null}const N_=w("debugdefines");Cs('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Cs('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Cs('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Cs('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Cs('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.17.0-alpha";'),Cs('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Cs('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Mar 19 2026 11:01:22 GMT+0000 (Coordinated Universal Time)";'),Cs('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const Ti="4.17.0-alpha",Va="undefined",wc="Thu Mar 19 2026 11:01:22 GMT+0000 (Coordinated Universal Time)";N_&&console.log(`Engine version: ${Ti} (generator: ${Va})
|
|
144
|
+
`,Or?.prepend(i),o===!0&&a_()<=0&&j_(),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.":"")),vc=!1,ui=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function tk(){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"),ui?.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 yg="padding: 10px; font-family: monospace;",B_="margin-bottom: 10px;",kr="margin-bottom: 10px; margin-top: 15px;",ik="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",F_="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",nk=F_,ok=F_+" word-break: break-all;";function Gn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${ik}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${nk}'>${i.label}</td><td style='${ok}'>${n}</td></tr>`}return t+="</tbody></table>",t}function U_(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function sk(){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='${yg}'>`;const i=gk();t+=`<h3 style='${B_}'>Device: ${i}</h3>`,t+=Gn([{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+=Gn(n,!1)),t+="</div>",t+=`<div style='${yg} margin-top: 20px;'>`,t+=`<h3 style='${B_}'>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:U_()}];t+=Gn(l,!1),t+="</div>",e(t)}),o}function rk(){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='${yg}'>`;const i=ak();i.length>0&&(t+=`<h3 style='${kr}'>General GPU Info</h3>`,t+=Gn(i,!1));const n=ck();n.length>0&&(t+=`<h3 style='${kr}'>WebGL</h3>`,t+=Gn(n,!1));const s=hk();s.length>0&&(t+=`<h3 style='${kr}'>WebGL 2 Features</h3>`,t+=Gn(s,!1));const r=dk();r.length>0&&(t+=`<h3 style='${kr}'>WebGL Limits</h3>`,t+=Gn(r,!1));const a=uk();a.length>0&&(t+=`<h3 style='${kr}'>Texture Formats</h3>`,t+=Gn(a,!1));const l=await pk();if(l.length>0&&(t+=`<h3 style='${kr}'>WebGPU</h3>`,t+=Gn(l,!1)),I.isSafari()){const c=mk();c.length>0&&(t+=`<h3 style='${kr}'>Safari GPU Info</h3>`,t+=Gn(c,!1))}t+="</div>",e(t)}),o}function ak(){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=z_();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=lk(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 lk(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 ck(){const o=[],e=z_();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:U_()})),o}function hk(){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 dk(){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 uk(){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 pk(){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 z_(){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 mk(){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 gk(){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 fk(){return document.querySelector("#__vconsole .vc-switch")||null}function yk(){return document.querySelector("#__vconsole")||null}const N_=w("debugdefines");Cs('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Cs('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Cs('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Cs('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Cs('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.17.0-alpha";'),Cs('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Cs('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Mar 20 2026 06:33:51 GMT+0000 (Coordinated Universal Time)";'),Cs('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const Ti="4.17.0-alpha",Va="undefined",wc="Fri Mar 20 2026 06:33:51 GMT+0000 (Coordinated Universal Time)";N_&&console.log(`Engine version: ${Ti} (generator: ${Va})
|
|
145
145
|
Project built at ${wc}`);const Ss=NEEDLE_PUBLIC_KEY,qn="needle_isActiveInHierarchy",Mr="builtin_components",xc="needle_editor_guid";function Cs(o){try{(0,eval)(o)}catch(e){N_&&console.error(e)}}let W_,V_=null;function Cn(){return W_}function bg(o){if(o==null){console.warn("Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.");return}V_!==o&&(V_=o,W_=new o)}function bk(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 $_(o){const e=o;return!!(e.parser&&e.parser.json)}var Gd=(o=>(o[o.None=0]="None",o[o.DontExport=1]="DontExport",o))(Gd||{});const H_=Symbol("component-name");function _g(o){return o&&o.isComponent}const _k=Symbol("object"),vg=new Ei(()=>new b,20);class G_{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return vg.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return vg.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return vg.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 q_{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 X_{object;collider;constructor(e,t){this.object=e,this.collider=t}}class xm{constructor(e){this.context=e,this.root.style.cssText=`
|
|
146
146
|
position: absolute;
|
|
147
147
|
width: 1px; height: 1px;
|
|
@@ -1988,9 +1988,9 @@ Ro('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUIL
|
|
|
1988
1988
|
Ro('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');
|
|
1989
1989
|
Ro('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.17.0-alpha";');
|
|
1990
1990
|
Ro('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
|
|
1991
|
-
Ro('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "
|
|
1991
|
+
Ro('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Mar 20 2026 06:33:51 GMT+0000 (Coordinated Universal Time)";');
|
|
1992
1992
|
Ro('globalThis["__NEEDLE_PUBLIC_KEY__"] = "' + NEEDLE_PUBLIC_KEY + '";');
|
|
1993
|
-
const qi = "4.17.0-alpha", Tc = "undefined", zd = "
|
|
1993
|
+
const qi = "4.17.0-alpha", Tc = "undefined", zd = "Fri Mar 20 2026 06:33:51 GMT+0000 (Coordinated Universal Time)";
|
|
1994
1994
|
n0 && console.log(`Engine version: ${qi} (generator: ${Tc})
|
|
1995
1995
|
Project built at ${zd}`);
|
|
1996
1996
|
const gr = NEEDLE_PUBLIC_KEY, vs = "needle_isActiveInHierarchy", da = "builtin_components", dd = "needle_editor_guid";
|
package/dist/{needle-engine.bundle-Cn3cV2Xd.umd.cjs → needle-engine.bundle-CNKc71CA.umd.cjs}
RENAMED
|
@@ -141,7 +141,7 @@ void main(){
|
|
|
141
141
|
#__vconsole .vc-mask {
|
|
142
142
|
overflow: hidden;
|
|
143
143
|
}
|
|
144
|
-
`,Io?.prepend(i),s===!0&&rv()<=0&&Cv(),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.":"")),bl=!1,Yt=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function ZS(){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"),Yt?.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 Ip="padding: 10px; font-family: monospace;",o_="margin-bottom: 10px;",Lo="margin-bottom: 10px; margin-top: 15px;",JS="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",Pv="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",eC=Pv,tC=Pv+" word-break: break-all;";function Mn(s,e=!1){e&&s.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${JS}'>`;t+="<tbody>";for(const i of s){const n=typeof i.value=="boolean"?i.value?"✅":"❌":i.value;t+=`<tr><td style='${eC}'>${i.label}</td><td style='${tC}'>${n}</td></tr>`}return t+="</tbody></table>",t}function Ov(){try{if(document.createElement("canvas").getContext("webgl2"))return"✅"}catch{}return"❌"}function iC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("device-utilities","📱 Device Info");return s.on("renderTab",function(e){let t=`<div style='${Ip}'>`;const i=uC();t+=`<h3 style='${o_}'>Device: ${i}</h3>`,t+=Mn([{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+=Mn(n,!1)),t+="</div>",t+=`<div style='${Ip} margin-top: 20px;'>`,t+=`<h3 style='${o_}'>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:Ov()}];t+=Mn(l,!1),t+="</div>",e(t)}),s}function nC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("graphics-info","🎨 Graphics Info");return s.on("renderTab",async function(e){let t=`<div style='${Ip}'>`;const i=sC();i.length>0&&(t+=`<h3 style='${Lo}'>General GPU Info</h3>`,t+=Mn(i,!1));const n=rC();n.length>0&&(t+=`<h3 style='${Lo}'>WebGL</h3>`,t+=Mn(n,!1));const o=aC();o.length>0&&(t+=`<h3 style='${Lo}'>WebGL 2 Features</h3>`,t+=Mn(o,!1));const r=lC();r.length>0&&(t+=`<h3 style='${Lo}'>WebGL Limits</h3>`,t+=Mn(r,!1));const a=cC();a.length>0&&(t+=`<h3 style='${Lo}'>Texture Formats</h3>`,t+=Mn(a,!1));const l=await hC();if(l.length>0&&(t+=`<h3 style='${Lo}'>WebGPU</h3>`,t+=Mn(l,!1)),exports.DeviceUtilities.isSafari()){const h=dC();h.length>0&&(t+=`<h3 style='${Lo}'>Safari GPU Info</h3>`,t+=Mn(h,!1))}t+="</div>",e(t)}),s}function sC(){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=Mv();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=oC(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 oC(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 rC(){const s=[],e=Mv();return e&&(s.push({label:"📊 WebGL Version",value:e.version}),s.push({label:"🎮 WebGL 2 Available",value:Ov()})),s}function aC(){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 cC(){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 hC(){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 Mv(){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 dC(){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 uC(){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 fC(){const s=document.querySelector("#__vconsole .vc-switch");return s||null}function pC(){const s=document.querySelector("#__vconsole");return s||null}const kv=x("debugdefines");go('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');go('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');go('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');go('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');go('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.17.0-alpha";');go('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');go('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Mar 19 2026 11:01:22 GMT+0000 (Coordinated Universal Time)";');go('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const pi="4.17.0-alpha",Ea="undefined",mc="Thu Mar 19 2026 11:01:22 GMT+0000 (Coordinated Universal Time)";kv&&console.log(`Engine version: ${pi} (generator: ${Ea})
|
|
144
|
+
`,Io?.prepend(i),s===!0&&rv()<=0&&Cv(),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.":"")),bl=!1,Yt=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function ZS(){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"),Yt?.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 Ip="padding: 10px; font-family: monospace;",o_="margin-bottom: 10px;",Lo="margin-bottom: 10px; margin-top: 15px;",JS="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",Pv="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",eC=Pv,tC=Pv+" word-break: break-all;";function Mn(s,e=!1){e&&s.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${JS}'>`;t+="<tbody>";for(const i of s){const n=typeof i.value=="boolean"?i.value?"✅":"❌":i.value;t+=`<tr><td style='${eC}'>${i.label}</td><td style='${tC}'>${n}</td></tr>`}return t+="</tbody></table>",t}function Ov(){try{if(document.createElement("canvas").getContext("webgl2"))return"✅"}catch{}return"❌"}function iC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("device-utilities","📱 Device Info");return s.on("renderTab",function(e){let t=`<div style='${Ip}'>`;const i=uC();t+=`<h3 style='${o_}'>Device: ${i}</h3>`,t+=Mn([{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+=Mn(n,!1)),t+="</div>",t+=`<div style='${Ip} margin-top: 20px;'>`,t+=`<h3 style='${o_}'>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:Ov()}];t+=Mn(l,!1),t+="</div>",e(t)}),s}function nC(){if(!globalThis.VConsole)return;const s=new VConsole.VConsolePlugin("graphics-info","🎨 Graphics Info");return s.on("renderTab",async function(e){let t=`<div style='${Ip}'>`;const i=sC();i.length>0&&(t+=`<h3 style='${Lo}'>General GPU Info</h3>`,t+=Mn(i,!1));const n=rC();n.length>0&&(t+=`<h3 style='${Lo}'>WebGL</h3>`,t+=Mn(n,!1));const o=aC();o.length>0&&(t+=`<h3 style='${Lo}'>WebGL 2 Features</h3>`,t+=Mn(o,!1));const r=lC();r.length>0&&(t+=`<h3 style='${Lo}'>WebGL Limits</h3>`,t+=Mn(r,!1));const a=cC();a.length>0&&(t+=`<h3 style='${Lo}'>Texture Formats</h3>`,t+=Mn(a,!1));const l=await hC();if(l.length>0&&(t+=`<h3 style='${Lo}'>WebGPU</h3>`,t+=Mn(l,!1)),exports.DeviceUtilities.isSafari()){const h=dC();h.length>0&&(t+=`<h3 style='${Lo}'>Safari GPU Info</h3>`,t+=Mn(h,!1))}t+="</div>",e(t)}),s}function sC(){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=Mv();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=oC(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 oC(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 rC(){const s=[],e=Mv();return e&&(s.push({label:"📊 WebGL Version",value:e.version}),s.push({label:"🎮 WebGL 2 Available",value:Ov()})),s}function aC(){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 cC(){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 hC(){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 Mv(){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 dC(){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 uC(){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 fC(){const s=document.querySelector("#__vconsole .vc-switch");return s||null}function pC(){const s=document.querySelector("#__vconsole");return s||null}const kv=x("debugdefines");go('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";');go('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');go('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');go('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');go('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.17.0-alpha";');go('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');go('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Fri Mar 20 2026 06:33:51 GMT+0000 (Coordinated Universal Time)";');go('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const pi="4.17.0-alpha",Ea="undefined",mc="Fri Mar 20 2026 06:33:51 GMT+0000 (Coordinated Universal Time)";kv&&console.log(`Engine version: ${pi} (generator: ${Ea})
|
|
145
145
|
Project built at ${mc}`);const io=NEEDLE_PUBLIC_KEY,In="needle_isActiveInHierarchy",Ho="builtin_components",Zl="needle_editor_guid";function go(s){try{(0,eval)(s)}catch(e){kv&&console.error(e)}}let Ev,r_=null;function hn(){return Ev}function Nm(s){if(s==null){console.warn("Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.");return}r_!==s&&(r_=s,Ev=new s)}function mC(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 Rv(s){const e=s;return!!(e.parser&&e.parser.json)}var du=(s=>(s[s.None=0]="None",s[s.DontExport=1]="DontExport",s))(du||{});const Tv=Symbol("component-name");function Vm(s){return s&&s.isComponent}const gC=Symbol("object"),Of=new gi(()=>new c.Vector3,20);class Av{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return Of.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return Of.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return Of.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 Dv{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 Iv{object;collider;constructor(e,t){this.object=e,this.collider=t}}class Fd{constructor(e){this.context=e,this.root.style.cssText=`
|
|
146
146
|
position: absolute;
|
|
147
147
|
width: 1px; height: 1px;
|
|
@@ -173,7 +173,7 @@ See https://engine.needle.tools/docs/scripting.html#special-lifecycle-hooks for
|
|
|
173
173
|
`+Oi):console.debug("Connected to networking backend",Oi),n(!0),this.onSendQueued(rn.OnConnection)}).onClose(h=>{this._connectingToWebsocketPromise=null,this.connected=!1,this._isInRoom=!1,n(!1);let d="Websocket connection closed...";Oi?.includes("/socket")||(d+=' Do you perhaps mean to connect to "/socket"?'),console.error(d)}).onError(h=>{console.error("Websocket connection failed..."),n(!1),ei.sendEvent(this.context,"networking",{event:"connection_error"})}).onRetry(()=>{console.log("Retry connecting to networking websocket")}).build();l.addEventListener(o.WebsocketEvent.message,(h,d)=>{this.onMessage(h,d)})})}onMessage(e,t){const i=t.data;try{if(typeof i!="string"){i.size&&this.handleIncomingBinaryMessage(i);return}const n=JSON.parse(i);if(Array.isArray(n))for(const o of n)this.handleIncomingStringMessage(o);else this.handleIncomingStringMessage(n);return}catch(n){Xt&&i==="pong"?console.log("<<",i):A()&&console.error("Failed to parse message",n)}}async handleIncomingBinaryMessage(e){Ih&&console.log("<< bin",this.context.time.frame);const t=await e.arrayBuffer();var i=new Uint8Array(t);const n=new ae.ByteBuffer(i),o=n.getBufferIdentifier(),r=this._listenersBinary[o],a=Nv(n),l=Vv(a);if(l&&typeof l=="string"&&(this._state[l]=a),!r)return;const h=a??n;for(const d of r)d(h)}handleIncomingStringMessage(e){if(Xt&&console.log("<<",e.key??e),e.key)switch(e.key){case"connection-start-info":if(e.data){const r=e.data;r&&(console.assert(r.id!==void 0&&r.id!==null&&r.id.length>0,"server did not send connection id",r.id),console.debug("Your id is: "+r.id,this.context.alias??""),this._connectionId=r.id,ei.sendEvent(this.context,"networking",{event:"connected"}))}else console.warn("Expected connection id in "+e.key);break;case"joined-room":if(Xt&&console.log(e),e){this._isInRoom=!0;const r=e;this._currentRoomName=r.room,this._currentRoomViewId=r.viewId,this._currentRoomAllowEditing=r.allowEditing??!0,this._currentInRoom.length=0,this._currentInRoom.push(...r.inRoom),(Ih||A())&&console.debug("Joined Needle Engine Room: "+r.room);const a=new URL(window.location.href);a.searchParams.has("room")&&a.searchParams.delete("room"),a.searchParams.set("view",this._currentRoomViewId),console.debug(`Room view id: ${this._currentRoomViewId}
|
|
174
174
|
${a.href}`)}this.onSendQueued(rn.OnRoomJoin),ei.sendEvent(this.context,"networking",{event:"joined_room",room:this._currentRoomName});break;case"left-room":const n=e;n.room===this.currentRoomName&&(this._isInRoom=!1,this._currentRoomName=null,this._currentRoomAllowEditing=!0,this._currentInRoom.length=0,(Ih||A())&&console.debug("Left Needle Engine Room: "+n.room)),ei.sendEvent(this.context,"networking",{event:"left_room",room:n.room});break;case"user-joined-room":if(e.data){const r=e.data;this._currentInRoom.push(r.userId),Xt&&console.log(r.userId+" joined","now in room:",this._currentInRoom)}break;case"user-left-room":if(e.data){const r=e.data,a=this._currentInRoom.indexOf(r.userId);a>=0&&(Xt&&console.log(r.userId+" left","now in room:",this._currentInRoom),this._currentInRoom.splice(a,1)),r.userId===this.connectionId&&console.log("you left the room")}break;case"all-room-state-deleted":Xt&&console.log("RECEIVED all-room-state-deleted"),this._state={};break;case"ping":case"pong":const o=e.data?.time;o&&(this._currentDelay=this.context.time.time-o),Xt&&console.log(`Current latency: ${(this._currentDelay*1e3).toFixed()} ms`,"Clients in room: "+this._currentInRoom?.length);break}const t=e.data;t&&(this._state[t.guid]=t);let i=this._listeners[e.key];if(i){i=[...i];for(const n of i)try{n(e.data)}catch(o){console.error('Error invoking callback for "'+e.key+'"',o)}}}toMessage(e,t){return{key:e,data:t}}sendWithWebsocket(e,t,i=rn.OnRoomJoin){if(!this._ws){const o=this._waitingForSocket[i]||[];o.push(()=>this.sendWithWebsocket(e,t,i)),this._waitingForSocket[i]=o;return}const n=JSON.stringify(this.toMessage(e,t));Xt&&console.log(">>",e),this._ws.send(n)}onSendQueued(e){const t=this._waitingForSocket[e];if(t){for(const i of t)i();t.length=0}}}const Jl=x("debugwebxr");class Mf{controllerStates=[];userId;context;userStateEvtName;constructor(e,t){this.userId=e,this.context=t,this.userStateEvtName="xr-sync-user-state-"+e,this.context.connection.beginListen(this.userStateEvtName,this.onReceivedControllerState)}dispose(){this.context.connection.stopListen(this.userStateEvtName,this.onReceivedControllerState)}onReceivedControllerState=e=>{Jl&&console.log(`XRSync: Received change for ${this.userId}: ${e.type} ${e.handedness}; tracked=${e.isTracking}`);let t=!1;for(let i=0;i<this.controllerStates.length;i++)if(this.controllerStates[i].index===e.index){this.controllerStates[i]=e,t=!0;break}t||this.controllerStates.push(e)};update(e){if(this.context.connection.isConnected!=!1){for(let t=this.controllerStates.length-1;t>=0;t--){const i=this.controllerStates[t];let n=!1;for(let o=0;o<e.controllers.length;o++)e.controllers[o].index===i.index&&(n=!0);n||(Jl&&console.log(`XRSync: ${i.type} ${i.handedness} removed`,i.index),this.controllerStates.splice(t,1),this.sendControllerRemoved(i))}for(const t of e.controllers)this.updateControllerStates(t)}}onExitXR(e){for(const t of this.controllerStates)this.sendControllerRemoved(t);this.controllerStates.length=0}sendControllerRemoved(e){e.isTracking=!1,e.guid="",this.context.connection.send(this.userStateEvtName,e),this.context.connection.sendDeleteRemoteState(e.guid)}updateControllerStates(e){const t=this.controllerStates.find(i=>i.index===e.index);if(t){let i=!1;i||=t.isTracking!=e.isTracking,i&&(t.isTracking=e.isTracking,this.context.connection.send(this.userStateEvtName,t))}else{const i={guid:this.userId+"-"+e.index,isTracking:e.isTracking,handedness:e.side,index:e.index,type:e.hand?"hand":"controller"};this.controllerStates.push(i),this.context.connection.send(this.userStateEvtName,i),Jl&&console.log(`XRSync: ${i.type} ${i.handedness} added`,i.index)}}}class Xv{hasState(e){return e?this._states.has(e):!1}isTracking(e,t){if(!e)return;const i=this._states.get(e);return i?i.controllerStates.find(o=>o.handedness===t)?.isTracking||!1:void 0}getDeviceType(e,t){if(!e)return;const i=this._states.get(e);return i?i.controllerStates.find(o=>o.handedness===t)?.type||"unknown":void 0}context;constructor(e){this.context=e,this.context.connection.beginListen(K.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(K.LeftRoom,this.onLeftRoom),this.context.connection.beginListen(K.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.beginListen(K.UserLeftRoom,this.onOtherUserLeftRoom)}destroy(){this.context.connection.stopListen(K.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(K.LeftRoom,this.onLeftRoom),this.context.connection.stopListen(K.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.stopListen(K.UserLeftRoom,this.onOtherUserLeftRoom)}onJoinedRoom=()=>{if(this.context.connection.connectionId){this._states.has(this.context.connection.connectionId)||(Jl&&console.log("XRSync: Local user joined room",this.context.connection.connectionId),this._states.set(this.context.connection.connectionId,new Mf(this.context.connection.connectionId,this.context)));for(const e of this.context.connection.usersInRoom())this._states.has(e)||this._states.set(e,new Mf(e,this.context))}};onLeftRoom=()=>{this.context.connection.connectionId&&(this._states.has(this.context.connection.connectionId)||(this._states.get(this.context.connection.connectionId)?.dispose(),this._states.delete(this.context.connection.connectionId)))};onOtherUserJoinedRoom=e=>{const t=e.userId;this._states.has(t)||(Jl&&console.log("XRSync: Remote user joined room",t),this._states.set(t,new Mf(t,this.context)))};onOtherUserLeftRoom=e=>{const t=e.userId;this._states.has(t)||(this._states.get(t)?.dispose(),this._states.delete(t))};_states=new Map;onUpdate(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.update(e)}onExitXR(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.onExitXR(e)}}class g_{_fadeToColorQuad;_fadeToColorMaterial;constructor(){this._fadeToColorMaterial=new c.MeshBasicMaterial({color:0,transparent:!0,depthTest:!1,fog:!1,side:c.DoubleSide}),this._fadeToColorQuad=new c.Mesh(new c.PlaneGeometry(10,10),this._fadeToColorMaterial)}dispose(){this._fadeToColorQuad.geometry.dispose(),this._fadeToColorMaterial.dispose()}update(e,t){const i=this._fadeToColorQuad,n=this._fadeToColorMaterial;i.parent!==e&&n.opacity>0?e.add(i):n.opacity===0&&i.removeFromParent(),i.layers.set(2),i.material=this._fadeToColorMaterial,i.position.z=-1,i.renderOrder=1/0;const o=this._requestedFadeValue;n.opacity=L.lerp(n.opacity,o,t/.03),Math.abs(n.opacity-o)<=.01&&this._transitionResolve&&(this._transitionResolve(),this._transitionResolve=null,this._transitionPromise=null,this._requestedFadeValue=0)}remove(){this._fadeToColorQuad.removeFromParent()}fadeTransition(){if(this._transitionPromise)return this._transitionPromise;this._requestedFadeValue=1;const e=new Promise(t=>{this._transitionResolve=t});return this._transitionPromise=e,e}_requestedFadeValue=0;_transitionPromise=null;_transitionResolve=null}const jC='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 160 187.74"><defs><linearGradient id="a" x1="89.64" y1="184.81" x2="90.48" y2="21.85" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#62d399"/><stop offset=".51" stop-color="#acd842"/><stop offset=".9" stop-color="#d7db0a"/></linearGradient><linearGradient id="b" x1="69.68" y1="178.9" x2="68.08" y2="16.77" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0ba398"/><stop offset=".5" stop-color="#4ca352"/><stop offset="1" stop-color="#76a30a"/></linearGradient><linearGradient id="c" x1="36.6" y1="152.17" x2="34.7" y2="84.19" gradientUnits="userSpaceOnUse"><stop offset=".19" stop-color="#36a382"/><stop offset=".54" stop-color="#49a459"/><stop offset="1" stop-color="#76a30b"/></linearGradient><linearGradient id="d" x1="15.82" y1="153.24" x2="18" y2="90.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#267880"/><stop offset=".51" stop-color="#457a5c"/><stop offset="1" stop-color="#717516"/></linearGradient><linearGradient id="e" x1="135.08" y1="135.43" x2="148.93" y2="63.47" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b0d939"/><stop offset="1" stop-color="#eadb04"/></linearGradient><linearGradient id="f" x1="-4163.25" y1="2285.12" x2="-4160.81" y2="2215.34" gradientTransform="rotate(20 4088.49 13316.712)" gradientUnits="userSpaceOnUse"><stop offset=".17" stop-color="#74af52"/><stop offset=".48" stop-color="#99be32"/><stop offset="1" stop-color="#c0c40a"/></linearGradient><symbol id="g" viewBox="0 0 160 187.74"><path style="fill:url(#a)" d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75z"/><path style="fill:url(#b)" d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98z"/><path style="fill:url(#c)" d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z"/><path style="fill:url(#d)" d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04z"/><path style="fill:#9c3" d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5z"/><path style="fill:url(#e)" d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59z"/><path style="fill:url(#f)" d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z"/><path style="fill:#ffe113" d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1z"/><path style="fill:#f3e600" d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75z"/></symbol></defs><use width="160" height="187.74" xlink:href="#g"/></svg>',BC=btoa(jC),FC="data:image/svg+xml;base64,"+BC,Aa=FC,UC=`<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> <svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" version="1.1" viewBox="0 0 1014 282" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m665.95 132.73v44.88l-10.56-8.4c-0.8-0.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18 0.4-6.06 1.2s-3.54 1.8-4.98 3-2.56 2.5-3.36 3.9-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c0.32 0.24 0.56 0.44 0.72 0.6s0.36 0.32 0.6 0.48c0.96-1.2 2.14-2.28 3.54-3.24s2.92-1.76 4.56-2.4 3.34-1.14 5.1-1.5 3.44-0.54 5.04-0.54c1.44 0 2.92 0.04 4.44 0.12s2.84 0.28 3.96 0.6c4.56 1.12 7.8 3.12 9.72 6s2.88 6.56 2.88 11.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m732.38 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m795.93 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m858.57 97.21c0.64 0.48 0.96 1.16 0.96 2.04v74.88c-0.08 1.04-0.12 2.12-0.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18s-2.06-1.66-2.46-1.98c-1.76 2.48-4.26 4.44-7.5 5.88s-7.02 2.16-11.34 2.16c-3.84 0-7.4-0.7-10.68-2.1s-6.14-3.44-8.58-6.12-4.34-5.94-5.7-9.78-2.04-8.16-2.04-12.96c0-4.32 0.78-8.34 2.34-12.06s3.6-6.92 6.12-9.6 5.38-4.78 8.58-6.3 6.48-2.28 9.84-2.28c2.56 0 4.82 0.22 6.78 0.66s3.68 1.06 5.16 1.86 2.78 1.74 3.9 2.82 2.16 2.22 3.12 3.42v-35.04l10.68 8.64zm-27.96 67.92c3.6 0 6.52-0.68 8.76-2.04s3.98-3.06 5.22-5.1 2.1-4.22 2.58-6.54 0.72-4.44 0.72-6.36v-1.2c0-1.12-0.22-2.7-0.66-4.74s-1.28-4.06-2.52-6.06-3-3.7-5.28-5.1-5.22-2.02-8.82-1.86c-3.44 0-6.26 0.74-8.46 2.22s-3.96 3.26-5.28 5.34-2.24 4.2-2.76 6.36-0.78 3.92-0.78 5.28c0 1.84 0.24 3.92 0.72 6.24s1.36 4.48 2.64 6.48 3.04 3.68 5.28 5.04 5.12 2.04 8.64 2.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m882.81 97.09c0.64 0.48 0.96 1.12 0.96 1.92l-0.12 41.04v37.08l-10.56-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-77.88l10.8 8.64z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m950.36 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.8559 0 0 .7642 45.348 36.475)"> <g transform="translate(2.7114)"> <path d="m3.935 173.02c-0.331 0-0.497-0.402-0.497-1.207v-51.002c0-0.738 0.138-1.107 0.414-1.107h1.781c0.277 0 0.415 0.335 0.415 1.006v5.935c0 0.336 0.027 0.553 0.083 0.654 0.055 0.101 0.151-0.017 0.289-0.352 0.912-1.744 1.754-3.236 2.527-4.477 0.773-1.24 1.554-2.179 2.341-2.816s1.65-0.956 2.588-0.956c1.685 0 3.011 0.922 3.977 2.766 0.967 1.845 1.602 3.84 1.905 5.986 0.056 0.268 0.139 0.369 0.249 0.302s0.221-0.235 0.331-0.503c0.939-1.811 1.802-3.353 2.589-4.628 0.787-1.274 1.581-2.246 2.382-2.917s1.671-1.006 2.61-1.006c2.016 0 3.569 1.392 4.66 4.175 1.09 2.783 1.636 6.421 1.636 10.915v37.925c0 0.871-0.18 1.307-0.539 1.307h-1.739c-0.138 0-0.249-0.1-0.332-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.338-6.321-1.015-8.3-0.676-1.978-1.76-2.967-3.251-2.967-0.884 0-1.726 0.386-2.527 1.157s-1.519 1.727-2.154 2.867-1.201 2.213-1.699 3.219c-0.248 0.469-0.421 0.905-0.517 1.308-0.097 0.402-0.145 0.972-0.145 1.71v37.221c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.166 0-0.29-0.1-0.373-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.332-6.321-0.994-8.3-0.663-1.978-1.754-2.967-3.273-2.967-1.242 0-2.375 0.704-3.396 2.112-1.022 1.409-2.223 3.555-3.604 6.439v39.031c0 0.805-0.18 1.207-0.539 1.207h-1.698z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m53.642 166.28c-1.077 2.549-2.237 4.477-3.479 5.785-1.243 1.307-2.61 1.961-4.101 1.961-2.154 0-3.853-1.324-5.095-3.973-1.243-2.649-1.864-6.187-1.864-10.613 0-3.488 0.4-6.489 1.201-9.004s1.988-4.51 3.562-5.985c1.574-1.476 3.521-2.414 5.841-2.817l3.686-0.704c0.221-0.067 0.394-0.218 0.518-0.453 0.124-0.234 0.187-0.587 0.187-1.056v-2.917c0-3.89-0.504-6.975-1.512-9.255s-2.354-3.42-4.039-3.42c-1.298 0-2.472 0.72-3.521 2.162s-2.002 3.572-2.858 6.388c-0.083 0.268-0.159 0.453-0.228 0.554-0.069 0.1-0.172 0.083-0.311-0.051l-1.698-1.71c-0.083-0.134-0.138-0.285-0.166-0.453-0.027-0.167 0.014-0.452 0.125-0.855 0.856-3.353 2.009-6.052 3.459-8.098 1.449-2.045 3.224-3.068 5.322-3.068 1.74 0 3.211 0.687 4.412 2.062s2.112 3.37 2.734 5.986c0.621 2.615 0.932 5.7 0.932 9.255v35.712c0 0.536-0.035 0.888-0.104 1.056s-0.2 0.251-0.393 0.251h-1.533c-0.166 0-0.29-0.117-0.373-0.352-0.083-0.234-0.124-0.553-0.124-0.955l-0.083-5.231c-0.055-0.939-0.221-1.006-0.497-0.202zm0.456-19.314c0-1.14-0.194-1.643-0.58-1.509l-3.107 0.603c-1.436 0.202-2.686 0.638-3.749 1.308-1.063 0.671-1.953 1.543-2.671 2.616s-1.257 2.33-1.616 3.772-0.538 3.102-0.538 4.98c0 3.152 0.455 5.616 1.367 7.393 0.911 1.778 2.14 2.666 3.686 2.666 0.939 0 1.85-0.419 2.734-1.257s1.671-1.895 2.361-3.169c0.663-1.408 1.181-2.85 1.553-4.326 0.373-1.475 0.56-2.883 0.56-4.225v-8.852z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m79.034 173.02c-0.166 0-0.297-0.117-0.394-0.352-0.096-0.234-0.145-0.553-0.145-0.955v-4.628c0-0.536-0.041-0.838-0.124-0.905s-0.207 0.1-0.373 0.503c-0.276 0.67-0.69 1.593-1.242 2.766-0.553 1.174-1.271 2.23-2.154 3.169-0.884 0.939-1.961 1.408-3.231 1.408-1.74 0-3.314-0.989-4.722-2.967-1.409-1.979-2.534-4.963-3.376-8.953-0.843-3.991-1.264-8.937-1.264-14.838 0-5.701 0.415-10.68 1.243-14.939s1.988-7.595 3.479-10.009c1.492-2.415 3.204-3.622 5.137-3.622 1.436 0 2.616 0.57 3.541 1.71 0.926 1.14 1.719 2.381 2.382 3.722 0.249 0.47 0.414 0.637 0.497 0.503s0.125-0.536 0.125-1.207v-23.841c0-0.805 0.151-1.208 0.455-1.208h1.864c0.276 0 0.414 0.369 0.414 1.107v72.128c0 0.537-0.041 0.905-0.124 1.107-0.083 0.201-0.235 0.301-0.455 0.301h-1.533zm-0.621-42.049c-0.939-2.213-1.885-3.94-2.838-5.181s-2.009-1.861-3.169-1.861c-1.463 0-2.768 0.889-3.914 2.666s-2.044 4.376-2.693 7.796-0.973 7.578-0.973 12.474c0 5.097 0.338 9.272 1.015 12.524 0.676 3.253 1.567 5.651 2.672 7.193 1.104 1.543 2.305 2.314 3.603 2.314 1.188 0 2.258-0.704 3.211-2.113 0.952-1.408 1.705-3.118 2.257-5.13s0.829-3.957 0.829-5.835v-24.847z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m89.514 149.38c0 3.42 0.345 6.606 1.035 9.557 0.691 2.951 1.609 5.315 2.755 7.092s2.437 2.666 3.873 2.666c1.519 0 2.837-0.738 3.956-2.213 1.118-1.476 2.064-3.655 2.837-6.539 0.083-0.336 0.166-0.52 0.249-0.554 0.083-0.033 0.179 0.017 0.29 0.151l1.408 1.912c0.221 0.268 0.235 0.67 0.041 1.207-0.69 2.548-1.47 4.661-2.34 6.337-0.87 1.677-1.857 2.935-2.962 3.773-1.104 0.838-2.319 1.257-3.645 1.257-2.043 0-3.838-1.14-5.385-3.42-1.546-2.28-2.761-5.482-3.645-9.607-0.884-4.124-1.325-8.836-1.325-14.134 0-5.901 0.455-10.931 1.367-15.089 0.911-4.158 2.14-7.377 3.686-9.658 1.547-2.28 3.3-3.42 5.261-3.42 1.988 0 3.714 1.073 5.178 3.219 1.463 2.146 2.595 5.231 3.396 9.255s1.201 8.886 1.201 14.587c0 0.469-0.02 0.939-0.062 1.408-0.041 0.469-0.214 0.704-0.517 0.704h-16.362c-0.083 0-0.152 0.151-0.207 0.453-0.056 0.302-0.083 0.654-0.083 1.056zm13.752-6.237c0.304 0 0.497-0.1 0.58-0.302 0.083-0.201 0.124-0.57 0.124-1.106 0-3.219-0.283-6.187-0.849-8.903s-1.367-4.896-2.402-6.539c-1.036-1.643-2.272-2.464-3.708-2.464-1.629 0-2.996 0.955-4.101 2.867-1.104 1.911-1.94 4.342-2.506 7.293s-0.849 6.002-0.849 9.154h13.711z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m148.54 119.7c0.165 0 0.283 0.117 0.352 0.352s0.076 0.52 0.02 0.855l-6.254 50.902c-0.028 0.47-0.104 0.788-0.228 0.956s-0.297 0.251-0.518 0.251h-1.615c-0.442 0-0.718-0.402-0.829-1.207l-5.26-40.138c-0.111-0.604-0.201-0.905-0.27-0.905s-0.131 0.301-0.186 0.905l-5.012 40.138c-0.028 0.47-0.097 0.788-0.207 0.956-0.111 0.168-0.277 0.251-0.497 0.251h-1.74c-0.442 0-0.718-0.402-0.829-1.207l-6.503-50.801c-0.055-0.403-0.048-0.721 0.021-0.956s0.2-0.352 0.393-0.352h1.823c0.166 0 0.297 0.067 0.393 0.201 0.097 0.134 0.159 0.403 0.187 0.805l5.302 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.219-41.949c0.055-0.268 0.124-0.47 0.207-0.604s0.193-0.201 0.331-0.201h1.533c0.138 0 0.262 0.067 0.373 0.201 0.11 0.134 0.179 0.403 0.207 0.805l5.468 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.053-41.849c0.055-0.335 0.138-0.57 0.249-0.704 0.11-0.134 0.234-0.201 0.373-0.201h1.284z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m156.49 171.51c0 0.604-0.042 1.006-0.125 1.208-0.082 0.201-0.262 0.301-0.538 0.301h-1.533c-0.221 0-0.366-0.083-0.435-0.251s-0.103-0.486-0.103-0.956v-50.902c0-0.805 0.152-1.207 0.456-1.207h1.822c0.304 0 0.456 0.402 0.456 1.207v50.6zm0.165-63.979c0 1.207-0.207 1.811-0.621 1.811h-1.905c-0.221 0-0.366-0.135-0.435-0.403s-0.104-0.67-0.104-1.207v-7.847c0-1.006 0.18-1.509 0.539-1.509h1.988c0.359 0 0.538 0.47 0.538 1.409v7.746z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m168.3 124.83c-0.221 0-0.331 0.269-0.331 0.805v33.801c0 3.42 0.221 5.667 0.663 6.74 0.441 1.073 1.09 1.609 1.946 1.609h3.024c0.138 0 0.242 0.084 0.311 0.252 0.069 0.167 0.103 0.419 0.103 0.754v2.716c0 0.537-0.138 0.906-0.414 1.107-0.248 0.067-0.614 0.134-1.098 0.201-0.483 0.067-0.959 0.118-1.429 0.151-0.469 0.034-0.828 0.05-1.077 0.05-1.712 0-2.934-0.955-3.665-2.867-0.732-1.911-1.098-5.013-1.098-9.305v-35.108c0-0.604-0.124-0.906-0.373-0.906h-3.521c-0.248 0-0.373-0.268-0.373-0.804v-3.521c0-0.537 0.111-0.805 0.332-0.805h3.686c0.166 0 0.263-0.268 0.29-0.805l0.415-16.095c0-0.805 0.124-1.207 0.372-1.207h1.492c0.303 0 0.455 0.436 0.455 1.307v15.995c0 0.537 0.097 0.805 0.29 0.805h5.468c0.221 0 0.331 0.268 0.331 0.805v3.521c0 0.536-0.124 0.804-0.373 0.804h-5.426z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m179.4 173.02c-0.331 0-0.497-0.402-0.497-1.207v-72.329c0-0.738 0.138-1.107 0.414-1.107h1.782c0.276 0 0.414 0.336 0.414 1.006v27.162c0 0.335 0.034 0.536 0.103 0.603s0.159-0.033 0.27-0.302c0.994-1.81 1.898-3.319 2.713-4.526 0.814-1.208 1.629-2.113 2.444-2.717 0.814-0.603 1.691-0.905 2.63-0.905 2.182 0 3.839 1.375 4.971 4.125 1.132 2.749 1.698 6.404 1.698 10.965v37.925c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.165 0-0.29-0.1-0.373-0.301-0.082-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.366-6.321-1.097-8.3-0.732-1.978-1.899-2.967-3.501-2.967-0.883 0-1.705 0.318-2.464 0.956-0.76 0.637-1.526 1.576-2.299 2.816-0.773 1.241-1.643 2.834-2.61 4.779v39.031c0 0.805-0.179 1.207-0.538 1.207h-1.699z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> </g> <g transform="matrix(.80638 0 0 .80638 452.53 65.421)" fill-rule="nonzero"> <path d="m79.32 36.98v150.76l15.68-13.2 6.59-156.31-22.27 18.75z" fill="url(#f)"/> <path d="m79.32 36.98-22.27-18.75 6.59 156.31 15.68 13.2v-150.76z" fill="url(#e)"/> <path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z" fill="url(#d)"/> <path d="m25.19 104.83-25.19-14.59 16.97 53.86 16.85 9.77-8.63-49.04z" fill="url(#c)"/> <path d="M43.86,82.5L18.69,67.98L0,90.24L25.18,104.83L43.86,82.5Z" fill="#9c3"/> <path d="m134.82 78.69-9.97 56.5 15.58-9.04 19.57-62.05-25.18 14.59z" fill="url(#b)"/> <path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z" fill="url(#a)"/> <path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33 25.19-14.59z" fill="#ffe113"/> <path d="M101.59,18.23L79.32,0L57.05,18.23L79.32,36.98L101.59,18.23Z" fill="#f3e600"/> </g> <defs> <linearGradient id="f" x2="1" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)" gradientUnits="userSpaceOnUse"><stop stop-color="#62d399" offset="0"/><stop stop-color="#acd842" offset=".51"/><stop stop-color="#d7db0a" offset=".9"/><stop stop-color="#d7db0a" offset="1"/></linearGradient> <linearGradient id="e" x2="1" gradientTransform="matrix(-1.6,-162.13,162.13,-1.6,69.68,178.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#0ba398" offset="0"/><stop stop-color="#4ca352" offset=".5"/><stop stop-color="#76a30a" offset="1"/></linearGradient> <linearGradient id="d" x2="1" gradientTransform="matrix(-1.9,-67.98,67.98,-1.9,36.6,152.17)" gradientUnits="userSpaceOnUse"><stop stop-color="#36a382" offset="0"/><stop stop-color="#36a382" offset=".19"/><stop stop-color="#49a459" offset=".54"/><stop stop-color="#76a30b" offset="1"/></linearGradient> <linearGradient id="c" x2="1" gradientTransform="matrix(2.18,-62.38,62.38,2.18,15.82,153.24)" gradientUnits="userSpaceOnUse"><stop stop-color="#267880" offset="0"/><stop stop-color="#457a5c" offset=".51"/><stop stop-color="#717516" offset="1"/></linearGradient> <linearGradient id="b" x2="1" gradientTransform="matrix(13.85,-71.96,71.96,13.85,135.08,135.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#b0d939" offset="0"/><stop stop-color="#eadb04" offset="1"/></linearGradient> <linearGradient id="a" x2="1" gradientTransform="matrix(26.159 -64.737 64.737 26.159 107.42 128.14)" gradientUnits="userSpaceOnUse"><stop stop-color="#74af52" offset="0"/><stop stop-color="#74af52" offset=".17"/><stop stop-color="#99be32" offset=".48"/><stop stop-color="#c0c40a" offset="1"/></linearGradient> </defs> </svg>`;btoa(UC);const zC='<svg viewBox="0 0 509 154" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M665.95 132.73v44.88l-10.56-8.4c-.8-.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18.4-6.06 1.2-1.88.8-3.54 1.8-4.98 3-1.44 1.2-2.56 2.5-3.36 3.9-.8 1.4-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-.72-.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c.32.24.56.44.72.6.16.16.36.32.6.48.96-1.2 2.14-2.28 3.54-3.24 1.4-.96 2.92-1.76 4.56-2.4 1.64-.64 3.34-1.14 5.1-1.5 1.76-.36 3.44-.54 5.04-.54 1.44 0 2.92.04 4.44.12 1.52.08 2.84.28 3.96.6 4.56 1.12 7.8 3.12 9.72 6 1.92 2.88 2.88 6.56 2.88 11.04ZM732.38 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM795.93 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM858.57 97.21c.64.48.96 1.16.96 2.04v74.88c-.08 1.04-.12 2.12-.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18-1.24-1-2.06-1.66-2.46-1.98-1.76 2.48-4.26 4.44-7.5 5.88-3.24 1.44-7.02 2.16-11.34 2.16-3.84 0-7.4-.7-10.68-2.1-3.28-1.4-6.14-3.44-8.58-6.12-2.44-2.68-4.34-5.94-5.7-9.78-1.36-3.84-2.04-8.16-2.04-12.96 0-4.32.78-8.34 2.34-12.06 1.56-3.72 3.6-6.92 6.12-9.6 2.52-2.68 5.38-4.78 8.58-6.3 3.2-1.52 6.48-2.28 9.84-2.28 2.56 0 4.82.22 6.78.66 1.96.44 3.68 1.06 5.16 1.86s2.78 1.74 3.9 2.82a35.92 35.92 0 0 1 3.12 3.42V88.57l10.68 8.64Zm-27.96 67.92c3.6 0 6.52-.68 8.76-2.04 2.24-1.36 3.98-3.06 5.22-5.1a20.5 20.5 0 0 0 2.58-6.54c.48-2.32.72-4.44.72-6.36v-1.2c0-1.12-.22-2.7-.66-4.74-.44-2.04-1.28-4.06-2.52-6.06s-3-3.7-5.28-5.1c-2.28-1.4-5.22-2.02-8.82-1.86-3.44 0-6.26.74-8.46 2.22-2.2 1.48-3.96 3.26-5.28 5.34-1.32 2.08-2.24 4.2-2.76 6.36-.52 2.16-.78 3.92-.78 5.28 0 1.84.24 3.92.72 6.24.48 2.32 1.36 4.48 2.64 6.48s3.04 3.68 5.28 5.04c2.24 1.36 5.12 2.04 8.64 2.04ZM882.81 97.09c.64.48.96 1.12.96 1.92l-.12 41.04v37.08l-10.56-8.4c-.72-.64-1.08-1.44-1.08-2.4V88.45l10.8 8.64ZM950.36 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14Z" style="fill-rule:nonzero" transform="translate(-452.406 -63.709) scale(1.00797)"/><path d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75Z" style="fill:url(#a);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98Z" style="fill:url(#b);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33Z" style="fill:url(#c);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04Z" style="fill:url(#d);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5Z" style="fill:#9c3;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59Z" style="fill:url(#e);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5Z" style="fill:url(#f);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1Z" style="fill:#ffe113;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75Z" style="fill:#f3e600;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><defs><linearGradient id="a" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)"><stop offset="0" style="stop-color:#62d399;stop-opacity:1"/><stop offset=".51" style="stop-color:#acd842;stop-opacity:1"/><stop offset=".9" style="stop-color:#d7db0a;stop-opacity:1"/><stop offset="1" style="stop-color:#d7db0a;stop-opacity:1"/></linearGradient><linearGradient id="b" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90.565 123.412 54.953) scale(162.14)"><stop offset="0" style="stop-color:#0ba398;stop-opacity:1"/><stop offset=".5" style="stop-color:#4ca352;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30a;stop-opacity:1"/></linearGradient><linearGradient id="c" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="scale(-68) rotate(88.4 .881 -1.396)"><stop offset="0" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".19" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".54" style="stop-color:#49a459;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30b;stop-opacity:1"/></linearGradient><linearGradient id="d" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-88 87.255 68.431) scale(62.42)"><stop offset="0" style="stop-color:#267880;stop-opacity:1"/><stop offset=".51" style="stop-color:#457a5c;stop-opacity:1"/><stop offset="1" style="stop-color:#717516;stop-opacity:1"/></linearGradient><linearGradient id="e" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-79.1 149.53 -14.065) scale(73.28)"><stop offset="0" style="stop-color:#b0d939;stop-opacity:1"/><stop offset="1" style="stop-color:#eadb04;stop-opacity:1"/></linearGradient><linearGradient id="f" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-67.997 148.705 -15.558) scale(69.8226)"><stop offset="0" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".17" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".48" style="stop-color:#99be32;stop-opacity:1"/><stop offset="1" style="stop-color:#c0c40a;stop-opacity:1"/></linearGradient></defs></svg>',NC=btoa(zC),VC="data:image/svg+xml;charset=utf-8;base64,"+NC,y_=VC;var za=(s=>(s[s.Quad=0]="Quad",s[s.Cube=1]="Cube",s[s.Sphere=2]="Sphere",s[s.Cylinder=3]="Cylinder",s[s.RoundedCube=10]="RoundedCube",s))(za||{});class _o{static createText(e,t){let i=null;const n=t?.font||WC(t?.familyFamily||null);n instanceof X.Font?i=this.#t(e,n,t):i==null&&(i=new c.BufferGeometry);const o=t?.color||16777215,r=new c.Mesh(i,t?.material??new c.MeshStandardMaterial({color:o}));return this.applyDefaultObjectOptions(r,t),n instanceof Promise?n.then(a=>{r.geometry=this.#t(e,a,t),t?.onGeometry&&t.onGeometry(r)}):t?.onGeometry&&t.onGeometry(r),r}static#t(e,t,i){const n=i?.depth||.1;return new X.TextGeometry(e,{font:t,size:1,depth:n,height:n,bevelEnabled:i?.bevel||!1,bevelThickness:.01,bevelOffset:.01,bevelSize:.01})}static createOccluder(e){const t=new c.MeshBasicMaterial({colorWrite:!1,depthWrite:!0,side:c.DoubleSide});return this.createPrimitive(e,{material:t})}static createPrimitive(e,t){let i;const n=t?.color||16777215;switch(e){case"Quad":case 0:{const o=new c.PlaneGeometry(1,1,1,1),r=t?.material??new c.MeshStandardMaterial({color:n});t?.texture&&"map"in r&&(r.map=t.texture),i=new c.Mesh(o,r),i.name="Quad"}break;case"Cube":case 1:{const o=new c.BoxGeometry(1,1,1),r=t?.material??new c.MeshStandardMaterial({color:n});t?.texture&&"map"in r&&(r.map=t.texture),i=new c.Mesh(o,r),i.name="Cube"}break;case 10:case"RoundedCube":{const o=$C(1,1,1,.1,2),r=t?.material??new c.MeshStandardMaterial({color:n});t?.texture&&"map"in r&&(r.map=t.texture),i=new c.Mesh(o,r),i.name="RoundedCube"}break;case"Sphere":case 2:{const o=new c.SphereGeometry(.5,16,16),r=t?.material??new c.MeshStandardMaterial({color:n});t?.texture&&"map"in r&&(r.map=t.texture),i=new c.Mesh(o,r),i.name="Sphere"}break;case"Cylinder":case 3:{const o=new c.CylinderGeometry(.5,.5,1,32),r=t?.material??new c.MeshStandardMaterial({color:n});t?.texture&&"map"in r&&(r.map=t.texture),i=new c.Mesh(o,r),i.name="Cylinder"}break;case"ShaderBall":i=new c.Group,i.name="ShaderBall",GC(i,t);break}return this.applyDefaultObjectOptions(i,t),i}static createSprite(e){const i=new c.SpriteMaterial({color:16777215});e?.texture&&"map"in i&&(i.map=e.texture);const n=new c.Sprite(i);return this.applyDefaultObjectOptions(n,e),n}static applyDefaultObjectOptions(e,t){e.receiveShadow=!0,e.castShadow=!0,t?.name&&(e.name=t.name),t?.position&&(Array.isArray(t.position)?e.position.set(t.position[0],t.position[1],t.position[2]):e.position.set(t.position.x||0,t.position.y||0,t.position.z||0)),t?.rotation&&(Array.isArray(t.rotation)?e.rotation.set(t.rotation[0],t.rotation[1],t.rotation[2]):e.rotation.set(t.rotation.x||0,t.rotation.y||0,t.rotation.z||0)),t?.scale&&(typeof t.scale=="number"?e.scale.set(t.scale,t.scale,t.scale):Array.isArray(t.scale)?e.scale.set(t.scale[0],t.scale[1],t.scale[2]):e.scale.set(t.scale.x||1,t.scale.y||1,t.scale.z||1)),t?.receiveShadow!=null&&(e.receiveShadow=t.receiveShadow),t?.castShadow!=null&&(e.castShadow=t.castShadow),t?.parent&&t.parent.add(e)}}function $C(s,e,t,i,n){const o=new c.Shape,r=1e-5,a=i-r;o.absarc(r,r,r,-Math.PI/2,-Math.PI,!0),o.absarc(r,e-a*2,r,Math.PI,Math.PI/2,!0),o.absarc(s-a*2,e-a*2,r,Math.PI/2,0,!0),o.absarc(s-a*2,r,r,0,-Math.PI/2,!0);const l=new c.ExtrudeGeometry(o,{bevelEnabled:!0,bevelSegments:n*2,steps:1,bevelSize:a,bevelThickness:i,curveSegments:n,UVGenerator:{generateTopUV:(h,d)=>{const u=[];for(let p=0;p<d.length;p+=3)u.push(new c.Vector2(d[p]/s,d[p+1]/e));return u},generateSideWallUV:(h,d,u,p,m,y)=>{const _=[];return _.push(new c.Vector2(d[u]/s,d[u+1]/e)),_.push(new c.Vector2(d[p]/s,d[p+1]/e)),_.push(new c.Vector2(d[m]/s,d[m+1]/e)),_.push(new c.Vector2(d[y]/s,d[y+1]/e)),_}}});return l.scale(1,1,1-i),l.center(),l.index||l.setIndex(Array.from({length:l.attributes.position.count},(h,d)=>d)),l.computeVertexNormals(),l}const Lh=new Map;function WC(s){let e="";switch(s){default:case"OpenSans":e="https://cdn.needle.tools/static/fonts/facetype/Open Sans_Regular_ascii.json";break;case"Helvetiker":e="https://cdn.needle.tools/static/fonts/facetype/Helvetiker_Regular_ascii.json";break}if(Lh.has(e)){const n=Lh.get(e);if(n)return n}const t=new X.FontLoader,i=new Promise((n,o)=>{t.load(e,r=>{Lh.set(e,r),n(r)},void 0,o)});return Lh.set(e,i),i}let kf=!1,Ef=null;function GC(s,e){if(Ef===null){const t="https://cdn.needle.tools/static/models/shaderball.glb",i=new X.GLTFLoader,n=re.createLoaders(null);i.setDRACOLoader(n.dracoLoader),i.setKTX2Loader(n.ktx2Loader),kf=!0,Ef=i.loadAsync(t).then(o=>{const r=o.scene;return r.position.y-=.5,r}).catch(o=>(console.warn("Failed to load shaderball mesh: "+o.message),b_())).finally(()=>{kf=!1})}if(kf){const t=b_();t.name="ShaderBall-Placeholder";const i=t.children[0];i?.type==="Mesh"&&__(i,e),s.add(t)}Ef.then(t=>{s.children.forEach(o=>{o.name==="ShaderBall-Placeholder"&&s.remove(o)});const i=t.clone(),n=i.children[0];n?.type==="Mesh"&&(n.geometry.attributes.tangent||n.geometry.computeTangents(),__(n,e)),s.add(i)})}function __(s,e){if(e?.color||e?.material||e?.texture){const i=e?.material??s.material?.clone()??new c.MeshStandardMaterial;e.color&&"color"in i&&i.color instanceof c.Color&&i.color.set(e.color),e?.texture&&"map"in i&&(i.map=e.texture),s.material=i}}function b_(){return new c.Group().add(_o.createPrimitive("Sphere",{material:new c.MeshBasicMaterial({transparent:!0,opacity:.1})}))}class Da{static _active=null;static get active(){return this._active}static _requestInFlight=!1;static async start(e,t){if(this._active)return console.error("Cannot start a new XR session while one is already active"),null;if(this._requestInFlight)return console.error("Cannot start a new XR session while a request is already in flight"),null;if("xr"in navigator&&navigator.xr){if(!t)return console.error("XRSessionInit must be provided"),null;this._requestInFlight=!0;const i=await navigator.xr.requestSession(e,t).catch(n=>{console.error("Failed to start temporary XR session:",n)});return i?(i.addEventListener("end",()=>{this._active=null}),this._requestInFlight?(this._requestInFlight=!1,this._active=new Da(e,t,i),this._active):(i.end(),null)):(this._requestInFlight=!1,null)}return null}static async handoff(){return this._active?this._active.handoff():null}static async stop(){this._requestInFlight=!1,this._active&&(await this._active.end(),await ys(100)),this._active=null}_session;_mode;_init;get isAR(){return this._mode==="immersive-ar"}get isVR(){return this._mode==="immersive-vr"}_renderer;_camera;_scene;constructor(e,t,i){this._mode=e,this._init=t,this._session=i,this._session.addEventListener("end",this.onEnd),this._renderer=new c.WebGLRenderer({alpha:!0,antialias:!0}),this._renderer.outputColorSpace="srgb",this._renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),this._renderer.setSize(window.innerWidth,window.innerHeight,!0),exports.DeviceUtilities.isNeedleAppClip()&&window.requestAnimationFrame(()=>{const n=Math.min(2,window.devicePixelRatio),o=Math.floor(window.innerWidth*n),r=Math.floor(window.innerHeight*n);this._renderer.domElement.width=o,this._renderer.domElement.height=r}),this._renderer.setAnimationLoop(this.onFrame),this._renderer.xr.setSession(i),this._renderer.xr.enabled=!0,this._camera=new c.PerspectiveCamera,this._scene=new c.Scene,this._scene.fog=new c.Fog(4473924,10,250),this._scene.add(this._camera),this.setupScene()}end(){return this._session?this._session.end():Promise.resolve()}async handoff(){if(!this._session)throw new Error("Cannot handoff a session that has already ended");const e={session:this._session,mode:this._mode,init:this._init};return await this.onBeforeHandoff(),this.onEnd(),this._session=null,e}onEnd=()=>{this._session?.removeEventListener("end",this.onEnd),this._renderer.setAnimationLoop(null),this._renderer.dispose(),this._scene.clear()};_lastTime=0;_frames=0;onFrame=(e,t)=>{const i=e-this._lastTime;this.update(e,i),this._camera.parent!==this._scene&&this._scene.add(this._camera),this._renderer.render(this._scene,this._camera),this._lastTime=e,this._frames++};_roomFlyObjects=[];_logoObject=null;get _logoDistance(){return this.isAR?.3:5}get _logoScale(){return this.isAR?.04:1}update(e,t){const i=e*4e-4;for(let r=0;r<this._roomFlyObjects.length;r++){const a=this._roomFlyObjects[r];a.position.y+=Math.sin(i+r*.5)*.005,a.rotateY(.002)}const n=this._logoObject,o=this._renderer.xr.getCamera();if(n){const r=new c.Vector3;o.getWorldDirection(r);const a=o.position.clone().addScaledVector(r,this._logoDistance),l=this.isAR?.005:1e-5;n.position.lerp(a,this._frames<=2?1:t*l),n.lookAt(this._camera.position)}}async onBeforeHandoff(){await ys(1e3),this._scene.clear()}setupScene(){this._scene.background=new c.Color(0);let e=Aa;if(Nn()){const d=document.querySelector("needle-engine");if(d){const u=d.getAttribute("logo-src");u?.length&&(e=u,A()&&console.debug("[XR] Using custom loading logo from license:",e))}}const t=this._logoObject=new c.Mesh(new c.PlaneGeometry(1,1,1,1),new c.MeshBasicMaterial({transparent:!0,side:2}));t.scale.multiplyScalar(this._logoScale*window.devicePixelRatio),t.renderOrder=1e3,t.material.opacity=0,this._scene.add(t);const i=document.createElement("canvas"),n=i.getContext("2d"),o=new Image,r=d=>{if(!n)return;t.material.opacity=1;const u=1024;i.width=u,i.height=u,n.imageSmoothingQuality="high";const p=u*.19,m=o.width/o.height;{const v=i.height-p*1.5,R=v*m,O=(i.width-R)/2;n.drawImage(o,O,0,R,v)}const y=u*.12,_="Loading...";n.shadowBlur=0,n.fillStyle=this.isAR?"white":"rgba(255,255,255,0.4)",n.font=`${y}px Arial`,n.shadowBlur=u*.02,n.shadowColor="rgba(0,0,0,0.5)",n.shadowOffsetX=0,n.shadowOffsetY=0;const g=n.measureText(_);n.fillText(_,i.width/2-g.width/2,i.height-p/4),n.font=`${y}px Arial`,n.fillText(_,i.width/2-g.width/2,i.height-p/4);const w=new c.TextureLoader().load(i.toDataURL());w.generateMipmaps=!0,w.colorSpace="srgb",w.anisotropy=4;const b=i.width/i.height;t.scale.x=this._logoScale*b*window.devicePixelRatio,t.scale.y=this._logoScale*window.devicePixelRatio,t.material.map=w,t.material.needsUpdate=!0};o.onload=()=>r(),o.onerror=d=>{console.error("Failed to load temporary XR logo:",e,d),o.src=Aa},o.crossOrigin="anonymous",o.src=e;const a=new c.DirectionalLight(16777215,1);a.position.set(0,20,0),a.castShadow=!1,this._scene.add(a);const l=new c.DirectionalLight(16777215,1);l.position.set(0,-1,0),l.castShadow=!1,this._scene.add(l);const h=new c.PointLight(16777215,1,100,1);if(h.position.set(0,2,0),h.castShadow=!1,h.distance=200,this._scene.add(h),this.isAR===!1)for(let u=0;u<100;u++){const p=new c.MeshStandardMaterial({color:2236962,metalness:1,roughness:.8}),m=za.Sphere,y=_o.createPrimitive(m,{material:p});y.position.x=L.random(-50,50),y.position.y=L.random(-2,50),y.position.z=L.random(-50,50),y.rotation.x=L.random(0,Math.PI*2),y.rotation.y=L.random(0,Math.PI*2),y.rotation.z=L.random(0,Math.PI*2),y.scale.multiplyScalar(.5+Math.random()*10);const _=y.position.distanceTo(this._camera.position)-y.scale.x;_<10&&(y.position.z+=5,y.position.multiplyScalar(1+1/_)),this._roomFlyObjects.push(y),this._scene.add(y)}}}var yc;(s=>{const e=[];function t(){e?.length||A()&&console.warn("No USDZ exporters found – cannot export USDZ for QuickLook.");for(const o of e)o.exportAndOpen();return!0}s.exportAndOpen=t;function i(o){e.push(o)}s.registerExporter=i;function n(o){if(!e)return;const r=e.indexOf(o);r>=0&&e.splice(r,1)}s.unregisterExporter=n})(yc||(yc={}));const Be=x("debugwebxr"),v_=x("stats");let Rf=0;function HC(s){let e=null;const t=s;return t.getAROverlayContainer?e=t.getAROverlayContainer():e=s,e}qC();async function qC(){let s="immersive-vr";try{if(exports.DeviceUtilities.isNeedleAppClip()?s="immersive-ar":await navigator.xr?.isSessionSupported("immersive-vr")||(s="immersive-ar"),!await navigator.xr?.isSessionSupported("immersive-ar")&&s==="immersive-ar")return}catch(e){console.debug("[NeedleXRSession:granted] Error while checking XR support:",e);return}if(x("debugasap")){let e=globalThis["needle:XRSession"];if(e instanceof Promise){delete globalThis["needle:XRSession"],ce.addContextCreatedCallback(async t=>{if(!e)return;_a(!0);const i=await e;if(i){const n=q.getDefaultSessionInit(s);q.setSession(s,i,n,t.context)}else console.error("[NeedleXRSession:granted] ASAP session was rejected");e=void 0});return}}if("xr"in navigator){if(/WebXRViewer\//i.test(navigator.userAgent)){console.warn("WebXRViewer does not support addEventListener");return}navigator.xr?.addEventListener("sessiongranted",async()=>{const e=sessionStorage.getItem("needle_xr_session_mode"),t=sessionStorage.getItem("needle_xr_session_init")??null,i=t?JSON.parse(t):null;let n=null;if(Qv()&&(await Da.start(e||s,i||q.getDefaultSessionInit(s)).catch(o=>console.warn("[NeedleXRSession:granted] TemporaryXRContext start failed:",o)),await YC(),n=await Da.handoff()),n)q.setSession(n.mode,n.session,n.init,U.Current);else if(e&&t){console.log("[NeedleXRSession:granted] Restore last session");const o=JSON.parse(t);q.start(e,o).catch(r=>console.warn(r))}else q.start(s).catch(o=>console.warn("[NeedleXRSession:granted] failed:",o))},{once:!0})}}function XC(s,e){sessionStorage.setItem("needle_xr_session_mode",s),sessionStorage.setItem("needle_xr_session_init",JSON.stringify(e))}function QC(){sessionStorage.removeItem("needle_xr_session_mode"),sessionStorage.removeItem("needle_xr_session_init")}const Ym=new Set;ce.registerCallback(le.ContextCreationStart,async s=>{Ym.add(s.context)});ce.registerCallback(le.ContextCreated,async s=>{Ym.delete(s.context);const e=s.context?.domElement.getAttribute("autostart")||null;KC(e)});function Qv(){return Ym.size>0}function YC(){return new Promise(s=>{const e=Date.now(),t=setInterval(()=>{(!Qv()||Date.now()-e>6e4)&&(clearInterval(t),s())},100)})}exports.DeviceUtilities.isDesktop()&&A()&&window.addEventListener("keydown",s=>{(s.key==="x"||s.key==="Escape")&&q.active&&q.stop()});function KC(s){s&&s?.toLowerCase()==="ar"&&dn.registerWaitForInteraction(()=>{q.start("ar")})}const jh=Symbol("initial-fov"),Tf=Symbol("initial-near");class q{static _sync=null;static getXRSync(e){return this._sync||(this._sync=new Xv(e)),this._sync}static get currentSessionRequest(){return this._currentSessionRequestMode}static _currentSessionRequestMode=null;static get active(){return this._activeSession}static get activeMode(){return this._activeSession?.mode??null}static get xrSystem(){return"xr"in navigator?navigator.xr:void 0}static isXRSupported(){return Promise.all([this.isVRSupported(),this.isARSupported()]).then(e=>e.some(t=>t)).catch(()=>!1)}static isVRSupported(){return this.isSessionSupported("immersive-vr")}static isARSupported(){return this.isSessionSupported("immersive-ar")}static isSessionSupported(e){return this.xrSystem?.isSessionSupported(e).catch(t=>(Be&&console.error(t),!1))??Promise.resolve(!1)}static _currentSessionRequest;static _activeSession;static onSessionRequestStart(e){this._sessionRequestStartListeners.push(e)}static offSessionRequestStart(e){const t=this._sessionRequestStartListeners.indexOf(e);t>=0&&this._sessionRequestStartListeners.splice(t,1)}static _sessionRequestStartListeners=[];static onSessionRequestEnd(e){this._sessionRequestEndListeners.push(e)}static offSessionRequestEnd(e){const t=this._sessionRequestEndListeners.indexOf(e);t>=0&&this._sessionRequestEndListeners.splice(t,1)}static _sessionRequestEndListeners=[];static onXRSessionStart(e){this._xrStartListeners.push(e)}static offXRSessionStart(e){const t=this._xrStartListeners.indexOf(e);t>=0&&this._xrStartListeners.splice(t,1)}static _xrStartListeners=[];static onXRSessionEnd(e){this._xrEndListeners.push(e)}static offXRSessionEnd(e){const t=this._xrEndListeners.indexOf(e);t>=0&&this._xrEndListeners.splice(t,1)}static _xrEndListeners=[];static onControllerAdded(e){this._controllerAddedListeners.push(e)}static offControllerAdded(e){const t=this._controllerAddedListeners.indexOf(e);t>=0&&this._controllerAddedListeners.splice(t,1)}static _controllerAddedListeners=[];static onControllerRemoved(e){this._controllerRemovedListeners.push(e)}static offControllerRemoved(e){const t=this._controllerRemovedListeners.indexOf(e);t>=0&&this._controllerRemovedListeners.splice(t,1)}static _controllerRemovedListeners=[];static offerSession(e,t,i){return"xr"in navigator&&navigator.xr&&"offerSession"in navigator.xr?(typeof navigator.xr.offerSession=="function"&&(console.log("WebXR offerSession is available - requesting mode: "+e),t=="default"&&(t=this.getDefaultSessionInit(e)),navigator.xr.offerSession(e,{...t}).then(n=>q.setSession(e,n,t,i)).catch(n=>{console.log("XRSession offer rejected (perhaps because another call to offerSession was made or a call to requestSession was made)")})),!0):!1}static getDefaultSessionInit(e){switch(e){case"immersive-ar":const t=["anchors","local-floor","layers","dom-overlay","hit-test","unbounded"];return exports.DeviceUtilities.isVisionOS()||t.push("hand-tracking"),{optionalFeatures:t};case"immersive-vr":const i=["local-floor","bounded-floor","high-fixed-foveation-level","layers"];return exports.DeviceUtilities.isVisionOS()||i.push("hand-tracking"),{optionalFeatures:i};default:return console.warn("No default session init for mode",e),{}}}static async start(e,t,i){if(t||(t={}),exports.DeviceUtilities.isiOS()){const a=await this.isARSupported().catch(()=>!1);if(exports.DeviceUtilities.isVisionOS()&&!a&&(e==="ar"||e==="immersive-ar")&&(e="quicklook"),e==="quicklook")return ei.sendEvent(U.Current,"xr",{action:"quicklook_export",source:"NeedleXRSession.start"}),yc.exportAndOpen(),null;if(!a&&(e==="immersive-ar"||e==="ar")){this.invokeSessionRequestStart("immersive-ar",t);const l=new URL("https://appclip.apple.com/id?p=tools.needle.launch-app.Clip");l.searchParams.set("url",location.href);const h=l.toString();ei.sendEvent(U.Current,"xr",{action:"app_clip_launch",source:"NeedleXRSession.start",url:h});const d=window.top||window;try{console.debug("iOS device detected - opening Needle App Clip for AR experience",{mode:e,init:t,url:l}),d.location.href=h}catch(u){console.warn("Error navigating to AppClip "+h+`
|
|
175
175
|
`,u),window!==window.top?window.open(h,"_blank"):window.location.href=h}return setTimeout(()=>{this.invokeSessionRequestEnd("immersive-ar",t||{},null)},3e3),null}}if(e==="quicklook")return console.warn("QuickLook mode is only supported on iOS devices"),null;if(e=="ar"&&(e="immersive-ar"),A()&&x("debugxrpreroom"))return console.warn("Debug: Starting temporary XR session"),await Da.start(e,t||q.getDefaultSessionInit(e)),null;if(this._currentSessionRequest)return console.warn("A XRSession is already being requested"),(Be||A())&&fe("A XRSession is already being requested"),this._currentSessionRequest.then(()=>this._activeSession);if(this._activeSession)return console.error("A XRSession is already running"),this._activeSession;if(i||(i=U.Current),i||(i=ce.All[0]),!i)throw new Error("No Needle Engine Context found");switch(e){case"immersive-ar":{if(await this.xrSystem?.isSessionSupported("immersive-ar")!==!0)return console.error(e+" is not supported by this browser."),null;const l=this.getDefaultSessionInit(e),h=HC(i.domElement);h&&!exports.DeviceUtilities.isQuest()&&(l.domOverlay={root:h},l.optionalFeatures.push("dom-overlay")),t={...l,...t}}break;case"immersive-vr":{if(await this.xrSystem?.isSessionSupported("immersive-vr")!==!0)return console.error(e+" is not supported by this browser."),null;t={...this.getDefaultSessionInit(e),...t}}break;default:console.warn("No default session init for mode",e);break}t.optionalFeatures??=[],t.requiredFeatures??=[],await Da.stop();const n=e=="immersive-ar"?i.scripts_immersive_ar:i.scripts_immersive_vr;Be?console.log(`%cRequesting ${e} session`,"font-weight:bold;",t,n):console.log(`%cRequesting ${e} session`,"font-weight:bold;");for(const a of n)a.onBeforeXR&&a.activeAndEnabled&&!a.destroyed&&a.onBeforeXR(e,t);this.invokeSessionRequestStart(e,t),Be&&xe("Requesting "+e+" session ("+Date.now()+")"),ei.sendEvent(U.Current,"xr",{action:"session_request",mode:e,features:(t.requiredFeatures??[]).concat(t.optionalFeatures??[]).join(","),source:"NeedleXRSession.start"}),this._currentSessionRequest=navigator?.xr?.requestSession(e,t),this._currentSessionRequestMode=e;const o=await this._currentSessionRequest?.catch(a=>{console.error(a,"Code: "+a?.code),a?.code===9&&fe("Couldn't start XR session. Make sure you allow the required permissions."),console.log("If the specified XR configuration is not supported (e.g. entering AR doesnt work) - make sure you access the website on a secure connection (HTTPS) and your device has the required permissions (e.g. camera access)"),location.protocol==="http:"&&fe("XR requires a secure connection (HTTPS)")});return this._currentSessionRequest=void 0,this._currentSessionRequestMode=null,this.invokeSessionRequestEnd(e,t,o),o?this.setSession(e,o,t,i):(console.warn("XR Session request was rejected"),null)}static invokeSessionRequestStart(e,t){for(const i of this._sessionRequestStartListeners)i({mode:e,init:t})}static invokeSessionRequestEnd(e,t,i){for(const n of this._sessionRequestEndListeners)n({mode:e,init:t,newSession:i||null})}static setSession(e,t,i,n){if(this._activeSession)return console.error("A XRSession is already running"),this._activeSession;const o=e=="immersive-ar"?n.scripts_immersive_ar:n.scripts_immersive_vr;return this._activeSession=new q(e,t,n,{scripts:o,controller_added:this._controllerAddedListeners,controller_removed:this._controllerRemovedListeners,init:i}),t.addEventListener("end",this.onEnd),Be?console.log(`%cStarted ${e} session`,"font-weight:bold;",o):console.log(`%cStarted ${e} session`,"font-weight:bold;"),this._activeSession}static $_stop_request=Symbol();static stop(){const e=this._activeSession;e&&(e[this.$_stop_request]===void 0?(Be&&console.log("[NeedleXRSession] Stopping XR Session... (new)"),e[this.$_stop_request]=setTimeout(()=>{e.end()})):Be&&console.warn("[NeedleXRSession] XR Session stop already requested"))}static onEnd=()=>{Be&&console.log("XR Session ended"),this._activeSession=null};context;get sync(){return q._sync}get running(){return!this._ended&&this.session!=null}session;mode;get interactionMode(){return this.session.interactionMode}get visibilityState(){return this.session.visibilityState}get isVisibleBlurred(){return this.session.visibilityState==="visible-blurred"}get isSystemKeyboardSupported(){return this.session.isSystemKeyboardSupported}get environmentBlendMode(){return this.session.environmentBlendMode}get frame(){return this.context.xrFrame}controllers=[];get leftController(){return this.controllers.find(e=>e.side==="left")}get rightController(){return this.controllers.find(e=>e.side==="right")}getController(e){return typeof e=="number"?this.controllers[e]||null:this.controllers.find(t=>t.side===e)||null}get isPassThrough(){return!!(this.environmentBlendMode!=="opaque"&&this.interactionMode==="world-space"||this.mode==="immersive-ar"&&this.environmentBlendMode!=="opaque"&&this.controllers.some(e=>e.inputSource.targetRayMode==="tracked-pointer")||A()&&exports.DeviceUtilities.isDesktop()&&this.mode==="immersive-ar")}get isAR(){return this.mode==="immersive-ar"}get isVR(){return this.mode==="immersive-vr"}get isScreenBasedAR(){return this.isAR&&!this.isPassThrough}get posePosition(){return this._transformPosition}get poseOrientation(){return this._transformOrientation}get referenceSpace(){return this.context.renderer.xr.getReferenceSpace()}get viewerPose(){return this._viewerPose}get isTrackingImages(){if(this.frame&&"getImageTrackingResults"in this.frame&&typeof this.frame.getImageTrackingResults=="function")try{const e=this.frame.getImageTrackingResults();for(const t of e)if(t.trackingState==="tracked")return!0}catch{return!1}return!1}get rig(){const e=this._rigs[0]??null;return e?.gameObject&&dr(e.gameObject)||e?.isActive===!1?(this.updateActiveXRRig(),this._rigs[0]??null):e}_rigScale=1;_lastRigScaleUpdate=-1;get rigScale(){return this._rigs[0]?(this._lastRigScaleUpdate!==this.context.time.frame&&(this._lastRigScaleUpdate=this.context.time.frame,this._rigScale=this._rigs[0].gameObject.worldScale.x),this._rigScale):1}addRig(e){this._rigs.indexOf(e)>=0||(e.priority===void 0&&(e.priority=0),this._rigs.push(e),this.updateActiveXRRig())}removeRig(e){const t=this._rigs.indexOf(e);t!==-1&&(this._rigs.splice(t,1),this.updateActiveXRRig())}setRigActive(e){const t=this._rigs.indexOf(e),i=this._rigs[0];this._rigs.splice(t,1),this._rigs.unshift(e),e.priority=i?.priority??0,this.updateActiveXRRig()}getUserOffsetInRig(){const e=this.context.mainCamera?.position;if(!e||!this.rig)return F(0,0,0);const t=F(e);return t.x*=-1,t.z*=-1,t.applyQuaternion(Zt(this.rig.gameObject.quaternion)),t}updateActiveXRRig(){const e=this._rigs[0]??null;this._defaultRig.gameObject.parent!==this.context.scene&&this.context.scene.add(this._defaultRig.gameObject),this._defaultRig.gameObject.visible=!0,this._rigs.includes(this._defaultRig)||this._rigs.push(this._defaultRig);let t=this._rigs[0];t&&t.priority===void 0&&(t.priority=0);for(let i=1;i<this._rigs.length;i++){const n=this._rigs[i];if(n.isActive){if(dr(n.gameObject)){this._rigs.splice(i,1),i--;continue}(!t||t.isActive===!1||n.priority!==void 0&&n.priority>t.priority)&&(t=n)}}if(e!==t){const i=this._rigs.indexOf(t);i>=0&&this._rigs.splice(i,1),this._rigs.unshift(t)}Be&&(e===t?console.log("Updated Active XR Rig:",t,"prev:",e):console.log("Updated Active XRRig:",t," (the same as before)"))}_rigs=[];_viewerHitTestSource=null;getHitTest(e){if(e)return this.getControllerHitTest(e);if(!this._viewerHitTestSource)return null;const t=this._viewerHitTestSource,i=this.frame.getHitTestResults(t);if(i.length>0){const n=i[0];return this.convertHitTestResult(n)}return null}getControllerHitTest(e){const t=e.getHitTestSource();if(!t)return null;const i=this.frame.getHitTestResultsForTransientInput(t);for(const n of i)if(n.inputSource===e.inputSource)for(const o of n.results)return this.convertHitTestResult(o);return null}convertHitTestResult(e){const t=this.context.renderer.xr.getReferenceSpace(),i=t&&e.getPose(t);if(i){const n=F(i.transform.position),o=Zt(i.transform.orientation),r=this.context.mainCamera;if(r?.parent!==this._cameraRenderParent&&n.applyMatrix4(ba),r?.parent){n.applyMatrix4(r.parent.matrixWorld),o.multiply(Ai);const a=pe(r.parent);a.premultiply(Ai),o.premultiply(a)}return{hit:e,position:n,quaternion:o}}return null}convertSpace(e){const t=F(e.position);t.applyMatrix4(ba);const i=Zt(e.orientation);return i.premultiply(Ai),{position:t,quaternion:i}}_defaultRig;_xr_scripts;_xr_update_scripts=[];_inactive_scripts=[];_controllerAdded;_controllerRemoved;_originalCameraWorldPosition;_originalCameraWorldRotation;_originalCameraWorldScale;_originalCameraParent;_mainCamera=null;constructor(e,t,i,n){XC(e,n.init),this.session=t,this.mode=e,this.context=i,(Be||x("console"))&&_a(!0),this._xr_scripts=[...n.scripts],this._xr_update_scripts=this._xr_scripts.filter(o=>typeof o.onUpdateXR=="function"),this._controllerAdded=n.controller_added,this._controllerRemoved=n.controller_removed,ws(this.onBefore,ge.LateUpdate),this.context.pre_render_callbacks.push(this.onBeforeRender),this.context.post_render_callbacks.push(this.onAfterRender),(n.init.optionalFeatures?.includes("hit-test")||n.init.requiredFeatures?.includes("hit-test"))&&t.requestReferenceSpace("viewer").then(o=>t.requestHitTestSource?.call(t,{space:o})?.then(r=>this._viewerHitTestSource=r).catch(r=>console.error(r))).catch(o=>console.error(o)),this.context.mainCamera&&(this._originalCameraWorldPosition=Y(this.context.mainCamera,new c.Vector3),this._originalCameraWorldRotation=pe(this.context.mainCamera,new c.Quaternion),this._originalCameraWorldScale=Le(this.context.mainCamera,new c.Vector3),this._originalCameraParent=this.context.mainCamera.parent,this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera[jh]=this.context.mainCamera.fov)),this._defaultRig=new CC,this.context.scene.add(this._defaultRig.gameObject),this.addRig(this._defaultRig);for(let o=0;o<t.inputSources.length;o++){const r=t.inputSources[o];if(!r.handedness){console.warn("Input source in xr session has no handedness - ignoring",o);continue}this.onInputSourceAdded(r)}this.session.addEventListener("end",this.onEnd),this.session.addEventListener("inputsourceschange",o=>{for(const r of o.removed)this.disconnectInputSource(r);for(const r of o.added)this.onInputSourceAdded(r)}),this.context.xr=this,this.context.renderer.xr.setSession(this.session).then(this.onRendererSessionSet),"controllerAutoUpdate"in this.context.renderer.xr?(console.debug("Disabling three.js controllerAutoUpdate"),this.context.renderer.xr.controllerAutoUpdate=!1):Be&&console.warn("controllerAutoUpdate is not available in three.js - cannot disable it"),exports.DeviceUtilities.isNeedleAppClip()&&window.requestAnimationFrame(()=>{const o=this.context.renderer.domElement,r=window.devicePixelRatio||1,a=o.width,l=o.height,h=Math.floor(window.innerWidth*r),d=Math.floor(window.innerHeight*r);(Math.abs(a-h)>2||Math.abs(l-d)>2)&&(o.width=h,o.height=d,console.debug("Applied DPR scaling for Needle AppClip XR session",r,o.width,o.height))})}onRendererSessionSet=()=>{this.running&&(this.context.renderer.xr.enabled=!0,this.context.renderer.xr.updateCamera(this.context.mainCamera),this.context.mainCameraComponent?.applyClearFlags())};onInputSourceAdded=e=>{if(e.targetRayMode==="screen")return;let t=0;for(let n=0;n<this.session.inputSources.length;n++)if(this.session.inputSources[n]===e){t=n;break}if(this.controllers.find(n=>n.inputSource===e)){console.debug("Controller already exists for input source",t);return}else if(this._newControllers.find(n=>n.inputSource===e)){console.debug("Controller already registered for input source",t);return}const i=new Gm(this,e,t);this._newControllers.push(i)};disconnectInputSource(e){const t=(o,r)=>{if(o.inputSource===e){Be&&console.log("Disconnecting controller",o.index);const a=r.indexOf(o);a>=0&&r.splice(a,1),this.invokeControllerEvent(o,this._controllerRemoved,"removed");const l={xr:this,controller:o,change:"removed"};for(const h of this._xr_scripts)h.onXRControllerRemoved&&h.onXRControllerRemoved(l);o.onDisconnected()}},i=[...this.controllers];for(let o=i.length-1;o>=0;o--){const r=i[o];t(r,this.controllers)}const n=[...this._newControllers];for(let o=n.length-1;o>=0;o--){const r=n[o];t(r,this._newControllers)}}end(){this._ended||this.session.end().catch(e=>console.warn(e))}_ended=!1;_newControllers=[];onEnd=e=>{if(this._ended)return;this._ended=!0,console.debug("XR Session ended"),ei.sendEvent(U.Current,"xr",{action:"session_end",mode:this.mode,source:"NeedleXRSession.onEnd"}),QC(),this.onAfterRender(),this.revertCustomForward(),this._didStart=!1,this._previousCameraParent=null,this.requestedCameraNearPlane=null,yo(this.onBefore,ge.LateUpdate);const t=this.context.pre_render_callbacks.indexOf(this.onBeforeRender);t>=0&&this.context.pre_render_callbacks.splice(t,1);const i=this.context.post_render_callbacks.indexOf(this.onAfterRender);i>=0&&this.context.post_render_callbacks.splice(i,1),this.context.xr=null,this.context.renderer.xr.enabled=!1,this.context.pre_update_oneshot_callbacks.push(()=>{this.context.mainCameraComponent?.applyClearFlags(),this.context.mainCameraComponent?.applyClippingPlane()}),Fv({session:this});for(const o of q._xrEndListeners)o({xr:this});const n=[...this.controllers];for(let o=0;o<n.length;o++)this.disconnectInputSource(n[o].inputSource);this.controllers.length=0,this._newControllers.length=0;for(const o of this._xr_scripts)o?.onLeaveXR?.({xr:this});this.sync?.onExitXR(this),this.context.mainCamera&&(this._originalCameraParent?.add(this.context.mainCamera),this._originalCameraWorldPosition&&rt(this.context.mainCamera,this._originalCameraWorldPosition),this._originalCameraWorldRotation&&cn(this.context.mainCamera,this._originalCameraWorldRotation),this._originalCameraWorldScale&&ka(this.context.mainCamera,this._originalCameraWorldScale),this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera[jh]&&(this.context.mainCamera.fov=this.context.mainCamera[jh],this.context.mainCamera[jh]=0),this.context.mainCamera[Tf]&&(this.context.mainCamera.near=this.context.mainCamera[Tf],this.context.mainCamera[Tf]=0))),this.context.requestSizeUpdate(),this._defaultRig.gameObject.removeFromParent(),_a(!1)};_didStart=!1;onBefore=e=>{const t=e.xrFrame;if(!t)return;this.context.xr=this,this.context.mainCameraComponent&&this.context.mainCameraComponent!==this._mainCamera&&(this._mainCamera=this.context.mainCameraComponent),this.rig?.isActive==!1&&(Be&&console.warn("Latest rig is not active - trying to activate a different rig",this.rig),this.updateActiveXRRig()),this.rig&&this._mainCamera?.gameObject&&this._mainCamera?.gameObject?.parent!==this.rig.gameObject&&this.rig.gameObject.add(this._mainCamera?.gameObject),this.internalUpdateState(),this.applyCustomForward();const i={xr:this};if(this._didStart){if(this.context.new_scripts_xr.length>0){const n=[...this.context.new_scripts_xr];for(let o=0;o<n.length;o++){const r=this.context.new_scripts_xr[o];if(!r||r.destroyed||r.supportsXR?.(this.mode)==!1){this.context.new_scripts_xr.splice(o,1);continue}if(!r.activeAndEnabled){this.context.new_scripts_xr.splice(o,1),this.markInactive(r);continue}if(this.addScript(r)){this.invokeCallback_EnterXR(r);for(const a of this.controllers)this.invokeCallback_ControllerAdded(r,a)}}}}else{if(this._didStart=!0,this.mode==="immersive-vr"){const o=ni(this.context.scene.children);if(o){const r=o.getSize(F());if(r.length()>0){const a=this._defaultRig.gameObject;a.position.set(o.min.x+r.x*.5,o.min.y,o.max.z+r.z*.5+1.5);const l=o.getCenter(F());l.y=a.position.y,a.lookAt(l)}}}Bv({session:this}),br();for(const o of q._xrStartListeners)o(i);const n=[...this._xr_scripts];Be&&console.log("NeedleXRSession start, handle scripts:",n);for(const o of n){if(o.destroyed){this._script_to_remove.push(o);continue}if(!o.activeAndEnabled){this.markInactive(o);continue}this.invokeCallback_EnterXR(o);for(const r of this.controllers)this.invokeCallback_ControllerAdded(o,r)}}this.syncCameraCullingMask();for(const n of this.controllers)n.onUpdate(t);if(this._newControllers.length>0){const n=[...this._newControllers];this._newControllers.length=0;for(const o of n){if(!o.connected){console.warn("New controller is not connected",o);continue}this.controllers.push(o);for(const r of this._xr_scripts){if(r.destroyed){this._script_to_remove.push(r);continue}r.activeAndEnabled!==!1&&this.invokeCallback_ControllerAdded(r,o)}}this.controllers.sort((o,r)=>o.index-r.index)}Be&&this.context.time.frame%30===0&&this.controllers.length<=0&&this.session.inputSources.length>0&&(_a(!0),console.error("XRControllers are not added but inputSources are present"));for(const n of this._xr_update_scripts){if(n.destroyed===!0){this._script_to_remove.push(n);continue}if(n.activeAndEnabled===!1){this.markInactive(n);continue}n.onUpdateXR&&n.onUpdateXR(i)}if(this.handleInactiveScripts(),this._script_to_remove.length>0){const n=[...new Set(this._script_to_remove)];this._script_to_remove.length=0;for(const o of n)!o.destroyed&&this.running&&o.onLeaveXR?.(i),this.removeScript(o)}this.sync?.onUpdate(this),this.onRenderDebug()};onRenderDebug(){if(Be)for(const e of this.controllers)e.onRenderDebug();if((Be||v_)&&this.rig&&(Rf++,Rf>=20)){const e=this.rig.gameObject.worldPosition,t=this.rig.gameObject.worldForward;e.add(t.multiplyScalar(1.5));const i=this.rig.gameObject.worldUp;e.add(i.multiplyScalar(2.5));let n="";if(n+=`${this.context.time.smoothedFps.toFixed(0)} FPS`,n+=`, calls: ${this.context.renderer.info.render.calls}, tris: ${this.context.renderer.info.render.triangles.toLocaleString()}`,Be||v_)for(const o of this.controllers)n+=`
|
|
176
|
-
${o.hand?"hand":"ctrl"} ${o.inputSource.handedness}[${o.index}] con:${o.connected} tr:${o.isTracking} hts:${o.hasHitTestSource?"yes":"no"}`;Rf=0,B.DrawLabel(e,n,void 0,1/60*20)}}onBeforeRender=()=>{this.context.mainCamera&&(this.updateFade(this.context.mainCamera),this.requestedCameraNearPlane!==null&&this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera.near=this.requestedCameraNearPlane,this.requestedCameraNearPlane=null))};onAfterRender=()=>{if(this.onUpdateFade_PostRender(),exports.DeviceUtilities.isDesktop()||!this._renderOnceOnDevice){const e=this.context.renderer;if(e.xr.isPresenting&&this.context.mainCamera){this._renderOnceOnDevice=!0;const t=e.xr.enabled,i=e.getRenderTarget(),n=this.context.scene.background;e.xr.enabled=!1,e.setRenderTarget(null),this.isPassThrough&&(this.context.scene.background=null),this.context.composer?this.context.composer.render(this.context.time.deltaTime):e.render(this.context.scene,this.context.mainCamera),e.xr.enabled=t,e.setRenderTarget(i),this.context.scene.background=n}}};addScript(e){return this._xr_scripts.includes(e)?!1:(Be&&console.log("Register new XRScript",e),this._xr_scripts.push(e),typeof e.onUpdateXR=="function"&&this._xr_update_scripts.push(e),!0)}markInactive(e){if(!(this._inactive_scripts.indexOf(e)>=0)){this.removeScript(e,!1),this._inactive_scripts.push(e);for(const t of this.controllers)this.invokeCallback_ControllerRemoved(e,t);this.invokeCallback_LeaveXR(e)}}handleInactiveScripts(){if(this._inactive_scripts.length>0)for(let e=this._inactive_scripts.length-1;e>=0;e--){const t=this._inactive_scripts[e];if(t.activeAndEnabled){this._inactive_scripts.splice(e,1),this.addScript(t),this.invokeCallback_EnterXR(t);for(const i of this.controllers)this.invokeCallback_ControllerAdded(t,i)}}}_script_to_remove=[];removeScript(e,t=!0){Be&&console.log("Remove XRScript",e);const i=this._xr_scripts.indexOf(e);i>=0&&this._xr_scripts.splice(i,1);const n=this._xr_update_scripts.indexOf(e);if(n>=0&&this._xr_update_scripts.splice(n,1),t){const o=this._inactive_scripts.indexOf(e);o>=0&&this._inactive_scripts.splice(o,1)}}invokeCallback_EnterXR(e){e.onEnterXR&&e.onEnterXR({xr:this})}invokeCallback_ControllerAdded(e,t){e.onXRControllerAdded&&e.onXRControllerAdded({xr:this,controller:t,change:"added"})}invokeCallback_ControllerRemoved(e,t){e.onXRControllerRemoved&&e.onXRControllerRemoved({xr:this,controller:t,change:"removed"})}invokeCallback_LeaveXR(e){e.onLeaveXR&&!e.destroyed&&e.onLeaveXR({xr:this})}syncCameraCullingMask(){const e=this.context.xrCamera,t=this.context.mainCameraComponent?.cullingMask;if(e&&t!==void 0){for(const i of e.cameras)i.layers.mask=t;e.layers.mask=t}else if(e){for(const i of e.cameras)i.layers.enableAll();e.layers.enableAll()}}invokeControllerEvent(e,t,i){for(let n=t.length-1;n>=0;n--){const o=t[n];if(o)try{o({xr:this,controller:e,change:i})}catch(r){console.error(r)}}}_camera;_cameraRenderParent=new c.Object3D().rotateY(Math.PI);_previousCameraParent;_customforward=!0;originalCameraNearPlane;requestedCameraNearPlane=null;applyCustomForward(){if(this.context.mainCamera&&this._customforward){this._camera=this.context.mainCamera,this._camera.parent!==this._cameraRenderParent&&(this._previousCameraParent=this._camera.parent,this._previousCameraParent?.add(this._cameraRenderParent)),this._cameraRenderParent.name="XR Camera Render Parent",this._cameraRenderParent.add(this._camera);{let e=.02;const t=.001;if(this.rig){const i=Le(this.rig.gameObject);e*=i.x}this._camera instanceof c.PerspectiveCamera&&Math.abs(this._camera.near-e)>t&&(this.isAR?this.originalCameraNearPlane=this._camera.near:this._camera.near=e,Be&&console.debug(`Setting camera near plane to ${e} (was ${this.originalCameraNearPlane}) to account for XR rendering scale`))}}}revertCustomForward(){this._camera&&this._previousCameraParent&&this._previousCameraParent.add(this._camera),this._previousCameraParent=null,this._camera instanceof c.PerspectiveCamera&&this.originalCameraNearPlane!=null&&(this._camera.near=this.originalCameraNearPlane,this.originalCameraNearPlane=void 0)}_viewerPose;_transformOrientation=new c.Quaternion;_transformPosition=new c.Vector3;internalUpdateState(){const e=this.context.renderer.xr.getReferenceSpace();if(!e){this._viewerPose=void 0;return}if(this._viewerPose=this.frame.getViewerPose(e),this._viewerPose){const t=this._viewerPose.transform;this._transformPosition.set(t.position.x,t.position.y,t.position.z),this._transformOrientation.set(t.orientation.x,t.orientation.y,t.orientation.z,t.orientation.w)}}_transition;get transition(){return this._transition||(this._transition=new g_),this._transition}fadeTransition(){return this._transition||(this._transition=new g_),this._transition.fadeTransition()}updateFade(e){this._transition&&e instanceof c.PerspectiveCamera&&this._transition.update(e,this.context.time.deltaTime)}onUpdateFade_PostRender(){this._transition?.remove()}}const Af=x("debugwebxr");class Yv{static tryFindAvatarObjects(e,t,i){if(i.head&&i.leftHand&&i.rightHand)return;const n=e.name.toLocaleLowerCase();!i.head&&n.includes("head")&&(Af&&console.log("FOUND AVATAR HEAD",e.name),i.head=new Z("",t,e)),n.includes("hand")&&(!i.leftHand&&n.includes("left")&&(Af&&console.log("FOUND AVATAR LEFT HAND",e.name),i.leftHand=new Z("",t,e)),!i.rightHand&&n.includes("right")&&(Af&&console.log("FOUND AVATAR RIGHT HAND",e.name),i.rightHand=new Z("",t,e)));for(let o=0;o<e.children.length;o++){if(i.head&&i.leftHand&&i.rightHand)return;const r=e.children[o];this.tryFindAvatarObjects(r,t,i)}}}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=L.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=L.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 Ct=new c.Vector3,w_=new c.Vector3,x_=new c.Quaternion,ZC=x("debuggizmos"),Ji=8947848,Df=32;class B{constructor(){}static enabled=!0;static isGizmo(e){return e[Fp]!==void 0}static setVisible(e){for(const t of Mi.timedObjectsBuffer)t.visible=e}static DrawLabel(e,t,i=.05,n=0,o,r,a){if(!B.enabled)return null;o||(o=Ji);const l=q.active?.rigScale??1,h=Mi.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=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),Ct.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+Ct.x,e.y+Ct.y,e.z+Ct.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,sn(r.material,i)}static DrawDirection(e,t,i=Ji,n=0,o=!0,r=1){if(!B.enabled)return;const a=Mi.getLine(n),l=a.geometry.getAttribute("position");l.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(Ct.set(0,0,-r),x_.set(t.x,t.y,t.z,t.w),Ct.applyQuaternion(x_)):(Ct.set(t.x,t.y,t.z),Ct.multiplyScalar(r)),l.setXYZ(1,e.x+Ct.x,e.y+Ct.y,e.z+Ct.z),l.needsUpdate=!0,a.material.depthTest=o,a.material.depthWrite=!1,sn(a.material,i)}static DrawLine(e,t,i=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.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,sn(r.material,i)}static DrawCircle(e,t,i,n=Ji,o=0,r=!0){if(!B.enabled)return;const a=Mi.getCircle(o);a.position.set(e.x,e.y,e.z),a.scale.set(i,i,i),a.quaternion.setFromUnitVectors(this._up,Ct.set(t.x,t.y,t.z).normalize()),a.material.depthTest=r,a.material.depthWrite=!1,a.material.fog=!1,sn(a.material,n)}static DrawWireSphere(e,t,i=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.getSphere(t,n,!0);hr(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,sn(r.material,i)}static DrawSphere(e,t,i=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.getSphere(t,n,!1);hr(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,sn(r.material,i)}static DrawWireBox(e,t,i=Ji,n=0,o=!0,r=void 0){if(!B.enabled)return;const a=Mi.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,sn(a.material,i)}static DrawWireBox3(e,t=Ji,i=0,n=!0){if(!B.enabled)return;const o=Mi.getBox(i);o.position.copy(e.getCenter(Ct)),o.scale.copy(e.getSize(Ct)),o.material.depthTest=n,o.material.wireframe=!0,o.material.depthWrite=!1,o.material.fog=!1,sn(o.material,t)}static _up=new c.Vector3(0,1,0);static DrawArrow(e,t,i=Ji,n=0,o=!0,r=!1){if(!B.enabled)return;const a=Mi.getArrowHead(n);a.position.set(t.x,t.y,t.z),a.quaternion.setFromUnitVectors(this._up.set(0,1,0),Ct.set(t.x,t.y,t.z).sub(w_.set(e.x,e.y,e.z)).normalize());const h=Ct.set(t.x,t.y,t.z).sub(w_.set(e.x,e.y,e.z)).length()*.1;a.scale.set(h,h,h),a.material.depthTest=o,a.material.wireframe=r,sn(a.material,i),this.DrawLine(e,t,i,n,o)}static DrawWireMesh(e){const t=Mi.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,sn(t.material,e.color??Ji)}}const JC=new c.BoxGeometry(1,1,1);function Km(s=null){const e=new c.Color(s??14540253),t=new c.EdgesGeometry(JC);return new c.LineSegments(t,new c.LineBasicMaterial({color:e}))}function sn(s,e){if(Array.isArray(s)){for(const i of s)sn(i,e);return}const t=e instanceof te?e.a:1;s.color.set(e),s.opacity=t,s.transparent=t<1}const Fp=Symbol("GizmoCache");class Mi{static familyName="needle-gizmos";static ensureFont(){let e=ie.__webpack_exports__default.FontLibrary.getFontFamily(this.familyName);e||(e=ie.__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",()=>{ie.__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),ZC&&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 ie.__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(Df*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/(Df-1);for(let h=0;h<Df+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[Fp]=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,ie.__webpack_exports__default.update());for(let i=0;i<t.length;i++){const n=t[i];if(e.mainCamera&&n instanceof ie.__webpack_exports__default.MeshUIBaseElement){if(dr(n))continue;const o=e.isInVR,r=!1,a=!o;Bc(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(),dr(r)!=!0&&r[Fp].push(r))}}}const Nt=x("debugphysics"),e1=x("debugworker"),S_=new c.Layers;class bo{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){S_.set(e),this.layerMask=S_}setMask(e){this.layerMask||(this.layerMask=new c.Layers);const t=this.layerMask;t?t.mask=e:this.layerMask=e}}class Zm{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}}class Ia{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 bo;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){Nt&&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 Nt&&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)),Nt&&console.time("raycast"),o.length=0,Ia._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))),Ia._raycasting--,Nt&&(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&&C_(l)||(r=!1));if(r){const h=i.length,d=o.raycastPreference||"lod";let u=d!=="bounds";if(n.precise===!1&&(u=!1),l&&(u||=l.getAttribute("position")?.array?.length<64),a instanceof X.GroundedSkybox&&(u=!1),d==="lod"){const p=re.getRaycastMesh(o);p&&(a.geometry=p)}if(!u&&i1(a,e,i)||(n.useAcceleratedRaycast!==!1?Ud.runMeshBVHRaycast(e,a,i,this.context,n):e.intersectObject(a,!1,i)),a.geometry=l,Nt&&i.length!=h){const p=i[i.length-1];B.DrawWireSphere(p.point,.1,7798784,1,!1),B.DrawWireMesh({mesh:o,depthTest:!1,duration:.2,color:7798784})}}n.recursive!==!1&&this.intersect(e,o.children,i,n)}return i}tempBoundingBox=new c.Box3;intersectSphere(e,t,i,n,o,r,a,l){let h=e&&e.isMesh&&e.layers.test(n)&&!B.isGizmo(e);h&&=e.visible,h&&=!(e instanceof c.Line),h&&=!(e instanceof X.GroundedSkybox);const d=e,u=d.geometry;if(h&&l){const p=l(e);if(p===!1)return;p==="continue in children"&&(h=!1)}if(u&&C_(u)||(h=!1),h){if(a){const p=this.sphere;p.center.copy(t),p.radius=i;const m=o.length;if(Ud.runMeshBVHRaycast(this.sphere,d,o,this.context,{}),m!=o.length&&!r)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){d.matrixWorldNeedsUpdate&&d.updateWorldMatrix(!1,!1);const p=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(d.matrixWorld),m=this.sphere;if(m.center.copy(t),m.radius=i,m.intersectsBox(p)){const y=Y(e),_=y.distanceTo(m.center),g=new Zm(e,_,y);if(o.push(g),!r)return}}}if(e.children)for(const p of e.children){const m=o.length;if(this.intersectSphere(p,t,i,n,o,r,a,l),m!=o.length&&!r)return}}}function C_(s){return!(s.index&&s.index.array.length<3)}const jo=new c.Sphere,Bh=new c.Plane,t1=new c.Matrix3;function i1(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){Bh.setFromNormalAndCoplanarPoint(F(0,1,0),F(0,-l.position.y,0)),Bh.applyMatrix4(l.matrixWorld,t1);const u=o.ray.intersectPlane(Bh,F());if(u){jo.copy(h),jo.applyMatrix4(l.matrixWorld);const m=F(u).sub(o.ray.origin).length(),y=jo.radius*.5;m<y&&r.push({distance:m,point:u,object:l,normal:Bh.normal.clone()})}return}jo.copy(h),jo.applyMatrix4(l.matrixWorld);const d=o.ray.intersectSphere(jo,F());if(d){const u=F(d).sub(o.ray.origin),p=u.length();if(p>jo.radius){const m=u.clone().normalize();r.push({distance:p,point:d,object:l,normal:m})}}}}),s._computeIntersections=n,e.intersectObject(s,!1,t),s._computeIntersections=i,!0}var Ud;(s=>{let e=0;function t(b,v,R,O,M){if(!v.geometry||!v.geometry.hasAttribute("position"))return!1;const D=v.geometry;if(v?.isSkinnedMesh){const I=v,j=I.bvhNeedsUpdate;if(!I.staticGenerator)l(),r&&(I.staticGenerator=new r(v),I.staticGenerator.applyWorldTransforms=!1,I.staticGeometry=I.staticGenerator.generate(),D.boundsTree=a?.call(I.staticGeometry),I.staticGeometryLastUpdate=performance.now()+Math.random()*200,I.bvhNeedsUpdate=!0);else if(D.boundsTree&&(I.autoUpdateMeshBvhInterval!==void 0&&I.autoUpdateMeshBvhInterval>=0||j===!0)){const V=performance.now(),W=V-I.staticGeometryLastUpdate,k=I.autoUpdateMeshBvhInterval??100;(j||W>k)&&(Nt&&console.warn(`Physics: updating skinned mesh bvh for ${v.name} after ${W.toFixed(2)}ms`),I.bvhNeedsUpdate=!1,I.staticGeometryLastUpdate=V,I.staticGenerator?.generate(I.staticGeometry),D.boundsTree.refit())}}else if(!D.boundsTree){d||w();let I=!0;if((O.xr||D[y]===!1||D.getAttribute("position")?.isInterleavedBufferAttribute||D.index&&D.index?.isInterleavedBufferAttribute||e>10)&&(I=!1),I&&p){if(D[m]===void 0){let j=null;if(g.length>0){const V=g.shift();V&&!V.running&&(j=V)}if(!j&&_.length<3)try{e1&&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-Cn3cV2Xd.umd.cjs",document.baseURI).href),j=new p,_.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=v.name;Nt&&console.log("<<<< worker start",V,j),D[m]="queued",performance.mark("bvh.create.start");const W=D.clone();try{j.generate(W).then(k=>{D[m]="done",D.boundsTree=k}).catch(k=>{D[m]="failed - "+k?.message,D[y]=!1,Nt&&console.error("Failed to generate mesh bvh on worker",k)}).finally(()=>{Nt&&console.log(">>>>> worker done",V,{hasBoundsTre:D.boundsTree!=null}),g.push(j),W.dispose(),performance.mark("bvh.create.end"),performance.measure("bvh.create (worker)","bvh.create.start","bvh.create.end")})}catch(k){console.error("Failed to generate mesh bvh on worker",k)}}else Nt&&console.warn("No worker available")}}else(!u||!I)&&(l(),o&&(performance.mark("bvh.create.start"),D.boundsTree=new o(D),performance.mark("bvh.create.end"),performance.measure("bvh.create","bvh.create.start","bvh.create.end")))}if(b instanceof c.Raycaster){const I=b,j=v.raycast;if(D.boundsTree)l(),n&&(v.acceleratedRaycast||(v.acceleratedRaycast=n.bind(v),Nt&&console.debug(`Physics: bind acceleratedRaycast fn to "${v.name}"`)),v.raycast=v.acceleratedRaycast);else if(Nt&&console.warn("No bounds tree found for mesh",v.name,{workerTask:D[m],hasAcceleratedRaycast:n!=null}),M.allowSlowRaycastFallback===!1&&(D.getAttribute("position")?.array?.length??0)>2e3)return Nt&&console.warn("Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false"),!1;const V=I.firstHitOnly;return I.firstHitOnly=!1,I.intersectObject(v,!1,R),I.firstHitOnly=V,v.raycast=j,!0}else if(b instanceof c.Sphere){const I=D.boundsTree;if(I){const j=b;if(h.copy(v.matrixWorld).invert(),j.applyMatrix4(h),I.intersectsSphere(j)){const W=Y(v),k=W.distanceTo(j.center),N=new Zm(v,k,W);R.push(N)}}return!0}return!1}s.runMeshBVHRaycast=t;let i=!1,n=null,o=null,r=null,a=null;function l(){i||(i=!0,Promise.resolve().then(()=>require("./vendor-CipoooTV.umd.cjs")).then(b=>b.index$1).then(b=>{n=b.acceleratedRaycast,o=b.MeshBVH,r=b.StaticGeometryGenerator,a=b.computeBoundsTree}).catch(b=>{(Nt||A())&&console.error("Failed to load BVH library...",b.message)}))}const h=new c.Matrix4;let d=!1,u=!1,p=null;const m=Symbol("Needle:MeshBVH-Worker"),y=Symbol("Needle:MeshBVH-CanUseWorker"),_=[],g=[];function w(){d=!0,u=!0,Promise.resolve().then(()=>oA).then(b=>{p=b.GenerateMeshBVHWorker}).catch(b=>{Nt||A()?console.warn("Failed to setup mesh bvh worker"):console.debug("Failed to setup mesh bvh worker",b)}).finally(()=>{u=!1})}})(Ud||(Ud={}));const P_=Symbol("gltf-loader-internal-usage-tracker"),n1=x("debugusers");class wa{get name(){return"NEEDLE_internal_usage_tracker"}static isLoading(e){return wa._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(){wa._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[P_]=e._loadingId),r)),o},null}afterRoot(e){wa._loadingProcesses--,this.parser.getDependency=this._getDependency;for(const t of this._loadedObjects)delete t[P_],t instanceof c.Object3D&&(t.parent||t instanceof c.Mesh&&setTimeout(()=>{n1&&console.warn("> GLTF LOADER: Mesh not used in scene!",t),t.material=null,t.geometry=null},1e3));return null}}class Kv{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:
|
|
176
|
+
${o.hand?"hand":"ctrl"} ${o.inputSource.handedness}[${o.index}] con:${o.connected} tr:${o.isTracking} hts:${o.hasHitTestSource?"yes":"no"}`;Rf=0,B.DrawLabel(e,n,void 0,1/60*20)}}onBeforeRender=()=>{this.context.mainCamera&&(this.updateFade(this.context.mainCamera),this.requestedCameraNearPlane!==null&&this.context.mainCamera instanceof c.PerspectiveCamera&&(this.context.mainCamera.near=this.requestedCameraNearPlane,this.requestedCameraNearPlane=null))};onAfterRender=()=>{if(this.onUpdateFade_PostRender(),exports.DeviceUtilities.isDesktop()||!this._renderOnceOnDevice){const e=this.context.renderer;if(e.xr.isPresenting&&this.context.mainCamera){this._renderOnceOnDevice=!0;const t=e.xr.enabled,i=e.getRenderTarget(),n=this.context.scene.background;e.xr.enabled=!1,e.setRenderTarget(null),this.isPassThrough&&(this.context.scene.background=null),this.context.composer?this.context.composer.render(this.context.time.deltaTime):e.render(this.context.scene,this.context.mainCamera),e.xr.enabled=t,e.setRenderTarget(i),this.context.scene.background=n}}};addScript(e){return this._xr_scripts.includes(e)?!1:(Be&&console.log("Register new XRScript",e),this._xr_scripts.push(e),typeof e.onUpdateXR=="function"&&this._xr_update_scripts.push(e),!0)}markInactive(e){if(!(this._inactive_scripts.indexOf(e)>=0)){this.removeScript(e,!1),this._inactive_scripts.push(e);for(const t of this.controllers)this.invokeCallback_ControllerRemoved(e,t);this.invokeCallback_LeaveXR(e)}}handleInactiveScripts(){if(this._inactive_scripts.length>0)for(let e=this._inactive_scripts.length-1;e>=0;e--){const t=this._inactive_scripts[e];if(t.activeAndEnabled){this._inactive_scripts.splice(e,1),this.addScript(t),this.invokeCallback_EnterXR(t);for(const i of this.controllers)this.invokeCallback_ControllerAdded(t,i)}}}_script_to_remove=[];removeScript(e,t=!0){Be&&console.log("Remove XRScript",e);const i=this._xr_scripts.indexOf(e);i>=0&&this._xr_scripts.splice(i,1);const n=this._xr_update_scripts.indexOf(e);if(n>=0&&this._xr_update_scripts.splice(n,1),t){const o=this._inactive_scripts.indexOf(e);o>=0&&this._inactive_scripts.splice(o,1)}}invokeCallback_EnterXR(e){e.onEnterXR&&e.onEnterXR({xr:this})}invokeCallback_ControllerAdded(e,t){e.onXRControllerAdded&&e.onXRControllerAdded({xr:this,controller:t,change:"added"})}invokeCallback_ControllerRemoved(e,t){e.onXRControllerRemoved&&e.onXRControllerRemoved({xr:this,controller:t,change:"removed"})}invokeCallback_LeaveXR(e){e.onLeaveXR&&!e.destroyed&&e.onLeaveXR({xr:this})}syncCameraCullingMask(){const e=this.context.xrCamera,t=this.context.mainCameraComponent?.cullingMask;if(e&&t!==void 0){for(const i of e.cameras)i.layers.mask=t;e.layers.mask=t}else if(e){for(const i of e.cameras)i.layers.enableAll();e.layers.enableAll()}}invokeControllerEvent(e,t,i){for(let n=t.length-1;n>=0;n--){const o=t[n];if(o)try{o({xr:this,controller:e,change:i})}catch(r){console.error(r)}}}_camera;_cameraRenderParent=new c.Object3D().rotateY(Math.PI);_previousCameraParent;_customforward=!0;originalCameraNearPlane;requestedCameraNearPlane=null;applyCustomForward(){if(this.context.mainCamera&&this._customforward){this._camera=this.context.mainCamera,this._camera.parent!==this._cameraRenderParent&&(this._previousCameraParent=this._camera.parent,this._previousCameraParent?.add(this._cameraRenderParent)),this._cameraRenderParent.name="XR Camera Render Parent",this._cameraRenderParent.add(this._camera);{let e=.02;const t=.001;if(this.rig){const i=Le(this.rig.gameObject);e*=i.x}this._camera instanceof c.PerspectiveCamera&&Math.abs(this._camera.near-e)>t&&(this.isAR?this.originalCameraNearPlane=this._camera.near:this._camera.near=e,Be&&console.debug(`Setting camera near plane to ${e} (was ${this.originalCameraNearPlane}) to account for XR rendering scale`))}}}revertCustomForward(){this._camera&&this._previousCameraParent&&this._previousCameraParent.add(this._camera),this._previousCameraParent=null,this._camera instanceof c.PerspectiveCamera&&this.originalCameraNearPlane!=null&&(this._camera.near=this.originalCameraNearPlane,this.originalCameraNearPlane=void 0)}_viewerPose;_transformOrientation=new c.Quaternion;_transformPosition=new c.Vector3;internalUpdateState(){const e=this.context.renderer.xr.getReferenceSpace();if(!e){this._viewerPose=void 0;return}if(this._viewerPose=this.frame.getViewerPose(e),this._viewerPose){const t=this._viewerPose.transform;this._transformPosition.set(t.position.x,t.position.y,t.position.z),this._transformOrientation.set(t.orientation.x,t.orientation.y,t.orientation.z,t.orientation.w)}}_transition;get transition(){return this._transition||(this._transition=new g_),this._transition}fadeTransition(){return this._transition||(this._transition=new g_),this._transition.fadeTransition()}updateFade(e){this._transition&&e instanceof c.PerspectiveCamera&&this._transition.update(e,this.context.time.deltaTime)}onUpdateFade_PostRender(){this._transition?.remove()}}const Af=x("debugwebxr");class Yv{static tryFindAvatarObjects(e,t,i){if(i.head&&i.leftHand&&i.rightHand)return;const n=e.name.toLocaleLowerCase();!i.head&&n.includes("head")&&(Af&&console.log("FOUND AVATAR HEAD",e.name),i.head=new Z("",t,e)),n.includes("hand")&&(!i.leftHand&&n.includes("left")&&(Af&&console.log("FOUND AVATAR LEFT HAND",e.name),i.leftHand=new Z("",t,e)),!i.rightHand&&n.includes("right")&&(Af&&console.log("FOUND AVATAR RIGHT HAND",e.name),i.rightHand=new Z("",t,e)));for(let o=0;o<e.children.length;o++){if(i.head&&i.leftHand&&i.rightHand)return;const r=e.children[o];this.tryFindAvatarObjects(r,t,i)}}}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=L.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=L.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 Ct=new c.Vector3,w_=new c.Vector3,x_=new c.Quaternion,ZC=x("debuggizmos"),Ji=8947848,Df=32;class B{constructor(){}static enabled=!0;static isGizmo(e){return e[Fp]!==void 0}static setVisible(e){for(const t of Mi.timedObjectsBuffer)t.visible=e}static DrawLabel(e,t,i=.05,n=0,o,r,a){if(!B.enabled)return null;o||(o=Ji);const l=q.active?.rigScale??1,h=Mi.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=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.getLine(n),a=r.geometry.getAttribute("position");a.setXYZ(0,e.x,e.y,e.z),Ct.set(t.x,t.y,t.z).multiplyScalar(999999999),a.setXYZ(1,e.x+Ct.x,e.y+Ct.y,e.z+Ct.z),a.needsUpdate=!0,r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,sn(r.material,i)}static DrawDirection(e,t,i=Ji,n=0,o=!0,r=1){if(!B.enabled)return;const a=Mi.getLine(n),l=a.geometry.getAttribute("position");l.setXYZ(0,e.x,e.y,e.z),t.w!==void 0?(Ct.set(0,0,-r),x_.set(t.x,t.y,t.z,t.w),Ct.applyQuaternion(x_)):(Ct.set(t.x,t.y,t.z),Ct.multiplyScalar(r)),l.setXYZ(1,e.x+Ct.x,e.y+Ct.y,e.z+Ct.z),l.needsUpdate=!0,a.material.depthTest=o,a.material.depthWrite=!1,sn(a.material,i)}static DrawLine(e,t,i=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.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,sn(r.material,i)}static DrawCircle(e,t,i,n=Ji,o=0,r=!0){if(!B.enabled)return;const a=Mi.getCircle(o);a.position.set(e.x,e.y,e.z),a.scale.set(i,i,i),a.quaternion.setFromUnitVectors(this._up,Ct.set(t.x,t.y,t.z).normalize()),a.material.depthTest=r,a.material.depthWrite=!1,a.material.fog=!1,sn(a.material,n)}static DrawWireSphere(e,t,i=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.getSphere(t,n,!0);hr(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,r.material.fog=!1,sn(r.material,i)}static DrawSphere(e,t,i=Ji,n=0,o=!0){if(!B.enabled)return;const r=Mi.getSphere(t,n,!1);hr(r,e.x,e.y,e.z),r.material.depthTest=o,r.material.depthWrite=!1,sn(r.material,i)}static DrawWireBox(e,t,i=Ji,n=0,o=!0,r=void 0){if(!B.enabled)return;const a=Mi.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,sn(a.material,i)}static DrawWireBox3(e,t=Ji,i=0,n=!0){if(!B.enabled)return;const o=Mi.getBox(i);o.position.copy(e.getCenter(Ct)),o.scale.copy(e.getSize(Ct)),o.material.depthTest=n,o.material.wireframe=!0,o.material.depthWrite=!1,o.material.fog=!1,sn(o.material,t)}static _up=new c.Vector3(0,1,0);static DrawArrow(e,t,i=Ji,n=0,o=!0,r=!1){if(!B.enabled)return;const a=Mi.getArrowHead(n);a.position.set(t.x,t.y,t.z),a.quaternion.setFromUnitVectors(this._up.set(0,1,0),Ct.set(t.x,t.y,t.z).sub(w_.set(e.x,e.y,e.z)).normalize());const h=Ct.set(t.x,t.y,t.z).sub(w_.set(e.x,e.y,e.z)).length()*.1;a.scale.set(h,h,h),a.material.depthTest=o,a.material.wireframe=r,sn(a.material,i),this.DrawLine(e,t,i,n,o)}static DrawWireMesh(e){const t=Mi.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,sn(t.material,e.color??Ji)}}const JC=new c.BoxGeometry(1,1,1);function Km(s=null){const e=new c.Color(s??14540253),t=new c.EdgesGeometry(JC);return new c.LineSegments(t,new c.LineBasicMaterial({color:e}))}function sn(s,e){if(Array.isArray(s)){for(const i of s)sn(i,e);return}const t=e instanceof te?e.a:1;s.color.set(e),s.opacity=t,s.transparent=t<1}const Fp=Symbol("GizmoCache");class Mi{static familyName="needle-gizmos";static ensureFont(){let e=ie.__webpack_exports__default.FontLibrary.getFontFamily(this.familyName);e||(e=ie.__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",()=>{ie.__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),ZC&&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 ie.__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(Df*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/(Df-1);for(let h=0;h<Df+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[Fp]=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,ie.__webpack_exports__default.update());for(let i=0;i<t.length;i++){const n=t[i];if(e.mainCamera&&n instanceof ie.__webpack_exports__default.MeshUIBaseElement){if(dr(n))continue;const o=e.isInVR,r=!1,a=!o;Bc(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(),dr(r)!=!0&&r[Fp].push(r))}}}const Nt=x("debugphysics"),e1=x("debugworker"),S_=new c.Layers;class bo{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){S_.set(e),this.layerMask=S_}setMask(e){this.layerMask||(this.layerMask=new c.Layers);const t=this.layerMask;t?t.mask=e:this.layerMask=e}}class Zm{distance;point;object;constructor(e,t,i){this.object=e,this.distance=t,this.point=i}}class Ia{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 bo;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){Nt&&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 Nt&&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)),Nt&&console.time("raycast"),o.length=0,Ia._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))),Ia._raycasting--,Nt&&(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&&C_(l)||(r=!1));if(r){const h=i.length,d=o.raycastPreference||"lod";let u=d!=="bounds";if(n.precise===!1&&(u=!1),l&&(u||=l.getAttribute("position")?.array?.length<64),a instanceof X.GroundedSkybox&&(u=!1),d==="lod"){const p=re.getRaycastMesh(o);p&&(a.geometry=p)}if(!u&&i1(a,e,i)||(n.useAcceleratedRaycast!==!1?Ud.runMeshBVHRaycast(e,a,i,this.context,n):e.intersectObject(a,!1,i)),a.geometry=l,Nt&&i.length!=h){const p=i[i.length-1];B.DrawWireSphere(p.point,.1,7798784,1,!1),B.DrawWireMesh({mesh:o,depthTest:!1,duration:.2,color:7798784})}}n.recursive!==!1&&this.intersect(e,o.children,i,n)}return i}tempBoundingBox=new c.Box3;intersectSphere(e,t,i,n,o,r,a,l){let h=e&&e.isMesh&&e.layers.test(n)&&!B.isGizmo(e);h&&=e.visible,h&&=!(e instanceof c.Line),h&&=!(e instanceof X.GroundedSkybox);const d=e,u=d.geometry;if(h&&l){const p=l(e);if(p===!1)return;p==="continue in children"&&(h=!1)}if(u&&C_(u)||(h=!1),h){if(a){const p=this.sphere;p.center.copy(t),p.radius=i;const m=o.length;if(Ud.runMeshBVHRaycast(this.sphere,d,o,this.context,{}),m!=o.length&&!r)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){d.matrixWorldNeedsUpdate&&d.updateWorldMatrix(!1,!1);const p=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(d.matrixWorld),m=this.sphere;if(m.center.copy(t),m.radius=i,m.intersectsBox(p)){const y=Y(e),_=y.distanceTo(m.center),g=new Zm(e,_,y);if(o.push(g),!r)return}}}if(e.children)for(const p of e.children){const m=o.length;if(this.intersectSphere(p,t,i,n,o,r,a,l),m!=o.length&&!r)return}}}function C_(s){return!(s.index&&s.index.array.length<3)}const jo=new c.Sphere,Bh=new c.Plane,t1=new c.Matrix3;function i1(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){Bh.setFromNormalAndCoplanarPoint(F(0,1,0),F(0,-l.position.y,0)),Bh.applyMatrix4(l.matrixWorld,t1);const u=o.ray.intersectPlane(Bh,F());if(u){jo.copy(h),jo.applyMatrix4(l.matrixWorld);const m=F(u).sub(o.ray.origin).length(),y=jo.radius*.5;m<y&&r.push({distance:m,point:u,object:l,normal:Bh.normal.clone()})}return}jo.copy(h),jo.applyMatrix4(l.matrixWorld);const d=o.ray.intersectSphere(jo,F());if(d){const u=F(d).sub(o.ray.origin),p=u.length();if(p>jo.radius){const m=u.clone().normalize();r.push({distance:p,point:d,object:l,normal:m})}}}}),s._computeIntersections=n,e.intersectObject(s,!1,t),s._computeIntersections=i,!0}var Ud;(s=>{let e=0;function t(b,v,R,O,M){if(!v.geometry||!v.geometry.hasAttribute("position"))return!1;const D=v.geometry;if(v?.isSkinnedMesh){const I=v,j=I.bvhNeedsUpdate;if(!I.staticGenerator)l(),r&&(I.staticGenerator=new r(v),I.staticGenerator.applyWorldTransforms=!1,I.staticGeometry=I.staticGenerator.generate(),D.boundsTree=a?.call(I.staticGeometry),I.staticGeometryLastUpdate=performance.now()+Math.random()*200,I.bvhNeedsUpdate=!0);else if(D.boundsTree&&(I.autoUpdateMeshBvhInterval!==void 0&&I.autoUpdateMeshBvhInterval>=0||j===!0)){const V=performance.now(),W=V-I.staticGeometryLastUpdate,k=I.autoUpdateMeshBvhInterval??100;(j||W>k)&&(Nt&&console.warn(`Physics: updating skinned mesh bvh for ${v.name} after ${W.toFixed(2)}ms`),I.bvhNeedsUpdate=!1,I.staticGeometryLastUpdate=V,I.staticGenerator?.generate(I.staticGeometry),D.boundsTree.refit())}}else if(!D.boundsTree){d||w();let I=!0;if((O.xr||D[y]===!1||D.getAttribute("position")?.isInterleavedBufferAttribute||D.index&&D.index?.isInterleavedBufferAttribute||e>10)&&(I=!1),I&&p){if(D[m]===void 0){let j=null;if(g.length>0){const V=g.shift();V&&!V.running&&(j=V)}if(!j&&_.length<3)try{e1&&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-CNKc71CA.umd.cjs",document.baseURI).href),j=new p,_.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=v.name;Nt&&console.log("<<<< worker start",V,j),D[m]="queued",performance.mark("bvh.create.start");const W=D.clone();try{j.generate(W).then(k=>{D[m]="done",D.boundsTree=k}).catch(k=>{D[m]="failed - "+k?.message,D[y]=!1,Nt&&console.error("Failed to generate mesh bvh on worker",k)}).finally(()=>{Nt&&console.log(">>>>> worker done",V,{hasBoundsTre:D.boundsTree!=null}),g.push(j),W.dispose(),performance.mark("bvh.create.end"),performance.measure("bvh.create (worker)","bvh.create.start","bvh.create.end")})}catch(k){console.error("Failed to generate mesh bvh on worker",k)}}else Nt&&console.warn("No worker available")}}else(!u||!I)&&(l(),o&&(performance.mark("bvh.create.start"),D.boundsTree=new o(D),performance.mark("bvh.create.end"),performance.measure("bvh.create","bvh.create.start","bvh.create.end")))}if(b instanceof c.Raycaster){const I=b,j=v.raycast;if(D.boundsTree)l(),n&&(v.acceleratedRaycast||(v.acceleratedRaycast=n.bind(v),Nt&&console.debug(`Physics: bind acceleratedRaycast fn to "${v.name}"`)),v.raycast=v.acceleratedRaycast);else if(Nt&&console.warn("No bounds tree found for mesh",v.name,{workerTask:D[m],hasAcceleratedRaycast:n!=null}),M.allowSlowRaycastFallback===!1&&(D.getAttribute("position")?.array?.length??0)>2e3)return Nt&&console.warn("Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false"),!1;const V=I.firstHitOnly;return I.firstHitOnly=!1,I.intersectObject(v,!1,R),I.firstHitOnly=V,v.raycast=j,!0}else if(b instanceof c.Sphere){const I=D.boundsTree;if(I){const j=b;if(h.copy(v.matrixWorld).invert(),j.applyMatrix4(h),I.intersectsSphere(j)){const W=Y(v),k=W.distanceTo(j.center),N=new Zm(v,k,W);R.push(N)}}return!0}return!1}s.runMeshBVHRaycast=t;let i=!1,n=null,o=null,r=null,a=null;function l(){i||(i=!0,Promise.resolve().then(()=>require("./vendor-CipoooTV.umd.cjs")).then(b=>b.index$1).then(b=>{n=b.acceleratedRaycast,o=b.MeshBVH,r=b.StaticGeometryGenerator,a=b.computeBoundsTree}).catch(b=>{(Nt||A())&&console.error("Failed to load BVH library...",b.message)}))}const h=new c.Matrix4;let d=!1,u=!1,p=null;const m=Symbol("Needle:MeshBVH-Worker"),y=Symbol("Needle:MeshBVH-CanUseWorker"),_=[],g=[];function w(){d=!0,u=!0,Promise.resolve().then(()=>oA).then(b=>{p=b.GenerateMeshBVHWorker}).catch(b=>{Nt||A()?console.warn("Failed to setup mesh bvh worker"):console.debug("Failed to setup mesh bvh worker",b)}).finally(()=>{u=!1})}})(Ud||(Ud={}));const P_=Symbol("gltf-loader-internal-usage-tracker"),n1=x("debugusers");class wa{get name(){return"NEEDLE_internal_usage_tracker"}static isLoading(e){return wa._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(){wa._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[P_]=e._loadingId),r)),o},null}afterRoot(e){wa._loadingProcesses--,this.parser.getDependency=this._getDependency;for(const t of this._loadedObjects)delete t[P_],t instanceof c.Object3D&&(t.parent||t instanceof c.Mesh&&setTimeout(()=>{n1&&console.warn("> GLTF LOADER: Mesh not used in scene!",t),t.material=null,t.geometry=null},1e3));return null}}class Kv{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:
|
|
177
177
|
`+i.src),e.preventDefault())}})}}const mu=x("trackresources");function Zv(){return mu==="dispose"}let vr=!0;mu===0&&(vr=!1);function s1(s){vr=s}function Jv(){return vr}const e0=Symbol("disposable");function t0(s,e){s&&(s[e0]=e,tr&&console.warn("Set disposable",e,s))}const i0=Symbol("disposed");function o1(s){return s[i0]===!0}function ve(s){if(s){if(s[e0]===!1){tr&&console.warn("Object is marked as not disposable",s);return}if(typeof s=="object"&&(s[i0]=!0),s instanceof c.Scene)ve(s.environment),ve(s.background),ve(s.customDepthMaterial),ve(s.customDistanceMaterial);else if(s instanceof c.SkinnedMesh)ve(s.geometry),ve(s.material),ve(s.skeleton),ve(s.bindMatrix),ve(s.bindMatrixInverse),ve(s.customDepthMaterial),ve(s.customDistanceMaterial),s.visible=!1;else if(s instanceof c.Mesh)ve(s.geometry),ve(s.material),ve(s.customDepthMaterial),ve(s.customDistanceMaterial),s.visible=!1;else if(s instanceof c.Object3D)s.visible=!1;else if(s instanceof c.BufferGeometry){Wr(s);for(const e of Object.keys(s.attributes)){const t=s.attributes[e];ve(t)}}else if(s instanceof c.BufferAttribute||s instanceof c.InterleavedBufferAttribute)tr&&console.warn("BufferAttribute dispose not supported",s.count);else if(s instanceof Array)for(const e of s)e instanceof c.Material&&ve(e);else if(s instanceof c.Material){Wr(s);for(const t of Object.keys(s)){const i=s[t];i instanceof c.Texture&&ve(i)}const e=s.uniforms;if(e)for(const t of Object.keys(e)){const i=e[t];i instanceof c.Texture?ve(i):i instanceof c.Uniform$1&&ve(i.value)}}else s instanceof c.Texture?(Wr(s),Wr(s.source),s.source?.data instanceof ImageBitmap&&Wr(s.source.data)):s instanceof c.Skeleton?(Wr(s.boneTexture),s.boneTexture=null):s instanceof c.Bone||!(s instanceof c.Object3D)&&tr&&console.warn("Unknown object type",s)}}function Wr(s){s&&((tr||Zv()||mu)&&console.warn("🧨 FREE",s),s instanceof ImageBitmap||"dispose"in s&&typeof s.dispose=="function"&&s.dispose())}function r1(s){}const a1=new Set;function Jm(s,e,t=null,i){if(i||(i=a1,i.clear()),!s)return i;const n=s[_c];if(n)for(const o of n)i.has(o)||t?.call(null,o)!==!1&&(i.add(o),e&&Jm(o,!0,t,i));return i}function l1(s){return s[Fl]}const tr=x("debugresourceusers")||x("debugmemory"),_c=Symbol("needle-resource-users"),Fl=Symbol("needle-resource-users-count");function jt(s,e){uu(s,e,function(t,i){vr&&!Ia.raycasting&&(zd(_c,this,t,!1),zd(_c,this,i,!0))})}vr&&(jt(c.Mesh.prototype,"material"),jt(c.Mesh.prototype,"geometry"),jt(c.Material.prototype,"map"),jt(c.Material.prototype,"bumpMap"),jt(c.Material.prototype,"alphaMap"),jt(c.Material.prototype,"normalMap"),jt(c.Material.prototype,"displacementMap"),jt(c.Material.prototype,"roughnessMap"),jt(c.Material.prototype,"metalnessMap"),jt(c.Material.prototype,"emissiveMap"),jt(c.Material.prototype,"specularMap"),jt(c.Material.prototype,"envMap"),jt(c.Material.prototype,"lightMap"),jt(c.Material.prototype,"aoMap"),jt(c.Material.prototype,"gradientMap"));function c1(s){if(vr===!1)return;const e=s[_c];if(e)for(const t of e)zd(_c,t,s,!1)}vr&&uu(c.Material.prototype,"dispose",function(){c1(this)});let Up=0;function zd(s,e,t,i){if(Up>0)return;if(Array.isArray(t)){for(const o of t)zd(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[Fl]||0;o+=1,t[Fl]=o,tr&&console.warn(`🟢 Added user of "${t.type}"`,e,t,o,"users:",n)}}else if(e&&n.has(e)){n.delete(e);let o=t[Fl]||0;o>0&&(o-=1,t[Fl]=o),tr&&console.warn(`🔴 Removed user of "${t.type}"`,e,t,o,"users:",n),o<=0&&(wa.isLoading(t)||(mu&&console.warn(`🔴 Removed all user of "${t.type}"`,t),Zv()&&ve(t)))}t[s]=n}try{uu(c.WebGLRenderer.prototype,"render",function(){Up++},function(){Up--})}catch(s){console.warn("Could not wrap WebGLRenderer.render",s)}const O_=x("debugcomponentevents");class gu{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),O_&&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(O_&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const bc=Symbol("NEEDLE_NEED_UPDATE_INSTANCE"),n0=Symbol("isUsingInstancing"),s0=Symbol("instancingRenderer"),Ul=Symbol("instancingAutoUpdateBounds");class Ui{static isUsingInstancing(e){return e[n0]===!0}static getRenderer(e){return e[s0]||null}setAutoUpdateBounds(e,t){const i=Ui.getRenderer(e);i&&(i[Ul]=t)}static markDirty(e,t=!0){if(e&&(this.isUsingInstancing(e)&&(e[bc]=!0,e.matrixWorldNeedsUpdate=!0),t))for(const i of e.children)Ui.markDirty(i,!0)}}const eg={experimentalSmartHierarchyUpdate:!1};function ec(s,e){try{e||s()}catch(t){return console.error(t),!1}return!0}const zp=x("debugnewscripts"),h1=x("debughierarchy"),Ce=[];function d1(){return Ce.length>0}function Nd(s){if(zp&&console.log("Register new components",s.new_scripts.length,[...s.new_scripts],s.alias?"element: "+s.alias:s.hash,s),s.new_scripts_pre_setup_callbacks.length>0){for(const e of s.new_scripts_pre_setup_callbacks)e&&e();s.new_scripts_pre_setup_callbacks.length=0}if(!(s.new_scripts.length<=0)){Ce.length=0,s.new_scripts.length>0&&Ce.push(...s.new_scripts),s.new_scripts.length=0;for(let e=0;e<Ce.length;e++)try{const t=Ce[e];if(t.isComponent!==!0){(A()||zp)&&console.error(`Registered script is not a Needle Engine component.
|
|
178
178
|
The script will be ignored. Please make sure your component extends "Behaviour" imported from "@needle-tools/engine"
|
|
179
179
|
`,t),Ce.splice(e,1),e--;continue}if(t.destroyed)continue;if(!t.gameObject){console.warn(`Component can not be initialized: no GameObject assigned.
|
|
@@ -1651,4 +1651,4 @@ Error:`,r),null}}updateColliderCollisionGroups(e){const t=e[Ot],i=e.membership;l
|
|
|
1651
1651
|
justify-content: center;
|
|
1652
1652
|
gap: .5rem;
|
|
1653
1653
|
}
|
|
1654
|
-
`),this.#n.innerHTML=this.#e.innerHTML,this.#n.style.cssText="display: flex; align-items: center; justify-content: center;",this.#e.innerHTML=this.#n.outerHTML,this.#t.innerHTML=this.#e.outerHTML,this.#t.prepend(this.#s),qd(Jp,{element:this.#t}),this.#o?.disconnect(),this.#o??=new MutationObserver(()=>this.#c()),this.#o.observe(this.#e,{attributes:!0}),Op&&console.log("Needle Button updated",this)}#c(){this.#e&&(this.#e.style.display==="none"?this.style.display="none":this.style.display==="none"&&(this.style.display=""))}#a=e=>{Op&&console.log("Needle Button clicked",{defaultPrevented:e.defaultPrevented,hasButton:!!this.#e}),!e.defaultPrevented&&this.#e&&this.#e.click()}}typeof window<"u"&&!window.customElements.get(Zb)&&window.customElements.define(Zb,jx);const Ll=x("debugavatar");class $y{root;head;leftHand;rigthHand;get isValid(){return this.head!==null&&this.head!==void 0}constructor(e,t,i,n){this.root=e,this.head=t,this.leftHand=i,this.rigthHand=n,this.root?.traverse(o=>o.layers.set(2))}}class Bx{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof t=="string"){if(i=await this.loadAvatar(e,t),!i){const o=new pn;i=S.instantiate(Ma(t,e.scene),o)}}else i=t;if(!i)return null;const n=this.findAvatar(i);return n.isValid?(Ll&&console.log("[Custom Avatar] valid config",t,Ll?n:""),n):(console.warn("[Custom Avatar] config isn't valid",t,Ll?n:""),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t=="string","Avatar id must not be null"),t.length<=0||!t)return null;if(Ll&&console.log("[Custom Avatar] "+t+", loading..."),t.endsWith(".glb")||(t+=".glb"),this.avatarRegistryUrl===null){const n=await fetch("./"+t);let o=null;if(n.ok){const a=await n.blob();a&&(o=await a.arrayBuffer())}return o?(await hn().parseSync(e,o,null,0))?.scene??null:null}const i=new X.GLTFLoader;return mg(i,e),new Promise((n,o)=>{const r=this.avatarRegistryUrl+"/"+t;i.load(r,async a=>{await hn().createBuiltinComponents(e,r,a,null,void 0),n(a.scene)},a=>{Ll&&console.log("[Custom Avatar] "+a.loaded/a.total*100+"% loaded of "+a.total/1024+"kB")},a=>{console.error("[Custom Avatar] Error when loading: "+a),n(null)})})}cacheModel(e,t){}findAvatar(e){const t=e;let i=t;i.children.length==1&&(i=e.children[0]);let n=this.findAvatarPart(i,["head"]);const o=this.findAvatarPart(i,["left","hand"]),r=this.findAvatarPart(i,["right","hand"]);if(!n){n=t;const l=new c.Vector3;new c.Box3().setFromObject(n).getSize(l);const h=Math.max(l.x,l.y,l.z);console.warn("[Custom Avatar] Normalizing head scale, it's too big: "+h+" meters! Should be < 0.3m"),h>.3&&n.scale.multiplyScalar(1/h*.3)}return new $y(t,n,o,r)}findAvatarPart(e,t){const i=e.name.toLowerCase();let n=!0;for(const o of t){if(!n)break;i.indexOf(o)===-1&&(n=!1)}if(n)return e;if(e.children)for(const o of e.children){const r=this.findAvatarPart(o,t);if(r)return r}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}}class Fx{get extensionName(){return"DocumentExtension"}onAfterBuildDocument(e){}}class Ux{}const nA=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:de,ActionCollection:Gw,ActionModel:Kt,AlignmentConstraint:qc,Animation:Rt,AnimationCurve:hh,AnimationExtension:ju,AnimationTrackHandler:Rc,Animator:at,AnimatorController:zi,Antialiasing:uh,Attractor:sl,AudioExtension:kr,AudioListener:hs,AudioSource:_i,AudioTrackHandler:fs,Avatar:fo,AvatarBlink_Simple:Cr,AvatarEyeLook_Rotation:Cg,AvatarLoader:Bx,AvatarMarker:Oe,AvatarModel:$y,Avatar_Brain_LookAt:Pc,Avatar_MouthShapes:Kc,Avatar_MustacheShake:xg,Avatar_POI:lr,AxesHelper:Wa,BaseUIComponent:Vi,BasicIKConstraint:Og,BehaviorExtension:iy,BehaviorModel:vt,BloomEffect:Ku,BoxCollider:Ru,BoxGizmo:Ar,BoxHelperComponent:gt,Button:As,CallInfo:cs,Camera:ti,CameraTargetReachedEvent:Cc,Canvas:Ba,CanvasGroup:po,CapsuleCollider:_s,ChangeMaterialOnClick:qg,ChangeTransformOnClick:Er,CharacterController:Pr,CharacterControllerInput:Ss,ChromaticAberration:fh,ClickThrough:mf,ColorAdjustments:ko,ColorBySpeedModule:nl,ColorOverLifetimeModule:Xu,ContactShadows:Zc,ControlTrackHandler:lf,CursorFollow:Vr,CustomBranding:Tr,Deletable:Rg,DeleteBox:ro,DepthOfField:yn,DeviceFlag:Tu,DocumentExtension:Fx,DragControls:Ko,DropListener:Ps,Duplicatable:Fg,EffectWrapper:Ec,EmissionModule:Es,EmphasizeOnClick:Xa,EnvironmentScene:ff,EventList:ne,EventListEvent:Ou,EventSystem:Wt,EventTrigger:Iu,FieldWithDefault:Ow,FixedJoint:gy,Fog:Ja,GltfExport:$g,GltfExportBox:Ng,Gradient:Ir,Graphic:ah,GraphicRaycaster:Mu,GridHelper:el,GridLayoutGroup:ly,GroundProjectedEnv:Hn,GroupActionModel:Zo,HideOnStart:Di,HingeJoint:ch,HorizontalLayoutGroup:ay,get HoverAnimation(){return exports.HoverAnimation},Image:hl,InheritVelocityModule:wy,InputField:Ly,InstanceHandle:cr,InstancingHandler:mr,Interactable:Eg,Keyframe:ii,LODGroup:Gu,LODModel:tl,Light:St,LimitVelocityOverLifetimeModule:it,LogStats:kg,LookAt:jy,LookAtConstraint:Sr,MainModule:Dt,MarkerTrackHandler:af,MaskableGraphic:lh,MeshCollider:wo,MeshRenderer:th,MinMaxCurve:H,MinMaxGradient:Lr,NeedleMenu:Xn,NestedGltf:il,Networking:by,NoiseModule:me,ObjectRaycaster:Ni,OffsetConstraint:Dr,OpenURL:dl,OrbitControls:ue,Outline:Za,Padding:Rr,ParticleBurst:ou,ParticleSubEmitter:xy,ParticleSystem:kc,ParticleSystemRenderer:Xi,PhysicsExtension:ny,PixelationEffect:ph,PlayAnimationOnClick:Oc,PlayAudioOnClick:uo,PlayableDirector:_r,PlayerColor:Fa,PointerEventData:Qc,PostProcessingHandler:My,PreliminaryAction:Qa,PreliminaryTrigger:nh,RawImage:df,Rect:Yw,RectTransform:fn,ReflectionProbe:ss,RegisteredAnimationInfo:no,RemoteSkybox:Ju,Renderer:Gt,RendererLightmap:Lg,Rigidbody:Ne,RotationBySpeedModule:qi,RotationOverLifetimeModule:gn,SceneSwitcher:$e,ScreenCapture:Eo,ScreenSpaceAmbientOcclusion:Rs,ScreenSpaceAmbientOcclusionN8:_n,ScrollFollow:Ds,SeeThrough:Ts,SetActiveOnClick:Xg,ShadowCatcher:_h,ShapeModule:vy,SharpeningEffect:gh,SignalAsset:rf,SignalReceiver:Sh,SignalReceiverEvent:xh,SignalTrackHandler:Tc,Size:Qw,SizeBySpeedModule:li,SizeOverLifetimeModule:jr,SkinnedMeshRenderer:jg,SmoothFollow:tf,SpatialGrabRaycaster:fr,SpatialHtml:Ph,SpatialTrigger:nf,SpatialTriggerReceiver:$n,SpectatorCamera:sf,SphereCollider:Ga,SplineContainer:zr,SplineData:Gn,SplineWalker:Yi,Sprite:Os,SpriteData:Pa,SpriteRenderer:ri,SpriteSheet:ja,SubEmitterSystem:ru,SyncedCamera:Ey,SyncedRoom:bn,SyncedTransform:un,TapGestureTrigger:Yg,TeleportTarget:Nu,TestRunner:Ry,TestSimulateUserData:Ty,Text:At,TextBuilder:oy,TextExtension:$u,TextureSheetAnimationModule:It,TiltShiftEffect:Yn,ToneMappingEffect:mo,TrailModule:Ae,TransformData:Re,TransformGizmo:Nr,TriggerBuilder:Et,TriggerModel:ao,UIRaycastUtils:_g,UIRootComponent:oh,USDZExporter:Vn,USDZText:ma,USDZUIExtension:hy,UsageMarker:Jc,VariantAction:Hg,VelocityOverLifetimeModule:je,VerticalLayoutGroup:ry,VideoPlayer:et,get ViewBox(){return exports.ViewBox},Vignette:Ur,VisibilityAction:sh,Voip:vo,Volume:rl,VolumeParameter:z,VolumeProfile:Qu,WebARCameraBackground:Mh,WebARSessionRoot:Bi,WebXR:Vu,WebXRImageTracking:kh,WebXRImageTrackingModel:Ls,WebXRPlaneTracking:js,WebXRTrackedImage:Ua,XRControllerFollow:Is,XRControllerModel:bs,XRControllerMovement:vi,XRFlag:Ii,XRRig:_f,XRState:$t,__Ignore:Ux},Symbol.toStringTag,{value:"Module"})),Dc=x("debugmissingcamera");ce.registerCallback(le.MissingCamera,s=>{Dc&&console.warn("Creating missing camera");const e=s.context.scene,t=new c.PerspectiveCamera;t.name="Default Fallback Camera",e.add(t);const i=new ti;if(i.sourceId=s.files?.[0]?.src??"unknown",i.fieldOfView=35,s.context.domElement.getAttribute("transparent")!=null)i.clearFlags=ar.Uninitialized;else if(s.context.domElement.getAttribute("background-image")?.length||s.context.lightmaps.tryGetSkybox(i.sourceId))i.clearFlags=ar.Skybox;else{if(i.clearFlags=ar.SolidColor,!s.context.domElement.getAttribute("background-color")){let a="#efefef";typeof window!==void 0&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(a="#1f1f1f"),e.background=new c.Color(a)}if(!e.environment){const a=new c.PMREMGenerator$1(s.context.renderer),l=new ff("neutral");e.environment=a.fromScene(l,.025).texture}}const o=ir(t,i,!0);return t.position.x=0,t.position.y=1,t.position.z=2,s.context.domElement?.cameraControls!=!1&&zx(s.context,o),o});ce.registerCallback(le.ContextCreated,s=>{if(!s.context.mainCamera){Dc&&console.log("Will not auto-fit because a default camera exists");return}if(s.context.domElement?.cameraControls==!0){if(dv(s.context.mainCamera)?.isCameraController==!0){Dc&&console.log("Will not auto-fit because a camera controller exists");return}zx(s.context)}});function zx(s,e){e=e??s.mainCameraComponent;const t=e?.gameObject;if(Dc&&console.log("Creating default camera controls",e?.name),t){const i=Vc(t,ue);i.sourceId=e?.sourceId??"unknown";const n=s.domElement.getAttribute("auto-rotate");i.autoRotate=n!="0"&&n?.toLowerCase()!="false";const o=Number.parseFloat(n||".5");i.autoRotateSpeed=isNaN(o)?.5:o,Dc&&console.log("Auto-rotate",i.autoRotate,"speed:",i.autoRotateSpeed);const r=s.domElement.getAttribute("auto-fit");i.autoFit=r!=="0"&&r?.toLowerCase()!="false",i.autoTarget=!0}else console.warn("Missing camera object, can not add orbit controls")}ce.registerCallback(le.ContextCreated,s=>{const e=s.context.domElement.getAttribute("autoplay");if(e!==void 0&&(e===""||e==="true"||e==="1")&&s.files)for(const t of s.files)S.foreachComponent(t.file.scene,n=>{if(n.enabled!==!1){if(n instanceof Rt&&n.playAutomatically||n instanceof at||n instanceof _r&&n.playOnAwake===!0)return!0;if(n instanceof Rt)return n.playAutomatically=!0,!0;if(n instanceof _r)return n.playOnAwake=!0,!0}},!0)!==!0&&Wn.autoplayAnimations(t.file)});exports.SplineUtils=void 0;(s=>{function e(t,i=!1,n=.75){const o=new zr,r=1-L.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 Gn;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 sA extends ae.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-Cn3cV2Xd.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:p}=d,m=ae.MeshBVH.deserialize(u,t,{setIndex:!1}),y=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=p,u.index)if(t.index)t.index.array=u.index;else{const _=new c.BufferAttribute(u.index,1,!1);t.setIndex(_)}y.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new c.Box3)),i.onProgress&&i.onProgress(d.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(d.progress)};const r=t.index?t.index.array:null,a=t.attributes.position.array,l=[a];r&&l.push(r),e.postMessage({index:r,position:a,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...t.groups]}},l.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const oA=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:sA},Symbol.toStringTag,{value:"Module"}));exports.$componentName=Tv;exports.$physicsKey=gC;exports.ActionBuilder=de;exports.ActionCollection=Gw;exports.ActionModel=Kt;exports.Addressables=D0;exports.AlignmentConstraint=qc;exports.AmbientMode=xa;exports.Animation=Rt;exports.AnimationCurve=hh;exports.AnimationExtension=ju;exports.AnimationTrackHandler=Rc;exports.AnimationUtils=Wn;exports.Animator=at;exports.AnimatorConditionMode=Ks;exports.AnimatorController=zi;exports.AnimatorControllerParameterType=gg;exports.AnimatorStateInfo=zl;exports.Antialiasing=uh;exports.Application=dn;exports.AssetDatabase=Kv;exports.AssetReference=Z;exports.Attractor=sl;exports.AudioExtension=kr;exports.AudioListener=hs;exports.AudioSource=_i;exports.AudioTrackHandler=fs;exports.Avatar=fo;exports.AvatarBlink_Simple=Cr;exports.AvatarEyeLook_Rotation=Cg;exports.AvatarLoader=Bx;exports.AvatarMarker=Oe;exports.AvatarModel=$y;exports.Avatar_Brain_LookAt=Pc;exports.Avatar_MouthShapes=Kc;exports.Avatar_MustacheShake=xg;exports.Avatar_POI=lr;exports.Axes=fa;exports.AxesHelper=Wa;exports.BUILD_TIME=mc;exports.BaseUIComponent=Vi;exports.BasicIKConstraint=Og;exports.BehaviorExtension=iy;exports.BehaviorModel=vt;exports.BloomEffect=Ku;exports.BoxCollider=Ru;exports.BoxGizmo=Ar;exports.BoxHelperComponent=gt;exports.Button=As;exports.ButtonsFactory=ji;exports.CallDirection=hw;exports.CallInfo=cs;exports.Camera=ti;exports.CameraTargetReachedEvent=Cc;exports.Canvas=Ba;exports.CanvasGroup=po;exports.CapsuleCollider=_s;exports.ChangeMaterialOnClick=qg;exports.ChangeTransformOnClick=Er;exports.CharacterController=Pr;exports.CharacterControllerInput=Ss;exports.ChromaticAberration=fh;exports.CircularBuffer=gi;exports.ClearFlags=ar;exports.ClickThrough=mf;exports.ClipExtrapolation=On;exports.Collider=Hi;exports.Collision=Dv;exports.CollisionDetectionMode=Pu;exports.ColorAdjustments=ko;exports.ColorBySpeedModule=nl;exports.ColorOverLifetimeModule=Xu;exports.Component=RP;exports.Component$1=E;exports.ComponentLifecycleEvents=gu;exports.Components=nA;exports.ConnectionEvents=Gv;exports.ContactPoint=Av;exports.ContactShadows=Zc;exports.Context=U;exports.ContextArgs=mP;exports.ContextEvent=le;exports.ContextRegistry=ce;exports.ControlTrackHandler=lf;exports.CursorFollow=Vr;exports.CustomBranding=Tr;exports.CustomShader=be;exports.DefaultReflectionMode=Hd;exports.Deletable=Rg;exports.DeleteBox=ro;exports.DepthOfField=yn;exports.DeviceFlag=Tu;exports.DocumentExtension=Fx;exports.DragControls=Ko;exports.DragMode=Tg;exports.DropListener=Ps;exports.Duplicatable=Fg;exports.EffectWrapper=Ec;exports.EmissionModule=Es;exports.EmphasizeOnClick=Xa;exports.EngineLoadingView=Ac;exports.EnvironmentScene=ff;exports.EventList=ne;exports.EventListEvent=Ou;exports.EventSystem=Wt;exports.EventTrigger=Iu;exports.FieldWithDefault=Ow;exports.FileReference=or;exports.FileReferenceSerializer=L0;exports.FileSpawnModel=GO;exports.File_Event=yw;exports.FixedJoint=gy;exports.Fog=Ja;exports.FrameEvent=ge;exports.GENERATOR=Ea;exports.GameObject=S;exports.Gizmos=B;exports.GltfExport=$g;exports.GltfExportBox=Ng;exports.Gradient=Ir;exports.Graphic=ah;exports.GraphicRaycaster=Mu;exports.Graphics=co;exports.GridHelper=el;exports.GridLayoutGroup=ly;exports.GroundProjectedEnv=Hn;exports.GroupActionModel=Zo;exports.HideFlags=du;exports.HideOnStart=Di;exports.HingeJoint=ch;exports.HorizontalLayoutGroup=ay;exports.HostData=g1;exports.Image=hl;exports.ImageReference=sr;exports.ImageReferenceSerializer=I0;exports.InheritVelocityModule=wy;exports.Input=Uv;exports.InputEventQueue=Jt;exports.InputEvents=Pe;exports.InputField=Ly;exports.InstanceHandle=cr;exports.InstancingHandler=mr;exports.InstancingUtil=Ui;exports.InstantiateEvent=a0;exports.InstantiateIdProvider=bt;exports.InstantiateOptions=pn;exports.Interactable=Eg;exports.JoinedRoomResponse=DC;exports.KeyEventArgs=xC;exports.Keyframe=ii;exports.LODGroup=Gu;exports.LODModel=tl;exports.LeftRoomResponse=IC;exports.Light=St;exports.LightData=z0;exports.LimitVelocityOverLifetimeModule=it;exports.LoadingElementOptions=$T;exports.LogStats=kg;exports.LogType=fi;exports.LookAt=jy;exports.LookAtConstraint=Sr;exports.MODULES=T;exports.MainModule=Dt;exports.MarkerTrackHandler=af;exports.MarkerType=Ay;exports.MaskableGraphic=lh;exports.MaterialPropertyBlock=gs;exports.Mathf=L;exports.MeshCollider=wo;exports.MeshRenderer=th;exports.MinMaxCurve=H;exports.MinMaxGradient=Lr;exports.NEEDLE_ENGINE_FEATURE_FLAGS=eg;exports.NEKeyboardEvent=jl;exports.NEPointerEvent=ns;exports.NeedleButtonElement=jx;exports.NeedleEngineWebComponent=Vy;exports.NeedleMenu=Xn;exports.NeedlePatchesKey=fd;exports.NeedleXRController=Gm;exports.NeedleXRSession=q;exports.NeedleXRSync=Xv;exports.NeedleXRUtils=Yv;exports.NestedGltf=il;exports.NetworkConnection=qv;exports.NetworkedStreamEvents=jn;exports.NetworkedStreams=Yc;exports.Networking=by;exports.NewInstanceModel=c0;exports.NoiseModule=me;exports.ObjectRaycaster=Ni;exports.ObjectUtils=_o;exports.OffsetConstraint=Dr;exports.OneEuroFilter=dd;exports.OneEuroFilterXYZ=Dm;exports.OpenURL=dl;exports.OrbitControls=ue;exports.Outline=Za;exports.OwnershipEvent=Hv;exports.OwnershipModel=Qm;exports.PUBLIC_KEY=io;exports.Padding=Rr;exports.ParticleBurst=ou;exports.ParticleSubEmitter=xy;exports.ParticleSystem=kc;exports.ParticleSystemBaseBehaviour=Mo;exports.ParticleSystemRenderer=Xi;exports.ParticleSystemShapeType=su;exports.PeerHandle=ds;exports.PeerNetworking=Wv;exports.Physics=Ia;exports.PhysicsExtension=ny;exports.PhysicsMaterialCombine=nt;exports.PixelationEffect=ph;exports.PlayAnimationOnClick=Oc;exports.PlayAudioOnClick=uo;exports.PlayableDirector=_r;exports.PlayerColor=Fa;exports.PlayerState=Fi;exports.PlayerStateEvent=Xw;exports.PlayerSync=ey;exports.PlayerView=B0;exports.PlayerViewManager=F0;exports.PointerEventData=Qc;exports.PointerType=pu;exports.PostProcessingEffect=qe;exports.PostProcessingEffectOrder=Je;exports.PostProcessingHandler=My;exports.PreliminaryAction=Qa;exports.PreliminaryTrigger=nh;exports.PrimitiveType=za;exports.Progress=oe;exports.PromiseAllWithErrors=Tm;exports.PromiseErrorResult=Ep;exports.RGBAColor=te;exports.RapierPhysics=Oa;exports.RawImage=df;exports.RaycastOptions=bo;exports.Rect=Yw;exports.RectTransform=fn;exports.ReflectionProbe=ss;exports.RegisteredAnimationInfo=no;exports.RemoteSkybox=Ju;exports.RenderTexture=Ln;exports.RenderTextureSerializer=aw;exports.Renderer=Gt;exports.RendererData=U0;exports.RendererLightmap=Lg;exports.Rigidbody=Ne;exports.RigidbodyConstraints=ze;exports.RoomEvents=K;exports.RotationBySpeedModule=qi;exports.RotationOverLifetimeModule=gn;exports.SceneLightSettings=Jd;exports.SceneSwitcher=$e;exports.ScreenCapture=Eo;exports.ScreenSpaceAmbientOcclusion=Rs;exports.ScreenSpaceAmbientOcclusionN8=_n;exports.ScrollFollow=Ds;exports.SeeThrough=Ts;exports.SendQueue=rn;exports.SerializationContext=ag;exports.SetActiveOnClick=Xg;exports.ShadowCatcher=_h;exports.ShapeModule=vy;exports.ShapeOverlapResult=Iv;exports.SharpeningEffect=gh;exports.SignalAsset=rf;exports.SignalReceiver=Sh;exports.SignalReceiverEvent=xh;exports.SignalTrackHandler=Tc;exports.Size=Qw;exports.SizeBySpeedModule=li;exports.SizeOverLifetimeModule=jr;exports.SkinnedMeshRenderer=jg;exports.SmoothFollow=tf;exports.SpatialGrabRaycaster=fr;exports.SpatialHtml=Ph;exports.SpatialTrigger=nf;exports.SpatialTriggerReceiver=$n;exports.SpectatorCamera=sf;exports.SphereCollider=Ga;exports.SphereIntersection=Zm;exports.SplineContainer=zr;exports.SplineData=Gn;exports.SplineWalker=Yi;exports.Sprite=Os;exports.SpriteData=Pa;exports.SpriteRenderer=ri;exports.SpriteSheet=ja;exports.StateMachineBehaviour=jP;exports.StreamEndedEvent=vg;exports.StreamReceivedEvent=cw;exports.SubEmitterSystem=ru;exports.SyncedCamera=Ey;exports.SyncedRoom=bn;exports.SyncedTransform=un;exports.TapGestureTrigger=Yg;exports.TeleportTarget=Nu;exports.TestRunner=Ry;exports.TestSimulateUserData=Ty;exports.Text=At;exports.TextBuilder=oy;exports.TextExtension=$u;exports.TextureSheetAnimationModule=It;exports.TiltShiftEffect=Yn;exports.Time=N0;exports.ToneMappingEffect=mo;exports.TrackHandler=cl;exports.TrackType=hi;exports.TrailModule=Ae;exports.TransformData=Re;exports.TransformGizmo=Nr;exports.TriggerBuilder=Et;exports.TriggerModel=ao;exports.TypeStore=P;exports.UIRaycastUtils=_g;exports.UIRootComponent=oh;exports.USDDocument=Wg;exports.USDObject=He;exports.USDWriter=jw;exports.USDZExporter=Bw;exports.USDZExporter$1=Vn;exports.USDZText=ma;exports.USDZUIExtension=hy;exports.UriSerializer=lw;exports.UsageMarker=Jc;exports.UserJoinedOrLeftRoomModel=LC;exports.VERSION=pi;exports.VariantAction=Hg;exports.VelocityOverLifetimeModule=je;exports.VerticalLayoutGroup=ry;exports.VideoPlayer=et;exports.ViewDevice=ms;exports.Vignette=Ur;exports.VisibilityAction=sh;exports.Voip=vo;exports.Volume=rl;exports.VolumeParameter=z;exports.VolumeProfile=Qu;exports.WaitForFrames=X1;exports.WaitForPromise=j0;exports.WaitForSeconds=hg;exports.Watch=ps;exports.WebARCameraBackground=Mh;exports.WebARSessionRoot=Bi;exports.WebXR=Vu;exports.WebXRButtonFactory=lo;exports.WebXRImageTracking=kh;exports.WebXRImageTrackingModel=Ls;exports.WebXRPlaneTracking=js;exports.WebXRTrackedImage=Ua;exports.XRControllerFollow=Is;exports.XRControllerModel=bs;exports.XRControllerMovement=vi;exports.XRFlag=Ii;exports.XRRig=_f;exports.XRState=$t;exports.XRStateFlag=An;exports.__Ignore=Ux;exports.__internalNotifyObjectDestroyed=r1;exports.activeInHierarchyFieldName=In;exports.addAttributeChangeCallback=Em;exports.addComponent=an;exports.addCustomExtensionPlugin=gM;exports.addNewComponent=ir;exports.addPatch=uu;exports.apply=_u;exports.applyHMRChanges=EP;exports.applyPrototypeExtensions=w0;exports.beginListenDestroy=l0;exports.beginListenInstantiate=d0;exports.binaryIdentifierCasts=Hm;exports.build_scene_functions=pP;exports.builtinComponentKeyName=Ho;exports.calculateProgress01=Ny;exports.clearMessages=mS;exports.colorSerializer=JP;exports.compareAssociation=m0;exports.componentSerializer=xd;exports.copyTexture=_v;exports.createMotion=iw;exports.debugNet=Xt;exports.debugOwner=Bl;exports.decompressGpuTexture=Nw;exports.deepClone=Lc;exports.delay=ys;exports.delayForFrames=jc;exports.deserializeObject=Wd;exports.destroy=yi;exports.destroyComponentInstance=C0;exports.determineMimeTypeFromExtension=_w;exports.disposeObjectResources=ve;exports.disposeStream=Bn;exports.editorGuidKeyName=Zl;exports.enableSpatialConsole=_a;exports.euler=tO;exports.eventListSerializer=oO;exports.exportAsGLTF=eA;exports.findByGuid=cg;exports.findObjectOfType=Va;exports.findObjectsOfType=O0;exports.findResourceUsers=Jm;exports.fitCamera=nw;exports.fitObjectIntoVolume=vv;exports.foreachComponent=ur;exports.foreachComponentEnumerator=vu;exports.forward=DS;exports.generateQRCode=W0;exports.generateSeed=h0;exports.getBoundingBox=ni;exports.getCameraController=dv;exports.getComponent=wr;exports.getComponentInChildren=Wc;exports.getComponentInParent=vc;exports.getComponents=$c;exports.getComponentsInChildren=Na;exports.getComponentsInParent=yu;exports.getFormattedDate=Aw;exports.getIconElement=_t;exports.getIconTexture=Zp;exports.getLoader=hn;exports.getOrAddComponent=Vc;exports.getParam=x;exports.getParentHierarchyPath=jS;exports.getPath=qx;exports.getPeerOptions=EC;exports.getPeerjsInstance=$v;exports.getResourceUserCount=l1;exports.getTempColor=pv;exports.getTempQuaternion=Zt;exports.getTempVector=F;exports.getUrlParams=Ic;exports.getVisibleInCustomShadowRendering=bv;exports.getWorldDirection=mv;exports.getWorldEuler=jm;exports.getWorldPosition=Y;exports.getWorldQuaternion=pe;exports.getWorldRotation=hu;exports.getWorldScale=Le;exports.hasCommercialLicense=Nn;exports.hasIndieLicense=Hc;exports.hasPointerEventComponent=Yd;exports.hasProLicense=zn;exports.hideDebugConsole=Cv;exports.imageToCanvas=Vw;exports.instantiate=ho;exports.invokeLoadedImportPluginHooks=Pw;exports.invokeXRSessionEnd=Fv;exports.invokeXRSessionStart=Bv;exports.isActiveInHierarchy=M0;exports.isActiveSelf=$a;exports.isAndroidDevice=Jx;exports.isAnimationAction=yv;exports.isComponent=Vm;exports.isDebugMode=$x;exports.isDesktop=Qx;exports.isDestroyed=dr;exports.isDevEnvironment=A;exports.isDisposed=o1;exports.isExporting=ZT;exports.isGLTFModel=Rv;exports.isHostedOnGlitch=Jb;exports.isHotReloadEnabled=nm;exports.isHotReloading=MP;exports.isIPad=Kx;exports.isIconElement=G0;exports.isLocalNetwork=mi;exports.isMacOS=tS;exports.isMobileDevice=Yx;exports.isMozillaXR=eS;exports.isQuest=sS;exports.isResourceTrackingEnabled=Jv;exports.isSafari=nS;exports.isUsingInstancing=bu;exports.isiOS=iS;exports.isiPad=Zx;exports.loadAsset=BT;exports.loadPMREM=Ag;exports.loadSync=zy;exports.logHierarchy=jd;exports.lookAtInverse=PS;exports.lookAtObject=Bc;exports.lookAtScreenPoint=OS;exports.makeId=Gx;exports.makeIdFromRandomWords=iv;exports.makeNameSafe=bi;exports.markAsInstancedRendered=k0;exports.microphonePermissionsGranted=oS;exports.nameof=Vx;exports.nameofFactory=ev;exports.objectSerializer=rw;exports.offXRSessionEnd=wC;exports.offXRSessionStart=vC;exports.onAfterRender=bP;exports.onBeforeRender=_P;exports.onClear=gP;exports.onDestroy=yP;exports.onInitialized=fg;exports.onStart=Su;exports.onUpdate=X0;exports.onXRSessionEnd=Wm;exports.onXRSessionStart=fu;exports.parseSync=Tx;exports.placeOnSurface=wv;exports.postprocessFBXMaterials=Um;exports.prefix=qP;exports.pushState=tv;exports.randomNumber=Hx;exports.registerBinaryType=qm;exports.registerComponent=xu;exports.registerComponentExtension=Dg;exports.registerCustomEffectType=Qi;exports.registerExportExtensions=Ig;exports.registerExtensions=tu;exports.registerHotReloadType=Z0;exports.registerLoader=Nm;exports.registerPrefabProvider=f0;exports.registerPrototypeExtensions=x0;exports.registerType=sg;exports.relativePathPrefix=sv;exports.removeAttributeChangeCallback=Rm;exports.removeComponent=lg;exports.removeCustomImportExtensionType=yM;exports.removePatch=_C;exports.resolveUrl=vs;exports.sanitizeString=nv;exports.saveImage=Mx;exports.screenshot=vT;exports.screenshot2=Uy;exports.sendDestroyed=ig;exports.serializable=f;exports.serializeObject=y0;exports.serializeable=Ve;exports.setActive=ic;exports.setAllowBalloonMessages=lv;exports.setAllowOverlayMessages=dS;exports.setAutoFitEnabled=Id;exports.setCameraController=Tp;exports.setDestroyed=R0;exports.setDevEnvironment=WS;exports.setDisposable=t0;exports.setDontDestroy=ia;exports.setOrAddParamsToUrl=kp;exports.setParam=Wx;exports.setParamWithoutReload=pc;exports.setPeerOptions=RC;exports.setResourceTrackingEnabled=s1;exports.setState=Mm;exports.setVisibleInCustomShadowRendering=Fm;exports.setWorldEuler=Bm;exports.setWorldPosition=rt;exports.setWorldPositionXYZ=hr;exports.setWorldQuaternion=cn;exports.setWorldQuaternionXYZW=Lm;exports.setWorldRotation=gv;exports.setWorldRotationXYZ=Fc;exports.setWorldScale=ka;exports.showBalloonError=Uc;exports.showBalloonMessage=xe;exports.showBalloonWarning=fe;exports.showDebugConsole=zm;exports.slerp=CS;exports.syncDestroy=zc;exports.syncField=Jg;exports.syncInstantiate=ng;exports.textureToCanvas=BS;exports.toSourceId=ov;exports.tryCastBinary=Nv;exports.tryDetermineMimetypeFromBinary=vw;exports.tryDetermineMimetypeFromURL=bw;exports.tryFindObject=Ma;exports.tryGetGuid=Vv;exports.unregisterHotReloadType=J0;exports.unwatchWrite=km;exports.useForAutoFit=uv;exports.validate=wt;exports.watchWrite=cu;
|
|
1654
|
+
`),this.#n.innerHTML=this.#e.innerHTML,this.#n.style.cssText="display: flex; align-items: center; justify-content: center;",this.#e.innerHTML=this.#n.outerHTML,this.#t.innerHTML=this.#e.outerHTML,this.#t.prepend(this.#s),qd(Jp,{element:this.#t}),this.#o?.disconnect(),this.#o??=new MutationObserver(()=>this.#c()),this.#o.observe(this.#e,{attributes:!0}),Op&&console.log("Needle Button updated",this)}#c(){this.#e&&(this.#e.style.display==="none"?this.style.display="none":this.style.display==="none"&&(this.style.display=""))}#a=e=>{Op&&console.log("Needle Button clicked",{defaultPrevented:e.defaultPrevented,hasButton:!!this.#e}),!e.defaultPrevented&&this.#e&&this.#e.click()}}typeof window<"u"&&!window.customElements.get(Zb)&&window.customElements.define(Zb,jx);const Ll=x("debugavatar");class $y{root;head;leftHand;rigthHand;get isValid(){return this.head!==null&&this.head!==void 0}constructor(e,t,i,n){this.root=e,this.head=t,this.leftHand=i,this.rigthHand=n,this.root?.traverse(o=>o.layers.set(2))}}class Bx{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error("Can not create avatar: failed to provide id or root object"),null;let i=null;if(typeof t=="string"){if(i=await this.loadAvatar(e,t),!i){const o=new pn;i=S.instantiate(Ma(t,e.scene),o)}}else i=t;if(!i)return null;const n=this.findAvatar(i);return n.isValid?(Ll&&console.log("[Custom Avatar] valid config",t,Ll?n:""),n):(console.warn("[Custom Avatar] config isn't valid",t,Ll?n:""),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t=="string","Avatar id must not be null"),t.length<=0||!t)return null;if(Ll&&console.log("[Custom Avatar] "+t+", loading..."),t.endsWith(".glb")||(t+=".glb"),this.avatarRegistryUrl===null){const n=await fetch("./"+t);let o=null;if(n.ok){const a=await n.blob();a&&(o=await a.arrayBuffer())}return o?(await hn().parseSync(e,o,null,0))?.scene??null:null}const i=new X.GLTFLoader;return mg(i,e),new Promise((n,o)=>{const r=this.avatarRegistryUrl+"/"+t;i.load(r,async a=>{await hn().createBuiltinComponents(e,r,a,null,void 0),n(a.scene)},a=>{Ll&&console.log("[Custom Avatar] "+a.loaded/a.total*100+"% loaded of "+a.total/1024+"kB")},a=>{console.error("[Custom Avatar] Error when loading: "+a),n(null)})})}cacheModel(e,t){}findAvatar(e){const t=e;let i=t;i.children.length==1&&(i=e.children[0]);let n=this.findAvatarPart(i,["head"]);const o=this.findAvatarPart(i,["left","hand"]),r=this.findAvatarPart(i,["right","hand"]);if(!n){n=t;const l=new c.Vector3;new c.Box3().setFromObject(n).getSize(l);const h=Math.max(l.x,l.y,l.z);console.warn("[Custom Avatar] Normalizing head scale, it's too big: "+h+" meters! Should be < 0.3m"),h>.3&&n.scale.multiplyScalar(1/h*.3)}return new $y(t,n,o,r)}findAvatarPart(e,t){const i=e.name.toLowerCase();let n=!0;for(const o of t){if(!n)break;i.indexOf(o)===-1&&(n=!1)}if(n)return e;if(e.children)for(const o of e.children){const r=this.findAvatarPart(o,t);if(r)return r}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}}class Fx{get extensionName(){return"DocumentExtension"}onAfterBuildDocument(e){}}class Ux{}const nA=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:de,ActionCollection:Gw,ActionModel:Kt,AlignmentConstraint:qc,Animation:Rt,AnimationCurve:hh,AnimationExtension:ju,AnimationTrackHandler:Rc,Animator:at,AnimatorController:zi,Antialiasing:uh,Attractor:sl,AudioExtension:kr,AudioListener:hs,AudioSource:_i,AudioTrackHandler:fs,Avatar:fo,AvatarBlink_Simple:Cr,AvatarEyeLook_Rotation:Cg,AvatarLoader:Bx,AvatarMarker:Oe,AvatarModel:$y,Avatar_Brain_LookAt:Pc,Avatar_MouthShapes:Kc,Avatar_MustacheShake:xg,Avatar_POI:lr,AxesHelper:Wa,BaseUIComponent:Vi,BasicIKConstraint:Og,BehaviorExtension:iy,BehaviorModel:vt,BloomEffect:Ku,BoxCollider:Ru,BoxGizmo:Ar,BoxHelperComponent:gt,Button:As,CallInfo:cs,Camera:ti,CameraTargetReachedEvent:Cc,Canvas:Ba,CanvasGroup:po,CapsuleCollider:_s,ChangeMaterialOnClick:qg,ChangeTransformOnClick:Er,CharacterController:Pr,CharacterControllerInput:Ss,ChromaticAberration:fh,ClickThrough:mf,ColorAdjustments:ko,ColorBySpeedModule:nl,ColorOverLifetimeModule:Xu,ContactShadows:Zc,ControlTrackHandler:lf,CursorFollow:Vr,CustomBranding:Tr,Deletable:Rg,DeleteBox:ro,DepthOfField:yn,DeviceFlag:Tu,DocumentExtension:Fx,DragControls:Ko,DropListener:Ps,Duplicatable:Fg,EffectWrapper:Ec,EmissionModule:Es,EmphasizeOnClick:Xa,EnvironmentScene:ff,EventList:ne,EventListEvent:Ou,EventSystem:Wt,EventTrigger:Iu,FieldWithDefault:Ow,FixedJoint:gy,Fog:Ja,GltfExport:$g,GltfExportBox:Ng,Gradient:Ir,Graphic:ah,GraphicRaycaster:Mu,GridHelper:el,GridLayoutGroup:ly,GroundProjectedEnv:Hn,GroupActionModel:Zo,HideOnStart:Di,HingeJoint:ch,HorizontalLayoutGroup:ay,get HoverAnimation(){return exports.HoverAnimation},Image:hl,InheritVelocityModule:wy,InputField:Ly,InstanceHandle:cr,InstancingHandler:mr,Interactable:Eg,Keyframe:ii,LODGroup:Gu,LODModel:tl,Light:St,LimitVelocityOverLifetimeModule:it,LogStats:kg,LookAt:jy,LookAtConstraint:Sr,MainModule:Dt,MarkerTrackHandler:af,MaskableGraphic:lh,MeshCollider:wo,MeshRenderer:th,MinMaxCurve:H,MinMaxGradient:Lr,NeedleMenu:Xn,NestedGltf:il,Networking:by,NoiseModule:me,ObjectRaycaster:Ni,OffsetConstraint:Dr,OpenURL:dl,OrbitControls:ue,Outline:Za,Padding:Rr,ParticleBurst:ou,ParticleSubEmitter:xy,ParticleSystem:kc,ParticleSystemRenderer:Xi,PhysicsExtension:ny,PixelationEffect:ph,PlayAnimationOnClick:Oc,PlayAudioOnClick:uo,PlayableDirector:_r,PlayerColor:Fa,PointerEventData:Qc,PostProcessingHandler:My,PreliminaryAction:Qa,PreliminaryTrigger:nh,RawImage:df,Rect:Yw,RectTransform:fn,ReflectionProbe:ss,RegisteredAnimationInfo:no,RemoteSkybox:Ju,Renderer:Gt,RendererLightmap:Lg,Rigidbody:Ne,RotationBySpeedModule:qi,RotationOverLifetimeModule:gn,SceneSwitcher:$e,ScreenCapture:Eo,ScreenSpaceAmbientOcclusion:Rs,ScreenSpaceAmbientOcclusionN8:_n,ScrollFollow:Ds,SeeThrough:Ts,SetActiveOnClick:Xg,ShadowCatcher:_h,ShapeModule:vy,SharpeningEffect:gh,SignalAsset:rf,SignalReceiver:Sh,SignalReceiverEvent:xh,SignalTrackHandler:Tc,Size:Qw,SizeBySpeedModule:li,SizeOverLifetimeModule:jr,SkinnedMeshRenderer:jg,SmoothFollow:tf,SpatialGrabRaycaster:fr,SpatialHtml:Ph,SpatialTrigger:nf,SpatialTriggerReceiver:$n,SpectatorCamera:sf,SphereCollider:Ga,SplineContainer:zr,SplineData:Gn,SplineWalker:Yi,Sprite:Os,SpriteData:Pa,SpriteRenderer:ri,SpriteSheet:ja,SubEmitterSystem:ru,SyncedCamera:Ey,SyncedRoom:bn,SyncedTransform:un,TapGestureTrigger:Yg,TeleportTarget:Nu,TestRunner:Ry,TestSimulateUserData:Ty,Text:At,TextBuilder:oy,TextExtension:$u,TextureSheetAnimationModule:It,TiltShiftEffect:Yn,ToneMappingEffect:mo,TrailModule:Ae,TransformData:Re,TransformGizmo:Nr,TriggerBuilder:Et,TriggerModel:ao,UIRaycastUtils:_g,UIRootComponent:oh,USDZExporter:Vn,USDZText:ma,USDZUIExtension:hy,UsageMarker:Jc,VariantAction:Hg,VelocityOverLifetimeModule:je,VerticalLayoutGroup:ry,VideoPlayer:et,get ViewBox(){return exports.ViewBox},Vignette:Ur,VisibilityAction:sh,Voip:vo,Volume:rl,VolumeParameter:z,VolumeProfile:Qu,WebARCameraBackground:Mh,WebARSessionRoot:Bi,WebXR:Vu,WebXRImageTracking:kh,WebXRImageTrackingModel:Ls,WebXRPlaneTracking:js,WebXRTrackedImage:Ua,XRControllerFollow:Is,XRControllerModel:bs,XRControllerMovement:vi,XRFlag:Ii,XRRig:_f,XRState:$t,__Ignore:Ux},Symbol.toStringTag,{value:"Module"})),Dc=x("debugmissingcamera");ce.registerCallback(le.MissingCamera,s=>{Dc&&console.warn("Creating missing camera");const e=s.context.scene,t=new c.PerspectiveCamera;t.name="Default Fallback Camera",e.add(t);const i=new ti;if(i.sourceId=s.files?.[0]?.src??"unknown",i.fieldOfView=35,s.context.domElement.getAttribute("transparent")!=null)i.clearFlags=ar.Uninitialized;else if(s.context.domElement.getAttribute("background-image")?.length||s.context.lightmaps.tryGetSkybox(i.sourceId))i.clearFlags=ar.Skybox;else{if(i.clearFlags=ar.SolidColor,!s.context.domElement.getAttribute("background-color")){let a="#efefef";typeof window!==void 0&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(a="#1f1f1f"),e.background=new c.Color(a)}if(!e.environment){const a=new c.PMREMGenerator$1(s.context.renderer),l=new ff("neutral");e.environment=a.fromScene(l,.025).texture}}const o=ir(t,i,!0);return t.position.x=0,t.position.y=1,t.position.z=2,s.context.domElement?.cameraControls!=!1&&zx(s.context,o),o});ce.registerCallback(le.ContextCreated,s=>{if(!s.context.mainCamera){Dc&&console.log("Will not auto-fit because a default camera exists");return}if(s.context.domElement?.cameraControls==!0){if(dv(s.context.mainCamera)?.isCameraController==!0){Dc&&console.log("Will not auto-fit because a camera controller exists");return}zx(s.context)}});function zx(s,e){e=e??s.mainCameraComponent;const t=e?.gameObject;if(Dc&&console.log("Creating default camera controls",e?.name),t){const i=Vc(t,ue);i.sourceId=e?.sourceId??"unknown";const n=s.domElement.getAttribute("auto-rotate");i.autoRotate=n!="0"&&n?.toLowerCase()!="false";const o=Number.parseFloat(n||".5");i.autoRotateSpeed=isNaN(o)?.5:o,Dc&&console.log("Auto-rotate",i.autoRotate,"speed:",i.autoRotateSpeed);const r=s.domElement.getAttribute("auto-fit");i.autoFit=r!=="0"&&r?.toLowerCase()!="false",i.autoTarget=!0}else console.warn("Missing camera object, can not add orbit controls")}ce.registerCallback(le.ContextCreated,s=>{const e=s.context.domElement.getAttribute("autoplay");if(e!==void 0&&(e===""||e==="true"||e==="1")&&s.files)for(const t of s.files)S.foreachComponent(t.file.scene,n=>{if(n.enabled!==!1){if(n instanceof Rt&&n.playAutomatically||n instanceof at||n instanceof _r&&n.playOnAwake===!0)return!0;if(n instanceof Rt)return n.playAutomatically=!0,!0;if(n instanceof _r)return n.playOnAwake=!0,!0}},!0)!==!0&&Wn.autoplayAnimations(t.file)});exports.SplineUtils=void 0;(s=>{function e(t,i=!1,n=.75){const o=new zr,r=1-L.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 Gn;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 sA extends ae.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-CNKc71CA.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:p}=d,m=ae.MeshBVH.deserialize(u,t,{setIndex:!1}),y=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=p,u.index)if(t.index)t.index.array=u.index;else{const _=new c.BufferAttribute(u.index,1,!1);t.setIndex(_)}y.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new c.Box3)),i.onProgress&&i.onProgress(d.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(d.progress)};const r=t.index?t.index.array:null,a=t.attributes.position.array,l=[a];r&&l.push(r),e.postMessage({index:r,position:a,options:{...i,onProgress:null,includedProgressCallback:!!i.onProgress,groups:[...t.groups]}},l.map(h=>h.buffer).filter(h=>typeof SharedArrayBuffer>"u"||!(h instanceof SharedArrayBuffer)))})}}const oA=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:sA},Symbol.toStringTag,{value:"Module"}));exports.$componentName=Tv;exports.$physicsKey=gC;exports.ActionBuilder=de;exports.ActionCollection=Gw;exports.ActionModel=Kt;exports.Addressables=D0;exports.AlignmentConstraint=qc;exports.AmbientMode=xa;exports.Animation=Rt;exports.AnimationCurve=hh;exports.AnimationExtension=ju;exports.AnimationTrackHandler=Rc;exports.AnimationUtils=Wn;exports.Animator=at;exports.AnimatorConditionMode=Ks;exports.AnimatorController=zi;exports.AnimatorControllerParameterType=gg;exports.AnimatorStateInfo=zl;exports.Antialiasing=uh;exports.Application=dn;exports.AssetDatabase=Kv;exports.AssetReference=Z;exports.Attractor=sl;exports.AudioExtension=kr;exports.AudioListener=hs;exports.AudioSource=_i;exports.AudioTrackHandler=fs;exports.Avatar=fo;exports.AvatarBlink_Simple=Cr;exports.AvatarEyeLook_Rotation=Cg;exports.AvatarLoader=Bx;exports.AvatarMarker=Oe;exports.AvatarModel=$y;exports.Avatar_Brain_LookAt=Pc;exports.Avatar_MouthShapes=Kc;exports.Avatar_MustacheShake=xg;exports.Avatar_POI=lr;exports.Axes=fa;exports.AxesHelper=Wa;exports.BUILD_TIME=mc;exports.BaseUIComponent=Vi;exports.BasicIKConstraint=Og;exports.BehaviorExtension=iy;exports.BehaviorModel=vt;exports.BloomEffect=Ku;exports.BoxCollider=Ru;exports.BoxGizmo=Ar;exports.BoxHelperComponent=gt;exports.Button=As;exports.ButtonsFactory=ji;exports.CallDirection=hw;exports.CallInfo=cs;exports.Camera=ti;exports.CameraTargetReachedEvent=Cc;exports.Canvas=Ba;exports.CanvasGroup=po;exports.CapsuleCollider=_s;exports.ChangeMaterialOnClick=qg;exports.ChangeTransformOnClick=Er;exports.CharacterController=Pr;exports.CharacterControllerInput=Ss;exports.ChromaticAberration=fh;exports.CircularBuffer=gi;exports.ClearFlags=ar;exports.ClickThrough=mf;exports.ClipExtrapolation=On;exports.Collider=Hi;exports.Collision=Dv;exports.CollisionDetectionMode=Pu;exports.ColorAdjustments=ko;exports.ColorBySpeedModule=nl;exports.ColorOverLifetimeModule=Xu;exports.Component=RP;exports.Component$1=E;exports.ComponentLifecycleEvents=gu;exports.Components=nA;exports.ConnectionEvents=Gv;exports.ContactPoint=Av;exports.ContactShadows=Zc;exports.Context=U;exports.ContextArgs=mP;exports.ContextEvent=le;exports.ContextRegistry=ce;exports.ControlTrackHandler=lf;exports.CursorFollow=Vr;exports.CustomBranding=Tr;exports.CustomShader=be;exports.DefaultReflectionMode=Hd;exports.Deletable=Rg;exports.DeleteBox=ro;exports.DepthOfField=yn;exports.DeviceFlag=Tu;exports.DocumentExtension=Fx;exports.DragControls=Ko;exports.DragMode=Tg;exports.DropListener=Ps;exports.Duplicatable=Fg;exports.EffectWrapper=Ec;exports.EmissionModule=Es;exports.EmphasizeOnClick=Xa;exports.EngineLoadingView=Ac;exports.EnvironmentScene=ff;exports.EventList=ne;exports.EventListEvent=Ou;exports.EventSystem=Wt;exports.EventTrigger=Iu;exports.FieldWithDefault=Ow;exports.FileReference=or;exports.FileReferenceSerializer=L0;exports.FileSpawnModel=GO;exports.File_Event=yw;exports.FixedJoint=gy;exports.Fog=Ja;exports.FrameEvent=ge;exports.GENERATOR=Ea;exports.GameObject=S;exports.Gizmos=B;exports.GltfExport=$g;exports.GltfExportBox=Ng;exports.Gradient=Ir;exports.Graphic=ah;exports.GraphicRaycaster=Mu;exports.Graphics=co;exports.GridHelper=el;exports.GridLayoutGroup=ly;exports.GroundProjectedEnv=Hn;exports.GroupActionModel=Zo;exports.HideFlags=du;exports.HideOnStart=Di;exports.HingeJoint=ch;exports.HorizontalLayoutGroup=ay;exports.HostData=g1;exports.Image=hl;exports.ImageReference=sr;exports.ImageReferenceSerializer=I0;exports.InheritVelocityModule=wy;exports.Input=Uv;exports.InputEventQueue=Jt;exports.InputEvents=Pe;exports.InputField=Ly;exports.InstanceHandle=cr;exports.InstancingHandler=mr;exports.InstancingUtil=Ui;exports.InstantiateEvent=a0;exports.InstantiateIdProvider=bt;exports.InstantiateOptions=pn;exports.Interactable=Eg;exports.JoinedRoomResponse=DC;exports.KeyEventArgs=xC;exports.Keyframe=ii;exports.LODGroup=Gu;exports.LODModel=tl;exports.LeftRoomResponse=IC;exports.Light=St;exports.LightData=z0;exports.LimitVelocityOverLifetimeModule=it;exports.LoadingElementOptions=$T;exports.LogStats=kg;exports.LogType=fi;exports.LookAt=jy;exports.LookAtConstraint=Sr;exports.MODULES=T;exports.MainModule=Dt;exports.MarkerTrackHandler=af;exports.MarkerType=Ay;exports.MaskableGraphic=lh;exports.MaterialPropertyBlock=gs;exports.Mathf=L;exports.MeshCollider=wo;exports.MeshRenderer=th;exports.MinMaxCurve=H;exports.MinMaxGradient=Lr;exports.NEEDLE_ENGINE_FEATURE_FLAGS=eg;exports.NEKeyboardEvent=jl;exports.NEPointerEvent=ns;exports.NeedleButtonElement=jx;exports.NeedleEngineWebComponent=Vy;exports.NeedleMenu=Xn;exports.NeedlePatchesKey=fd;exports.NeedleXRController=Gm;exports.NeedleXRSession=q;exports.NeedleXRSync=Xv;exports.NeedleXRUtils=Yv;exports.NestedGltf=il;exports.NetworkConnection=qv;exports.NetworkedStreamEvents=jn;exports.NetworkedStreams=Yc;exports.Networking=by;exports.NewInstanceModel=c0;exports.NoiseModule=me;exports.ObjectRaycaster=Ni;exports.ObjectUtils=_o;exports.OffsetConstraint=Dr;exports.OneEuroFilter=dd;exports.OneEuroFilterXYZ=Dm;exports.OpenURL=dl;exports.OrbitControls=ue;exports.Outline=Za;exports.OwnershipEvent=Hv;exports.OwnershipModel=Qm;exports.PUBLIC_KEY=io;exports.Padding=Rr;exports.ParticleBurst=ou;exports.ParticleSubEmitter=xy;exports.ParticleSystem=kc;exports.ParticleSystemBaseBehaviour=Mo;exports.ParticleSystemRenderer=Xi;exports.ParticleSystemShapeType=su;exports.PeerHandle=ds;exports.PeerNetworking=Wv;exports.Physics=Ia;exports.PhysicsExtension=ny;exports.PhysicsMaterialCombine=nt;exports.PixelationEffect=ph;exports.PlayAnimationOnClick=Oc;exports.PlayAudioOnClick=uo;exports.PlayableDirector=_r;exports.PlayerColor=Fa;exports.PlayerState=Fi;exports.PlayerStateEvent=Xw;exports.PlayerSync=ey;exports.PlayerView=B0;exports.PlayerViewManager=F0;exports.PointerEventData=Qc;exports.PointerType=pu;exports.PostProcessingEffect=qe;exports.PostProcessingEffectOrder=Je;exports.PostProcessingHandler=My;exports.PreliminaryAction=Qa;exports.PreliminaryTrigger=nh;exports.PrimitiveType=za;exports.Progress=oe;exports.PromiseAllWithErrors=Tm;exports.PromiseErrorResult=Ep;exports.RGBAColor=te;exports.RapierPhysics=Oa;exports.RawImage=df;exports.RaycastOptions=bo;exports.Rect=Yw;exports.RectTransform=fn;exports.ReflectionProbe=ss;exports.RegisteredAnimationInfo=no;exports.RemoteSkybox=Ju;exports.RenderTexture=Ln;exports.RenderTextureSerializer=aw;exports.Renderer=Gt;exports.RendererData=U0;exports.RendererLightmap=Lg;exports.Rigidbody=Ne;exports.RigidbodyConstraints=ze;exports.RoomEvents=K;exports.RotationBySpeedModule=qi;exports.RotationOverLifetimeModule=gn;exports.SceneLightSettings=Jd;exports.SceneSwitcher=$e;exports.ScreenCapture=Eo;exports.ScreenSpaceAmbientOcclusion=Rs;exports.ScreenSpaceAmbientOcclusionN8=_n;exports.ScrollFollow=Ds;exports.SeeThrough=Ts;exports.SendQueue=rn;exports.SerializationContext=ag;exports.SetActiveOnClick=Xg;exports.ShadowCatcher=_h;exports.ShapeModule=vy;exports.ShapeOverlapResult=Iv;exports.SharpeningEffect=gh;exports.SignalAsset=rf;exports.SignalReceiver=Sh;exports.SignalReceiverEvent=xh;exports.SignalTrackHandler=Tc;exports.Size=Qw;exports.SizeBySpeedModule=li;exports.SizeOverLifetimeModule=jr;exports.SkinnedMeshRenderer=jg;exports.SmoothFollow=tf;exports.SpatialGrabRaycaster=fr;exports.SpatialHtml=Ph;exports.SpatialTrigger=nf;exports.SpatialTriggerReceiver=$n;exports.SpectatorCamera=sf;exports.SphereCollider=Ga;exports.SphereIntersection=Zm;exports.SplineContainer=zr;exports.SplineData=Gn;exports.SplineWalker=Yi;exports.Sprite=Os;exports.SpriteData=Pa;exports.SpriteRenderer=ri;exports.SpriteSheet=ja;exports.StateMachineBehaviour=jP;exports.StreamEndedEvent=vg;exports.StreamReceivedEvent=cw;exports.SubEmitterSystem=ru;exports.SyncedCamera=Ey;exports.SyncedRoom=bn;exports.SyncedTransform=un;exports.TapGestureTrigger=Yg;exports.TeleportTarget=Nu;exports.TestRunner=Ry;exports.TestSimulateUserData=Ty;exports.Text=At;exports.TextBuilder=oy;exports.TextExtension=$u;exports.TextureSheetAnimationModule=It;exports.TiltShiftEffect=Yn;exports.Time=N0;exports.ToneMappingEffect=mo;exports.TrackHandler=cl;exports.TrackType=hi;exports.TrailModule=Ae;exports.TransformData=Re;exports.TransformGizmo=Nr;exports.TriggerBuilder=Et;exports.TriggerModel=ao;exports.TypeStore=P;exports.UIRaycastUtils=_g;exports.UIRootComponent=oh;exports.USDDocument=Wg;exports.USDObject=He;exports.USDWriter=jw;exports.USDZExporter=Bw;exports.USDZExporter$1=Vn;exports.USDZText=ma;exports.USDZUIExtension=hy;exports.UriSerializer=lw;exports.UsageMarker=Jc;exports.UserJoinedOrLeftRoomModel=LC;exports.VERSION=pi;exports.VariantAction=Hg;exports.VelocityOverLifetimeModule=je;exports.VerticalLayoutGroup=ry;exports.VideoPlayer=et;exports.ViewDevice=ms;exports.Vignette=Ur;exports.VisibilityAction=sh;exports.Voip=vo;exports.Volume=rl;exports.VolumeParameter=z;exports.VolumeProfile=Qu;exports.WaitForFrames=X1;exports.WaitForPromise=j0;exports.WaitForSeconds=hg;exports.Watch=ps;exports.WebARCameraBackground=Mh;exports.WebARSessionRoot=Bi;exports.WebXR=Vu;exports.WebXRButtonFactory=lo;exports.WebXRImageTracking=kh;exports.WebXRImageTrackingModel=Ls;exports.WebXRPlaneTracking=js;exports.WebXRTrackedImage=Ua;exports.XRControllerFollow=Is;exports.XRControllerModel=bs;exports.XRControllerMovement=vi;exports.XRFlag=Ii;exports.XRRig=_f;exports.XRState=$t;exports.XRStateFlag=An;exports.__Ignore=Ux;exports.__internalNotifyObjectDestroyed=r1;exports.activeInHierarchyFieldName=In;exports.addAttributeChangeCallback=Em;exports.addComponent=an;exports.addCustomExtensionPlugin=gM;exports.addNewComponent=ir;exports.addPatch=uu;exports.apply=_u;exports.applyHMRChanges=EP;exports.applyPrototypeExtensions=w0;exports.beginListenDestroy=l0;exports.beginListenInstantiate=d0;exports.binaryIdentifierCasts=Hm;exports.build_scene_functions=pP;exports.builtinComponentKeyName=Ho;exports.calculateProgress01=Ny;exports.clearMessages=mS;exports.colorSerializer=JP;exports.compareAssociation=m0;exports.componentSerializer=xd;exports.copyTexture=_v;exports.createMotion=iw;exports.debugNet=Xt;exports.debugOwner=Bl;exports.decompressGpuTexture=Nw;exports.deepClone=Lc;exports.delay=ys;exports.delayForFrames=jc;exports.deserializeObject=Wd;exports.destroy=yi;exports.destroyComponentInstance=C0;exports.determineMimeTypeFromExtension=_w;exports.disposeObjectResources=ve;exports.disposeStream=Bn;exports.editorGuidKeyName=Zl;exports.enableSpatialConsole=_a;exports.euler=tO;exports.eventListSerializer=oO;exports.exportAsGLTF=eA;exports.findByGuid=cg;exports.findObjectOfType=Va;exports.findObjectsOfType=O0;exports.findResourceUsers=Jm;exports.fitCamera=nw;exports.fitObjectIntoVolume=vv;exports.foreachComponent=ur;exports.foreachComponentEnumerator=vu;exports.forward=DS;exports.generateQRCode=W0;exports.generateSeed=h0;exports.getBoundingBox=ni;exports.getCameraController=dv;exports.getComponent=wr;exports.getComponentInChildren=Wc;exports.getComponentInParent=vc;exports.getComponents=$c;exports.getComponentsInChildren=Na;exports.getComponentsInParent=yu;exports.getFormattedDate=Aw;exports.getIconElement=_t;exports.getIconTexture=Zp;exports.getLoader=hn;exports.getOrAddComponent=Vc;exports.getParam=x;exports.getParentHierarchyPath=jS;exports.getPath=qx;exports.getPeerOptions=EC;exports.getPeerjsInstance=$v;exports.getResourceUserCount=l1;exports.getTempColor=pv;exports.getTempQuaternion=Zt;exports.getTempVector=F;exports.getUrlParams=Ic;exports.getVisibleInCustomShadowRendering=bv;exports.getWorldDirection=mv;exports.getWorldEuler=jm;exports.getWorldPosition=Y;exports.getWorldQuaternion=pe;exports.getWorldRotation=hu;exports.getWorldScale=Le;exports.hasCommercialLicense=Nn;exports.hasIndieLicense=Hc;exports.hasPointerEventComponent=Yd;exports.hasProLicense=zn;exports.hideDebugConsole=Cv;exports.imageToCanvas=Vw;exports.instantiate=ho;exports.invokeLoadedImportPluginHooks=Pw;exports.invokeXRSessionEnd=Fv;exports.invokeXRSessionStart=Bv;exports.isActiveInHierarchy=M0;exports.isActiveSelf=$a;exports.isAndroidDevice=Jx;exports.isAnimationAction=yv;exports.isComponent=Vm;exports.isDebugMode=$x;exports.isDesktop=Qx;exports.isDestroyed=dr;exports.isDevEnvironment=A;exports.isDisposed=o1;exports.isExporting=ZT;exports.isGLTFModel=Rv;exports.isHostedOnGlitch=Jb;exports.isHotReloadEnabled=nm;exports.isHotReloading=MP;exports.isIPad=Kx;exports.isIconElement=G0;exports.isLocalNetwork=mi;exports.isMacOS=tS;exports.isMobileDevice=Yx;exports.isMozillaXR=eS;exports.isQuest=sS;exports.isResourceTrackingEnabled=Jv;exports.isSafari=nS;exports.isUsingInstancing=bu;exports.isiOS=iS;exports.isiPad=Zx;exports.loadAsset=BT;exports.loadPMREM=Ag;exports.loadSync=zy;exports.logHierarchy=jd;exports.lookAtInverse=PS;exports.lookAtObject=Bc;exports.lookAtScreenPoint=OS;exports.makeId=Gx;exports.makeIdFromRandomWords=iv;exports.makeNameSafe=bi;exports.markAsInstancedRendered=k0;exports.microphonePermissionsGranted=oS;exports.nameof=Vx;exports.nameofFactory=ev;exports.objectSerializer=rw;exports.offXRSessionEnd=wC;exports.offXRSessionStart=vC;exports.onAfterRender=bP;exports.onBeforeRender=_P;exports.onClear=gP;exports.onDestroy=yP;exports.onInitialized=fg;exports.onStart=Su;exports.onUpdate=X0;exports.onXRSessionEnd=Wm;exports.onXRSessionStart=fu;exports.parseSync=Tx;exports.placeOnSurface=wv;exports.postprocessFBXMaterials=Um;exports.prefix=qP;exports.pushState=tv;exports.randomNumber=Hx;exports.registerBinaryType=qm;exports.registerComponent=xu;exports.registerComponentExtension=Dg;exports.registerCustomEffectType=Qi;exports.registerExportExtensions=Ig;exports.registerExtensions=tu;exports.registerHotReloadType=Z0;exports.registerLoader=Nm;exports.registerPrefabProvider=f0;exports.registerPrototypeExtensions=x0;exports.registerType=sg;exports.relativePathPrefix=sv;exports.removeAttributeChangeCallback=Rm;exports.removeComponent=lg;exports.removeCustomImportExtensionType=yM;exports.removePatch=_C;exports.resolveUrl=vs;exports.sanitizeString=nv;exports.saveImage=Mx;exports.screenshot=vT;exports.screenshot2=Uy;exports.sendDestroyed=ig;exports.serializable=f;exports.serializeObject=y0;exports.serializeable=Ve;exports.setActive=ic;exports.setAllowBalloonMessages=lv;exports.setAllowOverlayMessages=dS;exports.setAutoFitEnabled=Id;exports.setCameraController=Tp;exports.setDestroyed=R0;exports.setDevEnvironment=WS;exports.setDisposable=t0;exports.setDontDestroy=ia;exports.setOrAddParamsToUrl=kp;exports.setParam=Wx;exports.setParamWithoutReload=pc;exports.setPeerOptions=RC;exports.setResourceTrackingEnabled=s1;exports.setState=Mm;exports.setVisibleInCustomShadowRendering=Fm;exports.setWorldEuler=Bm;exports.setWorldPosition=rt;exports.setWorldPositionXYZ=hr;exports.setWorldQuaternion=cn;exports.setWorldQuaternionXYZW=Lm;exports.setWorldRotation=gv;exports.setWorldRotationXYZ=Fc;exports.setWorldScale=ka;exports.showBalloonError=Uc;exports.showBalloonMessage=xe;exports.showBalloonWarning=fe;exports.showDebugConsole=zm;exports.slerp=CS;exports.syncDestroy=zc;exports.syncField=Jg;exports.syncInstantiate=ng;exports.textureToCanvas=BS;exports.toSourceId=ov;exports.tryCastBinary=Nv;exports.tryDetermineMimetypeFromBinary=vw;exports.tryDetermineMimetypeFromURL=bw;exports.tryFindObject=Ma;exports.tryGetGuid=Vv;exports.unregisterHotReloadType=J0;exports.unwatchWrite=km;exports.useForAutoFit=uv;exports.validate=wt;exports.watchWrite=cu;
|
package/dist/needle-engine.d.ts
CHANGED
|
@@ -22670,21 +22670,6 @@ export declare class OrbitControls extends Component implements ICameraControlle
|
|
|
22670
22670
|
export { }
|
|
22671
22671
|
|
|
22672
22672
|
|
|
22673
|
-
declare module 'three/examples/jsm/controls/OrbitControls.js' {
|
|
22674
|
-
interface OrbitControls {
|
|
22675
|
-
_sphericalDelta: import("three").Spherical;
|
|
22676
|
-
_rotateLeft: (angleInRadians: number) => void;
|
|
22677
|
-
_rotateUp: (angleInRadians: number) => void;
|
|
22678
|
-
_pan: (dx: number, dy: number) => void;
|
|
22679
|
-
_dollyIn: (dollyScale: number) => void;
|
|
22680
|
-
_dollyOut: (dollyScale: number) => void;
|
|
22681
|
-
}
|
|
22682
|
-
interface OrbitControlsEventMap {
|
|
22683
|
-
endMovement: Event;
|
|
22684
|
-
}
|
|
22685
|
-
}
|
|
22686
|
-
|
|
22687
|
-
|
|
22688
22673
|
declare module 'three' {
|
|
22689
22674
|
interface SkinnedMesh {
|
|
22690
22675
|
staticGenerator?: StaticGeometryGenerator;
|
|
@@ -22707,6 +22692,21 @@ declare module 'three' {
|
|
|
22707
22692
|
}
|
|
22708
22693
|
|
|
22709
22694
|
|
|
22695
|
+
declare module 'three/examples/jsm/controls/OrbitControls.js' {
|
|
22696
|
+
interface OrbitControls {
|
|
22697
|
+
_sphericalDelta: import("three").Spherical;
|
|
22698
|
+
_rotateLeft: (angleInRadians: number) => void;
|
|
22699
|
+
_rotateUp: (angleInRadians: number) => void;
|
|
22700
|
+
_pan: (dx: number, dy: number) => void;
|
|
22701
|
+
_dollyIn: (dollyScale: number) => void;
|
|
22702
|
+
_dollyOut: (dollyScale: number) => void;
|
|
22703
|
+
}
|
|
22704
|
+
interface OrbitControlsEventMap {
|
|
22705
|
+
endMovement: Event;
|
|
22706
|
+
}
|
|
22707
|
+
}
|
|
22708
|
+
|
|
22709
|
+
|
|
22710
22710
|
declare module 'three' {
|
|
22711
22711
|
interface Object3D {
|
|
22712
22712
|
get guid(): string | undefined;
|
package/dist/needle-engine.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GameObject as r, onClear as i, onDestroy as a, onInitialized as s, onAfterRender as l, onBeforeRender as d, onUpdate as c, onStart as m, TypeStore as p, loadAsset as g, NeedleXRSession as u, Context as S, VERSION as C, Component as y, Components as E } from "./needle-engine.bundle-
|
|
2
|
-
import { $componentName as A, $physicsKey as T, ActionBuilder as b, ActionCollection as M, ActionModel as I, Addressables as D, AlignmentConstraint as O, AmbientMode as x, Animation as k, AnimationCurve as L, AnimationExtension as N, AnimationTrackHandler as B, AnimationUtils as F, Animator as w, AnimatorConditionMode as U, AnimatorController as G, AnimatorControllerParameterType as W, AnimatorStateInfo as H, Antialiasing as X, Application as z, AssetDatabase as V, AssetReference as _, Attractor as j, AudioExtension as Z, AudioListener as K, AudioSource as Q, AudioTrackHandler as $, Avatar as Y, AvatarBlink_Simple as J, AvatarEyeLook_Rotation as q, AvatarLoader as ee, AvatarMarker as te, AvatarModel as oe, Avatar_Brain_LookAt as re, Avatar_MouthShapes as ne, Avatar_MustacheShake as ie, Avatar_POI as ae, Axes as se, AxesHelper as le, BUILD_TIME as de, BaseUIComponent as ce, BasicIKConstraint as me, BehaviorExtension as pe, BehaviorModel as ge, Component$1 as ue, BlobStorage as Se, BloomEffect as Ce, BoxCollider as ye, BoxGizmo as Ee, BoxHelperComponent as Re, Button as he, ButtonsFactory as fe, CallDirection as ve, CallInfo as Pe, Camera as Ae, CameraTargetReachedEvent as Te, Canvas as be, CanvasGroup as Me, CapsuleCollider as Ie, ChangeMaterialOnClick as De, ChangeTransformOnClick as Oe, CharacterController as xe, CharacterControllerInput as ke, ChromaticAberration as Le, CircularBuffer as Ne, ClearFlags as Be, ClickThrough as Fe, ClipExtrapolation as we, Collider as Ue, Collision as Ge, CollisionDetectionMode as We, ColorAdjustments as He, ColorBySpeedModule as Xe, ColorOverLifetimeModule as ze, Component$1 as Ve, ComponentLifecycleEvents as _e, ConnectionEvents as je, ContactPoint as Ze, ContactShadows as Ke, ContextArgs as Qe, ContextEvent as $e, ContextRegistry as Ye, ControlTrackHandler as Je, CursorFollow as qe, CustomBranding as et, CustomShader as tt, DefaultReflectionMode as ot, Deletable as rt, DeleteBox as nt, DepthOfField as it, DeviceFlag as at, DeviceUtilities as st, DocumentExtension as lt, DragControls as dt, DragMode as ct, DropListener as mt, Duplicatable as pt, EffectWrapper as gt, EmissionModule as ut, EmphasizeOnClick as St, EngineLoadingView as Ct, EnvironmentScene as yt, EventList as Et, EventListEvent as Rt, EventSystem as ht, EventTrigger as ft, FieldWithDefault as vt, FileReference as Pt, FileReferenceSerializer as At, FileSpawnModel as Tt, File_Event as bt, FixedJoint as Mt, Fog as It, FrameEvent as Dt, GENERATOR as Ot, Gizmos as xt, GltfExport as kt, GltfExportBox as Lt, Gradient as Nt, Graphic as Bt, GraphicRaycaster as Ft, Graphics as wt, GridHelper as Ut, GridLayoutGroup as Gt, GroundProjectedEnv as Wt, GroupActionModel as Ht, HideFlags as Xt, HideOnStart as zt, HingeJoint as Vt, HorizontalLayoutGroup as _t, HostData as jt, HoverAnimation as Zt, Image as Kt, ImageReference as Qt, ImageReferenceSerializer as $t, InheritVelocityModule as Yt, Input as Jt, InputEventQueue as qt, InputEvents as eo, InputField as to, InstanceHandle as oo, InstancingHandler as ro, InstancingUtil as no, InstantiateEvent as io, InstantiateIdProvider as ao, InstantiateOptions as so, Interactable as lo, InternalScreenshotUtils as co, JoinedRoomResponse as mo, KeyEventArgs as po, Keyframe as go, LODGroup as uo, LODModel as So, LeftRoomResponse as Co, Light as yo, LightData as Eo, LimitVelocityOverLifetimeModule as Ro, LoadingElementOptions as ho, LogStats as fo, LogType as vo, LookAt as Po, LookAtConstraint as Ao, MainModule as To, MarkerTrackHandler as bo, MarkerType as Mo, MaskableGraphic as Io, MaterialPropertyBlock as Do, MaterialX as Oo, Mathf as xo, MeshCollider as ko, MeshRenderer as Lo, MinMaxCurve as No, MinMaxGradient as Bo, NEEDLE_ENGINE_FEATURE_FLAGS as Fo, MODULES as wo, NEKeyboardEvent as Uo, NEPointerEvent as Go, NeedleButtonElement as Wo, ContextRegistry as Ho, NeedleEngineModelLoader as Xo, NeedleEngineWebComponent as zo, NeedleMenu as Vo, NeedlePatchesKey as _o, USDZExporter as jo, NeedleXRController as Zo, NeedleXRSync as Ko, NeedleXRUtils as Qo, NestedGltf as $o, NetworkConnection as Yo, NetworkedStreamEvents as Jo, NetworkedStreams as qo, Networking as er, NewInstanceModel as tr, NoiseModule as or, ObjectRaycaster as rr, ObjectUtils as nr, OffsetConstraint as ir, OneEuroFilter as ar, OneEuroFilterXYZ as sr, OpenURL as lr, OrbitControls as dr, Outline as cr, OwnershipEvent as mr, OwnershipModel as pr, PUBLIC_KEY as gr, Padding as ur, ParticleBurst as Sr, ParticleSubEmitter as Cr, ParticleSystem as yr, ParticleSystemBaseBehaviour as Er, ParticleSystemRenderer as Rr, ParticleSystemShapeType as hr, PeerHandle as fr, PeerNetworking as vr, Physics as Pr, PhysicsExtension as Ar, PhysicsMaterialCombine as Tr, PixelationEffect as br, PlayAnimationOnClick as Mr, PlayAudioOnClick as Ir, PlayableDirector as Dr, PlayerColor as Or, PlayerState as xr, PlayerStateEvent as kr, PlayerSync as Lr, PlayerView as Nr, PlayerViewManager as Br, PointerEventData as Fr, PointerType as wr, PostProcessingEffect as Ur, PostProcessingEffectOrder as Gr, PostProcessingHandler as Wr, Volume as Hr, PreliminaryAction as Xr, PreliminaryTrigger as zr, PreviewHelper as Vr, PrimitiveType as _r, Progress as jr, PromiseAllWithErrors as Zr, PromiseErrorResult as Kr, RGBAColor as Qr, RapierPhysics as $r, RawImage as Yr, RaycastOptions as Jr, Rect as qr, RectTransform as en, ReflectionProbe as tn, RegisteredAnimationInfo as on, RemoteSkybox as rn, RenderTexture as nn, RenderTextureSerializer as an, Renderer as sn, RendererData as ln, RendererLightmap as dn, Rigidbody as cn, RigidbodyConstraints as mn, RoomEvents as pn, RotationBySpeedModule as gn, RotationOverLifetimeModule as un, SceneLightSettings as Sn, SceneSwitcher as Cn, ScreenCapture as yn, ScreenSpaceAmbientOcclusion as En, ScreenSpaceAmbientOcclusionN8 as Rn, ScrollFollow as hn, SeeThrough as fn, SendQueue as vn, SerializationContext as Pn, SetActiveOnClick as An, ShadowCatcher as Tn, ShapeModule as bn, ShapeOverlapResult as Mn, SharpeningEffect as In, SignalAsset as Dn, SignalReceiver as On, SignalReceiverEvent as xn, SignalTrackHandler as kn, Size as Ln, SizeBySpeedModule as Nn, SizeOverLifetimeModule as Bn, SkinnedMeshRenderer as Fn, SmoothFollow as wn, SpatialGrabRaycaster as Un, SpatialHtml as Gn, SpatialTrigger as Wn, SpatialTriggerReceiver as Hn, SpectatorCamera as Xn, SphereCollider as zn, SphereIntersection as Vn, SplineContainer as _n, SplineData as jn, SplineUtils as Zn, SplineWalker as Kn, Sprite as Qn, SpriteData as $n, SpriteRenderer as Yn, SpriteSheet as Jn, StateMachineBehaviour as qn, StreamEndedEvent as ei, StreamReceivedEvent as ti, SubEmitterSystem as oi, SyncedCamera as ri, SyncedRoom as ni, SyncedTransform as ii, TapGestureTrigger as ai, TeleportTarget as si, TestRunner as li, TestSimulateUserData as di, Text as ci, TextBuilder as mi, TextExtension as pi, TextureSheetAnimationModule as gi, TiltShiftEffect as ui, Time as Si, ToneMappingEffect as Ci, TrackHandler as yi, TrackType as Ei, TrailModule as Ri, TransformData as hi, TransformGizmo as fi, TriggerBuilder as vi, TriggerModel as Pi, UIRaycastUtils as Ai, UIRootComponent as Ti, USDDocument as bi, USDObject as Mi, USDWriter as Ii, USDZExporter$1 as Di, USDZText as Oi, USDZUIExtension as xi, UriSerializer as ki, UsageMarker as Li, UserJoinedOrLeftRoomModel as Ni, VariantAction as Bi, VelocityOverLifetimeModule as Fi, VerticalLayoutGroup as wi, VideoPlayer as Ui, ViewBox as Gi, ViewDevice as Wi, Vignette as Hi, VisibilityAction as Xi, Voip as zi, Volume as Vi, VolumeParameter as _i, VolumeProfile as ji, WaitForFrames as Zi, WaitForPromise as Ki, WaitForSeconds as Qi, Watch as $i, WebARCameraBackground as Yi, WebARSessionRoot as Ji, WebXR as qi, WebXRButtonFactory as ea, WebXRImageTracking as ta, WebXRImageTrackingModel as oa, WebXRPlaneTracking as ra, WebXRTrackedImage as na, XRControllerFollow as ia, XRControllerModel as aa, XRControllerMovement as sa, XRFlag as la, XRRig as da, XRState as ca, XRStateFlag as ma, __Ignore as pa, __internalNotifyObjectDestroyed as ga, activeInHierarchyFieldName as ua, addAttributeChangeCallback as Sa, addComponent as Ca, addCustomExtensionPlugin as ya, addNewComponent as Ea, addPatch as Ra, apply as ha, applyHMRChanges as fa, applyPrototypeExtensions as va, beginListenDestroy as Pa, beginListenInstantiate as Aa, binaryIdentifierCasts as Ta, build_scene_functions as ba, builtinComponentKeyName as Ma, calculateProgress01 as Ia, clearMessages as Da, clearMessages as Oa, colorSerializer as xa, compareAssociation as ka, componentSerializer as La, copyTexture as Na, createMotion as Ba, debugNet as Fa, debugOwner as wa, decompressGpuTexture as Ua, deepClone as Ga, delay as Wa, delayForFrames as Ha, deserializeObject as Xa, destroy as za, destroyComponentInstance as Va, determineMimeTypeFromExtension as _a, disposeObjectResources as ja, disposeStream as Za, editorGuidKeyName as Ka, enableSpatialConsole as Qa, euler as $a, eventListSerializer as Ya, exportAsGLTF as Ja, findByGuid as qa, findObjectOfType as es, findObjectsOfType as ts, findResourceUsers as os, fitCamera as rs, fitObjectIntoVolume as ns, foreachComponent as is, foreachComponentEnumerator as as, forward as ss, generateQRCode as ls, generateSeed as ds, getBoundingBox as cs, getCameraController as ms, getComponent as ps, getComponentInChildren as gs, getComponentInParent as us, getComponents as Ss, getComponentsInChildren as Cs, getComponentsInParent as ys, getFormattedDate as Es, getIconElement as Rs, getIconTexture as hs, getLoader as fs, getOrAddComponent as vs, getParam as Ps, getParentHierarchyPath as As, getPath as Ts, getPeerOptions as bs, getPeerjsInstance as Ms, getResourceUserCount as Is, getTempColor as Ds, getTempQuaternion as Os, getTempVector as xs, getUrlParams as ks, getVisibleInCustomShadowRendering as Ls, getWorldDirection as Ns, getWorldEuler as Bs, getWorldPosition as Fs, getWorldQuaternion as ws, getWorldRotation as Us, getWorldScale as Gs, hasCommercialLicense as Ws, hasIndieLicense as Hs, hasPointerEventComponent as Xs, hasProLicense as zs, hideDebugConsole as Vs, imageToCanvas as _s, instantiate as js, invokeLoadedImportPluginHooks as Zs, invokeXRSessionEnd as Ks, invokeXRSessionStart as Qs, isActiveInHierarchy as $s, isActiveSelf as Ys, isAndroidDevice as Js, isAnimationAction as qs, isComponent as el, isDebugMode as tl, isDesktop as ol, isDestroyed as rl, isDevEnvironment as nl, isDisposed as il, isExporting as al, isGLTFModel as sl, isHostedOnGlitch as ll, isHotReloadEnabled as dl, isHotReloading as cl, isIPad as ml, isIconElement as pl, isLocalNetwork as gl, isMacOS as ul, isMobileDevice as Sl, isMozillaXR as Cl, isQuest as yl, isResourceTrackingEnabled as El, isSafari as Rl, isUsingInstancing as hl, isiOS as fl, isiPad as vl, loadPMREM as Pl, loadSync as Al, logHierarchy as Tl, lookAtInverse as bl, lookAtObject as Ml, lookAtScreenPoint as Il, makeId as Dl, makeIdFromRandomWords as Ol, makeNameSafe as xl, markAsInstancedRendered as kl, microphonePermissionsGranted as Ll, nameof as Nl, nameofFactory as Bl, objectSerializer as Fl, offXRSessionEnd as wl, offXRSessionStart as Ul, onXRSessionEnd as Gl, onXRSessionStart as Wl, parseSync as Hl, placeOnSurface as Xl, postprocessFBXMaterials as zl, prefix as Vl, pushState as _l, randomNumber as jl, registerBinaryType as Zl, registerComponent as Kl, registerComponentExtension as Ql, registerCustomEffectType as $l, registerExportExtensions as Yl, registerExtensions as Jl, registerHotReloadType as ql, registerLoader as ed, registerPrefabProvider as td, registerPrototypeExtensions as od, registerType as rd, relativePathPrefix as nd, removeAttributeChangeCallback as id, removeComponent as ad, removeCustomImportExtensionType as sd, removePatch as ld, resolveUrl as dd, sanitizeString as cd, saveImage as md, screenshot as pd, screenshot2 as gd, sendDestroyed as ud, serializable as Sd, serializeObject as Cd, serializeable as yd, setActive as Ed, setAllowBalloonMessages as Rd, setAllowOverlayMessages as hd, setAutoFitEnabled as fd, setCameraController as vd, setDestroyed as Pd, setDevEnvironment as Ad, setDisposable as Td, setDontDestroy as bd, setOrAddParamsToUrl as Md, setParam as Id, setParamWithoutReload as Dd, setPeerOptions as Od, setResourceTrackingEnabled as xd, setState as kd, setVisibleInCustomShadowRendering as Ld, setWorldEuler as Nd, setWorldPosition as Bd, setWorldPositionXYZ as Fd, setWorldQuaternion as wd, setWorldQuaternionXYZW as Ud, setWorldRotation as Gd, setWorldRotationXYZ as Wd, setWorldScale as Hd, showBalloonError as Xd, showBalloonMessage as zd, showBalloonWarning as Vd, showDebugConsole as _d, slerp as jd, syncDestroy as Zd, syncField as Kd, syncInstantiate as Qd, textureToCanvas as $d, toSourceId as Yd, tryCastBinary as Jd, tryDetermineMimetypeFromBinary as qd, tryDetermineMimetypeFromURL as ec, tryFindObject as tc, tryGetGuid as oc, unregisterHotReloadType as rc, unwatchWrite as nc, useForAutoFit as ic, validate as ac, watchWrite as sc } from "./needle-engine.bundle-DfKc7T9V.js";
|
|
1
|
+
import { GameObject as r, onClear as i, onDestroy as a, onInitialized as s, onAfterRender as l, onBeforeRender as d, onUpdate as c, onStart as m, TypeStore as p, loadAsset as g, NeedleXRSession as u, Context as S, VERSION as C, Component as y, Components as E } from "./needle-engine.bundle-Bs6RukiW.js";
|
|
2
|
+
import { $componentName as A, $physicsKey as T, ActionBuilder as b, ActionCollection as M, ActionModel as I, Addressables as D, AlignmentConstraint as O, AmbientMode as x, Animation as k, AnimationCurve as L, AnimationExtension as N, AnimationTrackHandler as B, AnimationUtils as F, Animator as w, AnimatorConditionMode as U, AnimatorController as G, AnimatorControllerParameterType as W, AnimatorStateInfo as H, Antialiasing as X, Application as z, AssetDatabase as V, AssetReference as _, Attractor as j, AudioExtension as Z, AudioListener as K, AudioSource as Q, AudioTrackHandler as $, Avatar as Y, AvatarBlink_Simple as J, AvatarEyeLook_Rotation as q, AvatarLoader as ee, AvatarMarker as te, AvatarModel as oe, Avatar_Brain_LookAt as re, Avatar_MouthShapes as ne, Avatar_MustacheShake as ie, Avatar_POI as ae, Axes as se, AxesHelper as le, BUILD_TIME as de, BaseUIComponent as ce, BasicIKConstraint as me, BehaviorExtension as pe, BehaviorModel as ge, Component$1 as ue, BlobStorage as Se, BloomEffect as Ce, BoxCollider as ye, BoxGizmo as Ee, BoxHelperComponent as Re, Button as he, ButtonsFactory as fe, CallDirection as ve, CallInfo as Pe, Camera as Ae, CameraTargetReachedEvent as Te, Canvas as be, CanvasGroup as Me, CapsuleCollider as Ie, ChangeMaterialOnClick as De, ChangeTransformOnClick as Oe, CharacterController as xe, CharacterControllerInput as ke, ChromaticAberration as Le, CircularBuffer as Ne, ClearFlags as Be, ClickThrough as Fe, ClipExtrapolation as we, Collider as Ue, Collision as Ge, CollisionDetectionMode as We, ColorAdjustments as He, ColorBySpeedModule as Xe, ColorOverLifetimeModule as ze, Component$1 as Ve, ComponentLifecycleEvents as _e, ConnectionEvents as je, ContactPoint as Ze, ContactShadows as Ke, ContextArgs as Qe, ContextEvent as $e, ContextRegistry as Ye, ControlTrackHandler as Je, CursorFollow as qe, CustomBranding as et, CustomShader as tt, DefaultReflectionMode as ot, Deletable as rt, DeleteBox as nt, DepthOfField as it, DeviceFlag as at, DeviceUtilities as st, DocumentExtension as lt, DragControls as dt, DragMode as ct, DropListener as mt, Duplicatable as pt, EffectWrapper as gt, EmissionModule as ut, EmphasizeOnClick as St, EngineLoadingView as Ct, EnvironmentScene as yt, EventList as Et, EventListEvent as Rt, EventSystem as ht, EventTrigger as ft, FieldWithDefault as vt, FileReference as Pt, FileReferenceSerializer as At, FileSpawnModel as Tt, File_Event as bt, FixedJoint as Mt, Fog as It, FrameEvent as Dt, GENERATOR as Ot, Gizmos as xt, GltfExport as kt, GltfExportBox as Lt, Gradient as Nt, Graphic as Bt, GraphicRaycaster as Ft, Graphics as wt, GridHelper as Ut, GridLayoutGroup as Gt, GroundProjectedEnv as Wt, GroupActionModel as Ht, HideFlags as Xt, HideOnStart as zt, HingeJoint as Vt, HorizontalLayoutGroup as _t, HostData as jt, HoverAnimation as Zt, Image as Kt, ImageReference as Qt, ImageReferenceSerializer as $t, InheritVelocityModule as Yt, Input as Jt, InputEventQueue as qt, InputEvents as eo, InputField as to, InstanceHandle as oo, InstancingHandler as ro, InstancingUtil as no, InstantiateEvent as io, InstantiateIdProvider as ao, InstantiateOptions as so, Interactable as lo, InternalScreenshotUtils as co, JoinedRoomResponse as mo, KeyEventArgs as po, Keyframe as go, LODGroup as uo, LODModel as So, LeftRoomResponse as Co, Light as yo, LightData as Eo, LimitVelocityOverLifetimeModule as Ro, LoadingElementOptions as ho, LogStats as fo, LogType as vo, LookAt as Po, LookAtConstraint as Ao, MainModule as To, MarkerTrackHandler as bo, MarkerType as Mo, MaskableGraphic as Io, MaterialPropertyBlock as Do, MaterialX as Oo, Mathf as xo, MeshCollider as ko, MeshRenderer as Lo, MinMaxCurve as No, MinMaxGradient as Bo, NEEDLE_ENGINE_FEATURE_FLAGS as Fo, MODULES as wo, NEKeyboardEvent as Uo, NEPointerEvent as Go, NeedleButtonElement as Wo, ContextRegistry as Ho, NeedleEngineModelLoader as Xo, NeedleEngineWebComponent as zo, NeedleMenu as Vo, NeedlePatchesKey as _o, USDZExporter as jo, NeedleXRController as Zo, NeedleXRSync as Ko, NeedleXRUtils as Qo, NestedGltf as $o, NetworkConnection as Yo, NetworkedStreamEvents as Jo, NetworkedStreams as qo, Networking as er, NewInstanceModel as tr, NoiseModule as or, ObjectRaycaster as rr, ObjectUtils as nr, OffsetConstraint as ir, OneEuroFilter as ar, OneEuroFilterXYZ as sr, OpenURL as lr, OrbitControls as dr, Outline as cr, OwnershipEvent as mr, OwnershipModel as pr, PUBLIC_KEY as gr, Padding as ur, ParticleBurst as Sr, ParticleSubEmitter as Cr, ParticleSystem as yr, ParticleSystemBaseBehaviour as Er, ParticleSystemRenderer as Rr, ParticleSystemShapeType as hr, PeerHandle as fr, PeerNetworking as vr, Physics as Pr, PhysicsExtension as Ar, PhysicsMaterialCombine as Tr, PixelationEffect as br, PlayAnimationOnClick as Mr, PlayAudioOnClick as Ir, PlayableDirector as Dr, PlayerColor as Or, PlayerState as xr, PlayerStateEvent as kr, PlayerSync as Lr, PlayerView as Nr, PlayerViewManager as Br, PointerEventData as Fr, PointerType as wr, PostProcessingEffect as Ur, PostProcessingEffectOrder as Gr, PostProcessingHandler as Wr, Volume as Hr, PreliminaryAction as Xr, PreliminaryTrigger as zr, PreviewHelper as Vr, PrimitiveType as _r, Progress as jr, PromiseAllWithErrors as Zr, PromiseErrorResult as Kr, RGBAColor as Qr, RapierPhysics as $r, RawImage as Yr, RaycastOptions as Jr, Rect as qr, RectTransform as en, ReflectionProbe as tn, RegisteredAnimationInfo as on, RemoteSkybox as rn, RenderTexture as nn, RenderTextureSerializer as an, Renderer as sn, RendererData as ln, RendererLightmap as dn, Rigidbody as cn, RigidbodyConstraints as mn, RoomEvents as pn, RotationBySpeedModule as gn, RotationOverLifetimeModule as un, SceneLightSettings as Sn, SceneSwitcher as Cn, ScreenCapture as yn, ScreenSpaceAmbientOcclusion as En, ScreenSpaceAmbientOcclusionN8 as Rn, ScrollFollow as hn, SeeThrough as fn, SendQueue as vn, SerializationContext as Pn, SetActiveOnClick as An, ShadowCatcher as Tn, ShapeModule as bn, ShapeOverlapResult as Mn, SharpeningEffect as In, SignalAsset as Dn, SignalReceiver as On, SignalReceiverEvent as xn, SignalTrackHandler as kn, Size as Ln, SizeBySpeedModule as Nn, SizeOverLifetimeModule as Bn, SkinnedMeshRenderer as Fn, SmoothFollow as wn, SpatialGrabRaycaster as Un, SpatialHtml as Gn, SpatialTrigger as Wn, SpatialTriggerReceiver as Hn, SpectatorCamera as Xn, SphereCollider as zn, SphereIntersection as Vn, SplineContainer as _n, SplineData as jn, SplineUtils as Zn, SplineWalker as Kn, Sprite as Qn, SpriteData as $n, SpriteRenderer as Yn, SpriteSheet as Jn, StateMachineBehaviour as qn, StreamEndedEvent as ei, StreamReceivedEvent as ti, SubEmitterSystem as oi, SyncedCamera as ri, SyncedRoom as ni, SyncedTransform as ii, TapGestureTrigger as ai, TeleportTarget as si, TestRunner as li, TestSimulateUserData as di, Text as ci, TextBuilder as mi, TextExtension as pi, TextureSheetAnimationModule as gi, TiltShiftEffect as ui, Time as Si, ToneMappingEffect as Ci, TrackHandler as yi, TrackType as Ei, TrailModule as Ri, TransformData as hi, TransformGizmo as fi, TriggerBuilder as vi, TriggerModel as Pi, UIRaycastUtils as Ai, UIRootComponent as Ti, USDDocument as bi, USDObject as Mi, USDWriter as Ii, USDZExporter$1 as Di, USDZText as Oi, USDZUIExtension as xi, UriSerializer as ki, UsageMarker as Li, UserJoinedOrLeftRoomModel as Ni, VariantAction as Bi, VelocityOverLifetimeModule as Fi, VerticalLayoutGroup as wi, VideoPlayer as Ui, ViewBox as Gi, ViewDevice as Wi, Vignette as Hi, VisibilityAction as Xi, Voip as zi, Volume as Vi, VolumeParameter as _i, VolumeProfile as ji, WaitForFrames as Zi, WaitForPromise as Ki, WaitForSeconds as Qi, Watch as $i, WebARCameraBackground as Yi, WebARSessionRoot as Ji, WebXR as qi, WebXRButtonFactory as ea, WebXRImageTracking as ta, WebXRImageTrackingModel as oa, WebXRPlaneTracking as ra, WebXRTrackedImage as na, XRControllerFollow as ia, XRControllerModel as aa, XRControllerMovement as sa, XRFlag as la, XRRig as da, XRState as ca, XRStateFlag as ma, __Ignore as pa, __internalNotifyObjectDestroyed as ga, activeInHierarchyFieldName as ua, addAttributeChangeCallback as Sa, addComponent as Ca, addCustomExtensionPlugin as ya, addNewComponent as Ea, addPatch as Ra, apply as ha, applyHMRChanges as fa, applyPrototypeExtensions as va, beginListenDestroy as Pa, beginListenInstantiate as Aa, binaryIdentifierCasts as Ta, build_scene_functions as ba, builtinComponentKeyName as Ma, calculateProgress01 as Ia, clearMessages as Da, clearMessages as Oa, colorSerializer as xa, compareAssociation as ka, componentSerializer as La, copyTexture as Na, createMotion as Ba, debugNet as Fa, debugOwner as wa, decompressGpuTexture as Ua, deepClone as Ga, delay as Wa, delayForFrames as Ha, deserializeObject as Xa, destroy as za, destroyComponentInstance as Va, determineMimeTypeFromExtension as _a, disposeObjectResources as ja, disposeStream as Za, editorGuidKeyName as Ka, enableSpatialConsole as Qa, euler as $a, eventListSerializer as Ya, exportAsGLTF as Ja, findByGuid as qa, findObjectOfType as es, findObjectsOfType as ts, findResourceUsers as os, fitCamera as rs, fitObjectIntoVolume as ns, foreachComponent as is, foreachComponentEnumerator as as, forward as ss, generateQRCode as ls, generateSeed as ds, getBoundingBox as cs, getCameraController as ms, getComponent as ps, getComponentInChildren as gs, getComponentInParent as us, getComponents as Ss, getComponentsInChildren as Cs, getComponentsInParent as ys, getFormattedDate as Es, getIconElement as Rs, getIconTexture as hs, getLoader as fs, getOrAddComponent as vs, getParam as Ps, getParentHierarchyPath as As, getPath as Ts, getPeerOptions as bs, getPeerjsInstance as Ms, getResourceUserCount as Is, getTempColor as Ds, getTempQuaternion as Os, getTempVector as xs, getUrlParams as ks, getVisibleInCustomShadowRendering as Ls, getWorldDirection as Ns, getWorldEuler as Bs, getWorldPosition as Fs, getWorldQuaternion as ws, getWorldRotation as Us, getWorldScale as Gs, hasCommercialLicense as Ws, hasIndieLicense as Hs, hasPointerEventComponent as Xs, hasProLicense as zs, hideDebugConsole as Vs, imageToCanvas as _s, instantiate as js, invokeLoadedImportPluginHooks as Zs, invokeXRSessionEnd as Ks, invokeXRSessionStart as Qs, isActiveInHierarchy as $s, isActiveSelf as Ys, isAndroidDevice as Js, isAnimationAction as qs, isComponent as el, isDebugMode as tl, isDesktop as ol, isDestroyed as rl, isDevEnvironment as nl, isDisposed as il, isExporting as al, isGLTFModel as sl, isHostedOnGlitch as ll, isHotReloadEnabled as dl, isHotReloading as cl, isIPad as ml, isIconElement as pl, isLocalNetwork as gl, isMacOS as ul, isMobileDevice as Sl, isMozillaXR as Cl, isQuest as yl, isResourceTrackingEnabled as El, isSafari as Rl, isUsingInstancing as hl, isiOS as fl, isiPad as vl, loadPMREM as Pl, loadSync as Al, logHierarchy as Tl, lookAtInverse as bl, lookAtObject as Ml, lookAtScreenPoint as Il, makeId as Dl, makeIdFromRandomWords as Ol, makeNameSafe as xl, markAsInstancedRendered as kl, microphonePermissionsGranted as Ll, nameof as Nl, nameofFactory as Bl, objectSerializer as Fl, offXRSessionEnd as wl, offXRSessionStart as Ul, onXRSessionEnd as Gl, onXRSessionStart as Wl, parseSync as Hl, placeOnSurface as Xl, postprocessFBXMaterials as zl, prefix as Vl, pushState as _l, randomNumber as jl, registerBinaryType as Zl, registerComponent as Kl, registerComponentExtension as Ql, registerCustomEffectType as $l, registerExportExtensions as Yl, registerExtensions as Jl, registerHotReloadType as ql, registerLoader as ed, registerPrefabProvider as td, registerPrototypeExtensions as od, registerType as rd, relativePathPrefix as nd, removeAttributeChangeCallback as id, removeComponent as ad, removeCustomImportExtensionType as sd, removePatch as ld, resolveUrl as dd, sanitizeString as cd, saveImage as md, screenshot as pd, screenshot2 as gd, sendDestroyed as ud, serializable as Sd, serializeObject as Cd, serializeable as yd, setActive as Ed, setAllowBalloonMessages as Rd, setAllowOverlayMessages as hd, setAutoFitEnabled as fd, setCameraController as vd, setDestroyed as Pd, setDevEnvironment as Ad, setDisposable as Td, setDontDestroy as bd, setOrAddParamsToUrl as Md, setParam as Id, setParamWithoutReload as Dd, setPeerOptions as Od, setResourceTrackingEnabled as xd, setState as kd, setVisibleInCustomShadowRendering as Ld, setWorldEuler as Nd, setWorldPosition as Bd, setWorldPositionXYZ as Fd, setWorldQuaternion as wd, setWorldQuaternionXYZW as Ud, setWorldRotation as Gd, setWorldRotationXYZ as Wd, setWorldScale as Hd, showBalloonError as Xd, showBalloonMessage as zd, showBalloonWarning as Vd, showDebugConsole as _d, slerp as jd, syncDestroy as Zd, syncField as Kd, syncInstantiate as Qd, textureToCanvas as $d, toSourceId as Yd, tryCastBinary as Jd, tryDetermineMimetypeFromBinary as qd, tryDetermineMimetypeFromURL as ec, tryFindObject as tc, tryGetGuid as oc, unregisterHotReloadType as rc, unwatchWrite as nc, useForAutoFit as ic, validate as ac, watchWrite as sc } from "./needle-engine.bundle-Bs6RukiW.js";
|
|
3
3
|
import { NEEDLE_progressive as dc } from "./gltf-progressive-BJ9OrddA.js";
|
|
4
4
|
import { THREE as R } from "./three.js";
|
|
5
5
|
const t = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{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 y,Components as E}from"./needle-engine.bundle-lfK3bN2F.min.js";import{$componentName as R,$physicsKey as h,ActionBuilder as v,ActionCollection as f,ActionModel as P,Addressables as A,AlignmentConstraint as T,AmbientMode as M,Animation as b,AnimationCurve as I,AnimationExtension as D,AnimationTrackHandler as O,AnimationUtils as x,Animator as k,AnimatorConditionMode as L,AnimatorController as B,AnimatorControllerParameterType as F,AnimatorStateInfo as N,Antialiasing as w,Application as W,AssetDatabase as G,AssetReference as U,Attractor as H,AudioExtension as X,AudioListener as z,AudioSource as V,AudioTrackHandler as _,Avatar as j,AvatarBlink_Simple as K,AvatarEyeLook_Rotation as Q,AvatarLoader as Z,AvatarMarker as Y,AvatarModel as J,Avatar_Brain_LookAt as $,Avatar_MouthShapes as q,Avatar_MustacheShake as ee,Avatar_POI as ae,Axes as se,AxesHelper as te,BUILD_TIME as oe,BaseUIComponent as re,BasicIKConstraint as ne,BehaviorExtension as ie,BehaviorModel as le,Component$1 as de,BlobStorage as ce,BloomEffect as me,BoxCollider as pe,BoxGizmo as ge,BoxHelperComponent as ue,Button as Se,ButtonsFactory as Ce,CallDirection as ye,CallInfo as Ee,Camera as Re,CameraTargetReachedEvent as he,Canvas as ve,CanvasGroup as fe,CapsuleCollider as Pe,ChangeMaterialOnClick as Ae,ChangeTransformOnClick as Te,CharacterController as Me,CharacterControllerInput as be,ChromaticAberration as Ie,CircularBuffer as De,ClearFlags as Oe,ClickThrough as xe,ClipExtrapolation as ke,Collider as Le,Collision as Be,CollisionDetectionMode as Fe,ColorAdjustments as Ne,ColorBySpeedModule as we,ColorOverLifetimeModule as We,Component$1 as Ge,ComponentLifecycleEvents as Ue,ConnectionEvents as He,ContactPoint as Xe,ContactShadows as ze,ContextArgs as Ve,ContextEvent as _e,ContextRegistry as je,ControlTrackHandler as Ke,CursorFollow as Qe,CustomBranding as Ze,CustomShader as Ye,DefaultReflectionMode as Je,Deletable as $e,DeleteBox as qe,DepthOfField as ea,DeviceFlag as aa,DeviceUtilities as sa,DocumentExtension as ta,DragControls as oa,DragMode as ra,DropListener as na,Duplicatable as ia,EffectWrapper as la,EmissionModule as da,EmphasizeOnClick as ca,EngineLoadingView as ma,EnvironmentScene as pa,EventList as ga,EventListEvent as ua,EventSystem as Sa,EventTrigger as Ca,FieldWithDefault as ya,FileReference as Ea,FileReferenceSerializer as Ra,FileSpawnModel as ha,File_Event as va,FixedJoint as fa,Fog as Pa,FrameEvent as Aa,GENERATOR as Ta,Gizmos as Ma,GltfExport as ba,GltfExportBox as Ia,Gradient as Da,Graphic as Oa,GraphicRaycaster as xa,Graphics as ka,GridHelper as La,GridLayoutGroup as Ba,GroundProjectedEnv as Fa,GroupActionModel as Na,HideFlags as wa,HideOnStart as Wa,HingeJoint as Ga,HorizontalLayoutGroup as Ua,HostData as Ha,HoverAnimation as Xa,Image as za,ImageReference as Va,ImageReferenceSerializer as _a,InheritVelocityModule as ja,Input as Ka,InputEventQueue as Qa,InputEvents as Za,InputField as Ya,InstanceHandle as Ja,InstancingHandler as $a,InstancingUtil as qa,InstantiateEvent as es,InstantiateIdProvider as as,InstantiateOptions as ss,Interactable as ts,InternalScreenshotUtils as os,JoinedRoomResponse as rs,KeyEventArgs as ns,Keyframe as is,LODGroup as ls,LODModel as ds,LeftRoomResponse as cs,Light as ms,LightData as ps,LimitVelocityOverLifetimeModule as gs,LoadingElementOptions as us,LogStats as Ss,LogType as Cs,LookAt as ys,LookAtConstraint as Es,MainModule as Rs,MarkerTrackHandler as hs,MarkerType as vs,MaskableGraphic as fs,MaterialPropertyBlock as Ps,MaterialX as As,Mathf as Ts,MeshCollider as Ms,MeshRenderer as bs,MinMaxCurve as Is,MinMaxGradient as Ds,NEEDLE_ENGINE_FEATURE_FLAGS as Os,MODULES as xs,NEKeyboardEvent as ks,NEPointerEvent as Ls,NeedleButtonElement as Bs,ContextRegistry as Fs,NeedleEngineModelLoader as Ns,NeedleEngineWebComponent as ws,NeedleMenu as Ws,NeedlePatchesKey as Gs,USDZExporter as Us,NeedleXRController as Hs,NeedleXRSync as Xs,NeedleXRUtils as zs,NestedGltf as Vs,NetworkConnection as _s,NetworkedStreamEvents as js,NetworkedStreams as Ks,Networking as Qs,NewInstanceModel as Zs,NoiseModule as Ys,ObjectRaycaster as Js,ObjectUtils as $s,OffsetConstraint as qs,OneEuroFilter as et,OneEuroFilterXYZ as at,OpenURL as st,OrbitControls as tt,Outline as ot,OwnershipEvent as rt,OwnershipModel as nt,PUBLIC_KEY as it,Padding as lt,ParticleBurst as dt,ParticleSubEmitter as ct,ParticleSystem as mt,ParticleSystemBaseBehaviour as pt,ParticleSystemRenderer as gt,ParticleSystemShapeType as ut,PeerHandle as St,PeerNetworking as Ct,Physics as yt,PhysicsExtension as Et,PhysicsMaterialCombine as Rt,PixelationEffect as ht,PlayAnimationOnClick as vt,PlayAudioOnClick as ft,PlayableDirector as Pt,PlayerColor as At,PlayerState as Tt,PlayerStateEvent as Mt,PlayerSync as bt,PlayerView as It,PlayerViewManager as Dt,PointerEventData as Ot,PointerType as xt,PostProcessingEffect as kt,PostProcessingEffectOrder as Lt,PostProcessingHandler as Bt,Volume as Ft,PreliminaryAction as Nt,PreliminaryTrigger as wt,PreviewHelper as Wt,PrimitiveType as Gt,Progress as Ut,PromiseAllWithErrors as Ht,PromiseErrorResult as Xt,RGBAColor as zt,RapierPhysics as Vt,RawImage as _t,RaycastOptions as jt,Rect as Kt,RectTransform as Qt,ReflectionProbe as Zt,RegisteredAnimationInfo as Yt,RemoteSkybox as Jt,RenderTexture as $t,RenderTextureSerializer as qt,Renderer as eo,RendererData as ao,RendererLightmap as so,Rigidbody as to,RigidbodyConstraints as oo,RoomEvents as ro,RotationBySpeedModule as no,RotationOverLifetimeModule as io,SceneLightSettings as lo,SceneSwitcher as co,ScreenCapture as mo,ScreenSpaceAmbientOcclusion as po,ScreenSpaceAmbientOcclusionN8 as go,ScrollFollow as uo,SeeThrough as So,SendQueue as Co,SerializationContext as yo,SetActiveOnClick as Eo,ShadowCatcher as Ro,ShapeModule as ho,ShapeOverlapResult as vo,SharpeningEffect as fo,SignalAsset as Po,SignalReceiver as Ao,SignalReceiverEvent as To,SignalTrackHandler as Mo,Size as bo,SizeBySpeedModule as Io,SizeOverLifetimeModule as Do,SkinnedMeshRenderer as Oo,SmoothFollow as xo,SpatialGrabRaycaster as ko,SpatialHtml as Lo,SpatialTrigger as Bo,SpatialTriggerReceiver as Fo,SpectatorCamera as No,SphereCollider as wo,SphereIntersection as Wo,SplineContainer as Go,SplineData as Uo,SplineUtils as Ho,SplineWalker as Xo,Sprite as zo,SpriteData as Vo,SpriteRenderer as _o,SpriteSheet as jo,StateMachineBehaviour as Ko,StreamEndedEvent as Qo,StreamReceivedEvent as Zo,SubEmitterSystem as Yo,SyncedCamera as Jo,SyncedRoom as $o,SyncedTransform as qo,TapGestureTrigger as er,TeleportTarget as ar,TestRunner as sr,TestSimulateUserData as tr,Text as or,TextBuilder as rr,TextExtension as nr,TextureSheetAnimationModule as ir,TiltShiftEffect as lr,Time as dr,ToneMappingEffect as cr,TrackHandler as mr,TrackType as pr,TrailModule as gr,TransformData as ur,TransformGizmo as Sr,TriggerBuilder as Cr,TriggerModel as yr,UIRaycastUtils as Er,UIRootComponent as Rr,USDDocument as hr,USDObject as vr,USDWriter as fr,USDZExporter$1 as Pr,USDZText as Ar,USDZUIExtension as Tr,UriSerializer as Mr,UsageMarker as br,UserJoinedOrLeftRoomModel as Ir,VariantAction as Dr,VelocityOverLifetimeModule as Or,VerticalLayoutGroup as xr,VideoPlayer as kr,ViewBox as Lr,ViewDevice as Br,Vignette as Fr,VisibilityAction as Nr,Voip as wr,Volume as Wr,VolumeParameter as Gr,VolumeProfile as Ur,WaitForFrames as Hr,WaitForPromise as Xr,WaitForSeconds as zr,Watch as Vr,WebARCameraBackground as _r,WebARSessionRoot as jr,WebXR as Kr,WebXRButtonFactory as Qr,WebXRImageTracking as Zr,WebXRImageTrackingModel as Yr,WebXRPlaneTracking as Jr,WebXRTrackedImage as $r,XRControllerFollow as qr,XRControllerModel as en,XRControllerMovement as an,XRFlag as sn,XRRig as tn,XRState as on,XRStateFlag as rn,__Ignore as nn,__internalNotifyObjectDestroyed as ln,activeInHierarchyFieldName as dn,addAttributeChangeCallback as cn,addComponent as mn,addCustomExtensionPlugin as pn,addNewComponent as gn,addPatch as un,apply as Sn,applyHMRChanges as Cn,applyPrototypeExtensions as yn,beginListenDestroy as En,beginListenInstantiate as Rn,binaryIdentifierCasts as hn,build_scene_functions as vn,builtinComponentKeyName as fn,calculateProgress01 as Pn,clearMessages as An,clearMessages as Tn,colorSerializer as Mn,compareAssociation as bn,componentSerializer as In,copyTexture as Dn,createMotion as On,debugNet as xn,debugOwner as kn,decompressGpuTexture as Ln,deepClone as Bn,delay as Fn,delayForFrames as Nn,deserializeObject as wn,destroy as Wn,destroyComponentInstance as Gn,determineMimeTypeFromExtension as Un,disposeObjectResources as Hn,disposeStream as Xn,editorGuidKeyName as zn,enableSpatialConsole as Vn,euler as _n,eventListSerializer as jn,exportAsGLTF as Kn,findByGuid as Qn,findObjectOfType as Zn,findObjectsOfType as Yn,findResourceUsers as Jn,fitCamera as $n,fitObjectIntoVolume as qn,foreachComponent as ei,foreachComponentEnumerator as ai,forward as si,generateQRCode as ti,generateSeed as oi,getBoundingBox as ri,getCameraController as ni,getComponent as ii,getComponentInChildren as li,getComponentInParent as di,getComponents as ci,getComponentsInChildren as mi,getComponentsInParent as pi,getFormattedDate as gi,getIconElement as ui,getIconTexture as Si,getLoader as Ci,getOrAddComponent as yi,getParam as Ei,getParentHierarchyPath as Ri,getPath as hi,getPeerOptions as vi,getPeerjsInstance as fi,getResourceUserCount as Pi,getTempColor as Ai,getTempQuaternion as Ti,getTempVector as Mi,getUrlParams as bi,getVisibleInCustomShadowRendering as Ii,getWorldDirection as Di,getWorldEuler as Oi,getWorldPosition as xi,getWorldQuaternion as ki,getWorldRotation as Li,getWorldScale as Bi,hasCommercialLicense as Fi,hasIndieLicense as Ni,hasPointerEventComponent as wi,hasProLicense as Wi,hideDebugConsole as Gi,imageToCanvas as Ui,instantiate as Hi,invokeLoadedImportPluginHooks as Xi,invokeXRSessionEnd as zi,invokeXRSessionStart as Vi,isActiveInHierarchy as _i,isActiveSelf as ji,isAndroidDevice as Ki,isAnimationAction as Qi,isComponent as Zi,isDebugMode as Yi,isDesktop as Ji,isDestroyed as $i,isDevEnvironment as qi,isDisposed as el,isExporting as al,isGLTFModel as sl,isHostedOnGlitch as tl,isHotReloadEnabled as ol,isHotReloading as rl,isIPad as nl,isIconElement as il,isLocalNetwork as ll,isMacOS as dl,isMobileDevice as cl,isMozillaXR as ml,isQuest as pl,isResourceTrackingEnabled as gl,isSafari as ul,isUsingInstancing as Sl,isiOS as Cl,isiPad as yl,loadPMREM as El,loadSync as Rl,logHierarchy as hl,lookAtInverse as vl,lookAtObject as fl,lookAtScreenPoint as Pl,makeId as Al,makeIdFromRandomWords as Tl,makeNameSafe as Ml,markAsInstancedRendered as bl,microphonePermissionsGranted as Il,nameof as Dl,nameofFactory as Ol,objectSerializer as xl,offXRSessionEnd as kl,offXRSessionStart as Ll,onXRSessionEnd as Bl,onXRSessionStart as Fl,parseSync as Nl,placeOnSurface as wl,postprocessFBXMaterials as Wl,prefix as Gl,pushState as Ul,randomNumber as Hl,registerBinaryType as Xl,registerComponent as zl,registerComponentExtension as Vl,registerCustomEffectType as _l,registerExportExtensions as jl,registerExtensions as Kl,registerHotReloadType as Ql,registerLoader as Zl,registerPrefabProvider as Yl,registerPrototypeExtensions as Jl,registerType as $l,relativePathPrefix as ql,removeAttributeChangeCallback as ed,removeComponent as ad,removeCustomImportExtensionType as sd,removePatch as td,resolveUrl as od,sanitizeString as rd,saveImage as nd,screenshot as id,screenshot2 as ld,sendDestroyed as dd,serializable as cd,serializeObject as md,serializeable as pd,setActive as gd,setAllowBalloonMessages as ud,setAllowOverlayMessages as Sd,setAutoFitEnabled as Cd,setCameraController as yd,setDestroyed as Ed,setDevEnvironment as Rd,setDisposable as hd,setDontDestroy as vd,setOrAddParamsToUrl as fd,setParam as Pd,setParamWithoutReload as Ad,setPeerOptions as Td,setResourceTrackingEnabled as Md,setState as bd,setVisibleInCustomShadowRendering as Id,setWorldEuler as Dd,setWorldPosition as Od,setWorldPositionXYZ as xd,setWorldQuaternion as kd,setWorldQuaternionXYZW as Ld,setWorldRotation as Bd,setWorldRotationXYZ as Fd,setWorldScale as Nd,showBalloonError as wd,showBalloonMessage as Wd,showBalloonWarning as Gd,showDebugConsole as Ud,slerp as Hd,syncDestroy as Xd,syncField as zd,syncInstantiate as Vd,textureToCanvas as _d,toSourceId as jd,tryCastBinary as Kd,tryDetermineMimetypeFromBinary as Qd,tryDetermineMimetypeFromURL as Zd,tryFindObject as Yd,tryGetGuid as Jd,unregisterHotReloadType as $d,unwatchWrite as qd,useForAutoFit as ec,validate as ac,watchWrite as sc}from"./needle-engine.bundle-lfK3bN2F.min.js";import{NEEDLE_progressive as tc}from"./gltf-progressive-CqZYu6Hx.min.js";import{THREE as oc}from"./three.min.js";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(y),C(E);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=oc;export{R as $componentName,h as $physicsKey,v as ActionBuilder,f as ActionCollection,P as ActionModel,A as Addressables,T as AlignmentConstraint,M as AmbientMode,b as Animation,I as AnimationCurve,D as AnimationExtension,O as AnimationTrackHandler,x as AnimationUtils,k as Animator,L as AnimatorConditionMode,B as AnimatorController,F as AnimatorControllerParameterType,N as AnimatorStateInfo,w as Antialiasing,W as Application,G as AssetDatabase,U as AssetReference,H as Attractor,X as AudioExtension,z as AudioListener,V as AudioSource,_ as AudioTrackHandler,j as Avatar,K as AvatarBlink_Simple,Q as AvatarEyeLook_Rotation,Z as AvatarLoader,Y as AvatarMarker,J as AvatarModel,$ as Avatar_Brain_LookAt,q as Avatar_MouthShapes,ee as Avatar_MustacheShake,ae as Avatar_POI,se as Axes,te as AxesHelper,oe as BUILD_TIME,re as BaseUIComponent,ne as BasicIKConstraint,ie as BehaviorExtension,le as BehaviorModel,de as Behaviour,ce as BlobStorage,me as BloomEffect,pe as BoxCollider,ge as BoxGizmo,ue as BoxHelperComponent,Se as Button,Ce as ButtonsFactory,ye as CallDirection,Ee as CallInfo,Re as Camera,he as CameraTargetReachedEvent,ve as Canvas,fe as CanvasGroup,Pe as CapsuleCollider,Ae as ChangeMaterialOnClick,Te as ChangeTransformOnClick,Me as CharacterController,be as CharacterControllerInput,Ie as ChromaticAberration,De as CircularBuffer,Oe as ClearFlags,xe as ClickThrough,ke as ClipExtrapolation,Le as Collider,Be as Collision,Fe as CollisionDetectionMode,Ne as ColorAdjustments,we as ColorBySpeedModule,We as ColorOverLifetimeModule,Ge as Component,Ue as ComponentLifecycleEvents,He as ConnectionEvents,Xe as ContactPoint,ze as ContactShadows,u as Context,Ve as ContextArgs,_e as ContextEvent,je as ContextRegistry,Ke as ControlTrackHandler,Qe as CursorFollow,Ze as CustomBranding,Ye as CustomShader,Je as DefaultReflectionMode,$e as Deletable,qe as DeleteBox,ea as DepthOfField,aa as DeviceFlag,sa as DeviceUtilities,ta as DocumentExtension,oa as DragControls,ra as DragMode,na as DropListener,ia as Duplicatable,la as EffectWrapper,da as EmissionModule,ca as EmphasizeOnClick,ma as EngineLoadingView,pa as EnvironmentScene,ga as EventList,ua as EventListEvent,Sa as EventSystem,Ca as EventTrigger,ya as FieldWithDefault,Ea as FileReference,Ra as FileReferenceSerializer,ha as FileSpawnModel,va as File_Event,fa as FixedJoint,Pa as Fog,Aa as FrameEvent,Ta as GENERATOR,s as GameObject,Ma as Gizmos,ba as GltfExport,Ia as GltfExportBox,Da as Gradient,Oa as Graphic,xa as GraphicRaycaster,ka as Graphics,La as GridHelper,Ba as GridLayoutGroup,Fa as GroundProjectedEnv,Na as GroupActionModel,wa as HideFlags,Wa as HideOnStart,Ga as HingeJoint,Ua as HorizontalLayoutGroup,Ha as HostData,Xa as HoverAnimation,za as Image,Va as ImageReference,_a as ImageReferenceSerializer,ja as InheritVelocityModule,Ka as Input,Qa as InputEventQueue,Za as InputEvents,Ya as InputField,Ja as InstanceHandle,$a as InstancingHandler,qa as InstancingUtil,es as InstantiateEvent,as as InstantiateIdProvider,ss as InstantiateOptions,ts as Interactable,os as InternalScreenshotUtils,rs as JoinedRoomResponse,ns as KeyEventArgs,is as Keyframe,ls as LODGroup,ds as LODModel,cs as LeftRoomResponse,ms as Light,ps as LightData,gs as LimitVelocityOverLifetimeModule,us as LoadingElementOptions,Ss as LogStats,Cs as LogType,ys as LookAt,Es as LookAtConstraint,Rs as MainModule,hs as MarkerTrackHandler,vs as MarkerType,fs as MaskableGraphic,Ps as MaterialPropertyBlock,As as MaterialX,Ts as Mathf,Ms as MeshCollider,bs as MeshRenderer,Is as MinMaxCurve,Ds as MinMaxGradient,Os as NEEDLE_ENGINE_FEATURE_FLAGS,xs as NEEDLE_ENGINE_MODULES,tc as NEEDLE_progressive,ks as NEKeyboardEvent,Ls as NEPointerEvent,Bs as NeedleButtonElement,Fs as NeedleEngine,Ns as NeedleEngineModelLoader,ws as NeedleEngineWebComponent,Ws as NeedleMenu,Gs as NeedlePatchesKey,Us as NeedleUSDZExporter,Hs as NeedleXRController,g as NeedleXRSession,Xs as NeedleXRSync,zs as NeedleXRUtils,Vs as NestedGltf,_s as NetworkConnection,js as NetworkedStreamEvents,Ks as NetworkedStreams,Qs as Networking,Zs as NewInstanceModel,Ys as NoiseModule,Js as ObjectRaycaster,$s as ObjectUtils,qs as OffsetConstraint,et as OneEuroFilter,at as OneEuroFilterXYZ,st as OpenURL,tt as OrbitControls,ot as Outline,rt as OwnershipEvent,nt as OwnershipModel,it as PUBLIC_KEY,lt as Padding,dt as ParticleBurst,ct as ParticleSubEmitter,mt as ParticleSystem,pt as ParticleSystemBaseBehaviour,gt as ParticleSystemRenderer,ut as ParticleSystemShapeType,St as PeerHandle,Ct as PeerNetworking,yt as Physics,Et as PhysicsExtension,Rt as PhysicsMaterialCombine,ht as PixelationEffect,vt as PlayAnimationOnClick,ft as PlayAudioOnClick,Pt as PlayableDirector,At as PlayerColor,Tt as PlayerState,Mt as PlayerStateEvent,bt as PlayerSync,It as PlayerView,Dt as PlayerViewManager,Ot as PointerEventData,xt as PointerType,kt as PostProcessingEffect,Lt as PostProcessingEffectOrder,Bt as PostProcessingHandler,Ft as PostProcessingManager,Nt as PreliminaryAction,wt as PreliminaryTrigger,Wt as PreviewHelper,Gt as PrimitiveType,Ut as Progress,Ht as PromiseAllWithErrors,Xt as PromiseErrorResult,zt as RGBAColor,Vt as RapierPhysics,_t as RawImage,jt as RaycastOptions,Kt as Rect,Qt as RectTransform,Zt as ReflectionProbe,Yt as RegisteredAnimationInfo,Jt as RemoteSkybox,$t as RenderTexture,qt as RenderTextureSerializer,eo as Renderer,ao as RendererData,so as RendererLightmap,to as Rigidbody,oo as RigidbodyConstraints,ro as RoomEvents,no as RotationBySpeedModule,io as RotationOverLifetimeModule,lo as SceneLightSettings,co as SceneSwitcher,mo as ScreenCapture,po as ScreenSpaceAmbientOcclusion,go as ScreenSpaceAmbientOcclusionN8,uo as ScrollFollow,So as SeeThrough,Co as SendQueue,yo as SerializationContext,Eo as SetActiveOnClick,Ro as ShadowCatcher,ho as ShapeModule,vo as ShapeOverlapResult,fo as SharpeningEffect,Po as SignalAsset,Ao as SignalReceiver,To as SignalReceiverEvent,Mo as SignalTrackHandler,bo as Size,Io as SizeBySpeedModule,Do as SizeOverLifetimeModule,Oo as SkinnedMeshRenderer,xo as SmoothFollow,ko as SpatialGrabRaycaster,Lo as SpatialHtml,Bo as SpatialTrigger,Fo as SpatialTriggerReceiver,No as SpectatorCamera,wo as SphereCollider,Wo as SphereIntersection,Go as SplineContainer,Uo as SplineData,Ho as SplineUtils,Xo as SplineWalker,zo as Sprite,Vo as SpriteData,_o as SpriteRenderer,jo as SpriteSheet,Ko as StateMachineBehaviour,Qo as StreamEndedEvent,Zo as StreamReceivedEvent,Yo as SubEmitterSystem,Jo as SyncedCamera,$o as SyncedRoom,qo as SyncedTransform,er as TapGestureTrigger,ar as TeleportTarget,sr as TestRunner,tr as TestSimulateUserData,or as Text,rr as TextBuilder,nr as TextExtension,ir as TextureSheetAnimationModule,lr as TiltShiftEffect,dr as Time,cr as ToneMappingEffect,mr as TrackHandler,pr as TrackType,gr as TrailModule,ur as TransformData,Sr as TransformGizmo,Cr as TriggerBuilder,yr as TriggerModel,m as TypeStore,Er as UIRaycastUtils,Rr as UIRootComponent,hr as USDDocument,vr as USDObject,fr as USDWriter,Pr as USDZExporter,Ar as USDZText,Tr as USDZUIExtension,Mr as UriSerializer,br as UsageMarker,Ir as UserJoinedOrLeftRoomModel,S as VERSION,Dr as VariantAction,Or as VelocityOverLifetimeModule,xr as VerticalLayoutGroup,kr as VideoPlayer,Lr as ViewBox,Br as ViewDevice,Fr as Vignette,Nr as VisibilityAction,wr as Voip,Wr as Volume,Gr as VolumeParameter,Ur as VolumeProfile,Hr as WaitForFrames,Xr as WaitForPromise,zr as WaitForSeconds,Vr as Watch,_r as WebARCameraBackground,jr as WebARSessionRoot,Kr as WebXR,Qr as WebXRButtonFactory,Zr as WebXRImageTracking,Yr as WebXRImageTrackingModel,Jr as WebXRPlaneTracking,$r as WebXRTrackedImage,qr as XRControllerFollow,en as XRControllerModel,an as XRControllerMovement,sn as XRFlag,tn as XRRig,on as XRState,rn as XRStateFlag,nn as __Ignore,ln as __internalNotifyObjectDestroyed,dn as activeInHierarchyFieldName,cn as addAttributeChangeCallback,mn as addComponent,pn as addCustomExtensionPlugin,gn as addNewComponent,un as addPatch,Sn as apply,Cn as applyHMRChanges,yn as applyPrototypeExtensions,En as beginListenDestroy,Rn as beginListenInstantiate,hn as binaryIdentifierCasts,vn as build_scene_functions,fn as builtinComponentKeyName,Pn as calculateProgress01,An as clearBalloonMessages,Tn as clearOverlayMessages,Mn as colorSerializer,bn as compareAssociation,In as componentSerializer,Dn as copyTexture,On as createMotion,xn as debugNet,kn as debugOwner,Ln as decompressGpuTexture,Bn as deepClone,Fn as delay,Nn as delayForFrames,wn as deserializeObject,Wn as destroy,Gn as destroyComponentInstance,Un as determineMimeTypeFromExtension,Hn as disposeObjectResources,Xn as disposeStream,zn as editorGuidKeyName,Vn as enableSpatialConsole,_n as euler,jn as eventListSerializer,Kn as exportAsGLTF,Qn as findByGuid,Zn as findObjectOfType,Yn as findObjectsOfType,Jn as findResourceUsers,$n as fitCamera,qn as fitObjectIntoVolume,ei as foreachComponent,ai as foreachComponentEnumerator,si as forward,ti as generateQRCode,oi as generateSeed,ri as getBoundingBox,ni as getCameraController,ii as getComponent,li as getComponentInChildren,di as getComponentInParent,ci as getComponents,mi as getComponentsInChildren,pi as getComponentsInParent,gi as getFormattedDate,ui as getIconElement,Si as getIconTexture,Ci as getLoader,yi as getOrAddComponent,Ei as getParam,Ri as getParentHierarchyPath,hi as getPath,vi as getPeerOptions,fi as getPeerjsInstance,Pi as getResourceUserCount,Ai as getTempColor,Ti as getTempQuaternion,Mi as getTempVector,bi as getUrlParams,Ii as getVisibleInCustomShadowRendering,Di as getWorldDirection,Oi as getWorldEuler,xi as getWorldPosition,ki as getWorldQuaternion,Li as getWorldRotation,Bi as getWorldScale,Fi as hasCommercialLicense,Ni as hasIndieLicense,wi as hasPointerEventComponent,Wi as hasProLicense,Gi as hideDebugConsole,Ui as imageToCanvas,Hi as instantiate,Xi as invokeLoadedImportPluginHooks,zi as invokeXRSessionEnd,Vi as invokeXRSessionStart,_i as isActiveInHierarchy,ji as isActiveSelf,Ki as isAndroidDevice,Qi as isAnimationAction,Zi as isComponent,Yi as isDebugMode,Ji as isDesktop,$i as isDestroyed,qi as isDevEnvironment,el as isDisposed,al as isExporting,sl as isGLTFModel,tl as isHostedOnGlitch,ol as isHotReloadEnabled,rl as isHotReloading,nl as isIPad,il as isIconElement,ll as isLocalNetwork,dl as isMacOS,cl as isMobileDevice,ml as isMozillaXR,pl as isQuest,gl as isResourceTrackingEnabled,ul as isSafari,Sl as isUsingInstancing,Cl as isiOS,yl as isiPad,p as loadAsset,El as loadPMREM,Rl as loadSync,hl as logHierarchy,vl as lookAtInverse,fl as lookAtObject,Pl as lookAtScreenPoint,Al as makeId,Tl as makeIdFromRandomWords,Ml as makeNameSafeForUSD,bl as markAsInstancedRendered,Il as microphonePermissionsGranted,Dl as nameof,Ol as nameofFactory,xl as objectSerializer,kl as offXRSessionEnd,Ll as offXRSessionStart,i as onAfterRender,l as onBeforeRender,o as onClear,r as onDestroy,n as onInitialized,c as onStart,d as onUpdate,Bl as onXRSessionEnd,Fl as onXRSessionStart,Nl as parseSync,wl as placeOnSurface,Wl as postprocessFBXMaterials,Gl as prefix,Ul as pushState,Hl as randomNumber,Xl as registerBinaryType,zl as registerComponent,Vl as registerComponentExtension,_l as registerCustomEffectType,jl as registerExportExtensions,Kl as registerExtensions,Ql as registerHotReloadType,Zl as registerLoader,Yl as registerPrefabProvider,Jl as registerPrototypeExtensions,$l as registerType,ql as relativePathPrefix,ed as removeAttributeChangeCallback,ad as removeComponent,sd as removeCustomImportExtensionType,td as removePatch,od as resolveUrl,rd as sanitizeString,nd as saveImage,id as screenshot,ld as screenshot2,dd as sendDestroyed,cd as serializable,md as serializeObject,pd as serializeable,gd as setActive,ud as setAllowBalloonMessages,Sd as setAllowOverlayMessages,Cd as setAutoFitEnabled,yd as setCameraController,Ed as setDestroyed,Rd as setDevEnvironment,hd as setDisposable,vd as setDontDestroy,fd as setOrAddParamsToUrl,Pd as setParam,Ad as setParamWithoutReload,Td as setPeerOptions,Md as setResourceTrackingEnabled,bd as setState,Id as setVisibleInCustomShadowRendering,Dd as setWorldEuler,Od as setWorldPosition,xd as setWorldPositionXYZ,kd as setWorldQuaternion,Ld as setWorldQuaternionXYZW,Bd as setWorldRotation,Fd as setWorldRotationXYZ,Nd as setWorldScale,wd as showBalloonError,Wd as showBalloonMessage,Gd as showBalloonWarning,Ud as showDebugConsole,Hd as slerp,Xd as syncDestroy,zd as syncField,Vd as syncInstantiate,_d as textureToCanvas,jd as toSourceId,Kd as tryCastBinary,Qd as tryDetermineMimetypeFromBinary,Zd as tryDetermineMimetypeFromURL,Yd as tryFindObject,Jd as tryGetGuid,$d as unregisterHotReloadType,qd as unwatchWrite,ec as useForAutoFit,ac as validate,sc as watchWrite};
|
|
1
|
+
import{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 y,Components as E}from"./needle-engine.bundle-1K4OXMEl.min.js";import{$componentName as R,$physicsKey as h,ActionBuilder as v,ActionCollection as f,ActionModel as P,Addressables as A,AlignmentConstraint as T,AmbientMode as M,Animation as b,AnimationCurve as I,AnimationExtension as D,AnimationTrackHandler as O,AnimationUtils as x,Animator as k,AnimatorConditionMode as L,AnimatorController as B,AnimatorControllerParameterType as F,AnimatorStateInfo as N,Antialiasing as w,Application as W,AssetDatabase as G,AssetReference as U,Attractor as H,AudioExtension as X,AudioListener as z,AudioSource as V,AudioTrackHandler as _,Avatar as j,AvatarBlink_Simple as K,AvatarEyeLook_Rotation as Q,AvatarLoader as Z,AvatarMarker as Y,AvatarModel as J,Avatar_Brain_LookAt as $,Avatar_MouthShapes as q,Avatar_MustacheShake as ee,Avatar_POI as ae,Axes as se,AxesHelper as te,BUILD_TIME as oe,BaseUIComponent as re,BasicIKConstraint as ne,BehaviorExtension as ie,BehaviorModel as le,Component$1 as de,BlobStorage as ce,BloomEffect as me,BoxCollider as pe,BoxGizmo as ge,BoxHelperComponent as ue,Button as Se,ButtonsFactory as Ce,CallDirection as ye,CallInfo as Ee,Camera as Re,CameraTargetReachedEvent as he,Canvas as ve,CanvasGroup as fe,CapsuleCollider as Pe,ChangeMaterialOnClick as Ae,ChangeTransformOnClick as Te,CharacterController as Me,CharacterControllerInput as be,ChromaticAberration as Ie,CircularBuffer as De,ClearFlags as Oe,ClickThrough as xe,ClipExtrapolation as ke,Collider as Le,Collision as Be,CollisionDetectionMode as Fe,ColorAdjustments as Ne,ColorBySpeedModule as we,ColorOverLifetimeModule as We,Component$1 as Ge,ComponentLifecycleEvents as Ue,ConnectionEvents as He,ContactPoint as Xe,ContactShadows as ze,ContextArgs as Ve,ContextEvent as _e,ContextRegistry as je,ControlTrackHandler as Ke,CursorFollow as Qe,CustomBranding as Ze,CustomShader as Ye,DefaultReflectionMode as Je,Deletable as $e,DeleteBox as qe,DepthOfField as ea,DeviceFlag as aa,DeviceUtilities as sa,DocumentExtension as ta,DragControls as oa,DragMode as ra,DropListener as na,Duplicatable as ia,EffectWrapper as la,EmissionModule as da,EmphasizeOnClick as ca,EngineLoadingView as ma,EnvironmentScene as pa,EventList as ga,EventListEvent as ua,EventSystem as Sa,EventTrigger as Ca,FieldWithDefault as ya,FileReference as Ea,FileReferenceSerializer as Ra,FileSpawnModel as ha,File_Event as va,FixedJoint as fa,Fog as Pa,FrameEvent as Aa,GENERATOR as Ta,Gizmos as Ma,GltfExport as ba,GltfExportBox as Ia,Gradient as Da,Graphic as Oa,GraphicRaycaster as xa,Graphics as ka,GridHelper as La,GridLayoutGroup as Ba,GroundProjectedEnv as Fa,GroupActionModel as Na,HideFlags as wa,HideOnStart as Wa,HingeJoint as Ga,HorizontalLayoutGroup as Ua,HostData as Ha,HoverAnimation as Xa,Image as za,ImageReference as Va,ImageReferenceSerializer as _a,InheritVelocityModule as ja,Input as Ka,InputEventQueue as Qa,InputEvents as Za,InputField as Ya,InstanceHandle as Ja,InstancingHandler as $a,InstancingUtil as qa,InstantiateEvent as es,InstantiateIdProvider as as,InstantiateOptions as ss,Interactable as ts,InternalScreenshotUtils as os,JoinedRoomResponse as rs,KeyEventArgs as ns,Keyframe as is,LODGroup as ls,LODModel as ds,LeftRoomResponse as cs,Light as ms,LightData as ps,LimitVelocityOverLifetimeModule as gs,LoadingElementOptions as us,LogStats as Ss,LogType as Cs,LookAt as ys,LookAtConstraint as Es,MainModule as Rs,MarkerTrackHandler as hs,MarkerType as vs,MaskableGraphic as fs,MaterialPropertyBlock as Ps,MaterialX as As,Mathf as Ts,MeshCollider as Ms,MeshRenderer as bs,MinMaxCurve as Is,MinMaxGradient as Ds,NEEDLE_ENGINE_FEATURE_FLAGS as Os,MODULES as xs,NEKeyboardEvent as ks,NEPointerEvent as Ls,NeedleButtonElement as Bs,ContextRegistry as Fs,NeedleEngineModelLoader as Ns,NeedleEngineWebComponent as ws,NeedleMenu as Ws,NeedlePatchesKey as Gs,USDZExporter as Us,NeedleXRController as Hs,NeedleXRSync as Xs,NeedleXRUtils as zs,NestedGltf as Vs,NetworkConnection as _s,NetworkedStreamEvents as js,NetworkedStreams as Ks,Networking as Qs,NewInstanceModel as Zs,NoiseModule as Ys,ObjectRaycaster as Js,ObjectUtils as $s,OffsetConstraint as qs,OneEuroFilter as et,OneEuroFilterXYZ as at,OpenURL as st,OrbitControls as tt,Outline as ot,OwnershipEvent as rt,OwnershipModel as nt,PUBLIC_KEY as it,Padding as lt,ParticleBurst as dt,ParticleSubEmitter as ct,ParticleSystem as mt,ParticleSystemBaseBehaviour as pt,ParticleSystemRenderer as gt,ParticleSystemShapeType as ut,PeerHandle as St,PeerNetworking as Ct,Physics as yt,PhysicsExtension as Et,PhysicsMaterialCombine as Rt,PixelationEffect as ht,PlayAnimationOnClick as vt,PlayAudioOnClick as ft,PlayableDirector as Pt,PlayerColor as At,PlayerState as Tt,PlayerStateEvent as Mt,PlayerSync as bt,PlayerView as It,PlayerViewManager as Dt,PointerEventData as Ot,PointerType as xt,PostProcessingEffect as kt,PostProcessingEffectOrder as Lt,PostProcessingHandler as Bt,Volume as Ft,PreliminaryAction as Nt,PreliminaryTrigger as wt,PreviewHelper as Wt,PrimitiveType as Gt,Progress as Ut,PromiseAllWithErrors as Ht,PromiseErrorResult as Xt,RGBAColor as zt,RapierPhysics as Vt,RawImage as _t,RaycastOptions as jt,Rect as Kt,RectTransform as Qt,ReflectionProbe as Zt,RegisteredAnimationInfo as Yt,RemoteSkybox as Jt,RenderTexture as $t,RenderTextureSerializer as qt,Renderer as eo,RendererData as ao,RendererLightmap as so,Rigidbody as to,RigidbodyConstraints as oo,RoomEvents as ro,RotationBySpeedModule as no,RotationOverLifetimeModule as io,SceneLightSettings as lo,SceneSwitcher as co,ScreenCapture as mo,ScreenSpaceAmbientOcclusion as po,ScreenSpaceAmbientOcclusionN8 as go,ScrollFollow as uo,SeeThrough as So,SendQueue as Co,SerializationContext as yo,SetActiveOnClick as Eo,ShadowCatcher as Ro,ShapeModule as ho,ShapeOverlapResult as vo,SharpeningEffect as fo,SignalAsset as Po,SignalReceiver as Ao,SignalReceiverEvent as To,SignalTrackHandler as Mo,Size as bo,SizeBySpeedModule as Io,SizeOverLifetimeModule as Do,SkinnedMeshRenderer as Oo,SmoothFollow as xo,SpatialGrabRaycaster as ko,SpatialHtml as Lo,SpatialTrigger as Bo,SpatialTriggerReceiver as Fo,SpectatorCamera as No,SphereCollider as wo,SphereIntersection as Wo,SplineContainer as Go,SplineData as Uo,SplineUtils as Ho,SplineWalker as Xo,Sprite as zo,SpriteData as Vo,SpriteRenderer as _o,SpriteSheet as jo,StateMachineBehaviour as Ko,StreamEndedEvent as Qo,StreamReceivedEvent as Zo,SubEmitterSystem as Yo,SyncedCamera as Jo,SyncedRoom as $o,SyncedTransform as qo,TapGestureTrigger as er,TeleportTarget as ar,TestRunner as sr,TestSimulateUserData as tr,Text as or,TextBuilder as rr,TextExtension as nr,TextureSheetAnimationModule as ir,TiltShiftEffect as lr,Time as dr,ToneMappingEffect as cr,TrackHandler as mr,TrackType as pr,TrailModule as gr,TransformData as ur,TransformGizmo as Sr,TriggerBuilder as Cr,TriggerModel as yr,UIRaycastUtils as Er,UIRootComponent as Rr,USDDocument as hr,USDObject as vr,USDWriter as fr,USDZExporter$1 as Pr,USDZText as Ar,USDZUIExtension as Tr,UriSerializer as Mr,UsageMarker as br,UserJoinedOrLeftRoomModel as Ir,VariantAction as Dr,VelocityOverLifetimeModule as Or,VerticalLayoutGroup as xr,VideoPlayer as kr,ViewBox as Lr,ViewDevice as Br,Vignette as Fr,VisibilityAction as Nr,Voip as wr,Volume as Wr,VolumeParameter as Gr,VolumeProfile as Ur,WaitForFrames as Hr,WaitForPromise as Xr,WaitForSeconds as zr,Watch as Vr,WebARCameraBackground as _r,WebARSessionRoot as jr,WebXR as Kr,WebXRButtonFactory as Qr,WebXRImageTracking as Zr,WebXRImageTrackingModel as Yr,WebXRPlaneTracking as Jr,WebXRTrackedImage as $r,XRControllerFollow as qr,XRControllerModel as en,XRControllerMovement as an,XRFlag as sn,XRRig as tn,XRState as on,XRStateFlag as rn,__Ignore as nn,__internalNotifyObjectDestroyed as ln,activeInHierarchyFieldName as dn,addAttributeChangeCallback as cn,addComponent as mn,addCustomExtensionPlugin as pn,addNewComponent as gn,addPatch as un,apply as Sn,applyHMRChanges as Cn,applyPrototypeExtensions as yn,beginListenDestroy as En,beginListenInstantiate as Rn,binaryIdentifierCasts as hn,build_scene_functions as vn,builtinComponentKeyName as fn,calculateProgress01 as Pn,clearMessages as An,clearMessages as Tn,colorSerializer as Mn,compareAssociation as bn,componentSerializer as In,copyTexture as Dn,createMotion as On,debugNet as xn,debugOwner as kn,decompressGpuTexture as Ln,deepClone as Bn,delay as Fn,delayForFrames as Nn,deserializeObject as wn,destroy as Wn,destroyComponentInstance as Gn,determineMimeTypeFromExtension as Un,disposeObjectResources as Hn,disposeStream as Xn,editorGuidKeyName as zn,enableSpatialConsole as Vn,euler as _n,eventListSerializer as jn,exportAsGLTF as Kn,findByGuid as Qn,findObjectOfType as Zn,findObjectsOfType as Yn,findResourceUsers as Jn,fitCamera as $n,fitObjectIntoVolume as qn,foreachComponent as ei,foreachComponentEnumerator as ai,forward as si,generateQRCode as ti,generateSeed as oi,getBoundingBox as ri,getCameraController as ni,getComponent as ii,getComponentInChildren as li,getComponentInParent as di,getComponents as ci,getComponentsInChildren as mi,getComponentsInParent as pi,getFormattedDate as gi,getIconElement as ui,getIconTexture as Si,getLoader as Ci,getOrAddComponent as yi,getParam as Ei,getParentHierarchyPath as Ri,getPath as hi,getPeerOptions as vi,getPeerjsInstance as fi,getResourceUserCount as Pi,getTempColor as Ai,getTempQuaternion as Ti,getTempVector as Mi,getUrlParams as bi,getVisibleInCustomShadowRendering as Ii,getWorldDirection as Di,getWorldEuler as Oi,getWorldPosition as xi,getWorldQuaternion as ki,getWorldRotation as Li,getWorldScale as Bi,hasCommercialLicense as Fi,hasIndieLicense as Ni,hasPointerEventComponent as wi,hasProLicense as Wi,hideDebugConsole as Gi,imageToCanvas as Ui,instantiate as Hi,invokeLoadedImportPluginHooks as Xi,invokeXRSessionEnd as zi,invokeXRSessionStart as Vi,isActiveInHierarchy as _i,isActiveSelf as ji,isAndroidDevice as Ki,isAnimationAction as Qi,isComponent as Zi,isDebugMode as Yi,isDesktop as Ji,isDestroyed as $i,isDevEnvironment as qi,isDisposed as el,isExporting as al,isGLTFModel as sl,isHostedOnGlitch as tl,isHotReloadEnabled as ol,isHotReloading as rl,isIPad as nl,isIconElement as il,isLocalNetwork as ll,isMacOS as dl,isMobileDevice as cl,isMozillaXR as ml,isQuest as pl,isResourceTrackingEnabled as gl,isSafari as ul,isUsingInstancing as Sl,isiOS as Cl,isiPad as yl,loadPMREM as El,loadSync as Rl,logHierarchy as hl,lookAtInverse as vl,lookAtObject as fl,lookAtScreenPoint as Pl,makeId as Al,makeIdFromRandomWords as Tl,makeNameSafe as Ml,markAsInstancedRendered as bl,microphonePermissionsGranted as Il,nameof as Dl,nameofFactory as Ol,objectSerializer as xl,offXRSessionEnd as kl,offXRSessionStart as Ll,onXRSessionEnd as Bl,onXRSessionStart as Fl,parseSync as Nl,placeOnSurface as wl,postprocessFBXMaterials as Wl,prefix as Gl,pushState as Ul,randomNumber as Hl,registerBinaryType as Xl,registerComponent as zl,registerComponentExtension as Vl,registerCustomEffectType as _l,registerExportExtensions as jl,registerExtensions as Kl,registerHotReloadType as Ql,registerLoader as Zl,registerPrefabProvider as Yl,registerPrototypeExtensions as Jl,registerType as $l,relativePathPrefix as ql,removeAttributeChangeCallback as ed,removeComponent as ad,removeCustomImportExtensionType as sd,removePatch as td,resolveUrl as od,sanitizeString as rd,saveImage as nd,screenshot as id,screenshot2 as ld,sendDestroyed as dd,serializable as cd,serializeObject as md,serializeable as pd,setActive as gd,setAllowBalloonMessages as ud,setAllowOverlayMessages as Sd,setAutoFitEnabled as Cd,setCameraController as yd,setDestroyed as Ed,setDevEnvironment as Rd,setDisposable as hd,setDontDestroy as vd,setOrAddParamsToUrl as fd,setParam as Pd,setParamWithoutReload as Ad,setPeerOptions as Td,setResourceTrackingEnabled as Md,setState as bd,setVisibleInCustomShadowRendering as Id,setWorldEuler as Dd,setWorldPosition as Od,setWorldPositionXYZ as xd,setWorldQuaternion as kd,setWorldQuaternionXYZW as Ld,setWorldRotation as Bd,setWorldRotationXYZ as Fd,setWorldScale as Nd,showBalloonError as wd,showBalloonMessage as Wd,showBalloonWarning as Gd,showDebugConsole as Ud,slerp as Hd,syncDestroy as Xd,syncField as zd,syncInstantiate as Vd,textureToCanvas as _d,toSourceId as jd,tryCastBinary as Kd,tryDetermineMimetypeFromBinary as Qd,tryDetermineMimetypeFromURL as Zd,tryFindObject as Yd,tryGetGuid as Jd,unregisterHotReloadType as $d,unwatchWrite as qd,useForAutoFit as ec,validate as ac,watchWrite as sc}from"./needle-engine.bundle-1K4OXMEl.min.js";import{NEEDLE_progressive as tc}from"./gltf-progressive-CqZYu6Hx.min.js";import{THREE as oc}from"./three.min.js";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(y),C(E);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=oc;export{R as $componentName,h as $physicsKey,v as ActionBuilder,f as ActionCollection,P as ActionModel,A as Addressables,T as AlignmentConstraint,M as AmbientMode,b as Animation,I as AnimationCurve,D as AnimationExtension,O as AnimationTrackHandler,x as AnimationUtils,k as Animator,L as AnimatorConditionMode,B as AnimatorController,F as AnimatorControllerParameterType,N as AnimatorStateInfo,w as Antialiasing,W as Application,G as AssetDatabase,U as AssetReference,H as Attractor,X as AudioExtension,z as AudioListener,V as AudioSource,_ as AudioTrackHandler,j as Avatar,K as AvatarBlink_Simple,Q as AvatarEyeLook_Rotation,Z as AvatarLoader,Y as AvatarMarker,J as AvatarModel,$ as Avatar_Brain_LookAt,q as Avatar_MouthShapes,ee as Avatar_MustacheShake,ae as Avatar_POI,se as Axes,te as AxesHelper,oe as BUILD_TIME,re as BaseUIComponent,ne as BasicIKConstraint,ie as BehaviorExtension,le as BehaviorModel,de as Behaviour,ce as BlobStorage,me as BloomEffect,pe as BoxCollider,ge as BoxGizmo,ue as BoxHelperComponent,Se as Button,Ce as ButtonsFactory,ye as CallDirection,Ee as CallInfo,Re as Camera,he as CameraTargetReachedEvent,ve as Canvas,fe as CanvasGroup,Pe as CapsuleCollider,Ae as ChangeMaterialOnClick,Te as ChangeTransformOnClick,Me as CharacterController,be as CharacterControllerInput,Ie as ChromaticAberration,De as CircularBuffer,Oe as ClearFlags,xe as ClickThrough,ke as ClipExtrapolation,Le as Collider,Be as Collision,Fe as CollisionDetectionMode,Ne as ColorAdjustments,we as ColorBySpeedModule,We as ColorOverLifetimeModule,Ge as Component,Ue as ComponentLifecycleEvents,He as ConnectionEvents,Xe as ContactPoint,ze as ContactShadows,u as Context,Ve as ContextArgs,_e as ContextEvent,je as ContextRegistry,Ke as ControlTrackHandler,Qe as CursorFollow,Ze as CustomBranding,Ye as CustomShader,Je as DefaultReflectionMode,$e as Deletable,qe as DeleteBox,ea as DepthOfField,aa as DeviceFlag,sa as DeviceUtilities,ta as DocumentExtension,oa as DragControls,ra as DragMode,na as DropListener,ia as Duplicatable,la as EffectWrapper,da as EmissionModule,ca as EmphasizeOnClick,ma as EngineLoadingView,pa as EnvironmentScene,ga as EventList,ua as EventListEvent,Sa as EventSystem,Ca as EventTrigger,ya as FieldWithDefault,Ea as FileReference,Ra as FileReferenceSerializer,ha as FileSpawnModel,va as File_Event,fa as FixedJoint,Pa as Fog,Aa as FrameEvent,Ta as GENERATOR,s as GameObject,Ma as Gizmos,ba as GltfExport,Ia as GltfExportBox,Da as Gradient,Oa as Graphic,xa as GraphicRaycaster,ka as Graphics,La as GridHelper,Ba as GridLayoutGroup,Fa as GroundProjectedEnv,Na as GroupActionModel,wa as HideFlags,Wa as HideOnStart,Ga as HingeJoint,Ua as HorizontalLayoutGroup,Ha as HostData,Xa as HoverAnimation,za as Image,Va as ImageReference,_a as ImageReferenceSerializer,ja as InheritVelocityModule,Ka as Input,Qa as InputEventQueue,Za as InputEvents,Ya as InputField,Ja as InstanceHandle,$a as InstancingHandler,qa as InstancingUtil,es as InstantiateEvent,as as InstantiateIdProvider,ss as InstantiateOptions,ts as Interactable,os as InternalScreenshotUtils,rs as JoinedRoomResponse,ns as KeyEventArgs,is as Keyframe,ls as LODGroup,ds as LODModel,cs as LeftRoomResponse,ms as Light,ps as LightData,gs as LimitVelocityOverLifetimeModule,us as LoadingElementOptions,Ss as LogStats,Cs as LogType,ys as LookAt,Es as LookAtConstraint,Rs as MainModule,hs as MarkerTrackHandler,vs as MarkerType,fs as MaskableGraphic,Ps as MaterialPropertyBlock,As as MaterialX,Ts as Mathf,Ms as MeshCollider,bs as MeshRenderer,Is as MinMaxCurve,Ds as MinMaxGradient,Os as NEEDLE_ENGINE_FEATURE_FLAGS,xs as NEEDLE_ENGINE_MODULES,tc as NEEDLE_progressive,ks as NEKeyboardEvent,Ls as NEPointerEvent,Bs as NeedleButtonElement,Fs as NeedleEngine,Ns as NeedleEngineModelLoader,ws as NeedleEngineWebComponent,Ws as NeedleMenu,Gs as NeedlePatchesKey,Us as NeedleUSDZExporter,Hs as NeedleXRController,g as NeedleXRSession,Xs as NeedleXRSync,zs as NeedleXRUtils,Vs as NestedGltf,_s as NetworkConnection,js as NetworkedStreamEvents,Ks as NetworkedStreams,Qs as Networking,Zs as NewInstanceModel,Ys as NoiseModule,Js as ObjectRaycaster,$s as ObjectUtils,qs as OffsetConstraint,et as OneEuroFilter,at as OneEuroFilterXYZ,st as OpenURL,tt as OrbitControls,ot as Outline,rt as OwnershipEvent,nt as OwnershipModel,it as PUBLIC_KEY,lt as Padding,dt as ParticleBurst,ct as ParticleSubEmitter,mt as ParticleSystem,pt as ParticleSystemBaseBehaviour,gt as ParticleSystemRenderer,ut as ParticleSystemShapeType,St as PeerHandle,Ct as PeerNetworking,yt as Physics,Et as PhysicsExtension,Rt as PhysicsMaterialCombine,ht as PixelationEffect,vt as PlayAnimationOnClick,ft as PlayAudioOnClick,Pt as PlayableDirector,At as PlayerColor,Tt as PlayerState,Mt as PlayerStateEvent,bt as PlayerSync,It as PlayerView,Dt as PlayerViewManager,Ot as PointerEventData,xt as PointerType,kt as PostProcessingEffect,Lt as PostProcessingEffectOrder,Bt as PostProcessingHandler,Ft as PostProcessingManager,Nt as PreliminaryAction,wt as PreliminaryTrigger,Wt as PreviewHelper,Gt as PrimitiveType,Ut as Progress,Ht as PromiseAllWithErrors,Xt as PromiseErrorResult,zt as RGBAColor,Vt as RapierPhysics,_t as RawImage,jt as RaycastOptions,Kt as Rect,Qt as RectTransform,Zt as ReflectionProbe,Yt as RegisteredAnimationInfo,Jt as RemoteSkybox,$t as RenderTexture,qt as RenderTextureSerializer,eo as Renderer,ao as RendererData,so as RendererLightmap,to as Rigidbody,oo as RigidbodyConstraints,ro as RoomEvents,no as RotationBySpeedModule,io as RotationOverLifetimeModule,lo as SceneLightSettings,co as SceneSwitcher,mo as ScreenCapture,po as ScreenSpaceAmbientOcclusion,go as ScreenSpaceAmbientOcclusionN8,uo as ScrollFollow,So as SeeThrough,Co as SendQueue,yo as SerializationContext,Eo as SetActiveOnClick,Ro as ShadowCatcher,ho as ShapeModule,vo as ShapeOverlapResult,fo as SharpeningEffect,Po as SignalAsset,Ao as SignalReceiver,To as SignalReceiverEvent,Mo as SignalTrackHandler,bo as Size,Io as SizeBySpeedModule,Do as SizeOverLifetimeModule,Oo as SkinnedMeshRenderer,xo as SmoothFollow,ko as SpatialGrabRaycaster,Lo as SpatialHtml,Bo as SpatialTrigger,Fo as SpatialTriggerReceiver,No as SpectatorCamera,wo as SphereCollider,Wo as SphereIntersection,Go as SplineContainer,Uo as SplineData,Ho as SplineUtils,Xo as SplineWalker,zo as Sprite,Vo as SpriteData,_o as SpriteRenderer,jo as SpriteSheet,Ko as StateMachineBehaviour,Qo as StreamEndedEvent,Zo as StreamReceivedEvent,Yo as SubEmitterSystem,Jo as SyncedCamera,$o as SyncedRoom,qo as SyncedTransform,er as TapGestureTrigger,ar as TeleportTarget,sr as TestRunner,tr as TestSimulateUserData,or as Text,rr as TextBuilder,nr as TextExtension,ir as TextureSheetAnimationModule,lr as TiltShiftEffect,dr as Time,cr as ToneMappingEffect,mr as TrackHandler,pr as TrackType,gr as TrailModule,ur as TransformData,Sr as TransformGizmo,Cr as TriggerBuilder,yr as TriggerModel,m as TypeStore,Er as UIRaycastUtils,Rr as UIRootComponent,hr as USDDocument,vr as USDObject,fr as USDWriter,Pr as USDZExporter,Ar as USDZText,Tr as USDZUIExtension,Mr as UriSerializer,br as UsageMarker,Ir as UserJoinedOrLeftRoomModel,S as VERSION,Dr as VariantAction,Or as VelocityOverLifetimeModule,xr as VerticalLayoutGroup,kr as VideoPlayer,Lr as ViewBox,Br as ViewDevice,Fr as Vignette,Nr as VisibilityAction,wr as Voip,Wr as Volume,Gr as VolumeParameter,Ur as VolumeProfile,Hr as WaitForFrames,Xr as WaitForPromise,zr as WaitForSeconds,Vr as Watch,_r as WebARCameraBackground,jr as WebARSessionRoot,Kr as WebXR,Qr as WebXRButtonFactory,Zr as WebXRImageTracking,Yr as WebXRImageTrackingModel,Jr as WebXRPlaneTracking,$r as WebXRTrackedImage,qr as XRControllerFollow,en as XRControllerModel,an as XRControllerMovement,sn as XRFlag,tn as XRRig,on as XRState,rn as XRStateFlag,nn as __Ignore,ln as __internalNotifyObjectDestroyed,dn as activeInHierarchyFieldName,cn as addAttributeChangeCallback,mn as addComponent,pn as addCustomExtensionPlugin,gn as addNewComponent,un as addPatch,Sn as apply,Cn as applyHMRChanges,yn as applyPrototypeExtensions,En as beginListenDestroy,Rn as beginListenInstantiate,hn as binaryIdentifierCasts,vn as build_scene_functions,fn as builtinComponentKeyName,Pn as calculateProgress01,An as clearBalloonMessages,Tn as clearOverlayMessages,Mn as colorSerializer,bn as compareAssociation,In as componentSerializer,Dn as copyTexture,On as createMotion,xn as debugNet,kn as debugOwner,Ln as decompressGpuTexture,Bn as deepClone,Fn as delay,Nn as delayForFrames,wn as deserializeObject,Wn as destroy,Gn as destroyComponentInstance,Un as determineMimeTypeFromExtension,Hn as disposeObjectResources,Xn as disposeStream,zn as editorGuidKeyName,Vn as enableSpatialConsole,_n as euler,jn as eventListSerializer,Kn as exportAsGLTF,Qn as findByGuid,Zn as findObjectOfType,Yn as findObjectsOfType,Jn as findResourceUsers,$n as fitCamera,qn as fitObjectIntoVolume,ei as foreachComponent,ai as foreachComponentEnumerator,si as forward,ti as generateQRCode,oi as generateSeed,ri as getBoundingBox,ni as getCameraController,ii as getComponent,li as getComponentInChildren,di as getComponentInParent,ci as getComponents,mi as getComponentsInChildren,pi as getComponentsInParent,gi as getFormattedDate,ui as getIconElement,Si as getIconTexture,Ci as getLoader,yi as getOrAddComponent,Ei as getParam,Ri as getParentHierarchyPath,hi as getPath,vi as getPeerOptions,fi as getPeerjsInstance,Pi as getResourceUserCount,Ai as getTempColor,Ti as getTempQuaternion,Mi as getTempVector,bi as getUrlParams,Ii as getVisibleInCustomShadowRendering,Di as getWorldDirection,Oi as getWorldEuler,xi as getWorldPosition,ki as getWorldQuaternion,Li as getWorldRotation,Bi as getWorldScale,Fi as hasCommercialLicense,Ni as hasIndieLicense,wi as hasPointerEventComponent,Wi as hasProLicense,Gi as hideDebugConsole,Ui as imageToCanvas,Hi as instantiate,Xi as invokeLoadedImportPluginHooks,zi as invokeXRSessionEnd,Vi as invokeXRSessionStart,_i as isActiveInHierarchy,ji as isActiveSelf,Ki as isAndroidDevice,Qi as isAnimationAction,Zi as isComponent,Yi as isDebugMode,Ji as isDesktop,$i as isDestroyed,qi as isDevEnvironment,el as isDisposed,al as isExporting,sl as isGLTFModel,tl as isHostedOnGlitch,ol as isHotReloadEnabled,rl as isHotReloading,nl as isIPad,il as isIconElement,ll as isLocalNetwork,dl as isMacOS,cl as isMobileDevice,ml as isMozillaXR,pl as isQuest,gl as isResourceTrackingEnabled,ul as isSafari,Sl as isUsingInstancing,Cl as isiOS,yl as isiPad,p as loadAsset,El as loadPMREM,Rl as loadSync,hl as logHierarchy,vl as lookAtInverse,fl as lookAtObject,Pl as lookAtScreenPoint,Al as makeId,Tl as makeIdFromRandomWords,Ml as makeNameSafeForUSD,bl as markAsInstancedRendered,Il as microphonePermissionsGranted,Dl as nameof,Ol as nameofFactory,xl as objectSerializer,kl as offXRSessionEnd,Ll as offXRSessionStart,i as onAfterRender,l as onBeforeRender,o as onClear,r as onDestroy,n as onInitialized,c as onStart,d as onUpdate,Bl as onXRSessionEnd,Fl as onXRSessionStart,Nl as parseSync,wl as placeOnSurface,Wl as postprocessFBXMaterials,Gl as prefix,Ul as pushState,Hl as randomNumber,Xl as registerBinaryType,zl as registerComponent,Vl as registerComponentExtension,_l as registerCustomEffectType,jl as registerExportExtensions,Kl as registerExtensions,Ql as registerHotReloadType,Zl as registerLoader,Yl as registerPrefabProvider,Jl as registerPrototypeExtensions,$l as registerType,ql as relativePathPrefix,ed as removeAttributeChangeCallback,ad as removeComponent,sd as removeCustomImportExtensionType,td as removePatch,od as resolveUrl,rd as sanitizeString,nd as saveImage,id as screenshot,ld as screenshot2,dd as sendDestroyed,cd as serializable,md as serializeObject,pd as serializeable,gd as setActive,ud as setAllowBalloonMessages,Sd as setAllowOverlayMessages,Cd as setAutoFitEnabled,yd as setCameraController,Ed as setDestroyed,Rd as setDevEnvironment,hd as setDisposable,vd as setDontDestroy,fd as setOrAddParamsToUrl,Pd as setParam,Ad as setParamWithoutReload,Td as setPeerOptions,Md as setResourceTrackingEnabled,bd as setState,Id as setVisibleInCustomShadowRendering,Dd as setWorldEuler,Od as setWorldPosition,xd as setWorldPositionXYZ,kd as setWorldQuaternion,Ld as setWorldQuaternionXYZW,Bd as setWorldRotation,Fd as setWorldRotationXYZ,Nd as setWorldScale,wd as showBalloonError,Wd as showBalloonMessage,Gd as showBalloonWarning,Ud as showDebugConsole,Hd as slerp,Xd as syncDestroy,zd as syncField,Vd as syncInstantiate,_d as textureToCanvas,jd as toSourceId,Kd as tryCastBinary,Qd as tryDetermineMimetypeFromBinary,Zd as tryDetermineMimetypeFromURL,Yd as tryFindObject,Jd as tryGetGuid,$d as unregisterHotReloadType,qd as unwatchWrite,ec as useForAutoFit,ac as validate,sc as watchWrite};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./needle-engine.bundle-Cn3cV2Xd.umd.cjs"),i=require("./gltf-progressive-Ck_bXBr_.umd.cjs"),a=require("./three.umd.cjs"),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=a.THREE;exports.$componentName=e.$componentName;exports.$physicsKey=e.$physicsKey;exports.ActionBuilder=e.ActionBuilder;exports.ActionCollection=e.ActionCollection;exports.ActionModel=e.ActionModel;exports.Addressables=e.Addressables;exports.AlignmentConstraint=e.AlignmentConstraint;exports.AmbientMode=e.AmbientMode;exports.Animation=e.Animation;exports.AnimationCurve=e.AnimationCurve;exports.AnimationExtension=e.AnimationExtension;exports.AnimationTrackHandler=e.AnimationTrackHandler;exports.AnimationUtils=e.AnimationUtils;exports.Animator=e.Animator;exports.AnimatorConditionMode=e.AnimatorConditionMode;exports.AnimatorController=e.AnimatorController;exports.AnimatorControllerParameterType=e.AnimatorControllerParameterType;exports.AnimatorStateInfo=e.AnimatorStateInfo;exports.Antialiasing=e.Antialiasing;exports.Application=e.Application;exports.AssetDatabase=e.AssetDatabase;exports.AssetReference=e.AssetReference;exports.Attractor=e.Attractor;exports.AudioExtension=e.AudioExtension;exports.AudioListener=e.AudioListener;exports.AudioSource=e.AudioSource;exports.AudioTrackHandler=e.AudioTrackHandler;exports.Avatar=e.Avatar;exports.AvatarBlink_Simple=e.AvatarBlink_Simple;exports.AvatarEyeLook_Rotation=e.AvatarEyeLook_Rotation;exports.AvatarLoader=e.AvatarLoader;exports.AvatarMarker=e.AvatarMarker;exports.AvatarModel=e.AvatarModel;exports.Avatar_Brain_LookAt=e.Avatar_Brain_LookAt;exports.Avatar_MouthShapes=e.Avatar_MouthShapes;exports.Avatar_MustacheShake=e.Avatar_MustacheShake;exports.Avatar_POI=e.Avatar_POI;exports.Axes=e.Axes;exports.AxesHelper=e.AxesHelper;exports.BUILD_TIME=e.BUILD_TIME;exports.BaseUIComponent=e.BaseUIComponent;exports.BasicIKConstraint=e.BasicIKConstraint;exports.BehaviorExtension=e.BehaviorExtension;exports.BehaviorModel=e.BehaviorModel;exports.Behaviour=e.Component$1;Object.defineProperty(exports,"BlobStorage",{enumerable:!0,get:()=>e.BlobStorage});exports.BloomEffect=e.BloomEffect;exports.BoxCollider=e.BoxCollider;exports.BoxGizmo=e.BoxGizmo;exports.BoxHelperComponent=e.BoxHelperComponent;exports.Button=e.Button;exports.ButtonsFactory=e.ButtonsFactory;exports.CallDirection=e.CallDirection;exports.CallInfo=e.CallInfo;exports.Camera=e.Camera;exports.CameraTargetReachedEvent=e.CameraTargetReachedEvent;exports.Canvas=e.Canvas;exports.CanvasGroup=e.CanvasGroup;exports.CapsuleCollider=e.CapsuleCollider;exports.ChangeMaterialOnClick=e.ChangeMaterialOnClick;exports.ChangeTransformOnClick=e.ChangeTransformOnClick;exports.CharacterController=e.CharacterController;exports.CharacterControllerInput=e.CharacterControllerInput;exports.ChromaticAberration=e.ChromaticAberration;exports.CircularBuffer=e.CircularBuffer;exports.ClearFlags=e.ClearFlags;exports.ClickThrough=e.ClickThrough;exports.ClipExtrapolation=e.ClipExtrapolation;exports.Collider=e.Collider;exports.Collision=e.Collision;exports.CollisionDetectionMode=e.CollisionDetectionMode;exports.ColorAdjustments=e.ColorAdjustments;exports.ColorBySpeedModule=e.ColorBySpeedModule;exports.ColorOverLifetimeModule=e.ColorOverLifetimeModule;exports.Component=e.Component$1;exports.ComponentLifecycleEvents=e.ComponentLifecycleEvents;exports.ConnectionEvents=e.ConnectionEvents;exports.ContactPoint=e.ContactPoint;exports.ContactShadows=e.ContactShadows;exports.Context=e.Context;exports.ContextArgs=e.ContextArgs;exports.ContextEvent=e.ContextEvent;exports.ContextRegistry=e.ContextRegistry;exports.ControlTrackHandler=e.ControlTrackHandler;exports.CursorFollow=e.CursorFollow;exports.CustomBranding=e.CustomBranding;exports.CustomShader=e.CustomShader;exports.DefaultReflectionMode=e.DefaultReflectionMode;exports.Deletable=e.Deletable;exports.DeleteBox=e.DeleteBox;exports.DepthOfField=e.DepthOfField;exports.DeviceFlag=e.DeviceFlag;Object.defineProperty(exports,"DeviceUtilities",{enumerable:!0,get:()=>e.DeviceUtilities});exports.DocumentExtension=e.DocumentExtension;exports.DragControls=e.DragControls;exports.DragMode=e.DragMode;exports.DropListener=e.DropListener;exports.Duplicatable=e.Duplicatable;exports.EffectWrapper=e.EffectWrapper;exports.EmissionModule=e.EmissionModule;exports.EmphasizeOnClick=e.EmphasizeOnClick;exports.EngineLoadingView=e.EngineLoadingView;exports.EnvironmentScene=e.EnvironmentScene;exports.EventList=e.EventList;exports.EventListEvent=e.EventListEvent;exports.EventSystem=e.EventSystem;exports.EventTrigger=e.EventTrigger;exports.FieldWithDefault=e.FieldWithDefault;exports.FileReference=e.FileReference;exports.FileReferenceSerializer=e.FileReferenceSerializer;exports.FileSpawnModel=e.FileSpawnModel;exports.File_Event=e.File_Event;exports.FixedJoint=e.FixedJoint;exports.Fog=e.Fog;exports.FrameEvent=e.FrameEvent;exports.GENERATOR=e.GENERATOR;exports.GameObject=e.GameObject;exports.Gizmos=e.Gizmos;exports.GltfExport=e.GltfExport;exports.GltfExportBox=e.GltfExportBox;exports.Gradient=e.Gradient;exports.Graphic=e.Graphic;exports.GraphicRaycaster=e.GraphicRaycaster;exports.Graphics=e.Graphics;exports.GridHelper=e.GridHelper;exports.GridLayoutGroup=e.GridLayoutGroup;exports.GroundProjectedEnv=e.GroundProjectedEnv;exports.GroupActionModel=e.GroupActionModel;exports.HideFlags=e.HideFlags;exports.HideOnStart=e.HideOnStart;exports.HingeJoint=e.HingeJoint;exports.HorizontalLayoutGroup=e.HorizontalLayoutGroup;exports.HostData=e.HostData;Object.defineProperty(exports,"HoverAnimation",{enumerable:!0,get:()=>e.HoverAnimation});exports.Image=e.Image;exports.ImageReference=e.ImageReference;exports.ImageReferenceSerializer=e.ImageReferenceSerializer;exports.InheritVelocityModule=e.InheritVelocityModule;exports.Input=e.Input;exports.InputEventQueue=e.InputEventQueue;exports.InputEvents=e.InputEvents;exports.InputField=e.InputField;exports.InstanceHandle=e.InstanceHandle;exports.InstancingHandler=e.InstancingHandler;exports.InstancingUtil=e.InstancingUtil;exports.InstantiateEvent=e.InstantiateEvent;exports.InstantiateIdProvider=e.InstantiateIdProvider;exports.InstantiateOptions=e.InstantiateOptions;exports.Interactable=e.Interactable;Object.defineProperty(exports,"InternalScreenshotUtils",{enumerable:!0,get:()=>e.InternalScreenshotUtils});exports.JoinedRoomResponse=e.JoinedRoomResponse;exports.KeyEventArgs=e.KeyEventArgs;exports.Keyframe=e.Keyframe;exports.LODGroup=e.LODGroup;exports.LODModel=e.LODModel;exports.LeftRoomResponse=e.LeftRoomResponse;exports.Light=e.Light;exports.LightData=e.LightData;exports.LimitVelocityOverLifetimeModule=e.LimitVelocityOverLifetimeModule;exports.LoadingElementOptions=e.LoadingElementOptions;exports.LogStats=e.LogStats;exports.LogType=e.LogType;exports.LookAt=e.LookAt;exports.LookAtConstraint=e.LookAtConstraint;exports.MainModule=e.MainModule;exports.MarkerTrackHandler=e.MarkerTrackHandler;exports.MarkerType=e.MarkerType;exports.MaskableGraphic=e.MaskableGraphic;exports.MaterialPropertyBlock=e.MaterialPropertyBlock;Object.defineProperty(exports,"MaterialX",{enumerable:!0,get:()=>e.MaterialX});exports.Mathf=e.Mathf;exports.MeshCollider=e.MeshCollider;exports.MeshRenderer=e.MeshRenderer;exports.MinMaxCurve=e.MinMaxCurve;exports.MinMaxGradient=e.MinMaxGradient;exports.NEEDLE_ENGINE_FEATURE_FLAGS=e.NEEDLE_ENGINE_FEATURE_FLAGS;exports.NEEDLE_ENGINE_MODULES=e.MODULES;exports.NEKeyboardEvent=e.NEKeyboardEvent;exports.NEPointerEvent=e.NEPointerEvent;exports.NeedleButtonElement=e.NeedleButtonElement;exports.NeedleEngine=e.ContextRegistry;Object.defineProperty(exports,"NeedleEngineModelLoader",{enumerable:!0,get:()=>e.NeedleEngineModelLoader});exports.NeedleEngineWebComponent=e.NeedleEngineWebComponent;exports.NeedleMenu=e.NeedleMenu;exports.NeedlePatchesKey=e.NeedlePatchesKey;exports.NeedleUSDZExporter=e.USDZExporter;exports.NeedleXRController=e.NeedleXRController;exports.NeedleXRSession=e.NeedleXRSession;exports.NeedleXRSync=e.NeedleXRSync;exports.NeedleXRUtils=e.NeedleXRUtils;exports.NestedGltf=e.NestedGltf;exports.NetworkConnection=e.NetworkConnection;exports.NetworkedStreamEvents=e.NetworkedStreamEvents;exports.NetworkedStreams=e.NetworkedStreams;exports.Networking=e.Networking;exports.NewInstanceModel=e.NewInstanceModel;exports.NoiseModule=e.NoiseModule;exports.ObjectRaycaster=e.ObjectRaycaster;exports.ObjectUtils=e.ObjectUtils;exports.OffsetConstraint=e.OffsetConstraint;exports.OneEuroFilter=e.OneEuroFilter;exports.OneEuroFilterXYZ=e.OneEuroFilterXYZ;exports.OpenURL=e.OpenURL;exports.OrbitControls=e.OrbitControls;exports.Outline=e.Outline;exports.OwnershipEvent=e.OwnershipEvent;exports.OwnershipModel=e.OwnershipModel;exports.PUBLIC_KEY=e.PUBLIC_KEY;exports.Padding=e.Padding;exports.ParticleBurst=e.ParticleBurst;exports.ParticleSubEmitter=e.ParticleSubEmitter;exports.ParticleSystem=e.ParticleSystem;exports.ParticleSystemBaseBehaviour=e.ParticleSystemBaseBehaviour;exports.ParticleSystemRenderer=e.ParticleSystemRenderer;exports.ParticleSystemShapeType=e.ParticleSystemShapeType;exports.PeerHandle=e.PeerHandle;exports.PeerNetworking=e.PeerNetworking;exports.Physics=e.Physics;exports.PhysicsExtension=e.PhysicsExtension;exports.PhysicsMaterialCombine=e.PhysicsMaterialCombine;exports.PixelationEffect=e.PixelationEffect;exports.PlayAnimationOnClick=e.PlayAnimationOnClick;exports.PlayAudioOnClick=e.PlayAudioOnClick;exports.PlayableDirector=e.PlayableDirector;exports.PlayerColor=e.PlayerColor;exports.PlayerState=e.PlayerState;exports.PlayerStateEvent=e.PlayerStateEvent;exports.PlayerSync=e.PlayerSync;exports.PlayerView=e.PlayerView;exports.PlayerViewManager=e.PlayerViewManager;exports.PointerEventData=e.PointerEventData;exports.PointerType=e.PointerType;exports.PostProcessingEffect=e.PostProcessingEffect;exports.PostProcessingEffectOrder=e.PostProcessingEffectOrder;exports.PostProcessingHandler=e.PostProcessingHandler;exports.PostProcessingManager=e.Volume;exports.PreliminaryAction=e.PreliminaryAction;exports.PreliminaryTrigger=e.PreliminaryTrigger;Object.defineProperty(exports,"PreviewHelper",{enumerable:!0,get:()=>e.PreviewHelper});exports.PrimitiveType=e.PrimitiveType;exports.Progress=e.Progress;exports.PromiseAllWithErrors=e.PromiseAllWithErrors;exports.PromiseErrorResult=e.PromiseErrorResult;exports.RGBAColor=e.RGBAColor;exports.RapierPhysics=e.RapierPhysics;exports.RawImage=e.RawImage;exports.RaycastOptions=e.RaycastOptions;exports.Rect=e.Rect;exports.RectTransform=e.RectTransform;exports.ReflectionProbe=e.ReflectionProbe;exports.RegisteredAnimationInfo=e.RegisteredAnimationInfo;exports.RemoteSkybox=e.RemoteSkybox;exports.RenderTexture=e.RenderTexture;exports.RenderTextureSerializer=e.RenderTextureSerializer;exports.Renderer=e.Renderer;exports.RendererData=e.RendererData;exports.RendererLightmap=e.RendererLightmap;exports.Rigidbody=e.Rigidbody;exports.RigidbodyConstraints=e.RigidbodyConstraints;exports.RoomEvents=e.RoomEvents;exports.RotationBySpeedModule=e.RotationBySpeedModule;exports.RotationOverLifetimeModule=e.RotationOverLifetimeModule;exports.SceneLightSettings=e.SceneLightSettings;exports.SceneSwitcher=e.SceneSwitcher;exports.ScreenCapture=e.ScreenCapture;exports.ScreenSpaceAmbientOcclusion=e.ScreenSpaceAmbientOcclusion;exports.ScreenSpaceAmbientOcclusionN8=e.ScreenSpaceAmbientOcclusionN8;exports.ScrollFollow=e.ScrollFollow;exports.SeeThrough=e.SeeThrough;exports.SendQueue=e.SendQueue;exports.SerializationContext=e.SerializationContext;exports.SetActiveOnClick=e.SetActiveOnClick;exports.ShadowCatcher=e.ShadowCatcher;exports.ShapeModule=e.ShapeModule;exports.ShapeOverlapResult=e.ShapeOverlapResult;exports.SharpeningEffect=e.SharpeningEffect;exports.SignalAsset=e.SignalAsset;exports.SignalReceiver=e.SignalReceiver;exports.SignalReceiverEvent=e.SignalReceiverEvent;exports.SignalTrackHandler=e.SignalTrackHandler;exports.Size=e.Size;exports.SizeBySpeedModule=e.SizeBySpeedModule;exports.SizeOverLifetimeModule=e.SizeOverLifetimeModule;exports.SkinnedMeshRenderer=e.SkinnedMeshRenderer;exports.SmoothFollow=e.SmoothFollow;exports.SpatialGrabRaycaster=e.SpatialGrabRaycaster;exports.SpatialHtml=e.SpatialHtml;exports.SpatialTrigger=e.SpatialTrigger;exports.SpatialTriggerReceiver=e.SpatialTriggerReceiver;exports.SpectatorCamera=e.SpectatorCamera;exports.SphereCollider=e.SphereCollider;exports.SphereIntersection=e.SphereIntersection;exports.SplineContainer=e.SplineContainer;exports.SplineData=e.SplineData;Object.defineProperty(exports,"SplineUtils",{enumerable:!0,get:()=>e.SplineUtils});exports.SplineWalker=e.SplineWalker;exports.Sprite=e.Sprite;exports.SpriteData=e.SpriteData;exports.SpriteRenderer=e.SpriteRenderer;exports.SpriteSheet=e.SpriteSheet;exports.StateMachineBehaviour=e.StateMachineBehaviour;exports.StreamEndedEvent=e.StreamEndedEvent;exports.StreamReceivedEvent=e.StreamReceivedEvent;exports.SubEmitterSystem=e.SubEmitterSystem;exports.SyncedCamera=e.SyncedCamera;exports.SyncedRoom=e.SyncedRoom;exports.SyncedTransform=e.SyncedTransform;exports.TapGestureTrigger=e.TapGestureTrigger;exports.TeleportTarget=e.TeleportTarget;exports.TestRunner=e.TestRunner;exports.TestSimulateUserData=e.TestSimulateUserData;exports.Text=e.Text;exports.TextBuilder=e.TextBuilder;exports.TextExtension=e.TextExtension;exports.TextureSheetAnimationModule=e.TextureSheetAnimationModule;exports.TiltShiftEffect=e.TiltShiftEffect;exports.Time=e.Time;exports.ToneMappingEffect=e.ToneMappingEffect;exports.TrackHandler=e.TrackHandler;exports.TrackType=e.TrackType;exports.TrailModule=e.TrailModule;exports.TransformData=e.TransformData;exports.TransformGizmo=e.TransformGizmo;exports.TriggerBuilder=e.TriggerBuilder;exports.TriggerModel=e.TriggerModel;exports.TypeStore=e.TypeStore;exports.UIRaycastUtils=e.UIRaycastUtils;exports.UIRootComponent=e.UIRootComponent;exports.USDDocument=e.USDDocument;exports.USDObject=e.USDObject;exports.USDWriter=e.USDWriter;exports.USDZExporter=e.USDZExporter$1;exports.USDZText=e.USDZText;exports.USDZUIExtension=e.USDZUIExtension;exports.UriSerializer=e.UriSerializer;exports.UsageMarker=e.UsageMarker;exports.UserJoinedOrLeftRoomModel=e.UserJoinedOrLeftRoomModel;exports.VERSION=e.VERSION;exports.VariantAction=e.VariantAction;exports.VelocityOverLifetimeModule=e.VelocityOverLifetimeModule;exports.VerticalLayoutGroup=e.VerticalLayoutGroup;exports.VideoPlayer=e.VideoPlayer;Object.defineProperty(exports,"ViewBox",{enumerable:!0,get:()=>e.ViewBox});exports.ViewDevice=e.ViewDevice;exports.Vignette=e.Vignette;exports.VisibilityAction=e.VisibilityAction;exports.Voip=e.Voip;exports.Volume=e.Volume;exports.VolumeParameter=e.VolumeParameter;exports.VolumeProfile=e.VolumeProfile;exports.WaitForFrames=e.WaitForFrames;exports.WaitForPromise=e.WaitForPromise;exports.WaitForSeconds=e.WaitForSeconds;exports.Watch=e.Watch;exports.WebARCameraBackground=e.WebARCameraBackground;exports.WebARSessionRoot=e.WebARSessionRoot;exports.WebXR=e.WebXR;exports.WebXRButtonFactory=e.WebXRButtonFactory;exports.WebXRImageTracking=e.WebXRImageTracking;exports.WebXRImageTrackingModel=e.WebXRImageTrackingModel;exports.WebXRPlaneTracking=e.WebXRPlaneTracking;exports.WebXRTrackedImage=e.WebXRTrackedImage;exports.XRControllerFollow=e.XRControllerFollow;exports.XRControllerModel=e.XRControllerModel;exports.XRControllerMovement=e.XRControllerMovement;exports.XRFlag=e.XRFlag;exports.XRRig=e.XRRig;exports.XRState=e.XRState;exports.XRStateFlag=e.XRStateFlag;exports.__Ignore=e.__Ignore;exports.__internalNotifyObjectDestroyed=e.__internalNotifyObjectDestroyed;exports.activeInHierarchyFieldName=e.activeInHierarchyFieldName;exports.addAttributeChangeCallback=e.addAttributeChangeCallback;exports.addComponent=e.addComponent;exports.addCustomExtensionPlugin=e.addCustomExtensionPlugin;exports.addNewComponent=e.addNewComponent;exports.addPatch=e.addPatch;exports.apply=e.apply;exports.applyHMRChanges=e.applyHMRChanges;exports.applyPrototypeExtensions=e.applyPrototypeExtensions;exports.beginListenDestroy=e.beginListenDestroy;exports.beginListenInstantiate=e.beginListenInstantiate;exports.binaryIdentifierCasts=e.binaryIdentifierCasts;exports.build_scene_functions=e.build_scene_functions;exports.builtinComponentKeyName=e.builtinComponentKeyName;exports.calculateProgress01=e.calculateProgress01;exports.clearBalloonMessages=e.clearMessages;exports.clearOverlayMessages=e.clearMessages;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.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.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.objectSerializer=e.objectSerializer;exports.offXRSessionEnd=e.offXRSessionEnd;exports.offXRSessionStart=e.offXRSessionStart;exports.onAfterRender=e.onAfterRender;exports.onBeforeRender=e.onBeforeRender;exports.onClear=e.onClear;exports.onDestroy=e.onDestroy;exports.onInitialized=e.onInitialized;exports.onStart=e.onStart;exports.onUpdate=e.onUpdate;exports.onXRSessionEnd=e.onXRSessionEnd;exports.onXRSessionStart=e.onXRSessionStart;exports.parseSync=e.parseSync;exports.placeOnSurface=e.placeOnSurface;exports.postprocessFBXMaterials=e.postprocessFBXMaterials;exports.prefix=e.prefix;exports.pushState=e.pushState;exports.randomNumber=e.randomNumber;exports.registerBinaryType=e.registerBinaryType;exports.registerComponent=e.registerComponent;exports.registerComponentExtension=e.registerComponentExtension;exports.registerCustomEffectType=e.registerCustomEffectType;exports.registerExportExtensions=e.registerExportExtensions;exports.registerExtensions=e.registerExtensions;exports.registerHotReloadType=e.registerHotReloadType;exports.registerLoader=e.registerLoader;exports.registerPrefabProvider=e.registerPrefabProvider;exports.registerPrototypeExtensions=e.registerPrototypeExtensions;exports.registerType=e.registerType;exports.relativePathPrefix=e.relativePathPrefix;exports.removeAttributeChangeCallback=e.removeAttributeChangeCallback;exports.removeComponent=e.removeComponent;exports.removeCustomImportExtensionType=e.removeCustomImportExtensionType;exports.removePatch=e.removePatch;exports.resolveUrl=e.resolveUrl;exports.sanitizeString=e.sanitizeString;exports.saveImage=e.saveImage;exports.screenshot=e.screenshot;exports.screenshot2=e.screenshot2;exports.sendDestroyed=e.sendDestroyed;exports.serializable=e.serializable;exports.serializeObject=e.serializeObject;exports.serializeable=e.serializeable;exports.setActive=e.setActive;exports.setAllowBalloonMessages=e.setAllowBalloonMessages;exports.setAllowOverlayMessages=e.setAllowOverlayMessages;exports.setAutoFitEnabled=e.setAutoFitEnabled;exports.setCameraController=e.setCameraController;exports.setDestroyed=e.setDestroyed;exports.setDevEnvironment=e.setDevEnvironment;exports.setDisposable=e.setDisposable;exports.setDontDestroy=e.setDontDestroy;exports.setOrAddParamsToUrl=e.setOrAddParamsToUrl;exports.setParam=e.setParam;exports.setParamWithoutReload=e.setParamWithoutReload;exports.setPeerOptions=e.setPeerOptions;exports.setResourceTrackingEnabled=e.setResourceTrackingEnabled;exports.setState=e.setState;exports.setVisibleInCustomShadowRendering=e.setVisibleInCustomShadowRendering;exports.setWorldEuler=e.setWorldEuler;exports.setWorldPosition=e.setWorldPosition;exports.setWorldPositionXYZ=e.setWorldPositionXYZ;exports.setWorldQuaternion=e.setWorldQuaternion;exports.setWorldQuaternionXYZW=e.setWorldQuaternionXYZW;exports.setWorldRotation=e.setWorldRotation;exports.setWorldRotationXYZ=e.setWorldRotationXYZ;exports.setWorldScale=e.setWorldScale;exports.showBalloonError=e.showBalloonError;exports.showBalloonMessage=e.showBalloonMessage;exports.showBalloonWarning=e.showBalloonWarning;exports.showDebugConsole=e.showDebugConsole;exports.slerp=e.slerp;exports.syncDestroy=e.syncDestroy;exports.syncField=e.syncField;exports.syncInstantiate=e.syncInstantiate;exports.textureToCanvas=e.textureToCanvas;exports.toSourceId=e.toSourceId;exports.tryCastBinary=e.tryCastBinary;exports.tryDetermineMimetypeFromBinary=e.tryDetermineMimetypeFromBinary;exports.tryDetermineMimetypeFromURL=e.tryDetermineMimetypeFromURL;exports.tryFindObject=e.tryFindObject;exports.tryGetGuid=e.tryGetGuid;exports.unregisterHotReloadType=e.unregisterHotReloadType;exports.unwatchWrite=e.unwatchWrite;exports.useForAutoFit=e.useForAutoFit;exports.validate=e.validate;exports.watchWrite=e.watchWrite;exports.NEEDLE_progressive=i.NEEDLE_progressive;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./needle-engine.bundle-CNKc71CA.umd.cjs"),i=require("./gltf-progressive-Ck_bXBr_.umd.cjs"),a=require("./three.umd.cjs"),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=a.THREE;exports.$componentName=e.$componentName;exports.$physicsKey=e.$physicsKey;exports.ActionBuilder=e.ActionBuilder;exports.ActionCollection=e.ActionCollection;exports.ActionModel=e.ActionModel;exports.Addressables=e.Addressables;exports.AlignmentConstraint=e.AlignmentConstraint;exports.AmbientMode=e.AmbientMode;exports.Animation=e.Animation;exports.AnimationCurve=e.AnimationCurve;exports.AnimationExtension=e.AnimationExtension;exports.AnimationTrackHandler=e.AnimationTrackHandler;exports.AnimationUtils=e.AnimationUtils;exports.Animator=e.Animator;exports.AnimatorConditionMode=e.AnimatorConditionMode;exports.AnimatorController=e.AnimatorController;exports.AnimatorControllerParameterType=e.AnimatorControllerParameterType;exports.AnimatorStateInfo=e.AnimatorStateInfo;exports.Antialiasing=e.Antialiasing;exports.Application=e.Application;exports.AssetDatabase=e.AssetDatabase;exports.AssetReference=e.AssetReference;exports.Attractor=e.Attractor;exports.AudioExtension=e.AudioExtension;exports.AudioListener=e.AudioListener;exports.AudioSource=e.AudioSource;exports.AudioTrackHandler=e.AudioTrackHandler;exports.Avatar=e.Avatar;exports.AvatarBlink_Simple=e.AvatarBlink_Simple;exports.AvatarEyeLook_Rotation=e.AvatarEyeLook_Rotation;exports.AvatarLoader=e.AvatarLoader;exports.AvatarMarker=e.AvatarMarker;exports.AvatarModel=e.AvatarModel;exports.Avatar_Brain_LookAt=e.Avatar_Brain_LookAt;exports.Avatar_MouthShapes=e.Avatar_MouthShapes;exports.Avatar_MustacheShake=e.Avatar_MustacheShake;exports.Avatar_POI=e.Avatar_POI;exports.Axes=e.Axes;exports.AxesHelper=e.AxesHelper;exports.BUILD_TIME=e.BUILD_TIME;exports.BaseUIComponent=e.BaseUIComponent;exports.BasicIKConstraint=e.BasicIKConstraint;exports.BehaviorExtension=e.BehaviorExtension;exports.BehaviorModel=e.BehaviorModel;exports.Behaviour=e.Component$1;Object.defineProperty(exports,"BlobStorage",{enumerable:!0,get:()=>e.BlobStorage});exports.BloomEffect=e.BloomEffect;exports.BoxCollider=e.BoxCollider;exports.BoxGizmo=e.BoxGizmo;exports.BoxHelperComponent=e.BoxHelperComponent;exports.Button=e.Button;exports.ButtonsFactory=e.ButtonsFactory;exports.CallDirection=e.CallDirection;exports.CallInfo=e.CallInfo;exports.Camera=e.Camera;exports.CameraTargetReachedEvent=e.CameraTargetReachedEvent;exports.Canvas=e.Canvas;exports.CanvasGroup=e.CanvasGroup;exports.CapsuleCollider=e.CapsuleCollider;exports.ChangeMaterialOnClick=e.ChangeMaterialOnClick;exports.ChangeTransformOnClick=e.ChangeTransformOnClick;exports.CharacterController=e.CharacterController;exports.CharacterControllerInput=e.CharacterControllerInput;exports.ChromaticAberration=e.ChromaticAberration;exports.CircularBuffer=e.CircularBuffer;exports.ClearFlags=e.ClearFlags;exports.ClickThrough=e.ClickThrough;exports.ClipExtrapolation=e.ClipExtrapolation;exports.Collider=e.Collider;exports.Collision=e.Collision;exports.CollisionDetectionMode=e.CollisionDetectionMode;exports.ColorAdjustments=e.ColorAdjustments;exports.ColorBySpeedModule=e.ColorBySpeedModule;exports.ColorOverLifetimeModule=e.ColorOverLifetimeModule;exports.Component=e.Component$1;exports.ComponentLifecycleEvents=e.ComponentLifecycleEvents;exports.ConnectionEvents=e.ConnectionEvents;exports.ContactPoint=e.ContactPoint;exports.ContactShadows=e.ContactShadows;exports.Context=e.Context;exports.ContextArgs=e.ContextArgs;exports.ContextEvent=e.ContextEvent;exports.ContextRegistry=e.ContextRegistry;exports.ControlTrackHandler=e.ControlTrackHandler;exports.CursorFollow=e.CursorFollow;exports.CustomBranding=e.CustomBranding;exports.CustomShader=e.CustomShader;exports.DefaultReflectionMode=e.DefaultReflectionMode;exports.Deletable=e.Deletable;exports.DeleteBox=e.DeleteBox;exports.DepthOfField=e.DepthOfField;exports.DeviceFlag=e.DeviceFlag;Object.defineProperty(exports,"DeviceUtilities",{enumerable:!0,get:()=>e.DeviceUtilities});exports.DocumentExtension=e.DocumentExtension;exports.DragControls=e.DragControls;exports.DragMode=e.DragMode;exports.DropListener=e.DropListener;exports.Duplicatable=e.Duplicatable;exports.EffectWrapper=e.EffectWrapper;exports.EmissionModule=e.EmissionModule;exports.EmphasizeOnClick=e.EmphasizeOnClick;exports.EngineLoadingView=e.EngineLoadingView;exports.EnvironmentScene=e.EnvironmentScene;exports.EventList=e.EventList;exports.EventListEvent=e.EventListEvent;exports.EventSystem=e.EventSystem;exports.EventTrigger=e.EventTrigger;exports.FieldWithDefault=e.FieldWithDefault;exports.FileReference=e.FileReference;exports.FileReferenceSerializer=e.FileReferenceSerializer;exports.FileSpawnModel=e.FileSpawnModel;exports.File_Event=e.File_Event;exports.FixedJoint=e.FixedJoint;exports.Fog=e.Fog;exports.FrameEvent=e.FrameEvent;exports.GENERATOR=e.GENERATOR;exports.GameObject=e.GameObject;exports.Gizmos=e.Gizmos;exports.GltfExport=e.GltfExport;exports.GltfExportBox=e.GltfExportBox;exports.Gradient=e.Gradient;exports.Graphic=e.Graphic;exports.GraphicRaycaster=e.GraphicRaycaster;exports.Graphics=e.Graphics;exports.GridHelper=e.GridHelper;exports.GridLayoutGroup=e.GridLayoutGroup;exports.GroundProjectedEnv=e.GroundProjectedEnv;exports.GroupActionModel=e.GroupActionModel;exports.HideFlags=e.HideFlags;exports.HideOnStart=e.HideOnStart;exports.HingeJoint=e.HingeJoint;exports.HorizontalLayoutGroup=e.HorizontalLayoutGroup;exports.HostData=e.HostData;Object.defineProperty(exports,"HoverAnimation",{enumerable:!0,get:()=>e.HoverAnimation});exports.Image=e.Image;exports.ImageReference=e.ImageReference;exports.ImageReferenceSerializer=e.ImageReferenceSerializer;exports.InheritVelocityModule=e.InheritVelocityModule;exports.Input=e.Input;exports.InputEventQueue=e.InputEventQueue;exports.InputEvents=e.InputEvents;exports.InputField=e.InputField;exports.InstanceHandle=e.InstanceHandle;exports.InstancingHandler=e.InstancingHandler;exports.InstancingUtil=e.InstancingUtil;exports.InstantiateEvent=e.InstantiateEvent;exports.InstantiateIdProvider=e.InstantiateIdProvider;exports.InstantiateOptions=e.InstantiateOptions;exports.Interactable=e.Interactable;Object.defineProperty(exports,"InternalScreenshotUtils",{enumerable:!0,get:()=>e.InternalScreenshotUtils});exports.JoinedRoomResponse=e.JoinedRoomResponse;exports.KeyEventArgs=e.KeyEventArgs;exports.Keyframe=e.Keyframe;exports.LODGroup=e.LODGroup;exports.LODModel=e.LODModel;exports.LeftRoomResponse=e.LeftRoomResponse;exports.Light=e.Light;exports.LightData=e.LightData;exports.LimitVelocityOverLifetimeModule=e.LimitVelocityOverLifetimeModule;exports.LoadingElementOptions=e.LoadingElementOptions;exports.LogStats=e.LogStats;exports.LogType=e.LogType;exports.LookAt=e.LookAt;exports.LookAtConstraint=e.LookAtConstraint;exports.MainModule=e.MainModule;exports.MarkerTrackHandler=e.MarkerTrackHandler;exports.MarkerType=e.MarkerType;exports.MaskableGraphic=e.MaskableGraphic;exports.MaterialPropertyBlock=e.MaterialPropertyBlock;Object.defineProperty(exports,"MaterialX",{enumerable:!0,get:()=>e.MaterialX});exports.Mathf=e.Mathf;exports.MeshCollider=e.MeshCollider;exports.MeshRenderer=e.MeshRenderer;exports.MinMaxCurve=e.MinMaxCurve;exports.MinMaxGradient=e.MinMaxGradient;exports.NEEDLE_ENGINE_FEATURE_FLAGS=e.NEEDLE_ENGINE_FEATURE_FLAGS;exports.NEEDLE_ENGINE_MODULES=e.MODULES;exports.NEKeyboardEvent=e.NEKeyboardEvent;exports.NEPointerEvent=e.NEPointerEvent;exports.NeedleButtonElement=e.NeedleButtonElement;exports.NeedleEngine=e.ContextRegistry;Object.defineProperty(exports,"NeedleEngineModelLoader",{enumerable:!0,get:()=>e.NeedleEngineModelLoader});exports.NeedleEngineWebComponent=e.NeedleEngineWebComponent;exports.NeedleMenu=e.NeedleMenu;exports.NeedlePatchesKey=e.NeedlePatchesKey;exports.NeedleUSDZExporter=e.USDZExporter;exports.NeedleXRController=e.NeedleXRController;exports.NeedleXRSession=e.NeedleXRSession;exports.NeedleXRSync=e.NeedleXRSync;exports.NeedleXRUtils=e.NeedleXRUtils;exports.NestedGltf=e.NestedGltf;exports.NetworkConnection=e.NetworkConnection;exports.NetworkedStreamEvents=e.NetworkedStreamEvents;exports.NetworkedStreams=e.NetworkedStreams;exports.Networking=e.Networking;exports.NewInstanceModel=e.NewInstanceModel;exports.NoiseModule=e.NoiseModule;exports.ObjectRaycaster=e.ObjectRaycaster;exports.ObjectUtils=e.ObjectUtils;exports.OffsetConstraint=e.OffsetConstraint;exports.OneEuroFilter=e.OneEuroFilter;exports.OneEuroFilterXYZ=e.OneEuroFilterXYZ;exports.OpenURL=e.OpenURL;exports.OrbitControls=e.OrbitControls;exports.Outline=e.Outline;exports.OwnershipEvent=e.OwnershipEvent;exports.OwnershipModel=e.OwnershipModel;exports.PUBLIC_KEY=e.PUBLIC_KEY;exports.Padding=e.Padding;exports.ParticleBurst=e.ParticleBurst;exports.ParticleSubEmitter=e.ParticleSubEmitter;exports.ParticleSystem=e.ParticleSystem;exports.ParticleSystemBaseBehaviour=e.ParticleSystemBaseBehaviour;exports.ParticleSystemRenderer=e.ParticleSystemRenderer;exports.ParticleSystemShapeType=e.ParticleSystemShapeType;exports.PeerHandle=e.PeerHandle;exports.PeerNetworking=e.PeerNetworking;exports.Physics=e.Physics;exports.PhysicsExtension=e.PhysicsExtension;exports.PhysicsMaterialCombine=e.PhysicsMaterialCombine;exports.PixelationEffect=e.PixelationEffect;exports.PlayAnimationOnClick=e.PlayAnimationOnClick;exports.PlayAudioOnClick=e.PlayAudioOnClick;exports.PlayableDirector=e.PlayableDirector;exports.PlayerColor=e.PlayerColor;exports.PlayerState=e.PlayerState;exports.PlayerStateEvent=e.PlayerStateEvent;exports.PlayerSync=e.PlayerSync;exports.PlayerView=e.PlayerView;exports.PlayerViewManager=e.PlayerViewManager;exports.PointerEventData=e.PointerEventData;exports.PointerType=e.PointerType;exports.PostProcessingEffect=e.PostProcessingEffect;exports.PostProcessingEffectOrder=e.PostProcessingEffectOrder;exports.PostProcessingHandler=e.PostProcessingHandler;exports.PostProcessingManager=e.Volume;exports.PreliminaryAction=e.PreliminaryAction;exports.PreliminaryTrigger=e.PreliminaryTrigger;Object.defineProperty(exports,"PreviewHelper",{enumerable:!0,get:()=>e.PreviewHelper});exports.PrimitiveType=e.PrimitiveType;exports.Progress=e.Progress;exports.PromiseAllWithErrors=e.PromiseAllWithErrors;exports.PromiseErrorResult=e.PromiseErrorResult;exports.RGBAColor=e.RGBAColor;exports.RapierPhysics=e.RapierPhysics;exports.RawImage=e.RawImage;exports.RaycastOptions=e.RaycastOptions;exports.Rect=e.Rect;exports.RectTransform=e.RectTransform;exports.ReflectionProbe=e.ReflectionProbe;exports.RegisteredAnimationInfo=e.RegisteredAnimationInfo;exports.RemoteSkybox=e.RemoteSkybox;exports.RenderTexture=e.RenderTexture;exports.RenderTextureSerializer=e.RenderTextureSerializer;exports.Renderer=e.Renderer;exports.RendererData=e.RendererData;exports.RendererLightmap=e.RendererLightmap;exports.Rigidbody=e.Rigidbody;exports.RigidbodyConstraints=e.RigidbodyConstraints;exports.RoomEvents=e.RoomEvents;exports.RotationBySpeedModule=e.RotationBySpeedModule;exports.RotationOverLifetimeModule=e.RotationOverLifetimeModule;exports.SceneLightSettings=e.SceneLightSettings;exports.SceneSwitcher=e.SceneSwitcher;exports.ScreenCapture=e.ScreenCapture;exports.ScreenSpaceAmbientOcclusion=e.ScreenSpaceAmbientOcclusion;exports.ScreenSpaceAmbientOcclusionN8=e.ScreenSpaceAmbientOcclusionN8;exports.ScrollFollow=e.ScrollFollow;exports.SeeThrough=e.SeeThrough;exports.SendQueue=e.SendQueue;exports.SerializationContext=e.SerializationContext;exports.SetActiveOnClick=e.SetActiveOnClick;exports.ShadowCatcher=e.ShadowCatcher;exports.ShapeModule=e.ShapeModule;exports.ShapeOverlapResult=e.ShapeOverlapResult;exports.SharpeningEffect=e.SharpeningEffect;exports.SignalAsset=e.SignalAsset;exports.SignalReceiver=e.SignalReceiver;exports.SignalReceiverEvent=e.SignalReceiverEvent;exports.SignalTrackHandler=e.SignalTrackHandler;exports.Size=e.Size;exports.SizeBySpeedModule=e.SizeBySpeedModule;exports.SizeOverLifetimeModule=e.SizeOverLifetimeModule;exports.SkinnedMeshRenderer=e.SkinnedMeshRenderer;exports.SmoothFollow=e.SmoothFollow;exports.SpatialGrabRaycaster=e.SpatialGrabRaycaster;exports.SpatialHtml=e.SpatialHtml;exports.SpatialTrigger=e.SpatialTrigger;exports.SpatialTriggerReceiver=e.SpatialTriggerReceiver;exports.SpectatorCamera=e.SpectatorCamera;exports.SphereCollider=e.SphereCollider;exports.SphereIntersection=e.SphereIntersection;exports.SplineContainer=e.SplineContainer;exports.SplineData=e.SplineData;Object.defineProperty(exports,"SplineUtils",{enumerable:!0,get:()=>e.SplineUtils});exports.SplineWalker=e.SplineWalker;exports.Sprite=e.Sprite;exports.SpriteData=e.SpriteData;exports.SpriteRenderer=e.SpriteRenderer;exports.SpriteSheet=e.SpriteSheet;exports.StateMachineBehaviour=e.StateMachineBehaviour;exports.StreamEndedEvent=e.StreamEndedEvent;exports.StreamReceivedEvent=e.StreamReceivedEvent;exports.SubEmitterSystem=e.SubEmitterSystem;exports.SyncedCamera=e.SyncedCamera;exports.SyncedRoom=e.SyncedRoom;exports.SyncedTransform=e.SyncedTransform;exports.TapGestureTrigger=e.TapGestureTrigger;exports.TeleportTarget=e.TeleportTarget;exports.TestRunner=e.TestRunner;exports.TestSimulateUserData=e.TestSimulateUserData;exports.Text=e.Text;exports.TextBuilder=e.TextBuilder;exports.TextExtension=e.TextExtension;exports.TextureSheetAnimationModule=e.TextureSheetAnimationModule;exports.TiltShiftEffect=e.TiltShiftEffect;exports.Time=e.Time;exports.ToneMappingEffect=e.ToneMappingEffect;exports.TrackHandler=e.TrackHandler;exports.TrackType=e.TrackType;exports.TrailModule=e.TrailModule;exports.TransformData=e.TransformData;exports.TransformGizmo=e.TransformGizmo;exports.TriggerBuilder=e.TriggerBuilder;exports.TriggerModel=e.TriggerModel;exports.TypeStore=e.TypeStore;exports.UIRaycastUtils=e.UIRaycastUtils;exports.UIRootComponent=e.UIRootComponent;exports.USDDocument=e.USDDocument;exports.USDObject=e.USDObject;exports.USDWriter=e.USDWriter;exports.USDZExporter=e.USDZExporter$1;exports.USDZText=e.USDZText;exports.USDZUIExtension=e.USDZUIExtension;exports.UriSerializer=e.UriSerializer;exports.UsageMarker=e.UsageMarker;exports.UserJoinedOrLeftRoomModel=e.UserJoinedOrLeftRoomModel;exports.VERSION=e.VERSION;exports.VariantAction=e.VariantAction;exports.VelocityOverLifetimeModule=e.VelocityOverLifetimeModule;exports.VerticalLayoutGroup=e.VerticalLayoutGroup;exports.VideoPlayer=e.VideoPlayer;Object.defineProperty(exports,"ViewBox",{enumerable:!0,get:()=>e.ViewBox});exports.ViewDevice=e.ViewDevice;exports.Vignette=e.Vignette;exports.VisibilityAction=e.VisibilityAction;exports.Voip=e.Voip;exports.Volume=e.Volume;exports.VolumeParameter=e.VolumeParameter;exports.VolumeProfile=e.VolumeProfile;exports.WaitForFrames=e.WaitForFrames;exports.WaitForPromise=e.WaitForPromise;exports.WaitForSeconds=e.WaitForSeconds;exports.Watch=e.Watch;exports.WebARCameraBackground=e.WebARCameraBackground;exports.WebARSessionRoot=e.WebARSessionRoot;exports.WebXR=e.WebXR;exports.WebXRButtonFactory=e.WebXRButtonFactory;exports.WebXRImageTracking=e.WebXRImageTracking;exports.WebXRImageTrackingModel=e.WebXRImageTrackingModel;exports.WebXRPlaneTracking=e.WebXRPlaneTracking;exports.WebXRTrackedImage=e.WebXRTrackedImage;exports.XRControllerFollow=e.XRControllerFollow;exports.XRControllerModel=e.XRControllerModel;exports.XRControllerMovement=e.XRControllerMovement;exports.XRFlag=e.XRFlag;exports.XRRig=e.XRRig;exports.XRState=e.XRState;exports.XRStateFlag=e.XRStateFlag;exports.__Ignore=e.__Ignore;exports.__internalNotifyObjectDestroyed=e.__internalNotifyObjectDestroyed;exports.activeInHierarchyFieldName=e.activeInHierarchyFieldName;exports.addAttributeChangeCallback=e.addAttributeChangeCallback;exports.addComponent=e.addComponent;exports.addCustomExtensionPlugin=e.addCustomExtensionPlugin;exports.addNewComponent=e.addNewComponent;exports.addPatch=e.addPatch;exports.apply=e.apply;exports.applyHMRChanges=e.applyHMRChanges;exports.applyPrototypeExtensions=e.applyPrototypeExtensions;exports.beginListenDestroy=e.beginListenDestroy;exports.beginListenInstantiate=e.beginListenInstantiate;exports.binaryIdentifierCasts=e.binaryIdentifierCasts;exports.build_scene_functions=e.build_scene_functions;exports.builtinComponentKeyName=e.builtinComponentKeyName;exports.calculateProgress01=e.calculateProgress01;exports.clearBalloonMessages=e.clearMessages;exports.clearOverlayMessages=e.clearMessages;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.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.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.objectSerializer=e.objectSerializer;exports.offXRSessionEnd=e.offXRSessionEnd;exports.offXRSessionStart=e.offXRSessionStart;exports.onAfterRender=e.onAfterRender;exports.onBeforeRender=e.onBeforeRender;exports.onClear=e.onClear;exports.onDestroy=e.onDestroy;exports.onInitialized=e.onInitialized;exports.onStart=e.onStart;exports.onUpdate=e.onUpdate;exports.onXRSessionEnd=e.onXRSessionEnd;exports.onXRSessionStart=e.onXRSessionStart;exports.parseSync=e.parseSync;exports.placeOnSurface=e.placeOnSurface;exports.postprocessFBXMaterials=e.postprocessFBXMaterials;exports.prefix=e.prefix;exports.pushState=e.pushState;exports.randomNumber=e.randomNumber;exports.registerBinaryType=e.registerBinaryType;exports.registerComponent=e.registerComponent;exports.registerComponentExtension=e.registerComponentExtension;exports.registerCustomEffectType=e.registerCustomEffectType;exports.registerExportExtensions=e.registerExportExtensions;exports.registerExtensions=e.registerExtensions;exports.registerHotReloadType=e.registerHotReloadType;exports.registerLoader=e.registerLoader;exports.registerPrefabProvider=e.registerPrefabProvider;exports.registerPrototypeExtensions=e.registerPrototypeExtensions;exports.registerType=e.registerType;exports.relativePathPrefix=e.relativePathPrefix;exports.removeAttributeChangeCallback=e.removeAttributeChangeCallback;exports.removeComponent=e.removeComponent;exports.removeCustomImportExtensionType=e.removeCustomImportExtensionType;exports.removePatch=e.removePatch;exports.resolveUrl=e.resolveUrl;exports.sanitizeString=e.sanitizeString;exports.saveImage=e.saveImage;exports.screenshot=e.screenshot;exports.screenshot2=e.screenshot2;exports.sendDestroyed=e.sendDestroyed;exports.serializable=e.serializable;exports.serializeObject=e.serializeObject;exports.serializeable=e.serializeable;exports.setActive=e.setActive;exports.setAllowBalloonMessages=e.setAllowBalloonMessages;exports.setAllowOverlayMessages=e.setAllowOverlayMessages;exports.setAutoFitEnabled=e.setAutoFitEnabled;exports.setCameraController=e.setCameraController;exports.setDestroyed=e.setDestroyed;exports.setDevEnvironment=e.setDevEnvironment;exports.setDisposable=e.setDisposable;exports.setDontDestroy=e.setDontDestroy;exports.setOrAddParamsToUrl=e.setOrAddParamsToUrl;exports.setParam=e.setParam;exports.setParamWithoutReload=e.setParamWithoutReload;exports.setPeerOptions=e.setPeerOptions;exports.setResourceTrackingEnabled=e.setResourceTrackingEnabled;exports.setState=e.setState;exports.setVisibleInCustomShadowRendering=e.setVisibleInCustomShadowRendering;exports.setWorldEuler=e.setWorldEuler;exports.setWorldPosition=e.setWorldPosition;exports.setWorldPositionXYZ=e.setWorldPositionXYZ;exports.setWorldQuaternion=e.setWorldQuaternion;exports.setWorldQuaternionXYZW=e.setWorldQuaternionXYZW;exports.setWorldRotation=e.setWorldRotation;exports.setWorldRotationXYZ=e.setWorldRotationXYZ;exports.setWorldScale=e.setWorldScale;exports.showBalloonError=e.showBalloonError;exports.showBalloonMessage=e.showBalloonMessage;exports.showBalloonWarning=e.showBalloonWarning;exports.showDebugConsole=e.showDebugConsole;exports.slerp=e.slerp;exports.syncDestroy=e.syncDestroy;exports.syncField=e.syncField;exports.syncInstantiate=e.syncInstantiate;exports.textureToCanvas=e.textureToCanvas;exports.toSourceId=e.toSourceId;exports.tryCastBinary=e.tryCastBinary;exports.tryDetermineMimetypeFromBinary=e.tryDetermineMimetypeFromBinary;exports.tryDetermineMimetypeFromURL=e.tryDetermineMimetypeFromURL;exports.tryFindObject=e.tryFindObject;exports.tryGetGuid=e.tryGetGuid;exports.unregisterHotReloadType=e.unregisterHotReloadType;exports.unwatchWrite=e.unwatchWrite;exports.useForAutoFit=e.useForAutoFit;exports.validate=e.validate;exports.watchWrite=e.watchWrite;exports.NEEDLE_progressive=i.NEEDLE_progressive;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "4.17.0-
|
|
3
|
+
"version": "4.17.0-next.191a8c1",
|
|
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": {
|
|
@@ -162,6 +162,7 @@
|
|
|
162
162
|
"jsdoc-to-markdown": "^7.1.1",
|
|
163
163
|
"madge": "^5.0.1",
|
|
164
164
|
"npm-watch": "^0.11.0",
|
|
165
|
+
"rollup-plugin-visualizer": "^7.0.1",
|
|
165
166
|
"ts-morph": "^27.0.2",
|
|
166
167
|
"typescript": "^5.9.3",
|
|
167
168
|
"typescript-eslint": "^8.0.0",
|
|
@@ -195,4 +196,4 @@
|
|
|
195
196
|
"module": "lib/needle-engine.js",
|
|
196
197
|
"typings": "lib/needle-engine.d.ts",
|
|
197
198
|
"types": "lib/needle-engine.d.ts"
|
|
198
|
-
}
|
|
199
|
+
}
|