@needle-tools/engine 5.1.11 → 5.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/dist/{needle-engine.bundle-ue2Lw4bF.js → needle-engine.bundle-9m-VdGg2.js} +10 -10
- package/dist/{needle-engine.bundle-d-dLyN3s.min.js → needle-engine.bundle-BmdWLmLa.min.js} +2 -2
- package/dist/{needle-engine.bundle-n5YALNtc.umd.cjs → needle-engine.bundle-DdH96IqH.umd.cjs} +3 -3
- package/dist/needle-engine.d.ts +6 -6
- package/dist/needle-engine.js +509 -509
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/api.d.ts +1 -1
- package/lib/engine/api.js +1 -1
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/engine_init.js +2 -2
- package/lib/engine/engine_init.js.map +1 -1
- package/lib/engine/engine_license.d.ts +7 -7
- package/lib/engine/engine_license.js +71 -71
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine/engine_networking_blob.js +3 -3
- package/lib/engine/engine_networking_blob.js.map +1 -1
- package/lib/engine/engine_utils_qrcode.js +2 -2
- package/lib/engine/engine_utils_qrcode.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +5 -5
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.js +2 -2
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
- package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
- package/lib/engine/xr/TempXRContext.js +2 -2
- package/lib/engine/xr/TempXRContext.js.map +1 -1
- package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
- package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
- package/package.json +1 -1
- package/plugins/common/license.js +4 -4
- package/plugins/vite/license.js +4 -4
- package/src/engine/api.ts +1 -1
- package/src/engine/engine_init.ts +2 -2
- package/src/engine/engine_license.ts +68 -68
- package/src/engine/engine_networking_blob.ts +3 -3
- package/src/engine/engine_utils_qrcode.ts +2 -2
- package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
- package/src/engine/webcomponents/needle menu/needle-menu.ts +5 -5
- package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
- package/src/engine/webcomponents/needle-engine.ts +2 -2
- package/src/engine/xr/TempXRContext.ts +2 -2
- package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,7 @@ All notable changes to this package will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
## [5.1.
|
|
7
|
+
## [5.1.12] - 2026-08-13
|
|
8
8
|
- Fix: mirrored and negatively-scaled instanced meshes now render correctly (NE-7069)
|
|
9
9
|
|
|
10
10
|
## [5.1.10] - 2026-08-07
|
|
@@ -2331,11 +2331,11 @@ Vo('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"]
|
|
|
2331
2331
|
Vo('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";');
|
|
2332
2332
|
Vo('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";');
|
|
2333
2333
|
Vo('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";');
|
|
2334
|
-
Vo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.
|
|
2334
|
+
Vo('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.12";');
|
|
2335
2335
|
Vo('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";');
|
|
2336
|
-
Vo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Aug 13 2026
|
|
2336
|
+
Vo('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Aug 13 2026 13:15:09 GMT+0000 (Coordinated Universal Time)";');
|
|
2337
2337
|
Vo('globalThis["__NEEDLE_PUBLIC_KEY__"] = "' + NEEDLE_PUBLIC_KEY + '";');
|
|
2338
|
-
const gi = "5.1.
|
|
2338
|
+
const gi = "5.1.12", Qc = "undefined", Tu = "Thu Aug 13 2026 13:15:09 GMT+0000 (Coordinated Universal Time)";
|
|
2339
2339
|
Nw && console.log(`Engine version: ${gi} (generator: ${Qc})
|
|
2340
2340
|
Project built at ${Tu}`);
|
|
2341
2341
|
const Pr = NEEDLE_PUBLIC_KEY, As = "needle_isActiveInHierarchy", wa = "builtin_components", Qd = "needle_editor_guid";
|
|
@@ -47228,7 +47228,7 @@ class tf {
|
|
|
47228
47228
|
}
|
|
47229
47229
|
// private async handleRuntimeLicense(loadingElement: HTMLElement) {
|
|
47230
47230
|
// // First check if we have a commercial license
|
|
47231
|
-
// let commercialLicense =
|
|
47231
|
+
// let commercialLicense = $uxbFepO();
|
|
47232
47232
|
// // if it's the case then we don't need to perform a runtime check
|
|
47233
47233
|
// if (commercialLicense) return;
|
|
47234
47234
|
// // If we don't have a commercial license, then we need to display our message
|
|
@@ -47246,10 +47246,10 @@ class tf {
|
|
|
47246
47246
|
// nonCommercialContainer.style.opacity = "0";
|
|
47247
47247
|
// loadingElement.appendChild(nonCommercialContainer);
|
|
47248
47248
|
// // Use the runtime license check
|
|
47249
|
-
// if (!isDevEnvironment() &&
|
|
47249
|
+
// if (!isDevEnvironment() && UxRDt) {
|
|
47250
47250
|
// if (debugLicense) console.log("Waiting for runtime license check");
|
|
47251
|
-
// await
|
|
47252
|
-
// commercialLicense =
|
|
47251
|
+
// await UxRDt;
|
|
47252
|
+
// commercialLicense = $uxbFepO();
|
|
47253
47253
|
// }
|
|
47254
47254
|
// if (commercialLicense) return;
|
|
47255
47255
|
// nonCommercialContainer.style.transition = "opacity .5s ease-in-out";
|
|
@@ -48955,6 +48955,7 @@ const yB = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
48955
48955
|
export {
|
|
48956
48956
|
Gm as $componentName,
|
|
48957
48957
|
QB as $physicsKey,
|
|
48958
|
+
Tn as $uxbFepO,
|
|
48958
48959
|
_e as ActionBuilder,
|
|
48959
48960
|
eL as ActionCollection,
|
|
48960
48961
|
Pi as ActionModel,
|
|
@@ -49345,10 +49346,10 @@ export {
|
|
|
49345
49346
|
K_ as XRRig,
|
|
49346
49347
|
mi as XRState,
|
|
49347
49348
|
Rs as XRStateFlag,
|
|
49349
|
+
mf as _$EHSDVcNK,
|
|
49350
|
+
Io as _$VfAckLjB,
|
|
49348
49351
|
mB as __Ignore,
|
|
49349
49352
|
_j as __internalNotifyObjectDestroyed,
|
|
49350
|
-
mf as __nlZsk,
|
|
49351
|
-
Tn as __zrAx,
|
|
49352
49353
|
As as activeInHierarchyFieldName,
|
|
49353
49354
|
jm as addAttributeChangeCallback,
|
|
49354
49355
|
zs as addComponent,
|
|
@@ -49484,7 +49485,6 @@ export {
|
|
|
49484
49485
|
SB as nameof,
|
|
49485
49486
|
VP as nameofFactory,
|
|
49486
49487
|
dj as needle,
|
|
49487
|
-
Io as oMxKl,
|
|
49488
49488
|
Fx as objectSerializer,
|
|
49489
49489
|
vT as offBeforeXRSession,
|
|
49490
49490
|
bT as offXRSessionEnd,
|
|
@@ -140,7 +140,7 @@ void main(){
|
|
|
140
140
|
#__vconsole .vc-mask {
|
|
141
141
|
overflow: hidden;
|
|
142
142
|
}
|
|
143
|
-
`,Tr?.prepend(i),o===!0&&vv()<=0&&Yv(),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.":"")),Wc=!1,wi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function cM(){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"),wi?.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 yf="padding: 10px; font-family: monospace;",Zv="margin-bottom: 10px;",Ar="margin-bottom: 10px; margin-top: 15px;",hM="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",Jv="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",dM=Jv,uM=Jv+" word-break: break-all;";function no(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${hM}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${dM}'>${i.label}</td><td style='${uM}'>${n}</td></tr>`}return t+="</tbody></table>",t}function ew(){try{if(bu())return"\u2705"}catch{}return"\u274C"}function pM(){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='${yf}'>`;const i=SM();t+=`<h3 style='${Zv}'>Device: ${i}</h3>`,t+=no([{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+=no(n,!1)),t+="</div>",t+=`<div style='${yf} margin-top: 20px;'>`,t+=`<h3 style='${Zv}'>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:ew()}];t+=no(l,!1),t+="</div>",e(t)}),o}function mM(){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='${yf}'>`;const i=gM();i.length>0&&(t+=`<h3 style='${Ar}'>General GPU Info</h3>`,t+=no(i,!1));const n=yM();n.length>0&&(t+=`<h3 style='${Ar}'>WebGL</h3>`,t+=no(n,!1));const s=bM();s.length>0&&(t+=`<h3 style='${Ar}'>WebGL 2 Features</h3>`,t+=no(s,!1));const r=_M();r.length>0&&(t+=`<h3 style='${Ar}'>WebGL Limits</h3>`,t+=no(r,!1));const a=vM();a.length>0&&(t+=`<h3 style='${Ar}'>Texture Formats</h3>`,t+=no(a,!1));const l=await wM();if(l.length>0&&(t+=`<h3 style='${Ar}'>WebGPU</h3>`,t+=no(l,!1)),I.isSafari()){const c=xM();c.length>0&&(t+=`<h3 style='${Ar}'>Safari GPU Info</h3>`,t+=no(c,!1))}t+="</div>",e(t)}),o}function gM(){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=tw();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=fM(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 fM(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 yM(){const o=[],e=tw();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:ew()})),o}function bM(){const o=[];try{const e=bu();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 _M(){const o=[];try{const e=Qv();if(!e)return o;const t=e instanceof WebGL2RenderingContext;o.push({label:"\u{1F4CF} Max Texture Size",value:e.getParameter(e.MAX_TEXTURE_SIZE).toString()}),o.push({label:"\u{1F3A8} Max Renderbuffer Size",value:e.getParameter(e.MAX_RENDERBUFFER_SIZE).toString()}),o.push({label:"\u{1F517} Max Vertex Attribs",value:e.getParameter(e.MAX_VERTEX_ATTRIBS).toString()}),o.push({label:"\u{1F3AF} Max Texture Units",value:e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS).toString()}),t&&(o.push({label:"\u26A1 Max Samples",value:e.getParameter(e.MAX_SAMPLES).toString()}),o.push({label:"\u{1F504} Max Uniform Buffer Bindings",value:e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),o.push({label:"\u{1F4D0} Max 3D Texture Size",value:e.getParameter(e.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return o}function vM(){const o=[];try{yu()&&(o.push({label:"WebGL 1 RGBA",value:"\u2705"}),o.push({label:"WebGL 1 RGB",value:"\u2705"}));const e=bu();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 wM(){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 tw(){try{const o=Qv();if(!o)return null;const e=o.getExtension("WEBGL_debug_renderer_info"),t=e?o.getParameter(e.UNMASKED_RENDERER_WEBGL):o.getParameter(o.RENDERER),i=e?o.getParameter(e.UNMASKED_VENDOR_WEBGL):o.getParameter(o.VENDOR),n=o.getParameter(o.VERSION);let s;if(t&&t.includes("ANGLE")){const r=t.match(/ANGLE \(([^)]+)\)/);r&&(s=r[1])}return{renderer:t,vendor:i,version:n,angle:s}}catch{return null}}function xM(){const o=[];try{const e=yu();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=yu();e&&(e.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&o.push({label:"\u{1F5DC}\uFE0F PVRTC Support",value:"\u2705"})}catch{}return o}function SM(){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 CM(){return document.querySelector("#__vconsole .vc-switch")||null}function PM(){return document.querySelector("#__vconsole")||null}const _u=x("debugtypes");class kM{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){_u&&console.warn("TypeStore: Created",this)}add(e,t){_u&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?_u&&i!==t&&console.warn("Type name exists multiple times in your project and may lead to runtime errors:",e):(this._types.set(e,t),this._reverseTypes.set(t,e))}addLazy(e,t){this._types.has(e)||this._lazyLoaders.set(e,t)}get(e){return this._types.get(e)||null}async getAsync(e){const t=this._types.get(e);if(t)return t;const i=this._lazyLoaders.get(e);if(i){_u&&console.warn("LAZY LOAD TYPE",e);const n=await i();return this.add(e,n),this._lazyLoaders.delete(e),n}return null}getKey(e){return this._reverseTypes.get(e)||null}}const OM=Symbol("BuiltInType"),k=new kM,bf=function(o){k.get(o.name)||k.add(o.name,o)};class EM{context;mixers=[];constructor(e){this.context=e}onDestroy(){this.mixers.forEach(e=>e.stopAllAction()),this.mixers.length=0}registerAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(e)||this.mixers.push(e)}unregisterAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const t=this.mixers.indexOf(e);t!==-1&&this.mixers.splice(t,1)}}var oi;(o=>{function e(h,d){const p=h.getRoot();return p&&(p.userData.static||p.matrixAutoUpdate===!1||p.matrixWorldAutoUpdate===!1)?((d===!0||d===void 0&&E())&&console.warn(`AnimationUtils: The root object (${p.name||p.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:p.userData.static,name:p.userData.name,tag:p.userData.tag,matrixAutoUpdate:p.matrixAutoUpdate,matrixWorldAutoUpdate:p.matrixWorldAutoUpdate}),!1):!0}o.testIfRootCanAnimate=e;function t(h){return h._actions||null}o.tryGetActionsFromMixer=t;function i(h,d){if(d||(d=new Array),h)h.animations&&d.push(...h.animations);else return d;if(h.children)for(const p of h.children)i(p,d);return d}o.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function s(h,d,p){if(!h)return;if(h[n]===void 0){if(!p)return;h[n]=new Set}const m=h[n];p?m.add(d):m.has(d)&&m.delete(d)}o.setObjectAnimated=s;function r(h){if(!h)return!1;const d=h[n];return d!==void 0&&d.size>0}o.getObjectAnimated=r;function a(h){if(!h||!h.animations)return console.debug("No animations found in file"),null;const d="scene"in h?h.scene:h,p=new Array;for(let g=0;g<h.animations.length;g++){const y=h.animations[g];if(!y.tracks||y.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const b in y.tracks){const f=y.tracks[b],_=$a.parseTrackName(f.name);let w=$a.findNode(d,_.nodeName);if(!w){const O=f.__objectName??f.name.substring(0,f.name.indexOf("."));if(w=d.getObjectByProperty("uuid",O),!w)continue}let S=m(w)||m(d);if(!S){const O=k.get("Animation");if(S=d.addComponent(O),!S){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}p.push(S),S.addClip&&S.addClip(y)}}return p;function m(g){if(!g)return null;const y=g.userData?.components;if(y&&y.length>0)for(let b=0;b<y.length;b++){const f=y[b];if(f.isAnimationComponent===!0)return f}return m(g.parent)}}o.autoplayAnimations=a;function l(){return new Gt("empty",0,[])}o.emptyClip=l;function c(h){const d=h?.duration??.3;let p={x:1,y:1,z:1};h?.scale!==void 0&&(typeof h.scale=="number"?p={x:h.scale,y:h.scale,z:h.scale}:p=h.scale);const m=h?.type??"linear",g=h?.scaleFactor??1.2,y=new Array,b=new Array;switch(m){case"linear":y.push(0,d),b.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g);break;case"spring":y.push(0,d*.3,d*.5,d*.7,d*.9,d),b.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g,p.x*.9,p.y*.9,p.z*.9,p.x*1.05,p.y*1.05,p.z*1.05,p.x*.98,p.y*.98,p.z*.98,p.x,p.y,p.z);break}const f=new ck(".scale",y,b);return new Gt("scale",y[y.length-1],[f])}o.createScaleClip=c})(oi||(oi={}));const Ze=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=iw(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=iw(t)}return function(e,t){if(!e){const n=typeof t=="string"?t:t.name;console.warn(`@serializable without a target at '${n}'.`);return}typeof t!="string"&&(t=t.name),Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});const i=e.$serializedTypes=e.$serializedTypes||{};i[t]=o}};function iw(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const nw=x("debugcomponentevents");class vu{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),nw&&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(nw&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const ow=x("debugdefines");As('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),As('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),As('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),As('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),As('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.11";'),As('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),As('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Aug 13 2026 12:42:37 GMT+0000 (Coordinated Universal Time)";'),As('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const si="5.1.11",Za="undefined",Vc="Thu Aug 13 2026 12:42:37 GMT+0000 (Coordinated Universal Time)";ow&&console.log(`Engine version: ${si} (generator: ${Za})
|
|
143
|
+
`,Tr?.prepend(i),o===!0&&vv()<=0&&Yv(),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.":"")),Wc=!1,wi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function cM(){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"),wi?.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 yf="padding: 10px; font-family: monospace;",Zv="margin-bottom: 10px;",Ar="margin-bottom: 10px; margin-top: 15px;",hM="width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;",Jv="border: 1px solid rgba(0,0,0,0.1); padding: 5px;",dM=Jv,uM=Jv+" word-break: break-all;";function no(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${hM}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${dM}'>${i.label}</td><td style='${uM}'>${n}</td></tr>`}return t+="</tbody></table>",t}function ew(){try{if(bu())return"\u2705"}catch{}return"\u274C"}function pM(){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='${yf}'>`;const i=SM();t+=`<h3 style='${Zv}'>Device: ${i}</h3>`,t+=no([{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+=no(n,!1)),t+="</div>",t+=`<div style='${yf} margin-top: 20px;'>`,t+=`<h3 style='${Zv}'>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:ew()}];t+=no(l,!1),t+="</div>",e(t)}),o}function mM(){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='${yf}'>`;const i=gM();i.length>0&&(t+=`<h3 style='${Ar}'>General GPU Info</h3>`,t+=no(i,!1));const n=yM();n.length>0&&(t+=`<h3 style='${Ar}'>WebGL</h3>`,t+=no(n,!1));const s=bM();s.length>0&&(t+=`<h3 style='${Ar}'>WebGL 2 Features</h3>`,t+=no(s,!1));const r=_M();r.length>0&&(t+=`<h3 style='${Ar}'>WebGL Limits</h3>`,t+=no(r,!1));const a=vM();a.length>0&&(t+=`<h3 style='${Ar}'>Texture Formats</h3>`,t+=no(a,!1));const l=await wM();if(l.length>0&&(t+=`<h3 style='${Ar}'>WebGPU</h3>`,t+=no(l,!1)),I.isSafari()){const c=xM();c.length>0&&(t+=`<h3 style='${Ar}'>Safari GPU Info</h3>`,t+=no(c,!1))}t+="</div>",e(t)}),o}function gM(){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=tw();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=fM(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 fM(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 yM(){const o=[],e=tw();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:ew()})),o}function bM(){const o=[];try{const e=bu();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 _M(){const o=[];try{const e=Qv();if(!e)return o;const t=e instanceof WebGL2RenderingContext;o.push({label:"\u{1F4CF} Max Texture Size",value:e.getParameter(e.MAX_TEXTURE_SIZE).toString()}),o.push({label:"\u{1F3A8} Max Renderbuffer Size",value:e.getParameter(e.MAX_RENDERBUFFER_SIZE).toString()}),o.push({label:"\u{1F517} Max Vertex Attribs",value:e.getParameter(e.MAX_VERTEX_ATTRIBS).toString()}),o.push({label:"\u{1F3AF} Max Texture Units",value:e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS).toString()}),t&&(o.push({label:"\u26A1 Max Samples",value:e.getParameter(e.MAX_SAMPLES).toString()}),o.push({label:"\u{1F504} Max Uniform Buffer Bindings",value:e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),o.push({label:"\u{1F4D0} Max 3D Texture Size",value:e.getParameter(e.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return o}function vM(){const o=[];try{yu()&&(o.push({label:"WebGL 1 RGBA",value:"\u2705"}),o.push({label:"WebGL 1 RGB",value:"\u2705"}));const e=bu();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 wM(){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 tw(){try{const o=Qv();if(!o)return null;const e=o.getExtension("WEBGL_debug_renderer_info"),t=e?o.getParameter(e.UNMASKED_RENDERER_WEBGL):o.getParameter(o.RENDERER),i=e?o.getParameter(e.UNMASKED_VENDOR_WEBGL):o.getParameter(o.VENDOR),n=o.getParameter(o.VERSION);let s;if(t&&t.includes("ANGLE")){const r=t.match(/ANGLE \(([^)]+)\)/);r&&(s=r[1])}return{renderer:t,vendor:i,version:n,angle:s}}catch{return null}}function xM(){const o=[];try{const e=yu();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=yu();e&&(e.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&o.push({label:"\u{1F5DC}\uFE0F PVRTC Support",value:"\u2705"})}catch{}return o}function SM(){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 CM(){return document.querySelector("#__vconsole .vc-switch")||null}function PM(){return document.querySelector("#__vconsole")||null}const _u=x("debugtypes");class kM{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){_u&&console.warn("TypeStore: Created",this)}add(e,t){_u&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?_u&&i!==t&&console.warn("Type name exists multiple times in your project and may lead to runtime errors:",e):(this._types.set(e,t),this._reverseTypes.set(t,e))}addLazy(e,t){this._types.has(e)||this._lazyLoaders.set(e,t)}get(e){return this._types.get(e)||null}async getAsync(e){const t=this._types.get(e);if(t)return t;const i=this._lazyLoaders.get(e);if(i){_u&&console.warn("LAZY LOAD TYPE",e);const n=await i();return this.add(e,n),this._lazyLoaders.delete(e),n}return null}getKey(e){return this._reverseTypes.get(e)||null}}const OM=Symbol("BuiltInType"),k=new kM,bf=function(o){k.get(o.name)||k.add(o.name,o)};class EM{context;mixers=[];constructor(e){this.context=e}onDestroy(){this.mixers.forEach(e=>e.stopAllAction()),this.mixers.length=0}registerAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(e)||this.mixers.push(e)}unregisterAnimationMixer(e){if(!e){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const t=this.mixers.indexOf(e);t!==-1&&this.mixers.splice(t,1)}}var oi;(o=>{function e(h,d){const p=h.getRoot();return p&&(p.userData.static||p.matrixAutoUpdate===!1||p.matrixWorldAutoUpdate===!1)?((d===!0||d===void 0&&E())&&console.warn(`AnimationUtils: The root object (${p.name||p.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:p.userData.static,name:p.userData.name,tag:p.userData.tag,matrixAutoUpdate:p.matrixAutoUpdate,matrixWorldAutoUpdate:p.matrixWorldAutoUpdate}),!1):!0}o.testIfRootCanAnimate=e;function t(h){return h._actions||null}o.tryGetActionsFromMixer=t;function i(h,d){if(d||(d=new Array),h)h.animations&&d.push(...h.animations);else return d;if(h.children)for(const p of h.children)i(p,d);return d}o.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function s(h,d,p){if(!h)return;if(h[n]===void 0){if(!p)return;h[n]=new Set}const m=h[n];p?m.add(d):m.has(d)&&m.delete(d)}o.setObjectAnimated=s;function r(h){if(!h)return!1;const d=h[n];return d!==void 0&&d.size>0}o.getObjectAnimated=r;function a(h){if(!h||!h.animations)return console.debug("No animations found in file"),null;const d="scene"in h?h.scene:h,p=new Array;for(let g=0;g<h.animations.length;g++){const y=h.animations[g];if(!y.tracks||y.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const b in y.tracks){const f=y.tracks[b],_=$a.parseTrackName(f.name);let w=$a.findNode(d,_.nodeName);if(!w){const O=f.__objectName??f.name.substring(0,f.name.indexOf("."));if(w=d.getObjectByProperty("uuid",O),!w)continue}let S=m(w)||m(d);if(!S){const O=k.get("Animation");if(S=d.addComponent(O),!S){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}p.push(S),S.addClip&&S.addClip(y)}}return p;function m(g){if(!g)return null;const y=g.userData?.components;if(y&&y.length>0)for(let b=0;b<y.length;b++){const f=y[b];if(f.isAnimationComponent===!0)return f}return m(g.parent)}}o.autoplayAnimations=a;function l(){return new Gt("empty",0,[])}o.emptyClip=l;function c(h){const d=h?.duration??.3;let p={x:1,y:1,z:1};h?.scale!==void 0&&(typeof h.scale=="number"?p={x:h.scale,y:h.scale,z:h.scale}:p=h.scale);const m=h?.type??"linear",g=h?.scaleFactor??1.2,y=new Array,b=new Array;switch(m){case"linear":y.push(0,d),b.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g);break;case"spring":y.push(0,d*.3,d*.5,d*.7,d*.9,d),b.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g,p.x*.9,p.y*.9,p.z*.9,p.x*1.05,p.y*1.05,p.z*1.05,p.x*.98,p.y*.98,p.z*.98,p.x,p.y,p.z);break}const f=new ck(".scale",y,b);return new Gt("scale",y[y.length-1],[f])}o.createScaleClip=c})(oi||(oi={}));const Ze=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=iw(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=iw(t)}return function(e,t){if(!e){const n=typeof t=="string"?t:t.name;console.warn(`@serializable without a target at '${n}'.`);return}typeof t!="string"&&(t=t.name),Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});const i=e.$serializedTypes=e.$serializedTypes||{};i[t]=o}};function iw(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const nw=x("debugcomponentevents");class vu{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),nw&&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(nw&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const ow=x("debugdefines");As('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),As('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),As('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),As('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),As('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.12";'),As('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),As('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Aug 13 2026 13:15:09 GMT+0000 (Coordinated Universal Time)";'),As('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const si="5.1.12",Za="undefined",Vc="Thu Aug 13 2026 13:15:09 GMT+0000 (Coordinated Universal Time)";ow&&console.log(`Engine version: ${si} (generator: ${Za})
|
|
144
144
|
Project built at ${Vc}`);const Ts=NEEDLE_PUBLIC_KEY,oo="needle_isActiveInHierarchy",Ir="builtin_components",Hc="needle_editor_guid";function As(o){try{(0,eval)(o)}catch(e){ow&&console.error(e)}}globalThis.NEEDLE_USE_RAPIER=globalThis.NEEDLE_USE_RAPIER!==void 0?globalThis.NEEDLE_USE_RAPIER:!0,globalThis.NEEDLE_USE_POSTPROCESSING=globalThis.NEEDLE_USE_POSTPROCESSING!==void 0?globalThis.NEEDLE_USE_POSTPROCESSING:!0;const _f={experimentalSmartHierarchyUpdate:!1},Ui=Symbol("shadowDomOwner"),MM=x("debugpatch");function wu(o,e,t,i){const n=MM===e;if(!t&&!i)return;const s=e+"___needle";TM(o,e,t,i);const r=Object.getOwnPropertyDescriptor(o,e),a=o[e];n&&console.log("Patch",o.constructor.name,e,r,a),r?(n&&console.log("Apply patch with existing descriptor",o.constructor.name,e,r),typeof r.value=="function"&&(o[e]=rw(r.value,o,e))):(n&&console.log("Create patch with new property",o.constructor.name,e,r),Object.defineProperty(o,e,{set:function(l){if(typeof l=="function")this[s]=rw(l,o,e);else{const c=this[s];aw(o,e,this,c,l),this[s]=l,lw(o,e,this,c,l)}},get:function(){const l=this[s];return typeof l=="function"&&l[s]?l[s]:l}}))}function RM(o,e,t){const i=wf(o,e);if(i)for(let n=i.length-1;n>=0;n--){const s=i[n];s.prefix===t&&(s.prefix=null),s.postfix===t&&(s.postfix=null),!s.prefix&&!s.postfix&&i.splice(n,1)}}const sw=Symbol("Needle:Patches:WrappedFunction");function rw(o,e,t){if(o[sw])return o;const i=function(...n){aw(e,t,this,...n);const s=o.apply(this,n);return lw(e,t,this,s,...n),s};return i[sw]=!0,i}const xu="Needle:Patches";function vf(){return globalThis[xu]||(globalThis[xu]=new WeakMap),globalThis[xu]}function wf(o,e){const t=vf().get(o);return t?t.get(e):null}function TM(o,e,t,i){let n=vf().get(o);n||(n=new Map,vf().set(o,n));let s=n.get(e);s||(s=[],n.set(e,s)),s.push({prefix:t,postfix:i})}function aw(o,e,t,...i){if(!t)return;const n=wf(o,e);if(n)for(const s of n)s.prefix?.call(t,...i)}function lw(o,e,t,i,...n){if(!t)return;const s=wf(o,e);if(s)for(const r of s)r.postfix?.call(t,i,...n)}function AM(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 E()&&console.debug("Spector available: Add '?spector=<frame>' to the URL to enable it and capture a frame.")}}function cw(o){const e=o;return!!(e.parser&&e.parser.json)}var Su=(o=>(o[o.None=0]="None",o[o.DontExport=1]="DontExport",o))(Su||{});const Cu=Symbol("component-name");function Pu(o){return o&&typeof o=="object"&&o.isComponent}const IM=Symbol("object"),xf=new Bi(()=>new v,20);class hw{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return xf.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return xf.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return xf.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 dw{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 uw{object;collider;constructor(e,t){this.object=e,this.collider=t}}class mg{constructor(e){this.context=e,this.root.style.cssText=`
|
|
145
145
|
position: absolute;
|
|
146
146
|
width: 1px; height: 1px;
|
|
@@ -1750,4 +1750,4 @@ Needle Engine: finished loading `+i+`
|
|
|
1750
1750
|
---------------------------------
|
|
1751
1751
|
\u2022 `+r.passes.map(d=>d.name||d.constructor.name+"*").join(`
|
|
1752
1752
|
\u2022 `)+`
|
|
1753
|
-
`),Ti&&this._onCreateEffectsDebug(this._composer,s)}createPassForMergeableEffects(e,t,i,n){if(e.length>0){const s=new A.POSTPROCESSING.MODULE.EffectPass(i,...e);s.name=e.map(r=>r.name).join(", "),s.mainScene=n,s.enabled=!0,s.renderToScreen=!1,t.addPass(s),e.length=0}}handleDevicePixelRatio(){typeof this.context.devicePixelRatio=="number"&&this.context.requestSizeUpdate()}_menuEntry=null;_passIndices=null;_onCreateEffectsDebug(e,t){if(Ti==="passes"){const i=new A.POSTPROCESSING.MODULE.DepthEffect({blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.NORMAL,inverted:!0});i.name="Depth Effect";const n=new A.POSTPROCESSING.MODULE.EffectPass(t,i);if(n.name="Depth Effect Pass",n.enabled=!1,e.passes.push(n),this._passIndices!==null){const r=[e.passes[0]];this._passIndices.length>0&&r.push(...this._passIndices.filter(a=>a!==0).map(a=>e.passes[a]).filter(a=>a)),r.length>0&&console.log("[PostProcessing] Passes (selected) \u2192",r),e.passes.length=0;for(const a of r)a.enabled=!0,a.renderToScreen=!1,e.addPass(a)}const s=this.context.menu;if(s&&this._passIndices===null){this._menuEntry&&this._menuEntry.remove();const r=document.createElement("select");r.multiple=!0;const a=document.createElement("option");a.innerText="Final Output",a.value="-1",r.appendChild(a);for(const l of e.passes){const c=document.createElement("option");c.innerText=l.name,c.value=`${e.passes.indexOf(l)}`,c.title=l.name,r.appendChild(c)}s.appendChild(r),this._menuEntry=r,r.addEventListener("change",()=>{const l=Array.from(r.selectedOptions).map(c=>parseInt(c.value));l.length===1&&l[0]===-1?this._passIndices=null:this._passIndices=l,this.applyEffects(this.context)})}}}}const OB=Object.freeze(Object.defineProperty({__proto__:null,PostProcessingHandler:Ec},Symbol.toStringTag,{value:"Module"}));class vg{_name;_tracks=[];_currentTrack=null;_pendingSignals=[];_idProvider;constructor(e,t){this._name=e,this._idProvider=new St(t??Date.now())}static create(e,t){return new vg(e??"Timeline",t)}animationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Animation,t??null),this}audioTrack(e,t,i){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Audio,t??null),this._currentTrack.volume=i,this}activationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Activation,t??null),this}controlTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Control,null),this}signalTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Signal,t??null),this}markerTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Marker,null),this}clip(e,t){if(!this._currentTrack)throw new Error("TimelineBuilder: .clip() must be called after a track method (e.g. .animationTrack())");this.commitInlineTracks();const i=this._currentTrack;switch(i.type){case Pe.Animation:{let n;if(e instanceof Gt)n=e;else{const h=Array.isArray(e)?e:[e],d=i.outputs[0],p=d instanceof M?d:d!=null&&"gameObject"in d?d.gameObject:void 0;n=vh(h,p)}const s=t??{},r=s.duration??n.duration,a=s.start??i.cursor,l=a+r,c={start:a,end:l,duration:r,timeScale:s.speed??1,clipIn:s.clipIn??0,easeInDuration:s.easeIn??0,easeOutDuration:s.easeOut??0,preExtrapolationMode:s.preExtrapolation??rt.None,postExtrapolationMode:s.postExtrapolation??rt.None,reversed:s.reversed,asset:{clip:n,loop:s.loop??!1,duration:n.duration,removeStartOffset:s.removeStartOffset??!1}};i.clips.push(c),i.cursor=l;break}case Pe.Audio:{const n=e,s=t??{},r=s.duration,a=s.start??i.cursor,l=a+r,c={start:a,end:l,duration:r,timeScale:s.speed??1,clipIn:0,easeInDuration:s.easeIn??0,easeOutDuration:s.easeOut??0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{clip:n,loop:s.loop??!1,volume:s.volume??1}};i.clips.push(c),i.cursor=l;break}case Pe.Activation:{const n=e,s=n.start??i.cursor,r=s+n.duration,a={start:s,end:r,duration:n.duration,timeScale:1,clipIn:0,easeInDuration:n.easeIn??0,easeOutDuration:n.easeOut??0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{}};i.clips.push(a),i.cursor=r;break}case Pe.Control:{const n=e,s=t??{},r=s.start??i.cursor,a=s.duration,l=r+a,c={start:r,end:l,duration:a,timeScale:1,clipIn:0,easeInDuration:0,easeOutDuration:0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{sourceObject:n,controlActivation:s.controlActivation??!0,updateDirector:s.updateDirector??!0}};i.clips.push(c),i.cursor=l;break}default:throw new Error(`TimelineBuilder: .clip() is not supported on track type "${i.type}"`)}return this}marker(e,t,i){if(!this._currentTrack)throw new Error("TimelineBuilder: .marker() must be called after a track method");if(this._currentTrack.type!==Pe.Signal&&this._currentTrack.type!==Pe.Marker)throw new Error(`TimelineBuilder: .marker() is only supported on signal and marker tracks, not "${this._currentTrack.type}"`);const n={type:Rh.Signal,time:e,retroActive:i?.retroActive??!1,emitOnce:i?.emitOnce??!1,asset:t};return this._currentTrack.markers.push(n),e>this._currentTrack.cursor&&(this._currentTrack.cursor=e),this}signal(e,t,i){if(!this._currentTrack)throw new Error("TimelineBuilder: .signal() must be called after a track method");if(this._currentTrack.type!==Pe.Signal&&this._currentTrack.type!==Pe.Marker)throw new Error(`TimelineBuilder: .signal() is only supported on signal and marker tracks, not "${this._currentTrack.type}"`);const n=this._idProvider.generateUUID(),s=this._tracks.indexOf(this._currentTrack),r={type:Rh.Signal,time:e,retroActive:i?.retroActive??!1,emitOnce:i?.emitOnce??!1,asset:n};return this._currentTrack.markers.push(r),this._pendingSignals.push({trackIndex:s,guid:n,callback:t}),e>this._currentTrack.cursor&&(this._currentTrack.cursor=e),this}muted(e=!0){if(!this._currentTrack)throw new Error("TimelineBuilder: .muted() must be called after a track method");return this._currentTrack.muted=e,this}track(e,t,i,n){if(!this._currentTrack)throw new Error("TimelineBuilder: .track() must be called after .animationTrack()");if(this._currentTrack.type!==Pe.Animation)throw new Error("TimelineBuilder: .track() is only supported on animation tracks");return this._currentTrack.inlineTracks.push(zy(e,t,i,n)),this}build(){this.commitInlineTracks();const e=this._tracks.map(t=>{const i={name:t.name,type:t.type,muted:t.muted,outputs:t.outputs};return t.clips.length>0&&(i.clips=t.clips),t.markers.length>0&&(i.markers=t.markers),t.volume!==void 0&&(i.volume=t.volume),t.trackOffset!==void 0&&(i.trackOffset=t.trackOffset),i});return{name:this._name,tracks:e}}install(e){const t=this.build();if(this._pendingSignals.length>0){const i=e.gameObject;let n=P.getComponent(i,Zr);n||(n=P.addComponent(i,Zr)),n.events||(n.events=[]);for(const s of this._pendingSignals){const r=new Mh;r.guid=s.guid;const a=new Pl;a.signal=r,a.reaction=new se([s.callback]),n.events.push(a);const l=t.tracks[s.trackIndex];l&&!l.outputs.includes(n)&&l.outputs.push(n)}}return e.playableAsset=t,t}pushTrack(e,t,i){const n={name:e,type:t,muted:!1,outputs:i?[i]:[],clips:[],markers:[],cursor:0,inlineTracks:[]};return this._tracks.push(n),n}commitInlineTracks(){if(!this._currentTrack||this._currentTrack.inlineTracks.length===0)return;const e=this._currentTrack,t=e.outputs[0],i=t instanceof M?t:t!=null&&"gameObject"in t?t.gameObject:void 0,n=vh(e.inlineTracks,i),s=e.cursor,r=n.duration,a={start:s,end:s+r,duration:r,timeScale:1,clipIn:0,easeInDuration:0,easeOutDuration:0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{clip:n,loop:!1,duration:n.duration,removeStartOffset:!1}};e.clips.push(a),e.cursor=s+r,e.inlineTracks=[]}}class VP{}const EB=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:ye,ActionCollection:_C,ActionModel:Ai,AlignmentConstraint:jh,Animation:Xt,AnimationBuilder:yg,AnimationCurve:sd,AnimationExtension:pm,Animator:Ot,AnimatorController:co,Antialiasing:cd,Attractor:rc,AudioExtension:La,AudioListener:Zo,AudioSource:Gi,Avatar:Ks,AvatarMarker:ft,AxesHelper:Ol,AxisRotationConstraint:p0,BaseUIComponent:xn,BasicIKConstraint:s0,BehaviorExtension:rb,BehaviorModel:Wt,BloomEffect:Nm,BoxCollider:Lp,BoxGizmo:ma,BoxHelperComponent:Vt,Button:ms,CallInfo:Ns,Camera:ci,CameraTargetReachedEvent:Eh,Canvas:Zl,CanvasGroup:nr,CapsuleCollider:Jo,ChangeMaterialOnClick:Q0,ChangeTransformOnClick:ha,CharacterController:ta,CharacterControllerInput:ts,ChromaticAberration:hd,ClickThrough:og,ColorAdjustments:lr,ColorBySpeedModule:oc,ColorOverLifetimeModule:Lm,ContactShadows:Bh,CursorFollow:Ea,CustomBranding:pa,Deletable:h0,DeleteBox:wr,DepthOfField:Gn,DeviceFlag:Dp,DocumentExtension:WP,DragControls:sa,DragProfile:Up,DropListener:os,Duplicatable:I0,EffectWrapper:dd,EmissionModule:ds,EmphasizeOnClick:Wl,EnvironmentScene:kp,EventList:se,EventListEvent:Uy,EventSystem:bi,EventTrigger:nm,FieldWithDefault:VS,FixedJoint:Cb,FixedRotationAxesConstraint:_S,Fog:Jl,GltfExport:F0,GltfExportBox:j0,GrabPointPlaneConstraint:zh,Gradient:fa,Graphic:td,GraphicRaycaster:bp,GridHelper:ec,GridLayoutGroup:gb,GridSnapConstraint:jp,GroundProjectedEnv:uo,GroupActionModel:ca,HideOnStart:Pn,HingeJoint:od,HorizontalLayoutGroup:mb,get HoverAnimation(){return Mo},Image:uc,InheritVelocityModule:Ab,InputField:t_,InstanceHandle:za,InstancingHandler:Da,Interactable:c0,KeepRotationConstraint:Bp,KeepScaleConstraint:yS,Keyframe:Mi,LODGroup:Om,LODModel:ic,Light:Ft,LimitVelocityOverLifetimeModule:_t,LogStats:l0,LookAt:i_,LookAtConstraint:Qr,MainModule:Jt,MaskableGraphic:id,MeshCollider:qs,MeshRenderer:Nh,MinMaxCurve:Z,MinMaxGradient:ya,NeedleMenu:vo,NestedGltf:nc,Networking:Mb,NoiseModule:ve,ObjectRaycaster:hn,OffsetConstraint:ga,OpenURL:pc,OrbitControls:fe,Outline:Yl,Padding:ua,ParticleBurst:Im,ParticleSubEmitter:Ib,ParticleSystem:ld,ParticleSystemRenderer:fn,PhysicsExtension:ab,PixelationEffect:ud,PlaneHeightLockConstraint:m0,PlayAnimationOnClick:Vh,PlayAudioOnClick:Ys,PlayableDirector:kl,PlayerColor:Pc,PointerEventData:$d,PostProcessingHandler:Ec,PreliminaryAction:Vl,PreliminaryTrigger:Hh,RawImage:tg,Rect:LC,RectTransform:Vn,ReflectionProbe:is,RegisteredAnimationInfo:xr,RemoteSkybox:n0,Renderer:di,RendererLightmap:R0,Rigidbody:it,RotationBySpeedModule:gn,RotationOverLifetimeModule:Hn,ScaleLimitConstraint:d0,SceneSwitcher:nt,ScreenCapture:cr,ScreenSpaceAmbientOcclusion:us,ScreenSpaceAmbientOcclusionN8:qn,ScrollFollow:Ro,SeeThrough:Qb,SetActiveOnClick:Y0,ShadowCatcher:yd,ShapeModule:Tb,SharpeningEffect:md,SignalAsset:Mh,SignalReceiver:Zr,SignalReceiverEvent:Pl,SignalTrackHandler:Ah,Size:IC,SizeBySpeedModule:Ri,SizeOverLifetimeModule:ba,SkinnedMeshRenderer:T0,SmoothFollow:Xm,SnapToSurfaceConstraint:zp,SpatialGrabRaycaster:Ia,SpatialHtml:xd,SpatialTrigger:Qm,SpatialTriggerReceiver:Oo,SpectatorCamera:Ym,SphereCollider:El,SplineContainer:Pa,SplineData:Eo,SplineWalker:_n,Sprite:rs,SpriteData:Gl,SpriteRenderer:ki,SpriteSheet:Hl,SubEmitterSystem:Fm,SyncedCamera:Yb,SyncedRoom:Xn,SyncedTransform:Fn,TapGestureTrigger:Z0,TeleportTarget:vm,TestRunner:Zb,TestSimulateUserData:Jb,Text:Zt,TextBuilder:ub,TextExtension:Pm,TextureSheetAnimationModule:ei,TiltShiftEffect:Po,TimelineActivationTrack:Sp,TimelineAnimationTrack:Th,TimelineAudioTrack:Cs,TimelineBuilder:vg,TimelineControlTrack:Cp,TimelineMarkerTrack:xp,ToneMappingEffect:va,TrailModule:$e,TransformData:qe,TransformGizmo:ka,TriggerBuilder:Yt,TriggerModel:yr,UIRaycastUtils:Gy,UIRootComponent:Zh,USDZExporter:So,USDZText:Kl,USDZUIExtension:bb,UsageMarker:Fh,VariantAction:q0,VelocityOverLifetimeModule:Ke,VerticalLayoutGroup:pb,VideoPlayer:wt,get ViewBox(){return mt},Vignette:Sa,VisibilityAction:Gh,Voip:ps,Volume:gd,VolumeParameter:$,VolumeProfile:zm,WebARCameraBackground:kd,WebARSessionRoot:kn,WebXR:wm,WebXRImageTracking:yc,WebXRImageTrackingModel:vn,WebXRPlaneTracking:bs,WebXRTrackedImage:kc,XRControllerFollow:fs,XRControllerModel:as,XRControllerMovement:Qi,XRFlag:$n,XRRig:ag,XRState:yi,__Ignore:VP},Symbol.toStringTag,{value:"Module"}));var S_;(o=>{function e(t,i=!1,n=.75){const s=new Pa,r=1-j.clamp(n,0,1);return t.forEach((a,l)=>{const c=new v;l<t.length-1?c.subVectors(t[l+1],a).normalize().multiplyScalar(r):i&&t.length>1&&c.subVectors(t[0],a).normalize().multiplyScalar(r);const h=new Eo;h.position.copy(a),h.tangentIn.copy(c),h.tangentOut.copy(c),s.addKnot(h)}),s.closed=i,s}o.createFromPoints=e})(S_||(S_={}));class MB extends XO{constructor(){super(new Worker(URL.createObjectURL(new Blob([`import '${new URL("./generateMeshBVH.worker-DiCnZlf3.js",import.meta.url).toString()}';`],{type:"text/javascript"})),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(e,t,i={}){return new Promise((n,s)=>{if(t.getAttribute("position").isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");e.onerror=c=>{s(new Error(`[GenerateMeshBVHWorker] ${c.message||"Could not load worker."}`))},e.onmessage=c=>{const{data:h}=c;if(h.error)s(new Error(h.error)),e.onmessage=null;else if(h.serialized){const{serialized:d,position:p}=h,m=QO.deserialize(d,t,{setIndex:!1}),g=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=p,d.index)if(t.index)t.index.array=d.index;else{const y=new ot(d.index,1,!1);t.setIndex(y)}g.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new ii)),i.onProgress&&i.onProgress(h.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(h.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(c=>c.buffer).filter(c=>typeof SharedArrayBuffer>"u"||!(c instanceof SharedArrayBuffer)))})}}const RB=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:MB},Symbol.toStringTag,{value:"Module"}));export{Cu as $componentName,IM as $physicsKey,ye as ActionBuilder,_C as ActionCollection,Ai as ActionModel,$w as Addressables,jh as AlignmentConstraint,cl as AmbientMode,Xt as Animation,yg as AnimationBuilder,sd as AnimationCurve,pm as AnimationExtension,oi as AnimationUtils,Ot as Animator,Ci as AnimatorConditionMode,co as AnimatorController,bg as AnimatorControllerBuilder,Xr as AnimatorControllerParameterType,_h as AnimatorStateInfo,cd as Antialiasing,Yn as Application,Xx as AssetDatabase,ie as AssetReference,rc as Attractor,Ny as AudioClip,La as AudioExtension,Zo as AudioListener,Y1 as AudioRolloffMode,Gi as AudioSource,Ks as Avatar,ft as AvatarMarker,Sl as Axes,Ol as AxesHelper,p0 as AxisRotationConstraint,Vc as BUILD_TIME,xn as BaseUIComponent,s0 as BasicIKConstraint,rb as BehaviorExtension,Wt as BehaviorModel,Lr as BlobStorage,Nm as BloomEffect,Lp as BoxCollider,ma as BoxGizmo,Vt as BoxHelperComponent,ms as Button,Sn as ButtonsFactory,oP as CallDirection,Ns as CallInfo,ci as Camera,Eh as CameraTargetReachedEvent,Zl as Canvas,nr as CanvasGroup,Jo as CapsuleCollider,Q0 as ChangeMaterialOnClick,ha as ChangeTransformOnClick,ta as CharacterController,ts as CharacterControllerInput,hd as ChromaticAberration,Bi as CircularBuffer,Kr as ClearFlags,og as ClickThrough,rt as ClipExtrapolation,qi as Collider,dw as Collision,fp as CollisionDetectionMode,lr as ColorAdjustments,oc as ColorBySpeedModule,Lm as ColorOverLifetimeModule,cA as Component,R as Component$1,vu as ComponentLifecycleEvents,EB as Components,sx as ConnectionEvents,hw as ContactPoint,Bh as ContactShadows,U as Context,wT as ContextArgs,de as ContextEvent,he as ContextRegistry,Ea as CursorFollow,pa as CustomBranding,je as CustomShader,Wu as DefaultReflectionMode,h0 as Deletable,wr as DeleteBox,Gn as DepthOfField,JC as DepthOfFieldMode,Dp as DeviceFlag,I as DeviceUtilities,Z1 as DirectorWrapMode,dp as DisposableStore,WP as DocumentExtension,sa as DragControls,f0 as DragMode,Up as DragProfile,os as DropListener,I0 as Duplicatable,dd as EffectWrapper,ds as EmissionModule,Wl as EmphasizeOnClick,Gd as EngineLoadingView,kp as EnvironmentScene,Wf as EventBus,se as EventList,Uy as EventListEvent,bi as EventSystem,nm as EventTrigger,VS as FieldWithDefault,Fa as FileReference,Vw as FileReferenceSerializer,pI as FileSpawnModel,CS as File_Event,Cb as FixedJoint,_S as FixedRotationAxesConstraint,Jl as Fog,Cm as FontStyle,Oe as FrameEvent,Za as GENERATOR,P as GameObject,B as Gizmos,F0 as GltfExport,j0 as GltfExportBox,zh as GrabPointPlaneConstraint,fa as Gradient,td as Graphic,bp as GraphicRaycaster,_r as Graphics,ec as GridHelper,gb as GridLayoutGroup,jp as GridSnapConstraint,uo as GroundProjectedEnv,ca as GroupActionModel,Su as HideFlags,Pn as HideOnStart,od as HingeJoint,mb as HorizontalLayoutGroup,FC as HorizontalWrapMode,tR as HostData,Mo as HoverAnimation,uc as Image,Ba as ImageReference,Ww as ImageReferenceSerializer,Ab as InheritVelocityModule,Qw as Input,xi as InputEventQueue,ke as InputEvents,t_ as InputField,za as InstanceHandle,Da as InstancingHandler,Cn as InstancingUtil,Ow as InstantiateEvent,St as InstantiateIdProvider,Io as InstantiateOptions,c0 as Interactable,Pd as InternalScreenshotUtils,IR as JoinedRoomResponse,Bp as KeepRotationConstraint,yS as KeepScaleConstraint,PR as KeyEventArgs,Mi as Keyframe,Om as LODGroup,ic as LODModel,Zw as LODsManager,LR as LeftRoomResponse,Ft as Light,fx as LightData,_t as LimitVelocityOverLifetimeModule,pB as LoadingElementOptions,l0 as LogStats,Fi as LogType,i_ as LookAt,Qr as LookAtConstraint,A as MODULES,Jt as MainModule,Rh as MarkerType,id as MaskableGraphic,Ss as MaterialPropertyBlock,Yp as MaterialX,j as Mathf,qs as MeshCollider,Nh as MeshRenderer,Z as MinMaxCurve,ya as MinMaxGradient,_f as NEEDLE_ENGINE_FEATURE_FLAGS,Jc as NEKeyboardEvent,qo as NEPointerEvent,ac as NEToneMappingMode,LP as NeedleButtonElement,_0 as NeedleEngineModelLoader,v_ as NeedleEngineWebComponent,vo as NeedleMenu,xu as NeedlePatchesKey,ey as NeedleXRController,X as NeedleXRSession,Px as NeedleXRSync,$x as NeedleXRUtils,nc as NestedGltf,Vd as NetworkConnection,ko as NetworkedStreamEvents,Wd as NetworkedStreams,Mb as Networking,Mw as NewInstanceModel,ve as NoiseModule,hn as ObjectRaycaster,Ds as ObjectUtils,ga as OffsetConstraint,lu as OneEuroFilter,sf as OneEuroFilterXYZ,pc as OpenURL,fe as OrbitControls,Yl as Outline,rx as OwnershipEvent,ax as OwnershipModel,Ts as PUBLIC_KEY,ua as Padding,Im as ParticleBurst,Ib as ParticleSubEmitter,ld as ParticleSystem,ar as ParticleSystemBaseBehaviour,fn as ParticleSystemRenderer,Am as ParticleSystemShapeType,Ps as PeerHandle,nx as PeerNetworking,Sc as Physics,ab as PhysicsExtension,Et as PhysicsMaterialCombine,ud as PixelationEffect,m0 as PlaneHeightLockConstraint,Vh as PlayAnimationOnClick,Ys as PlayAudioOnClick,kl as PlayableDirector,Pc as PlayerColor,Oi as PlayerState,SC as PlayerStateEvent,tb as PlayerSync,lx as PlayerView,cx as PlayerViewManager,$d as PointerEventData,Bu as PointerType,xx as PostProcessing,dt as PostProcessingEffect,vt as PostProcessingEffectOrder,Ec as PostProcessingHandler,tl as Prefabs,Vl as PreliminaryAction,Hh as PreliminaryTrigger,Tl as PreviewHelper,ol as PrimitiveType,ue as Progress,Kg as PromiseAllWithErrors,Yg as PromiseErrorResult,YC as QualityLevel,ce as RGBAColor,Oc as RapierPhysics,tg as RawImage,Fr as RaycastOptions,LC as Rect,Vn as RectTransform,is as ReflectionProbe,WS as ReflectionProbeUsage,xr as RegisteredAnimationInfo,n0 as RemoteSkybox,jo as RenderTexture,j1 as RenderTextureSerializer,di as Renderer,gx as RendererData,R0 as RendererLightmap,it as Rigidbody,tt as RigidbodyConstraints,oe as RoomEvents,gn as RotationBySpeedModule,Hn as RotationOverLifetimeModule,d0 as ScaleLimitConstraint,Qp as SceneLightSettings,nt as SceneSwitcher,cr as ScreenCapture,us as ScreenSpaceAmbientOcclusion,qn as ScreenSpaceAmbientOcclusionN8,Vm as ScreenSpaceAmbientOcclusionN8QualityMode,Ro as ScrollFollow,Qb as SeeThrough,In as SendQueue,Ff as SerializationContext,Y0 as SetActiveOnClick,em as ShadowCastingMode,yd as ShadowCatcher,Tb as ShapeModule,uw as ShapeOverlapResult,md as SharpeningEffect,Mh as SignalAsset,Zr as SignalReceiver,Pl as SignalReceiverEvent,Ah as SignalTrackHandler,IC as Size,Ri as SizeBySpeedModule,ba as SizeOverLifetimeModule,T0 as SkinnedMeshRenderer,Xm as SmoothFollow,zp as SnapToSurfaceConstraint,Ia as SpatialGrabRaycaster,xd as SpatialHtml,Qm as SpatialTrigger,Oo as SpatialTriggerReceiver,Ym as SpectatorCamera,El as SphereCollider,fy as SphereIntersection,Pa as SplineContainer,Eo as SplineData,S_ as SplineUtils,_n as SplineWalker,rs as Sprite,Gl as SpriteData,ki as SpriteRenderer,Hl as SpriteSheet,mA as StateMachineBehaviour,Xb as StreamEndedEvent,nP as StreamReceivedEvent,Fm as SubEmitterSystem,Yb as SyncedCamera,Xn as SyncedRoom,Fn as SyncedTransform,Z0 as TapGestureTrigger,vm as TeleportTarget,Zb as TestRunner,Jb as TestSimulateUserData,Zt as Text,lt as TextAnchor,ub as TextBuilder,Pm as TextExtension,ei as TextureSheetAnimationModule,Po as TiltShiftEffect,bx as Time,Sp as TimelineActivationTrack,Th as TimelineAnimationTrack,Cs as TimelineAudioTrack,vg as TimelineBuilder,Cp as TimelineControlTrack,xp as TimelineMarkerTrack,Jr as TimelineTrackHandler,va as ToneMappingEffect,Pe as TrackType,$e as TrailModule,qe as TransformData,ka as TransformGizmo,Yt as TriggerBuilder,yr as TriggerModel,k as TypeStore,Gy as UIRaycastUtils,Zh as UIRootComponent,z0 as USDDocument,gt as USDObject,iC as USDWriter,oC as USDZExporter,So as USDZExporter$1,Kl as USDZText,bb as USDZUIExtension,B1 as UriSerializer,Fh as UsageMarker,DR as UserJoinedOrLeftRoomModel,si as VERSION,q0 as VariantAction,Ke as VelocityOverLifetimeModule,pb as VerticalLayoutGroup,BC as VerticalWrapMode,wt as VideoPlayer,mt as ViewBox,Qo as ViewDevice,Sa as Vignette,Gh as VisibilityAction,ps as Voip,gd as Volume,$ as VolumeParameter,zm as VolumeProfile,wR as WaitForFrames,Gw as WaitForPromise,Vf as WaitForSeconds,xs as Watch,kd as WebARCameraBackground,kn as WebARSessionRoot,wm as WebXR,br as WebXRButtonFactory,yc as WebXRImageTracking,vn as WebXRImageTrackingModel,bs as WebXRPlaneTracking,kc as WebXRTrackedImage,fs as XRControllerFollow,as as XRControllerModel,Qi as XRControllerMovement,$n as XRFlag,ag as XRRig,yi as XRState,wo as XRStateFlag,VP as __Ignore,RT as __internalNotifyObjectDestroyed,qc as __nlZsk,sn as __zrAx,oo as activeInHierarchyFieldName,ru as addAttributeChangeCallback,lo as addComponent,BI as addCustomExtensionPlugin,Gr as addNewComponent,wu as addPatch,ip as apply,rA as applyHMRChanges,o1 as applyPrototypeExtensions,Ew as beginListenDestroy,Aw as beginListenInstantiate,Xf as binaryIdentifierCasts,vT as build_scene_functions,Ir as builtinComponentKeyName,__ as calculateProgress01,kE as clearMessages,F1 as colorSerializer,Dw as compareAssociation,wh as componentSerializer,$v as copyTexture,k1 as createMotion,Si as debugNet,al as debugOwner,cC as decompressGpuTexture,Fc as deepClone,Wo as delay,nu as delayForFrames,Du as deserializeObject,Vi as destroy,b1 as destroyComponentInstance,PS as determineMimeTypeFromExtension,Ie as disposeObjectResources,bn as disposeStream,Hc as editorGuidKeyName,Ya as enableSpatialConsole,z1 as eventListSerializer,CB as exportAsGLTF,Py as findByGuid,xl as findObjectOfType,w1 as findObjectsOfType,yy as findResourceUsers,H1 as fitCamera,Vv as fitObjectIntoVolume,Vr as foreachComponent,Ey as foreachComponentEnumerator,HE as forward,jx as generateQRCode,Tw as generateSeed,vi as getBoundingBox,Mv as getCameraController,Fs as getComponent,gh as getComponentInChildren,fh as getComponentInParent,vl as getComponents,wl as getComponentsInChildren,hp as getComponentsInParent,ZS as getFormattedDate,kt as getIconElement,ay as getIconTexture,Vo as getLoader,mh as getOrAddComponent,x as getParam,XE as getParentHierarchyPath,oE as getPath,ER as getPeerOptions,tx as getPeerjsInstance,AT as getResourceUserCount,ux as getSceneData,Iv as getTempColor,_i as getTempQuaternion,z as getTempVector,Dc as getUrlParams,Wv as getVisibleInCustomShadowRendering,Bv as getWorldDirection,uf as getWorldEuler,le as getWorldPosition,Se as getWorldQuaternion,uu as getWorldRotation,Qe as getWorldScale,yp as hasPointerEventComponent,Yv as hideDebugConsole,hC as imageToCanvas,Hw as initAddressableSerializers,U1 as initBuiltinSerializers,wB as initEngine,TP as initPhysics,nS as initVolumeParameterSerializer,Hr as instantiate,BS as invokeLoadedImportPluginHooks,Dx as invokeXRSessionEnd,Lx as invokeXRSessionStart,r1 as isActiveInHierarchy,bl as isActiveSelf,hE as isAndroidDevice,Nv as isAnimationAction,Pu as isComponent,JO as isDebugMode,rE as isDesktop,Wr as isDestroyed,E as isDevEnvironment,aA as isDisposable,MT as isDisposed,xB as isExporting,cw as isGLTFModel,hv as isHostedOnGlitch,Fy as isHotReloadEnabled,oA as isHotReloading,lE as isIPad,Bx as isIconElement,ji as isLocalNetwork,uE as isMacOS,aE as isMobileDevice,dE as isMozillaXR,gE as isQuest,Yx as isResourceTrackingEnabled,mE as isSafari,v2 as isTrackModel,op as isUsingInstancing,pE as isiOS,cE as isiPad,nB as loadAsset,Mp as loadPMREM,g_ as loadSync,pu as logHierarchy,BE as lookAtInverse,zc as lookAtObject,FE as lookAtScreenPoint,tE as makeId,gv as makeIdFromRandomWords,Xi as makeNameSafe,a1 as markAsInstancedRendered,fE as microphonePermissionsGranted,ZO as nameof,dv as nameofFactory,BR as needle,Go as oMxKl,$y as objectSerializer,Ix as offBeforeXRSession,Ax as offXRSessionEnd,Tx as offXRSessionStart,lA as on,zM as onAfterRender,FM as onBeforeRender,dT as onBeforeXRSession,jM as onClear,BM as onDestroy,Pf as onInitialized,Eu as onStart,eR as onSyncDestroy,Rw as onSyncInstantiate,vw as onUpdate,sy as onXRSessionEnd,Gu as onXRSessionStart,EP as parseSync,Hv as placeOnSurface,gf as postprocessFBXMaterials,e2 as prefix,uv as pushState,iE as randomNumber,Qf as registerBinaryType,Ku as registerComponent,k0 as registerComponentExtension,yn as registerCustomEffectType,O0 as registerExportExtensions,Zp as registerExtensions,x1 as registerHotReloadType,gw as registerLoader,Iw as registerPrefabProvider,Cy as registerPrototypeExtensions,bf as registerType,yv as relativePathPrefix,_v as removeAttributeChangeCallback,By as removeComponent,FI as removeCustomImportExtensionType,RM as removePatch,to as resolveUrl,fv as sanitizeString,wP as saveImage,j3 as screenshot,c_ as screenshot2,Af as sendDestroyed,u as serializable,zw as serializeObject,Ze as serializeable,dh as setActive,xv as setAllowBalloonMessages,xE as setAllowOverlayMessages,hu as setAutoFitEnabled,rf as setCameraController,c1 as setDestroyed,TE as setDevEnvironment,Zx as setDisposable,_l as setDontDestroy,qg as setOrAddParamsToUrl,eE as setParam,jc as setParamWithoutReload,MR as setPeerOptions,ET as setResourceTrackingEnabled,Xg as setState,mf as setVisibleInCustomShadowRendering,pf as setWorldEuler,zi as setWorldPosition,Er as setWorldPositionXYZ,An as setWorldQuaternion,df as setWorldQuaternionXYZW,Uv as setWorldRotation,Uc as setWorldRotationXYZ,Qa as setWorldScale,Ka as showBalloonError,Ae as showBalloonMessage,ge as showBalloonWarning,ff as showDebugConsole,Tv as slerp,Yc as syncDestroy,t0 as syncField,If as syncInstantiate,QE as textureToCanvas,bv as toSourceId,Jw as tryCastBinary,OS as tryDetermineMimetypeFromBinary,kS as tryDetermineMimetypeFromURL,Bc as tryFindObject,ex as tryGetGuid,S1 as unregisterHotReloadType,nR as unregisterPrefabProvider,Qg as unwatchWrite,Rv as useForAutoFit,Fe as validate,su as watchWrite};
|
|
1753
|
+
`),Ti&&this._onCreateEffectsDebug(this._composer,s)}createPassForMergeableEffects(e,t,i,n){if(e.length>0){const s=new A.POSTPROCESSING.MODULE.EffectPass(i,...e);s.name=e.map(r=>r.name).join(", "),s.mainScene=n,s.enabled=!0,s.renderToScreen=!1,t.addPass(s),e.length=0}}handleDevicePixelRatio(){typeof this.context.devicePixelRatio=="number"&&this.context.requestSizeUpdate()}_menuEntry=null;_passIndices=null;_onCreateEffectsDebug(e,t){if(Ti==="passes"){const i=new A.POSTPROCESSING.MODULE.DepthEffect({blendFunction:A.POSTPROCESSING.MODULE.BlendFunction.NORMAL,inverted:!0});i.name="Depth Effect";const n=new A.POSTPROCESSING.MODULE.EffectPass(t,i);if(n.name="Depth Effect Pass",n.enabled=!1,e.passes.push(n),this._passIndices!==null){const r=[e.passes[0]];this._passIndices.length>0&&r.push(...this._passIndices.filter(a=>a!==0).map(a=>e.passes[a]).filter(a=>a)),r.length>0&&console.log("[PostProcessing] Passes (selected) \u2192",r),e.passes.length=0;for(const a of r)a.enabled=!0,a.renderToScreen=!1,e.addPass(a)}const s=this.context.menu;if(s&&this._passIndices===null){this._menuEntry&&this._menuEntry.remove();const r=document.createElement("select");r.multiple=!0;const a=document.createElement("option");a.innerText="Final Output",a.value="-1",r.appendChild(a);for(const l of e.passes){const c=document.createElement("option");c.innerText=l.name,c.value=`${e.passes.indexOf(l)}`,c.title=l.name,r.appendChild(c)}s.appendChild(r),this._menuEntry=r,r.addEventListener("change",()=>{const l=Array.from(r.selectedOptions).map(c=>parseInt(c.value));l.length===1&&l[0]===-1?this._passIndices=null:this._passIndices=l,this.applyEffects(this.context)})}}}}const OB=Object.freeze(Object.defineProperty({__proto__:null,PostProcessingHandler:Ec},Symbol.toStringTag,{value:"Module"}));class vg{_name;_tracks=[];_currentTrack=null;_pendingSignals=[];_idProvider;constructor(e,t){this._name=e,this._idProvider=new St(t??Date.now())}static create(e,t){return new vg(e??"Timeline",t)}animationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Animation,t??null),this}audioTrack(e,t,i){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Audio,t??null),this._currentTrack.volume=i,this}activationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Activation,t??null),this}controlTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Control,null),this}signalTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Signal,t??null),this}markerTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,Pe.Marker,null),this}clip(e,t){if(!this._currentTrack)throw new Error("TimelineBuilder: .clip() must be called after a track method (e.g. .animationTrack())");this.commitInlineTracks();const i=this._currentTrack;switch(i.type){case Pe.Animation:{let n;if(e instanceof Gt)n=e;else{const h=Array.isArray(e)?e:[e],d=i.outputs[0],p=d instanceof M?d:d!=null&&"gameObject"in d?d.gameObject:void 0;n=vh(h,p)}const s=t??{},r=s.duration??n.duration,a=s.start??i.cursor,l=a+r,c={start:a,end:l,duration:r,timeScale:s.speed??1,clipIn:s.clipIn??0,easeInDuration:s.easeIn??0,easeOutDuration:s.easeOut??0,preExtrapolationMode:s.preExtrapolation??rt.None,postExtrapolationMode:s.postExtrapolation??rt.None,reversed:s.reversed,asset:{clip:n,loop:s.loop??!1,duration:n.duration,removeStartOffset:s.removeStartOffset??!1}};i.clips.push(c),i.cursor=l;break}case Pe.Audio:{const n=e,s=t??{},r=s.duration,a=s.start??i.cursor,l=a+r,c={start:a,end:l,duration:r,timeScale:s.speed??1,clipIn:0,easeInDuration:s.easeIn??0,easeOutDuration:s.easeOut??0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{clip:n,loop:s.loop??!1,volume:s.volume??1}};i.clips.push(c),i.cursor=l;break}case Pe.Activation:{const n=e,s=n.start??i.cursor,r=s+n.duration,a={start:s,end:r,duration:n.duration,timeScale:1,clipIn:0,easeInDuration:n.easeIn??0,easeOutDuration:n.easeOut??0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{}};i.clips.push(a),i.cursor=r;break}case Pe.Control:{const n=e,s=t??{},r=s.start??i.cursor,a=s.duration,l=r+a,c={start:r,end:l,duration:a,timeScale:1,clipIn:0,easeInDuration:0,easeOutDuration:0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{sourceObject:n,controlActivation:s.controlActivation??!0,updateDirector:s.updateDirector??!0}};i.clips.push(c),i.cursor=l;break}default:throw new Error(`TimelineBuilder: .clip() is not supported on track type "${i.type}"`)}return this}marker(e,t,i){if(!this._currentTrack)throw new Error("TimelineBuilder: .marker() must be called after a track method");if(this._currentTrack.type!==Pe.Signal&&this._currentTrack.type!==Pe.Marker)throw new Error(`TimelineBuilder: .marker() is only supported on signal and marker tracks, not "${this._currentTrack.type}"`);const n={type:Rh.Signal,time:e,retroActive:i?.retroActive??!1,emitOnce:i?.emitOnce??!1,asset:t};return this._currentTrack.markers.push(n),e>this._currentTrack.cursor&&(this._currentTrack.cursor=e),this}signal(e,t,i){if(!this._currentTrack)throw new Error("TimelineBuilder: .signal() must be called after a track method");if(this._currentTrack.type!==Pe.Signal&&this._currentTrack.type!==Pe.Marker)throw new Error(`TimelineBuilder: .signal() is only supported on signal and marker tracks, not "${this._currentTrack.type}"`);const n=this._idProvider.generateUUID(),s=this._tracks.indexOf(this._currentTrack),r={type:Rh.Signal,time:e,retroActive:i?.retroActive??!1,emitOnce:i?.emitOnce??!1,asset:n};return this._currentTrack.markers.push(r),this._pendingSignals.push({trackIndex:s,guid:n,callback:t}),e>this._currentTrack.cursor&&(this._currentTrack.cursor=e),this}muted(e=!0){if(!this._currentTrack)throw new Error("TimelineBuilder: .muted() must be called after a track method");return this._currentTrack.muted=e,this}track(e,t,i,n){if(!this._currentTrack)throw new Error("TimelineBuilder: .track() must be called after .animationTrack()");if(this._currentTrack.type!==Pe.Animation)throw new Error("TimelineBuilder: .track() is only supported on animation tracks");return this._currentTrack.inlineTracks.push(zy(e,t,i,n)),this}build(){this.commitInlineTracks();const e=this._tracks.map(t=>{const i={name:t.name,type:t.type,muted:t.muted,outputs:t.outputs};return t.clips.length>0&&(i.clips=t.clips),t.markers.length>0&&(i.markers=t.markers),t.volume!==void 0&&(i.volume=t.volume),t.trackOffset!==void 0&&(i.trackOffset=t.trackOffset),i});return{name:this._name,tracks:e}}install(e){const t=this.build();if(this._pendingSignals.length>0){const i=e.gameObject;let n=P.getComponent(i,Zr);n||(n=P.addComponent(i,Zr)),n.events||(n.events=[]);for(const s of this._pendingSignals){const r=new Mh;r.guid=s.guid;const a=new Pl;a.signal=r,a.reaction=new se([s.callback]),n.events.push(a);const l=t.tracks[s.trackIndex];l&&!l.outputs.includes(n)&&l.outputs.push(n)}}return e.playableAsset=t,t}pushTrack(e,t,i){const n={name:e,type:t,muted:!1,outputs:i?[i]:[],clips:[],markers:[],cursor:0,inlineTracks:[]};return this._tracks.push(n),n}commitInlineTracks(){if(!this._currentTrack||this._currentTrack.inlineTracks.length===0)return;const e=this._currentTrack,t=e.outputs[0],i=t instanceof M?t:t!=null&&"gameObject"in t?t.gameObject:void 0,n=vh(e.inlineTracks,i),s=e.cursor,r=n.duration,a={start:s,end:s+r,duration:r,timeScale:1,clipIn:0,easeInDuration:0,easeOutDuration:0,preExtrapolationMode:rt.None,postExtrapolationMode:rt.None,asset:{clip:n,loop:!1,duration:n.duration,removeStartOffset:!1}};e.clips.push(a),e.cursor=s+r,e.inlineTracks=[]}}class VP{}const EB=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:ye,ActionCollection:_C,ActionModel:Ai,AlignmentConstraint:jh,Animation:Xt,AnimationBuilder:yg,AnimationCurve:sd,AnimationExtension:pm,Animator:Ot,AnimatorController:co,Antialiasing:cd,Attractor:rc,AudioExtension:La,AudioListener:Zo,AudioSource:Gi,Avatar:Ks,AvatarMarker:ft,AxesHelper:Ol,AxisRotationConstraint:p0,BaseUIComponent:xn,BasicIKConstraint:s0,BehaviorExtension:rb,BehaviorModel:Wt,BloomEffect:Nm,BoxCollider:Lp,BoxGizmo:ma,BoxHelperComponent:Vt,Button:ms,CallInfo:Ns,Camera:ci,CameraTargetReachedEvent:Eh,Canvas:Zl,CanvasGroup:nr,CapsuleCollider:Jo,ChangeMaterialOnClick:Q0,ChangeTransformOnClick:ha,CharacterController:ta,CharacterControllerInput:ts,ChromaticAberration:hd,ClickThrough:og,ColorAdjustments:lr,ColorBySpeedModule:oc,ColorOverLifetimeModule:Lm,ContactShadows:Bh,CursorFollow:Ea,CustomBranding:pa,Deletable:h0,DeleteBox:wr,DepthOfField:Gn,DeviceFlag:Dp,DocumentExtension:WP,DragControls:sa,DragProfile:Up,DropListener:os,Duplicatable:I0,EffectWrapper:dd,EmissionModule:ds,EmphasizeOnClick:Wl,EnvironmentScene:kp,EventList:se,EventListEvent:Uy,EventSystem:bi,EventTrigger:nm,FieldWithDefault:VS,FixedJoint:Cb,FixedRotationAxesConstraint:_S,Fog:Jl,GltfExport:F0,GltfExportBox:j0,GrabPointPlaneConstraint:zh,Gradient:fa,Graphic:td,GraphicRaycaster:bp,GridHelper:ec,GridLayoutGroup:gb,GridSnapConstraint:jp,GroundProjectedEnv:uo,GroupActionModel:ca,HideOnStart:Pn,HingeJoint:od,HorizontalLayoutGroup:mb,get HoverAnimation(){return Mo},Image:uc,InheritVelocityModule:Ab,InputField:t_,InstanceHandle:za,InstancingHandler:Da,Interactable:c0,KeepRotationConstraint:Bp,KeepScaleConstraint:yS,Keyframe:Mi,LODGroup:Om,LODModel:ic,Light:Ft,LimitVelocityOverLifetimeModule:_t,LogStats:l0,LookAt:i_,LookAtConstraint:Qr,MainModule:Jt,MaskableGraphic:id,MeshCollider:qs,MeshRenderer:Nh,MinMaxCurve:Z,MinMaxGradient:ya,NeedleMenu:vo,NestedGltf:nc,Networking:Mb,NoiseModule:ve,ObjectRaycaster:hn,OffsetConstraint:ga,OpenURL:pc,OrbitControls:fe,Outline:Yl,Padding:ua,ParticleBurst:Im,ParticleSubEmitter:Ib,ParticleSystem:ld,ParticleSystemRenderer:fn,PhysicsExtension:ab,PixelationEffect:ud,PlaneHeightLockConstraint:m0,PlayAnimationOnClick:Vh,PlayAudioOnClick:Ys,PlayableDirector:kl,PlayerColor:Pc,PointerEventData:$d,PostProcessingHandler:Ec,PreliminaryAction:Vl,PreliminaryTrigger:Hh,RawImage:tg,Rect:LC,RectTransform:Vn,ReflectionProbe:is,RegisteredAnimationInfo:xr,RemoteSkybox:n0,Renderer:di,RendererLightmap:R0,Rigidbody:it,RotationBySpeedModule:gn,RotationOverLifetimeModule:Hn,ScaleLimitConstraint:d0,SceneSwitcher:nt,ScreenCapture:cr,ScreenSpaceAmbientOcclusion:us,ScreenSpaceAmbientOcclusionN8:qn,ScrollFollow:Ro,SeeThrough:Qb,SetActiveOnClick:Y0,ShadowCatcher:yd,ShapeModule:Tb,SharpeningEffect:md,SignalAsset:Mh,SignalReceiver:Zr,SignalReceiverEvent:Pl,SignalTrackHandler:Ah,Size:IC,SizeBySpeedModule:Ri,SizeOverLifetimeModule:ba,SkinnedMeshRenderer:T0,SmoothFollow:Xm,SnapToSurfaceConstraint:zp,SpatialGrabRaycaster:Ia,SpatialHtml:xd,SpatialTrigger:Qm,SpatialTriggerReceiver:Oo,SpectatorCamera:Ym,SphereCollider:El,SplineContainer:Pa,SplineData:Eo,SplineWalker:_n,Sprite:rs,SpriteData:Gl,SpriteRenderer:ki,SpriteSheet:Hl,SubEmitterSystem:Fm,SyncedCamera:Yb,SyncedRoom:Xn,SyncedTransform:Fn,TapGestureTrigger:Z0,TeleportTarget:vm,TestRunner:Zb,TestSimulateUserData:Jb,Text:Zt,TextBuilder:ub,TextExtension:Pm,TextureSheetAnimationModule:ei,TiltShiftEffect:Po,TimelineActivationTrack:Sp,TimelineAnimationTrack:Th,TimelineAudioTrack:Cs,TimelineBuilder:vg,TimelineControlTrack:Cp,TimelineMarkerTrack:xp,ToneMappingEffect:va,TrailModule:$e,TransformData:qe,TransformGizmo:ka,TriggerBuilder:Yt,TriggerModel:yr,UIRaycastUtils:Gy,UIRootComponent:Zh,USDZExporter:So,USDZText:Kl,USDZUIExtension:bb,UsageMarker:Fh,VariantAction:q0,VelocityOverLifetimeModule:Ke,VerticalLayoutGroup:pb,VideoPlayer:wt,get ViewBox(){return mt},Vignette:Sa,VisibilityAction:Gh,Voip:ps,Volume:gd,VolumeParameter:$,VolumeProfile:zm,WebARCameraBackground:kd,WebARSessionRoot:kn,WebXR:wm,WebXRImageTracking:yc,WebXRImageTrackingModel:vn,WebXRPlaneTracking:bs,WebXRTrackedImage:kc,XRControllerFollow:fs,XRControllerModel:as,XRControllerMovement:Qi,XRFlag:$n,XRRig:ag,XRState:yi,__Ignore:VP},Symbol.toStringTag,{value:"Module"}));var S_;(o=>{function e(t,i=!1,n=.75){const s=new Pa,r=1-j.clamp(n,0,1);return t.forEach((a,l)=>{const c=new v;l<t.length-1?c.subVectors(t[l+1],a).normalize().multiplyScalar(r):i&&t.length>1&&c.subVectors(t[0],a).normalize().multiplyScalar(r);const h=new Eo;h.position.copy(a),h.tangentIn.copy(c),h.tangentOut.copy(c),s.addKnot(h)}),s.closed=i,s}o.createFromPoints=e})(S_||(S_={}));class MB extends XO{constructor(){super(new Worker(URL.createObjectURL(new Blob([`import '${new URL("./generateMeshBVH.worker-DiCnZlf3.js",import.meta.url).toString()}';`],{type:"text/javascript"})),{type:"module"})),this.name="GenerateMeshBVHWorker"}runTask(e,t,i={}){return new Promise((n,s)=>{if(t.getAttribute("position").isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");e.onerror=c=>{s(new Error(`[GenerateMeshBVHWorker] ${c.message||"Could not load worker."}`))},e.onmessage=c=>{const{data:h}=c;if(h.error)s(new Error(h.error)),e.onmessage=null;else if(h.serialized){const{serialized:d,position:p}=h,m=QO.deserialize(d,t,{setIndex:!1}),g=Object.assign({setBoundingBox:!0},i);if(t.attributes.position.array=p,d.index)if(t.index)t.index.array=d.index;else{const y=new ot(d.index,1,!1);t.setIndex(y)}g.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new ii)),i.onProgress&&i.onProgress(h.progress),n(m),e.onmessage=null}else i.onProgress&&i.onProgress(h.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(c=>c.buffer).filter(c=>typeof SharedArrayBuffer>"u"||!(c instanceof SharedArrayBuffer)))})}}const RB=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:MB},Symbol.toStringTag,{value:"Module"}));export{Cu as $componentName,IM as $physicsKey,sn as $uxbFepO,ye as ActionBuilder,_C as ActionCollection,Ai as ActionModel,$w as Addressables,jh as AlignmentConstraint,cl as AmbientMode,Xt as Animation,yg as AnimationBuilder,sd as AnimationCurve,pm as AnimationExtension,oi as AnimationUtils,Ot as Animator,Ci as AnimatorConditionMode,co as AnimatorController,bg as AnimatorControllerBuilder,Xr as AnimatorControllerParameterType,_h as AnimatorStateInfo,cd as Antialiasing,Yn as Application,Xx as AssetDatabase,ie as AssetReference,rc as Attractor,Ny as AudioClip,La as AudioExtension,Zo as AudioListener,Y1 as AudioRolloffMode,Gi as AudioSource,Ks as Avatar,ft as AvatarMarker,Sl as Axes,Ol as AxesHelper,p0 as AxisRotationConstraint,Vc as BUILD_TIME,xn as BaseUIComponent,s0 as BasicIKConstraint,rb as BehaviorExtension,Wt as BehaviorModel,Lr as BlobStorage,Nm as BloomEffect,Lp as BoxCollider,ma as BoxGizmo,Vt as BoxHelperComponent,ms as Button,Sn as ButtonsFactory,oP as CallDirection,Ns as CallInfo,ci as Camera,Eh as CameraTargetReachedEvent,Zl as Canvas,nr as CanvasGroup,Jo as CapsuleCollider,Q0 as ChangeMaterialOnClick,ha as ChangeTransformOnClick,ta as CharacterController,ts as CharacterControllerInput,hd as ChromaticAberration,Bi as CircularBuffer,Kr as ClearFlags,og as ClickThrough,rt as ClipExtrapolation,qi as Collider,dw as Collision,fp as CollisionDetectionMode,lr as ColorAdjustments,oc as ColorBySpeedModule,Lm as ColorOverLifetimeModule,cA as Component,R as Component$1,vu as ComponentLifecycleEvents,EB as Components,sx as ConnectionEvents,hw as ContactPoint,Bh as ContactShadows,U as Context,wT as ContextArgs,de as ContextEvent,he as ContextRegistry,Ea as CursorFollow,pa as CustomBranding,je as CustomShader,Wu as DefaultReflectionMode,h0 as Deletable,wr as DeleteBox,Gn as DepthOfField,JC as DepthOfFieldMode,Dp as DeviceFlag,I as DeviceUtilities,Z1 as DirectorWrapMode,dp as DisposableStore,WP as DocumentExtension,sa as DragControls,f0 as DragMode,Up as DragProfile,os as DropListener,I0 as Duplicatable,dd as EffectWrapper,ds as EmissionModule,Wl as EmphasizeOnClick,Gd as EngineLoadingView,kp as EnvironmentScene,Wf as EventBus,se as EventList,Uy as EventListEvent,bi as EventSystem,nm as EventTrigger,VS as FieldWithDefault,Fa as FileReference,Vw as FileReferenceSerializer,pI as FileSpawnModel,CS as File_Event,Cb as FixedJoint,_S as FixedRotationAxesConstraint,Jl as Fog,Cm as FontStyle,Oe as FrameEvent,Za as GENERATOR,P as GameObject,B as Gizmos,F0 as GltfExport,j0 as GltfExportBox,zh as GrabPointPlaneConstraint,fa as Gradient,td as Graphic,bp as GraphicRaycaster,_r as Graphics,ec as GridHelper,gb as GridLayoutGroup,jp as GridSnapConstraint,uo as GroundProjectedEnv,ca as GroupActionModel,Su as HideFlags,Pn as HideOnStart,od as HingeJoint,mb as HorizontalLayoutGroup,FC as HorizontalWrapMode,tR as HostData,Mo as HoverAnimation,uc as Image,Ba as ImageReference,Ww as ImageReferenceSerializer,Ab as InheritVelocityModule,Qw as Input,xi as InputEventQueue,ke as InputEvents,t_ as InputField,za as InstanceHandle,Da as InstancingHandler,Cn as InstancingUtil,Ow as InstantiateEvent,St as InstantiateIdProvider,Io as InstantiateOptions,c0 as Interactable,Pd as InternalScreenshotUtils,IR as JoinedRoomResponse,Bp as KeepRotationConstraint,yS as KeepScaleConstraint,PR as KeyEventArgs,Mi as Keyframe,Om as LODGroup,ic as LODModel,Zw as LODsManager,LR as LeftRoomResponse,Ft as Light,fx as LightData,_t as LimitVelocityOverLifetimeModule,pB as LoadingElementOptions,l0 as LogStats,Fi as LogType,i_ as LookAt,Qr as LookAtConstraint,A as MODULES,Jt as MainModule,Rh as MarkerType,id as MaskableGraphic,Ss as MaterialPropertyBlock,Yp as MaterialX,j as Mathf,qs as MeshCollider,Nh as MeshRenderer,Z as MinMaxCurve,ya as MinMaxGradient,_f as NEEDLE_ENGINE_FEATURE_FLAGS,Jc as NEKeyboardEvent,qo as NEPointerEvent,ac as NEToneMappingMode,LP as NeedleButtonElement,_0 as NeedleEngineModelLoader,v_ as NeedleEngineWebComponent,vo as NeedleMenu,xu as NeedlePatchesKey,ey as NeedleXRController,X as NeedleXRSession,Px as NeedleXRSync,$x as NeedleXRUtils,nc as NestedGltf,Vd as NetworkConnection,ko as NetworkedStreamEvents,Wd as NetworkedStreams,Mb as Networking,Mw as NewInstanceModel,ve as NoiseModule,hn as ObjectRaycaster,Ds as ObjectUtils,ga as OffsetConstraint,lu as OneEuroFilter,sf as OneEuroFilterXYZ,pc as OpenURL,fe as OrbitControls,Yl as Outline,rx as OwnershipEvent,ax as OwnershipModel,Ts as PUBLIC_KEY,ua as Padding,Im as ParticleBurst,Ib as ParticleSubEmitter,ld as ParticleSystem,ar as ParticleSystemBaseBehaviour,fn as ParticleSystemRenderer,Am as ParticleSystemShapeType,Ps as PeerHandle,nx as PeerNetworking,Sc as Physics,ab as PhysicsExtension,Et as PhysicsMaterialCombine,ud as PixelationEffect,m0 as PlaneHeightLockConstraint,Vh as PlayAnimationOnClick,Ys as PlayAudioOnClick,kl as PlayableDirector,Pc as PlayerColor,Oi as PlayerState,SC as PlayerStateEvent,tb as PlayerSync,lx as PlayerView,cx as PlayerViewManager,$d as PointerEventData,Bu as PointerType,xx as PostProcessing,dt as PostProcessingEffect,vt as PostProcessingEffectOrder,Ec as PostProcessingHandler,tl as Prefabs,Vl as PreliminaryAction,Hh as PreliminaryTrigger,Tl as PreviewHelper,ol as PrimitiveType,ue as Progress,Kg as PromiseAllWithErrors,Yg as PromiseErrorResult,YC as QualityLevel,ce as RGBAColor,Oc as RapierPhysics,tg as RawImage,Fr as RaycastOptions,LC as Rect,Vn as RectTransform,is as ReflectionProbe,WS as ReflectionProbeUsage,xr as RegisteredAnimationInfo,n0 as RemoteSkybox,jo as RenderTexture,j1 as RenderTextureSerializer,di as Renderer,gx as RendererData,R0 as RendererLightmap,it as Rigidbody,tt as RigidbodyConstraints,oe as RoomEvents,gn as RotationBySpeedModule,Hn as RotationOverLifetimeModule,d0 as ScaleLimitConstraint,Qp as SceneLightSettings,nt as SceneSwitcher,cr as ScreenCapture,us as ScreenSpaceAmbientOcclusion,qn as ScreenSpaceAmbientOcclusionN8,Vm as ScreenSpaceAmbientOcclusionN8QualityMode,Ro as ScrollFollow,Qb as SeeThrough,In as SendQueue,Ff as SerializationContext,Y0 as SetActiveOnClick,em as ShadowCastingMode,yd as ShadowCatcher,Tb as ShapeModule,uw as ShapeOverlapResult,md as SharpeningEffect,Mh as SignalAsset,Zr as SignalReceiver,Pl as SignalReceiverEvent,Ah as SignalTrackHandler,IC as Size,Ri as SizeBySpeedModule,ba as SizeOverLifetimeModule,T0 as SkinnedMeshRenderer,Xm as SmoothFollow,zp as SnapToSurfaceConstraint,Ia as SpatialGrabRaycaster,xd as SpatialHtml,Qm as SpatialTrigger,Oo as SpatialTriggerReceiver,Ym as SpectatorCamera,El as SphereCollider,fy as SphereIntersection,Pa as SplineContainer,Eo as SplineData,S_ as SplineUtils,_n as SplineWalker,rs as Sprite,Gl as SpriteData,ki as SpriteRenderer,Hl as SpriteSheet,mA as StateMachineBehaviour,Xb as StreamEndedEvent,nP as StreamReceivedEvent,Fm as SubEmitterSystem,Yb as SyncedCamera,Xn as SyncedRoom,Fn as SyncedTransform,Z0 as TapGestureTrigger,vm as TeleportTarget,Zb as TestRunner,Jb as TestSimulateUserData,Zt as Text,lt as TextAnchor,ub as TextBuilder,Pm as TextExtension,ei as TextureSheetAnimationModule,Po as TiltShiftEffect,bx as Time,Sp as TimelineActivationTrack,Th as TimelineAnimationTrack,Cs as TimelineAudioTrack,vg as TimelineBuilder,Cp as TimelineControlTrack,xp as TimelineMarkerTrack,Jr as TimelineTrackHandler,va as ToneMappingEffect,Pe as TrackType,$e as TrailModule,qe as TransformData,ka as TransformGizmo,Yt as TriggerBuilder,yr as TriggerModel,k as TypeStore,Gy as UIRaycastUtils,Zh as UIRootComponent,z0 as USDDocument,gt as USDObject,iC as USDWriter,oC as USDZExporter,So as USDZExporter$1,Kl as USDZText,bb as USDZUIExtension,B1 as UriSerializer,Fh as UsageMarker,DR as UserJoinedOrLeftRoomModel,si as VERSION,q0 as VariantAction,Ke as VelocityOverLifetimeModule,pb as VerticalLayoutGroup,BC as VerticalWrapMode,wt as VideoPlayer,mt as ViewBox,Qo as ViewDevice,Sa as Vignette,Gh as VisibilityAction,ps as Voip,gd as Volume,$ as VolumeParameter,zm as VolumeProfile,wR as WaitForFrames,Gw as WaitForPromise,Vf as WaitForSeconds,xs as Watch,kd as WebARCameraBackground,kn as WebARSessionRoot,wm as WebXR,br as WebXRButtonFactory,yc as WebXRImageTracking,vn as WebXRImageTrackingModel,bs as WebXRPlaneTracking,kc as WebXRTrackedImage,fs as XRControllerFollow,as as XRControllerModel,Qi as XRControllerMovement,$n as XRFlag,ag as XRRig,yi as XRState,wo as XRStateFlag,qc as _$EHSDVcNK,Go as _$VfAckLjB,VP as __Ignore,RT as __internalNotifyObjectDestroyed,oo as activeInHierarchyFieldName,ru as addAttributeChangeCallback,lo as addComponent,BI as addCustomExtensionPlugin,Gr as addNewComponent,wu as addPatch,ip as apply,rA as applyHMRChanges,o1 as applyPrototypeExtensions,Ew as beginListenDestroy,Aw as beginListenInstantiate,Xf as binaryIdentifierCasts,vT as build_scene_functions,Ir as builtinComponentKeyName,__ as calculateProgress01,kE as clearMessages,F1 as colorSerializer,Dw as compareAssociation,wh as componentSerializer,$v as copyTexture,k1 as createMotion,Si as debugNet,al as debugOwner,cC as decompressGpuTexture,Fc as deepClone,Wo as delay,nu as delayForFrames,Du as deserializeObject,Vi as destroy,b1 as destroyComponentInstance,PS as determineMimeTypeFromExtension,Ie as disposeObjectResources,bn as disposeStream,Hc as editorGuidKeyName,Ya as enableSpatialConsole,z1 as eventListSerializer,CB as exportAsGLTF,Py as findByGuid,xl as findObjectOfType,w1 as findObjectsOfType,yy as findResourceUsers,H1 as fitCamera,Vv as fitObjectIntoVolume,Vr as foreachComponent,Ey as foreachComponentEnumerator,HE as forward,jx as generateQRCode,Tw as generateSeed,vi as getBoundingBox,Mv as getCameraController,Fs as getComponent,gh as getComponentInChildren,fh as getComponentInParent,vl as getComponents,wl as getComponentsInChildren,hp as getComponentsInParent,ZS as getFormattedDate,kt as getIconElement,ay as getIconTexture,Vo as getLoader,mh as getOrAddComponent,x as getParam,XE as getParentHierarchyPath,oE as getPath,ER as getPeerOptions,tx as getPeerjsInstance,AT as getResourceUserCount,ux as getSceneData,Iv as getTempColor,_i as getTempQuaternion,z as getTempVector,Dc as getUrlParams,Wv as getVisibleInCustomShadowRendering,Bv as getWorldDirection,uf as getWorldEuler,le as getWorldPosition,Se as getWorldQuaternion,uu as getWorldRotation,Qe as getWorldScale,yp as hasPointerEventComponent,Yv as hideDebugConsole,hC as imageToCanvas,Hw as initAddressableSerializers,U1 as initBuiltinSerializers,wB as initEngine,TP as initPhysics,nS as initVolumeParameterSerializer,Hr as instantiate,BS as invokeLoadedImportPluginHooks,Dx as invokeXRSessionEnd,Lx as invokeXRSessionStart,r1 as isActiveInHierarchy,bl as isActiveSelf,hE as isAndroidDevice,Nv as isAnimationAction,Pu as isComponent,JO as isDebugMode,rE as isDesktop,Wr as isDestroyed,E as isDevEnvironment,aA as isDisposable,MT as isDisposed,xB as isExporting,cw as isGLTFModel,hv as isHostedOnGlitch,Fy as isHotReloadEnabled,oA as isHotReloading,lE as isIPad,Bx as isIconElement,ji as isLocalNetwork,uE as isMacOS,aE as isMobileDevice,dE as isMozillaXR,gE as isQuest,Yx as isResourceTrackingEnabled,mE as isSafari,v2 as isTrackModel,op as isUsingInstancing,pE as isiOS,cE as isiPad,nB as loadAsset,Mp as loadPMREM,g_ as loadSync,pu as logHierarchy,BE as lookAtInverse,zc as lookAtObject,FE as lookAtScreenPoint,tE as makeId,gv as makeIdFromRandomWords,Xi as makeNameSafe,a1 as markAsInstancedRendered,fE as microphonePermissionsGranted,ZO as nameof,dv as nameofFactory,BR as needle,$y as objectSerializer,Ix as offBeforeXRSession,Ax as offXRSessionEnd,Tx as offXRSessionStart,lA as on,zM as onAfterRender,FM as onBeforeRender,dT as onBeforeXRSession,jM as onClear,BM as onDestroy,Pf as onInitialized,Eu as onStart,eR as onSyncDestroy,Rw as onSyncInstantiate,vw as onUpdate,sy as onXRSessionEnd,Gu as onXRSessionStart,EP as parseSync,Hv as placeOnSurface,gf as postprocessFBXMaterials,e2 as prefix,uv as pushState,iE as randomNumber,Qf as registerBinaryType,Ku as registerComponent,k0 as registerComponentExtension,yn as registerCustomEffectType,O0 as registerExportExtensions,Zp as registerExtensions,x1 as registerHotReloadType,gw as registerLoader,Iw as registerPrefabProvider,Cy as registerPrototypeExtensions,bf as registerType,yv as relativePathPrefix,_v as removeAttributeChangeCallback,By as removeComponent,FI as removeCustomImportExtensionType,RM as removePatch,to as resolveUrl,fv as sanitizeString,wP as saveImage,j3 as screenshot,c_ as screenshot2,Af as sendDestroyed,u as serializable,zw as serializeObject,Ze as serializeable,dh as setActive,xv as setAllowBalloonMessages,xE as setAllowOverlayMessages,hu as setAutoFitEnabled,rf as setCameraController,c1 as setDestroyed,TE as setDevEnvironment,Zx as setDisposable,_l as setDontDestroy,qg as setOrAddParamsToUrl,eE as setParam,jc as setParamWithoutReload,MR as setPeerOptions,ET as setResourceTrackingEnabled,Xg as setState,mf as setVisibleInCustomShadowRendering,pf as setWorldEuler,zi as setWorldPosition,Er as setWorldPositionXYZ,An as setWorldQuaternion,df as setWorldQuaternionXYZW,Uv as setWorldRotation,Uc as setWorldRotationXYZ,Qa as setWorldScale,Ka as showBalloonError,Ae as showBalloonMessage,ge as showBalloonWarning,ff as showDebugConsole,Tv as slerp,Yc as syncDestroy,t0 as syncField,If as syncInstantiate,QE as textureToCanvas,bv as toSourceId,Jw as tryCastBinary,OS as tryDetermineMimetypeFromBinary,kS as tryDetermineMimetypeFromURL,Bc as tryFindObject,ex as tryGetGuid,S1 as unregisterHotReloadType,nR as unregisterPrefabProvider,Qg as unwatchWrite,Rv as useForAutoFit,Fe as validate,su as watchWrite};
|