@needle-tools/engine 5.1.0-beta → 5.1.0-beta.1
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 +5 -0
- package/dist/gltf-progressive-BGQ-cjly.umd.cjs +10 -0
- package/dist/gltf-progressive-BvQHrERj.min.js +10 -0
- package/dist/{gltf-progressive-CH7aqHHr.js → gltf-progressive-CtYnVfLc.js} +420 -351
- package/dist/{needle-engine.bundle-BWkDSRyF.js → needle-engine.bundle-CFo3xWPu.js} +11 -11
- package/dist/{needle-engine.bundle-CdVr_iIe.umd.cjs → needle-engine.bundle-CWiO9cA8.umd.cjs} +4 -4
- package/dist/{needle-engine.bundle-BvgS8xMP.min.js → needle-engine.bundle-DxJaiP7e.min.js} +3 -3
- package/dist/needle-engine.d.ts +11 -11
- package/dist/needle-engine.js +87 -87
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/three.js +3 -0
- package/dist/three.min.js +22 -22
- package/dist/three.umd.cjs +24 -24
- 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 +72 -72
- 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 +2 -2
- 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 +69 -69
- 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/dist/gltf-progressive-9tlS5iCx.umd.cjs +0 -10
- package/dist/gltf-progressive-CVg80COO.min.js +0 -10
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createLoaders as lg,LODsManager as vr,NEEDLE_progressive as Xe,getRaycastMesh as m_,calculateMeshLODLevel as EP,getLODColor as MP,addDracoAndKTX2Loaders as TP,configureLoader as RP,setKTX2TranscoderLocation as AP,setDracoDecoderLocation as IP}from"./gltf-progressive-
|
|
1
|
+
import{createLoaders as lg,LODsManager as vr,NEEDLE_progressive as Xe,getRaycastMesh as m_,calculateMeshLODLevel as EP,getLODColor as MP,addDracoAndKTX2Loaders as TP,configureLoader as RP,setKTX2TranscoderLocation as AP,setDracoDecoderLocation as IP}from"./gltf-progressive-BvQHrERj.min.js";import{Vector2 as Z,Vector3 as _,Vector4 as ye,Quaternion as F,Box3 as ei,ShadowMaterial as g_,Euler as De,PlaneGeometry as En,WebGLRenderer as wr,PerspectiveCamera as pe,OrthographicCamera as Wd,Scene as Li,Mesh as G,Texture as Se,Uniform$1 as on,Color as oe,ShaderMaterial as Qn,MeshStandardMaterial as St,Box3Helper as LP,GridHelper as f_,Object3D as E,Material as ve,Matrix3 as y_,Matrix4 as J,Layers as Ps,PropertyBinding as Fa,AnimationClip as Vt,KeyframeTrack as DP,FileLoader as b_,BufferGeometry as Mn,TextureLoader as xr,MeshBasicMaterial as Oe,DoubleSide as Di,Group as Ao,CylinderGeometry as __,SphereGeometry as cg,BoxGeometry as za,SpriteMaterial as jP,Sprite as BP,Shape as FP,ExtrudeGeometry as zP,Ray as Io,CubeUVReflectionMapping as sn,LinearSRGBColorSpace as Lo,ShaderChunk as ti,Sphere as $d,DataTexture as hg,RGBAFormat as Vd,EquirectangularReflectionMapping as Do,SRGBColorSpace as jo,Clock as UP,NeutralToneMapping as Ua,AgXToneMapping as Gd,ACESFilmicToneMapping as Hd,NoToneMapping as qd,AxesHelper as ji,MathUtils as Bo,Fog as v_,DirectionalLight as dg,PointLight as ug,PCFSoftShadowMap$1 as NP,BasicNodeLibrary as WP,WebGLRenderTarget as Yn,DepthTexture as w_,NearestFilter as Xd,EdgesGeometry as $P,LineSegments as pg,LineBasicMaterial as Qd,Line as Pc,BufferAttribute as ot,Raycaster as mg,ArrayCamera as VP,Plane as Na,SkinnedMesh as ks,InterleavedBufferAttribute as x_,Skeleton as GP,Bone as HP,WebGLCubeRenderTarget as qP,CubeCamera as XP,LoopRepeat as QP,LoopOnce as gg,AnimationMixer as fg,InterpolateLinear as YP,InterpolateDiscrete as KP,InterpolateSmooth as ZP,QuaternionKeyframeTrack as kc,BooleanKeyframeTrack as S_,VectorKeyframeTrack as Oc,ColorKeyframeTrack as C_,NumberKeyframeTrack as yg,AudioContext as P_,CompressedTexture as JP,FrontSide as Os,Camera as ek,Frustum as k_,AudioListener as tk,PositionalAudio as ik,Audio as nk,AudioLoader as ok,BackSide as Yd,PMREMGenerator$1 as sk,EquirectangularRefractionMapping as bg,CubeTexture as _g,CompressedCubeTexture as O_,MeshDepthMaterial as rk,CustomBlending as ak,MaxEquation as lk,AlwaysStencilFunc as ck,GreaterEqualStencilFunc as hk,NotEqualStencilFunc as dk,GreaterStencilFunc as uk,LessEqualStencilFunc as pk,EqualStencilFunc as mk,LessStencilFunc as gk,NeverStencilFunc as E_,InvertStencilOp as fk,DecrementWrapStencilOp as yk,IncrementWrapStencilOp as bk,DecrementStencilOp as _k,IncrementStencilOp as vk,ReplaceStencilOp as wk,ZeroStencilOp as xk,KeepStencilOp as Sk,AmbientLight as Ck,HemisphereLight as Pk,Loader as kk,GLSL3 as Ok,AlwaysDepth as Ek,GreaterEqualDepth as Mk,GreaterDepth as Tk,LessEqualDepth as Rk,LessDepth as Ak,NotEqualDepth as Ik,EqualDepth as Lk,RawShaderMaterial as M_,BatchedMesh as T_,LinearFilter as Kd,UnsignedByteType as Dk,MeshPhysicalMaterial as R_,RingGeometry as jk,Line3 as Bk,AdditiveBlending as A_,BoxHelper as Fk,SpotLight as zk,DirectionalLightHelper as Uk,CameraHelper as Nk,LOD as Wk,Triangle as $k,NormalBlending as Vk,ReinhardToneMapping as vg,LinearToneMapping as wg,EventDispatcher as xg,VideoTexture as Gk,CatmullRomCurve3 as Hk,MirroredRepeatWrapping as I_,ShaderLib as Zd,UniformsUtils as L_,MeshNormalMaterial as qk,HalfFloatType as Sg,Source as Xk}from"./three.min.js";import{GroundedSkybox as Wa,Font as Qk,TextGeometry as Yk,FontLoader as Kk,GLTFLoader as Es,EXRLoader as Cg,RGBELoader as D_,Stats as Zk,nodeFrame as j_,TransformControlsGizmo as B_,OrbitControls as Jk,PositionalAudioHelper as eO,HorizontalBlurShader as tO,VerticalBlurShader as iO,GLTFExporter as F_,strToU8 as z_,zipSync as nO,XRControllerModelFactory as oO,XRHandMeshModel as sO,Line2 as rO,LineGeometry as aO,LineMaterial as lO,TransformControls as cO,InteractiveGroup as hO,HTMLMesh as dO,VertexNormalsHelper as uO,OBJLoader as Pg,FBXLoader as U_,mergeVertices as pO}from"./three-examples.min.js";import{v5 as kg,ByteBuffer as mO,fetchProfile as gO,MotionController as fO,SIZE_PREFIX_LENGTH as N_,Builder as Og,createNoise4D as yO,Matrix4 as Eg,BatchedParticleRenderer as bO,ParticleSystem as _O,RenderMode as Fo,ConstantColor as vO,Vector4 as wO,ConstantValue as xO,TrailParticle as W_,WorkerBase as SO,MeshBVH as CO}from"./vendor-BQ2Vuntm.min.js";import{__webpack_exports__default as Ee,__webpack_exports__Text as $_,__webpack_exports__update as PO,__webpack_exports__Block as V_,SimpleStateBehavior as kO,__webpack_exports__Inline as Mg,__webpack_exports__FontLibrary as G_,ThreeMeshUI as H_}from"./three-mesh-ui-n3JU4M2W.min.js";const q_=typeof window<"u"?window.location.search.includes("debugcontext"):!1;var ue=(o=>(o.ContextRegistered="ContextRegistered",o.ContextCreationStart="ContextCreationStart",o.ContextCreated="ContextCreated",o.ContextFirstFrameRendered="ContextFirstFrameRendered",o.ContextDestroying="ContextDestroying",o.ContextDestroyed="ContextDestroyed",o.MissingCamera="MissingCamera",o.ContextClearing="ContextClearing",o.ContextCleared="ContextCleared",o))(ue||{});class le{static get Current(){return globalThis["NeedleEngine.Context.Current"]}static set Current(e){globalThis["NeedleEngine.Context.Current"]=e}static get All(){return this.Registered}static Registered=[];static register(e){this.Registered.indexOf(e)===-1&&(q_&&console.warn("Registering context"),this.Registered.push(e),this.dispatchCallback("ContextRegistered",e))}static unregister(e){const t=this.Registered.indexOf(e);t!==-1&&(q_&&console.warn("Unregistering context"),this.Registered.splice(t,1))}static _callbacks={};static registerCallback(e,t){return this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].indexOf(t)!==-1?()=>this.unregisterCallback(e,t):(this._callbacks[e].push(t),()=>this.unregisterCallback(e,t))}static unregisterCallback(e,t){if(!this._callbacks[e])return;const i=this._callbacks[e].indexOf(t);i!==-1&&this._callbacks[e].splice(i,1)}static dispatchCallback(e,t,i){if(!this._callbacks[e])return!0;const n={event:e,context:t};if(i)for(const r in i)n[r]=i[r];const s=new Array;return this._callbacks[e].forEach(r=>{const a=r(n);a instanceof Promise&&s.push(a)}),Promise.all(s)}static addContextCreatedCallback(e){this.registerCallback("ContextCreated",e)}static addContextDestroyedCallback(e){this.registerCallback("ContextDestroyed",e)}}const Tg=new Map;function Bi(o=globalThis.location?.hostname){if(Tg.has(o))return Tg.get(o);const e=/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|localhost/.test(o);return Tg.set(o,e),e===!0}function X_(){return window.location.hostname.includes("glitch.me")}const Q_=()=>o=>o;function OO(o){return Q_()(o)}function EO(){return!!w("debug")}class Fi{_factory;_cache=[];_maxSize;_index=0;constructor(e,t){this._factory=e,this._maxSize=t}get(){const e=this._index%this._maxSize;return this._index++,this._cache.length<=e&&(this._cache[e]=this._factory()),this._cache[e]}}let Sr=!1;const Rg=new Array;typeof window<"u"&&setTimeout(()=>{if(Sr){const o={},e=new URL(window.location.href),t=new URL(e);t.searchParams.append("console","");const i=t.toString().replace(/=$|=(?=&)/g,"");for(const s of Rg){const r=new URL(e);r.searchParams.append(s,""),o[s]=r.toString().replace(/=$|=(?=&)/g,"")}console.log(`\u{1F335} ?help: Debug Options for Needle Engine.
|
|
2
2
|
Append any of these parameters to the URL to enable specific debug options.
|
|
3
3
|
Example: ${i} will show an onscreen console window.`);const n=Sr===!0?"":` (containing "${Sr}")`;console.group("Available URL parameters:"+n);for(const s of Object.keys(o).sort())typeof Sr=="string"&&!s.toLowerCase().includes(Sr.toLowerCase())||(console.groupCollapsed(s),console.log("Reload with this flag enabled:"),console.log(o[s]),console.groupEnd());console.groupEnd()}},100);function Ec(){return new URLSearchParams(globalThis.location?.search)}function w(o){Sr&&!Rg.includes(o)&&Rg.push(o);const e=Ec();if(e.has(o)){const t=e.get(o);if(t){const i=Number(t);return isNaN(i)?t:i}else return!0}return!1}Sr=w("help");function MO(o,e){const t=Ec();t.has(o)?t.set(o,e):t.append(o,e),document.location.search=t.toString()}function Mc(o,e,t=!0){const i=Ec();i.has(o)?e===null?i.delete(o):i.set(o,e):e!==null&&i.append(o,e),t?Y_(o,i):Ig(o,i)}function Ag(o,e,t){o.has(e)?o.set(e,t.toString()):o.append(e,t.toString())}function Y_(o,e,t){window.history.pushState(t,o,"?"+e.toString()+window.location.hash)}function Ig(o,e,t){window.history.replaceState(t,o,"?"+e.toString()+window.location.hash)}function TO(o){for(var e="",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=t.length,n=0;n<o;n++)e+=t.charAt(Math.floor(Math.random()*i));return e}function RO(o,e){return Math.floor(Math.random()*(e-o+1))+o}const K_=["smol","tiny","giant","interesting","smart","bright","dull","extreme","beautiful","pretty","dark","epic","salty","silly","funny","lame","lazy","loud","lucky","mad","mean","mighty","mysterious","nasty","odd","old","powerful","quiet","rapid","scary","shiny","shy","silly","smooth","sour","spicy","stupid","sweet","tasty","terrible","ugly","unusual","vast","wet","wild","witty","wrong","zany","zealous","zippy","zombie","zorro"],Z_=["cat","dog","mouse","pig","cow","horse","sheep","chicken","duck","goat","panda","tiger","lion","elephant","monkey","bird","fish","snake","frog","turtle","hamster","penguin","kangaroo","whale","dolphin","crocodile","snail","ant","bee","beetle","butterfly","dragon","eagle","fish","giraffe","lizard","panda","penguin","rabbit","snake","spider","tiger","zebra"];function J_(){const o=K_[Math.floor(Math.random()*K_.length)],e=Z_[Math.floor(Math.random()*Z_.length)];return o+"_"+e}function ev(o){return o=o.replace(/[^a-z0-9áéíóúñü \.,_-]/gim,""),o.trim()}function Tc(o,e,t=!0,i=!1){if(e==null)return null;if(e.userData&&e.userData.guid===o||e.guid==o)return e;if(i&&e.userData?.components){for(const n of e.userData.components)if(n.guid===o)return n}if(t){if(e.scenes)for(const n in e.scenes){const s=e.scenes[n],r=Tc(o,s,t,i);if(r)return r}if(e.children)for(const n in e.children){const s=e.children[n],r=Tc(o,s,t,i);if(r)return r}}}function AO(o){return!!(typeof EventTarget<"u"&&o instanceof EventTarget||o instanceof Date||o instanceof RegExp||o instanceof Map||o instanceof Set||o instanceof WeakMap||o instanceof WeakSet||o instanceof Promise||typeof ArrayBuffer<"u"&&o instanceof ArrayBuffer||ArrayBuffer.isView(o))}function Rc(o,e,t){if(o!=null&&typeof o=="object"){if(t||(t=new WeakSet),t.has(o)||(t.add(o),AO(o)))return o;let i;if(Array.isArray(o))i=[];else{i=Object.create(Object.getPrototypeOf(o));const n=Object.getOwnPropertyDescriptors(o);for(const s in n){const r=n[s];if(r.set||r.writable!==!1)try{i[s]=o[s]}catch{}}}for(const n of Object.keys(o)){const s=o[n];e&&!e(o,n,s)?i[n]=s:s?.clone!==void 0&&typeof s.clone=="function"?i[n]=s.clone():i[n]=Rc(s,e,t)}return i}return o}function zo(o){return new Promise((e,t)=>{setTimeout(e,o)})}function Jd(o,e){if(o<=0)return Promise.resolve();if(e||(e=le.Current),!e)return Promise.reject("No context");const t=e.time.frameCount+o;return new Promise((i,n)=>{if(!e)return n("No context");const s=()=>{e.time.frameCount>=t&&(e.pre_update_callbacks.splice(e.pre_update_callbacks.indexOf(s),1),i())};e.pre_update_callbacks.push(s)})}const eu=w("debugresolveurl"),tv="rel:";function IO(o,e){return Kn(o,e)}function Kn(o,e){if(e===void 0)return eu&&console.warn("getPath: uri is undefined, returning uri",e),e;if(e.startsWith("./"))return e;if(e.startsWith("http"))return eu&&console.warn("getPath: uri is absolute, returning uri",e),e;if(o===void 0)return eu&&console.warn("getPath: source is undefined, returning uri",e),e;e.startsWith(tv)&&(e=e.substring(4));const t=o.lastIndexOf("/");if(t>=0){const i=o.substring(0,t+1);for(;i.endsWith("/")&&e.startsWith("/");)e=e.substring(1);const n=i+e;return eu&&console.log("source:",o,`changed uri
|
|
4
4
|
from`,e,`
|
|
@@ -140,7 +140,7 @@ void main(){
|
|
|
140
140
|
#__vconsole .vc-mask {
|
|
141
141
|
overflow: hidden;
|
|
142
142
|
}
|
|
143
|
-
`,Er?.prepend(i),o===!0&&ov()<=0&&Iv(),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.":"")),Bc=!1,wi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function FE(){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 tf="padding: 10px; font-family: monospace;",Dv="margin-bottom: 10px;",Mr="margin-bottom: 10px; margin-top: 15px;",zE="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;",UE=jv,NE=jv+" word-break: break-all;";function Jn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${zE}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${UE}'>${i.label}</td><td style='${NE}'>${n}</td></tr>`}return t+="</tbody></table>",t}function Bv(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function WE(){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='${tf}'>`;const i=ZE();t+=`<h3 style='${Dv}'>Device: ${i}</h3>`,t+=Jn([{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+=Jn(n,!1)),t+="</div>",t+=`<div style='${tf} margin-top: 20px;'>`,t+=`<h3 style='${Dv}'>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:Bv()}];t+=Jn(l,!1),t+="</div>",e(t)}),o}function $E(){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='${tf}'>`;const i=VE();i.length>0&&(t+=`<h3 style='${Mr}'>General GPU Info</h3>`,t+=Jn(i,!1));const n=HE();n.length>0&&(t+=`<h3 style='${Mr}'>WebGL</h3>`,t+=Jn(n,!1));const s=qE();s.length>0&&(t+=`<h3 style='${Mr}'>WebGL 2 Features</h3>`,t+=Jn(s,!1));const r=XE();r.length>0&&(t+=`<h3 style='${Mr}'>WebGL Limits</h3>`,t+=Jn(r,!1));const a=QE();a.length>0&&(t+=`<h3 style='${Mr}'>Texture Formats</h3>`,t+=Jn(a,!1));const l=await YE();if(l.length>0&&(t+=`<h3 style='${Mr}'>WebGPU</h3>`,t+=Jn(l,!1)),I.isSafari()){const c=KE();c.length>0&&(t+=`<h3 style='${Mr}'>Safari GPU Info</h3>`,t+=Jn(c,!1))}t+="</div>",e(t)}),o}function VE(){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=Fv();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=GE(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 GE(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 HE(){const o=[],e=Fv();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:Bv()})),o}function qE(){const o=[];try{const e=document.createElement("canvas").getContext("webgl2");if(!e)return o;o.push({label:"Float Color Buffer",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"Anisotropic Filtering",value:e.getExtension("EXT_texture_filter_anisotropic")?"\u2705":"\u274C"}),o.push({label:"Float Texture Linear",value:e.getExtension("OES_texture_float_linear")?"\u2705":"\u274C"}),o.push({label:"S3TC Compression",value:e.getExtension("WEBGL_compressed_texture_s3tc")?"\u2705":"\u274C"}),o.push({label:"ETC Compression",value:e.getExtension("WEBGL_compressed_texture_etc")?"\u2705":"\u274C"}),o.push({label:"PVRTC Compression",value:e.getExtension("WEBGL_compressed_texture_pvrtc")?"\u2705":"\u274C"}),o.push({label:"ASTC Compression",value:e.getExtension("WEBGL_compressed_texture_astc")?"\u2705":"\u274C"})}catch{}return o}function XE(){const o=[];try{const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t)return o;const i=t instanceof WebGL2RenderingContext;o.push({label:"\u{1F4CF} Max Texture Size",value:t.getParameter(t.MAX_TEXTURE_SIZE).toString()}),o.push({label:"\u{1F3A8} Max Renderbuffer Size",value:t.getParameter(t.MAX_RENDERBUFFER_SIZE).toString()}),o.push({label:"\u{1F517} Max Vertex Attribs",value:t.getParameter(t.MAX_VERTEX_ATTRIBS).toString()}),o.push({label:"\u{1F3AF} Max Texture Units",value:t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS).toString()}),i&&(o.push({label:"\u26A1 Max Samples",value:t.getParameter(t.MAX_SAMPLES).toString()}),o.push({label:"\u{1F504} Max Uniform Buffer Bindings",value:t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),o.push({label:"\u{1F4D0} Max 3D Texture Size",value:t.getParameter(t.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return o}function QE(){const o=[];try{document.createElement("canvas").getContext("webgl")&&(o.push({label:"WebGL 1 RGBA",value:"\u2705"}),o.push({label:"WebGL 1 RGB",value:"\u2705"}));const e=document.createElement("canvas").getContext("webgl2");e&&(o.push({label:"WebGL 2 RGBA32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 RGB32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 R11F_G11F_B10F",value:"\u2705"}),o.push({label:"WebGL 2 RGB565",value:"\u2705"}),o.push({label:"WebGL 2 RGB5_A1",value:"\u2705"}),o.push({label:"WebGL 2 RGBA4444",value:"\u2705"}))}catch{}return o}async function YE(){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 Fv(){try{const o=document.createElement("canvas"),e=o.getContext("webgl2")||o.getContext("webgl");if(!e)return null;const t=e.getExtension("WEBGL_debug_renderer_info"),i=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER),n=t?e.getParameter(t.UNMASKED_VENDOR_WEBGL):e.getParameter(e.VENDOR),s=e.getParameter(e.VERSION);let r;if(i&&i.includes("ANGLE")){const a=i.match(/ANGLE \(([^)]+)\)/);a&&(r=a[1])}return{renderer:i,vendor:n,version:s,angle:r}}catch{return null}}function KE(){const o=[];try{const e=document.createElement("canvas").getContext("webgl");if(e){const t=e.getExtension("WEBGL_debug_renderer_info");if(t){const i=e.getParameter(t.UNMASKED_RENDERER_WEBGL);i&&i.includes("Apple")&&o.push({label:"\u{1F34E} Apple GPU",value:i})}}}catch{}try{const e=document.createElement("canvas").getContext("webgl");e&&(e.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&o.push({label:"\u{1F5DC}\uFE0F PVRTC Support",value:"\u2705"})}catch{}return o}function ZE(){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 JE(){return document.querySelector("#__vconsole .vc-switch")||null}function eM(){return document.querySelector("#__vconsole")||null}const du=w("debugtypes");class tM{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){du&&console.warn("TypeStore: Created",this)}add(e,t){du&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?du&&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){du&&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 iM=Symbol("BuiltInType"),P=new tM,nf=function(o){P.get(o.name)||P.add(o.name,o)};class nM{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 ii;(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&&M())&&console.warn(`AnimationUtils: The root object (${p.name||p.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:p.userData.static,name:p.userData.name,tag:p.userData.tag,matrixAutoUpdate:p.matrixAutoUpdate,matrixWorldAutoUpdate:p.matrixWorldAutoUpdate}),!1):!0}o.testIfRootCanAnimate=e;function t(h){return h._actions||null}o.tryGetActionsFromMixer=t;function i(h,d){if(d||(d=new Array),h)h.animations&&d.push(...h.animations);else return d;if(h.children)for(const p of h.children)i(p,d);return d}o.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function s(h,d,p){if(!h)return;if(h[n]===void 0){if(!p)return;h[n]=new Set}const m=h[n];p?m.add(d):m.has(d)&&m.delete(d)}o.setObjectAnimated=s;function r(h){if(!h)return!1;const d=h[n];return d!==void 0&&d.size>0}o.getObjectAnimated=r;function a(h){if(!h||!h.animations)return console.debug("No animations found in file"),null;const d="scene"in h?h.scene:h,p=new Array;for(let g=0;g<h.animations.length;g++){const f=h.animations[g];if(!f.tracks||f.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const y in f.tracks){const b=f.tracks[y],v=Fa.parseTrackName(b.name);let C=Fa.findNode(d,v.nodeName);if(!C){const O=b.__objectName??b.name.substring(0,b.name.indexOf("."));if(C=d.getObjectByProperty("uuid",O),!C)continue}let k=m(C)||m(d);if(!k){const O=P.get("Animation");if(k=d.addComponent(O),!k){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}p.push(k),k.addClip&&k.addClip(f)}}return p;function m(g){if(!g)return null;const f=g.userData?.components;if(f&&f.length>0)for(let y=0;y<f.length;y++){const b=f[y];if(b.isAnimationComponent===!0)return b}return m(g.parent)}}o.autoplayAnimations=a;function l(){return new Vt("empty",0,[])}o.emptyClip=l;function c(h){const d=h?.duration??.3;let p={x:1,y:1,z:1};h?.scale!==void 0&&(typeof h.scale=="number"?p={x:h.scale,y:h.scale,z:h.scale}:p=h.scale);const m=h?.type??"linear",g=h?.scaleFactor??1.2,f=new Array,y=new Array;switch(m){case"linear":f.push(0,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g);break;case"spring":f.push(0,d*.3,d*.5,d*.7,d*.9,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g,p.x*.9,p.y*.9,p.z*.9,p.x*1.05,p.y*1.05,p.z*1.05,p.x*.98,p.y*.98,p.z*.98,p.x,p.y,p.z);break}const b=new DP(".scale",f,y);return new Vt("scale",f[f.length-1],[b])}o.createScaleClip=c})(ii||(ii={}));const Ye=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=zv(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=zv(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 zv(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const Uv=w("debugcomponentevents");class uu{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),Uv&&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(Uv&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const Nv=w("debugdefines");Rs('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Rs('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Rs('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Rs('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Rs('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.0-beta";'),Rs('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Rs('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Mon Jun 08 2026 13:29:07 GMT+0000 (Coordinated Universal Time)";'),Rs('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const xi="5.1.0-beta",qa="undefined",Fc="Mon Jun 08 2026 13:29:07 GMT+0000 (Coordinated Universal Time)";Nv&&console.log(`Engine version: ${xi} (generator: ${qa})
|
|
143
|
+
`,Er?.prepend(i),o===!0&&ov()<=0&&Iv(),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.":"")),Bc=!1,wi=null},e.src="https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js",document.body.appendChild(e)}function FE(){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 tf="padding: 10px; font-family: monospace;",Dv="margin-bottom: 10px;",Mr="margin-bottom: 10px; margin-top: 15px;",zE="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;",UE=jv,NE=jv+" word-break: break-all;";function Jn(o,e=!1){e&&o.sort((i,n)=>(n.value?1:0)-(i.value?1:0));let t=`<table style='${zE}'>`;t+="<tbody>";for(const i of o){const n=typeof i.value=="boolean"?i.value?"\u2705":"\u274C":i.value;t+=`<tr><td style='${UE}'>${i.label}</td><td style='${NE}'>${n}</td></tr>`}return t+="</tbody></table>",t}function Bv(){try{if(document.createElement("canvas").getContext("webgl2"))return"\u2705"}catch{}return"\u274C"}function WE(){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='${tf}'>`;const i=ZE();t+=`<h3 style='${Dv}'>Device: ${i}</h3>`,t+=Jn([{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+=Jn(n,!1)),t+="</div>",t+=`<div style='${tf} margin-top: 20px;'>`,t+=`<h3 style='${Dv}'>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:Bv()}];t+=Jn(l,!1),t+="</div>",e(t)}),o}function $E(){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='${tf}'>`;const i=VE();i.length>0&&(t+=`<h3 style='${Mr}'>General GPU Info</h3>`,t+=Jn(i,!1));const n=HE();n.length>0&&(t+=`<h3 style='${Mr}'>WebGL</h3>`,t+=Jn(n,!1));const s=qE();s.length>0&&(t+=`<h3 style='${Mr}'>WebGL 2 Features</h3>`,t+=Jn(s,!1));const r=XE();r.length>0&&(t+=`<h3 style='${Mr}'>WebGL Limits</h3>`,t+=Jn(r,!1));const a=QE();a.length>0&&(t+=`<h3 style='${Mr}'>Texture Formats</h3>`,t+=Jn(a,!1));const l=await YE();if(l.length>0&&(t+=`<h3 style='${Mr}'>WebGPU</h3>`,t+=Jn(l,!1)),I.isSafari()){const c=KE();c.length>0&&(t+=`<h3 style='${Mr}'>Safari GPU Info</h3>`,t+=Jn(c,!1))}t+="</div>",e(t)}),o}function VE(){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=Fv();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=GE(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 GE(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 HE(){const o=[],e=Fv();return e&&(o.push({label:"\u{1F4CA} WebGL Version",value:e.version}),o.push({label:"\u{1F3AE} WebGL 2 Available",value:Bv()})),o}function qE(){const o=[];try{const e=document.createElement("canvas").getContext("webgl2");if(!e)return o;o.push({label:"Float Color Buffer",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"Anisotropic Filtering",value:e.getExtension("EXT_texture_filter_anisotropic")?"\u2705":"\u274C"}),o.push({label:"Float Texture Linear",value:e.getExtension("OES_texture_float_linear")?"\u2705":"\u274C"}),o.push({label:"S3TC Compression",value:e.getExtension("WEBGL_compressed_texture_s3tc")?"\u2705":"\u274C"}),o.push({label:"ETC Compression",value:e.getExtension("WEBGL_compressed_texture_etc")?"\u2705":"\u274C"}),o.push({label:"PVRTC Compression",value:e.getExtension("WEBGL_compressed_texture_pvrtc")?"\u2705":"\u274C"}),o.push({label:"ASTC Compression",value:e.getExtension("WEBGL_compressed_texture_astc")?"\u2705":"\u274C"})}catch{}return o}function XE(){const o=[];try{const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t)return o;const i=t instanceof WebGL2RenderingContext;o.push({label:"\u{1F4CF} Max Texture Size",value:t.getParameter(t.MAX_TEXTURE_SIZE).toString()}),o.push({label:"\u{1F3A8} Max Renderbuffer Size",value:t.getParameter(t.MAX_RENDERBUFFER_SIZE).toString()}),o.push({label:"\u{1F517} Max Vertex Attribs",value:t.getParameter(t.MAX_VERTEX_ATTRIBS).toString()}),o.push({label:"\u{1F3AF} Max Texture Units",value:t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS).toString()}),i&&(o.push({label:"\u26A1 Max Samples",value:t.getParameter(t.MAX_SAMPLES).toString()}),o.push({label:"\u{1F504} Max Uniform Buffer Bindings",value:t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),o.push({label:"\u{1F4D0} Max 3D Texture Size",value:t.getParameter(t.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return o}function QE(){const o=[];try{document.createElement("canvas").getContext("webgl")&&(o.push({label:"WebGL 1 RGBA",value:"\u2705"}),o.push({label:"WebGL 1 RGB",value:"\u2705"}));const e=document.createElement("canvas").getContext("webgl2");e&&(o.push({label:"WebGL 2 RGBA32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 RGB32F",value:e.getExtension("EXT_color_buffer_float")?"\u2705":"\u274C"}),o.push({label:"WebGL 2 R11F_G11F_B10F",value:"\u2705"}),o.push({label:"WebGL 2 RGB565",value:"\u2705"}),o.push({label:"WebGL 2 RGB5_A1",value:"\u2705"}),o.push({label:"WebGL 2 RGBA4444",value:"\u2705"}))}catch{}return o}async function YE(){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 Fv(){try{const o=document.createElement("canvas"),e=o.getContext("webgl2")||o.getContext("webgl");if(!e)return null;const t=e.getExtension("WEBGL_debug_renderer_info"),i=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER),n=t?e.getParameter(t.UNMASKED_VENDOR_WEBGL):e.getParameter(e.VENDOR),s=e.getParameter(e.VERSION);let r;if(i&&i.includes("ANGLE")){const a=i.match(/ANGLE \(([^)]+)\)/);a&&(r=a[1])}return{renderer:i,vendor:n,version:s,angle:r}}catch{return null}}function KE(){const o=[];try{const e=document.createElement("canvas").getContext("webgl");if(e){const t=e.getExtension("WEBGL_debug_renderer_info");if(t){const i=e.getParameter(t.UNMASKED_RENDERER_WEBGL);i&&i.includes("Apple")&&o.push({label:"\u{1F34E} Apple GPU",value:i})}}}catch{}try{const e=document.createElement("canvas").getContext("webgl");e&&(e.getSupportedExtensions()||[]).includes("WEBGL_compressed_texture_pvrtc")&&o.push({label:"\u{1F5DC}\uFE0F PVRTC Support",value:"\u2705"})}catch{}return o}function ZE(){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 JE(){return document.querySelector("#__vconsole .vc-switch")||null}function eM(){return document.querySelector("#__vconsole")||null}const du=w("debugtypes");class tM{_types=new Map;_reverseTypes=new Map;_lazyLoaders=new Map;constructor(){du&&console.warn("TypeStore: Created",this)}add(e,t){du&&console.warn("ADD TYPE",e);const i=this._types.get(e);i?du&&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){du&&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 iM=Symbol("BuiltInType"),P=new tM,nf=function(o){P.get(o.name)||P.add(o.name,o)};class nM{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 ii;(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&&M())&&console.warn(`AnimationUtils: The root object (${p.name||p.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:p.userData.static,name:p.userData.name,tag:p.userData.tag,matrixAutoUpdate:p.matrixAutoUpdate,matrixWorldAutoUpdate:p.matrixWorldAutoUpdate}),!1):!0}o.testIfRootCanAnimate=e;function t(h){return h._actions||null}o.tryGetActionsFromMixer=t;function i(h,d){if(d||(d=new Array),h)h.animations&&d.push(...h.animations);else return d;if(h.children)for(const p of h.children)i(p,d);return d}o.tryGetAnimationClipsFromObjectHierarchy=i;const n=Symbol("objectIsAnimatedData");function s(h,d,p){if(!h)return;if(h[n]===void 0){if(!p)return;h[n]=new Set}const m=h[n];p?m.add(d):m.has(d)&&m.delete(d)}o.setObjectAnimated=s;function r(h){if(!h)return!1;const d=h[n];return d!==void 0&&d.size>0}o.getObjectAnimated=r;function a(h){if(!h||!h.animations)return console.debug("No animations found in file"),null;const d="scene"in h?h.scene:h,p=new Array;for(let g=0;g<h.animations.length;g++){const f=h.animations[g];if(!f.tracks||f.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const y in f.tracks){const b=f.tracks[y],v=Fa.parseTrackName(b.name);let C=Fa.findNode(d,v.nodeName);if(!C){const O=b.__objectName??b.name.substring(0,b.name.indexOf("."));if(C=d.getObjectByProperty("uuid",O),!C)continue}let k=m(C)||m(d);if(!k){const O=P.get("Animation");if(k=d.addComponent(O),!k){console.error("Failed creating Animation component: No 'Animation' component found in TypeStore");break}}p.push(k),k.addClip&&k.addClip(f)}}return p;function m(g){if(!g)return null;const f=g.userData?.components;if(f&&f.length>0)for(let y=0;y<f.length;y++){const b=f[y];if(b.isAnimationComponent===!0)return b}return m(g.parent)}}o.autoplayAnimations=a;function l(){return new Vt("empty",0,[])}o.emptyClip=l;function c(h){const d=h?.duration??.3;let p={x:1,y:1,z:1};h?.scale!==void 0&&(typeof h.scale=="number"?p={x:h.scale,y:h.scale,z:h.scale}:p=h.scale);const m=h?.type??"linear",g=h?.scaleFactor??1.2,f=new Array,y=new Array;switch(m){case"linear":f.push(0,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g);break;case"spring":f.push(0,d*.3,d*.5,d*.7,d*.9,d),y.push(p.x,p.y,p.z,p.x*g,p.y*g,p.z*g,p.x*.9,p.y*.9,p.z*.9,p.x*1.05,p.y*1.05,p.z*1.05,p.x*.98,p.y*.98,p.z*.98,p.x,p.y,p.z);break}const b=new DP(".scale",f,y);return new Vt("scale",f[f.length-1],[b])}o.createScaleClip=c})(ii||(ii={}));const Ye=function(o){return u(o)},u=function(o){if(o===void 0&&(o=null),!Array.isArray(o))o=zv(o);else for(let e=0;e<o.length;e++){const t=o[e];o[e]=zv(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 zv(o){switch(o?.prototype?.constructor?.name){case"Number":case"String":case"Boolean":return null}return o}const Uv=w("debugcomponentevents");class uu{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),Uv&&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(Uv&&console.log("Dispatching event "+e,i),!!i)for(const n of i)n(t)}}const Nv=w("debugdefines");Rs('if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";'),Rs('if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";'),Rs('if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";'),Rs('if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";'),Rs('globalThis["__NEEDLE_ENGINE_VERSION__"] = "5.1.0-beta.1";'),Rs('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),Rs('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Tue Jun 09 2026 16:30:29 GMT+0000 (Coordinated Universal Time)";'),Rs('globalThis["__NEEDLE_PUBLIC_KEY__"] = "'+NEEDLE_PUBLIC_KEY+'";');const xi="5.1.0-beta.1",qa="undefined",Fc="Tue Jun 09 2026 16:30:29 GMT+0000 (Coordinated Universal Time)";Nv&&console.log(`Engine version: ${xi} (generator: ${qa})
|
|
144
144
|
Project built at ${Fc}`);const Ts=NEEDLE_PUBLIC_KEY,eo="needle_isActiveInHierarchy",Tr="builtin_components",zc="needle_editor_guid";function Rs(o){try{(0,eval)(o)}catch(e){Nv&&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 of={experimentalSmartHierarchyUpdate:!1},Ni=Symbol("shadowDomOwner"),oM=w("debugpatch");function pu(o,e,t,i){const n=oM===e;if(!t&&!i)return;const s=e+"___needle";rM(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]=$v(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]=$v(l,o,e);else{const c=this[s];Vv(o,e,this,c,l),this[s]=l,Gv(o,e,this,c,l)}},get:function(){const l=this[s];return typeof l=="function"&&l[s]?l[s]:l}}))}function sM(o,e,t){const i=rf(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 Wv=Symbol("Needle:Patches:WrappedFunction");function $v(o,e,t){if(o[Wv])return o;const i=function(...n){Vv(e,t,this,...n);const s=o.apply(this,n);return Gv(e,t,this,s,...n),s};return i[Wv]=!0,i}const mu="Needle:Patches";function sf(){return globalThis[mu]||(globalThis[mu]=new WeakMap),globalThis[mu]}function rf(o,e){const t=sf().get(o);return t?t.get(e):null}function rM(o,e,t,i){let n=sf().get(o);n||(n=new Map,sf().set(o,n));let s=n.get(e);s||(s=[],n.set(e,s)),s.push({prefix:t,postfix:i})}function Vv(o,e,t,...i){if(!t)return;const n=rf(o,e);if(n)for(const s of n)s.prefix?.call(t,...i)}function Gv(o,e,t,i,...n){if(!t)return;const s=rf(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 M()&&console.debug("Spector available: Add '?spector=<frame>' to the URL to enable it and capture a frame.")}}function Hv(o){const e=o;return!!(e.parser&&e.parser.json)}var gu=(o=>(o[o.None=0]="None",o[o.DontExport=1]="DontExport",o))(gu||{});const fu=Symbol("component-name");function yu(o){return o&&typeof o=="object"&&o.isComponent}const lM=Symbol("object"),af=new Fi(()=>new _,20);class qv{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return af.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return af.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return af.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 Xv{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 Qv{object;collider;constructor(e,t){this.object=e,this.collider=t}}class eg{constructor(e){this.context=e,this.root.style.cssText=`
|
|
145
145
|
position: absolute;
|
|
146
146
|
width: 1px; height: 1px;
|
|
@@ -1731,4 +1731,4 @@ Needle Engine: finished loading `+i+`
|
|
|
1731
1731
|
---------------------------------
|
|
1732
1732
|
\u2022 `+r.passes.map(d=>d.name||d.constructor.name+"*").join(`
|
|
1733
1733
|
\u2022 `)+`
|
|
1734
|
-
`),Ai&&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(Ai==="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 Y3=Object.freeze(Object.defineProperty({__proto__:null,PostProcessingHandler:xc},Symbol.toStringTag,{value:"Module"}));class rg{_name;_tracks=[];_currentTrack=null;_pendingSignals=[];_idProvider;constructor(e,t){this._name=e,this._idProvider=new xt(t??Date.now())}static create(e,t){return new rg(e??"Timeline",t)}animationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Animation,t??null),this}audioTrack(e,t,i){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Audio,t??null),this._currentTrack.volume=i,this}activationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Activation,t??null),this}controlTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Control,null),this}signalTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Signal,t??null),this}markerTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.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 xe.Animation:{let n;if(e instanceof Vt)n=e;else{const h=Array.isArray(e)?e:[e],d=i.outputs[0],p=d instanceof E?d:d!=null&&"gameObject"in d?d.gameObject:void 0;n=mh(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??st.None,postExtrapolationMode:s.postExtrapolation??st.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 xe.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:st.None,postExtrapolationMode:st.None,asset:{clip:n,loop:s.loop??!1,volume:s.volume??1}};i.clips.push(c),i.cursor=l;break}case xe.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:st.None,postExtrapolationMode:st.None,asset:{}};i.clips.push(a),i.cursor=r;break}case xe.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:st.None,postExtrapolationMode:st.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!==xe.Signal&&this._currentTrack.type!==xe.Marker)throw new Error(`TimelineBuilder: .marker() is only supported on signal and marker tracks, not "${this._currentTrack.type}"`);const n={type:Sh.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!==xe.Signal&&this._currentTrack.type!==xe.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:Sh.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!==xe.Animation)throw new Error("TimelineBuilder: .track() is only supported on animation tracks");return this._currentTrack.inlineTracks.push(Cy(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=S.getComponent(i,Qr);n||(n=S.addComponent(i,Qr)),n.events||(n.events=[]);for(const s of this._pendingSignals){const r=new xh;r.guid=s.guid;const a=new vl;a.signal=r,a.reaction=new ne([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 E?t:t!=null&&"gameObject"in t?t.gameObject:void 0,n=mh(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:st.None,postExtrapolationMode:st.None,asset:{clip:n,loop:!1,duration:n.duration,removeStartOffset:!1}};e.clips.push(a),e.cursor=s+r,e.inlineTracks=[]}}class fP{}const K3=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:fe,ActionCollection:XS,ActionModel:Ii,AlignmentConstraint:Mh,Animation:Ht,AnimationBuilder:ng,AnimationCurve:Kh,AnimationExtension:tm,Animator:kt,AnimatorController:ro,Antialiasing:td,Attractor:tc,AudioExtension:Ra,AudioListener:qo,AudioSource:Hi,Avatar:Qs,AvatarMarker:mt,AxesHelper:xl,AxisRotationConstraint:Ky,BaseUIComponent:wn,BasicIKConstraint:$y,BehaviorExtension:H0,BehaviorModel:Wt,BloomEffect:Em,BoxCollider:kp,BoxGizmo:ha,BoxHelperComponent:$t,Button:ds,CallInfo:zs,Camera:li,CameraTargetReachedEvent:wh,Canvas:ql,CanvasGroup:tr,CapsuleCollider:Xo,ChangeMaterialOnClick:D0,ChangeTransformOnClick:ra,CharacterController:Zr,CharacterControllerInput:Yo,ChromaticAberration:id,ClickThrough:$m,ColorAdjustments:rr,ColorBySpeedModule:Jl,ColorOverLifetimeModule:wm,ContactShadows:Rh,CursorFollow:Ca,CustomBranding:ca,Deletable:Xy,DeleteBox:br,DepthOfField:Vn,DeviceFlag:Op,DocumentExtension:gP,DragControls:ta,DragProfile:Rp,DropListener:ts,Duplicatable:b0,EffectWrapper:od,EmissionModule:ls,EmphasizeOnClick:Fl,EnvironmentScene:bp,EventList:ne,EventListEvent:Py,EventSystem:yi,EventTrigger:Gp,FieldWithDefault:xS,FixedJoint:hb,FixedRotationAxesConstraint:eS,Fog:Xl,GltfExport:C0,GltfExportBox:x0,GrabPointPlaneConstraint:Ih,Gradient:ua,Graphic:qh,GraphicRaycaster:hp,GridHelper:Ql,GridLayoutGroup:tb,GridSnapConstraint:Ep,GroundProjectedEnv:lo,GroupActionModel:sa,HideOnStart:Cn,HingeJoint:Yh,HorizontalLayoutGroup:eb,get HoverAnimation(){return Po},Image:ac,InheritVelocityModule:bb,InputField:$b,InstanceHandle:ja,InstancingHandler:Aa,Interactable:qy,KeepRotationConstraint:Mp,KeepScaleConstraint:Z1,Keyframe:Ti,LODGroup:mm,LODModel:Kl,Light:Bt,LimitVelocityOverLifetimeModule:bt,LogStats:Hy,LookAt:Vb,LookAtConstraint:Hr,MainModule:Kt,MaskableGraphic:Xh,MeshCollider:Gs,MeshRenderer:Dh,MinMaxCurve:K,MinMaxGradient:pa,NeedleMenu:fo,NestedGltf:Zl,Networking:gb,NoiseModule:_e,ObjectRaycaster:hn,OffsetConstraint:da,OpenURL:lc,OrbitControls:me,Outline:Gl,Padding:la,ParticleBurst:vm,ParticleSubEmitter:_b,ParticleSystem:ed,ParticleSystemRenderer:fn,PhysicsExtension:q0,PixelationEffect:sd,PlaneHeightLockConstraint:Zy,PlayAnimationOnClick:Fh,PlayAudioOnClick:Xs,PlayableDirector:wl,PlayerColor:_c,PointerEventData:jd,PostProcessingHandler:xc,PreliminaryAction:zl,PreliminaryTrigger:zh,RawImage:Um,Rect:lC,RectTransform:Wn,ReflectionProbe:Jo,RegisteredAnimationInfo:_r,RemoteSkybox:Ny,Renderer:hi,RendererLightmap:g0,Rigidbody:it,RotationBySpeedModule:gn,RotationOverLifetimeModule:$n,ScaleLimitConstraint:Qy,SceneSwitcher:nt,ScreenCapture:ar,ScreenSpaceAmbientOcclusion:cs,ScreenSpaceAmbientOcclusionN8:Gn,ScrollFollow:ko,SeeThrough:jb,SetActiveOnClick:j0,ShadowCatcher:cd,ShapeModule:yb,SharpeningEffect:ad,SignalAsset:xh,SignalReceiver:Qr,SignalReceiverEvent:vl,SignalTrackHandler:Ph,Size:aC,SizeBySpeedModule:Ri,SizeOverLifetimeModule:ma,SkinnedMeshRenderer:f0,SmoothFollow:Lm,SnapToSurfaceConstraint:Jy,SpatialGrabRaycaster:Ta,SpatialHtml:md,SpatialTrigger:Dm,SpatialTriggerReceiver:So,SpectatorCamera:jm,SphereCollider:Sl,SplineContainer:wa,SplineData:Co,SplineWalker:_n,Sprite:ns,SpriteData:Nl,SpriteRenderer:Oi,SpriteSheet:Ul,SubEmitterSystem:Pm,SyncedCamera:Bb,SyncedRoom:Hn,SyncedTransform:Bn,TapGestureTrigger:F0,TeleportTarget:am,TestRunner:Ub,TestSimulateUserData:Nb,Text:Yt,TextBuilder:Z0,TextExtension:um,TextureSheetAnimationModule:Zt,TiltShiftEffect:wo,TimelineActivationTrack:gp,TimelineAnimationTrack:Ch,TimelineAudioTrack:xs,TimelineBuilder:rg,TimelineControlTrack:fp,TimelineMarkerTrack:mp,ToneMappingEffect:fa,TrailModule:Ne,TransformData:He,TransformGizmo:xa,TriggerBuilder:Xt,TriggerModel:mr,UIRaycastUtils:Ty,UIRootComponent:Vh,USDZExporter:_o,USDZText:Hl,USDZUIExtension:ob,UsageMarker:Ah,VariantAction:I0,VelocityOverLifetimeModule:Ke,VerticalLayoutGroup:J0,VideoPlayer:vt,get ViewBox(){return ut},Vignette:_a,VisibilityAction:Uh,Voip:hs,Volume:nc,VolumeParameter:N,VolumeProfile:km,WebARCameraBackground:bd,WebARSessionRoot:Pn,WebXR:lm,WebXRImageTracking:_d,WebXRImageTrackingModel:ms,WebXRPlaneTracking:gs,WebXRTrackedImage:vc,XRControllerFollow:ps,XRControllerModel:os,XRControllerMovement:Yi,XRFlag:Un,XRRig:qm,XRState:fi,__Ignore:fP},Symbol.toStringTag,{value:"Module"}));var l_;(o=>{function e(t,i=!1,n=.75){const s=new wa,r=1-j.clamp(n,0,1);return t.forEach((a,l)=>{const c=new _;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 Co;h.position.copy(a),h.tangentIn.copy(c),h.tangentOut.copy(c),s.addKnot(h)}),s.closed=i,s}o.createFromPoints=e})(l_||(l_={}));class Z3 extends SO{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=CO.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 f=new ot(d.index,1,!1);t.setIndex(f)}g.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new ei)),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 J3=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:Z3},Symbol.toStringTag,{value:"Module"}));export{fu as $componentName,An as $fwGZrGe,lM as $physicsKey,fe as ActionBuilder,XS as ActionCollection,Ii as ActionModel,Pw as Addressables,Mh as AlignmentConstraint,ol as AmbientMode,Ht as Animation,ng as AnimationBuilder,Kh as AnimationCurve,tm as AnimationExtension,ii as AnimationUtils,kt as Animator,Pi as AnimatorConditionMode,ro as AnimatorController,og as AnimatorControllerBuilder,Gr as AnimatorControllerParameterType,ph as AnimatorStateInfo,td as Antialiasing,Xn as Application,Tx as AssetDatabase,ee as AssetReference,tc as Attractor,ky as AudioClip,Ra as AudioExtension,qo as AudioListener,R1 as AudioRolloffMode,Hi as AudioSource,Qs as Avatar,mt as AvatarMarker,bl as Axes,xl as AxesHelper,Ky as AxisRotationConstraint,Fc as BUILD_TIME,wn as BaseUIComponent,$y as BasicIKConstraint,H0 as BehaviorExtension,Wt as BehaviorModel,Rr as BlobStorage,Em as BloomEffect,kp as BoxCollider,ha as BoxGizmo,$t as BoxHelperComponent,ds as Button,xn as ButtonsFactory,TC as CallDirection,zs as CallInfo,li as Camera,wh as CameraTargetReachedEvent,ql as Canvas,tr as CanvasGroup,Xo as CapsuleCollider,D0 as ChangeMaterialOnClick,ra as ChangeTransformOnClick,Zr as CharacterController,Yo as CharacterControllerInput,id as ChromaticAberration,Fi as CircularBuffer,Xr as ClearFlags,$m as ClickThrough,st as ClipExtrapolation,qi as Collider,Xv as Collision,lp as CollisionDetectionMode,rr as ColorAdjustments,Jl as ColorBySpeedModule,wm as ColorOverLifetimeModule,FR as Component,R as Component$1,uu as ComponentLifecycleEvents,K3 as Components,Ww as ConnectionEvents,qv as ContactPoint,Rh as ContactShadows,U as Context,YT as ContextArgs,ue as ContextEvent,le as ContextRegistry,Ca as CursorFollow,ca as CustomBranding,Le as CustomShader,Du as DefaultReflectionMode,Xy as Deletable,br as DeleteBox,Vn as DepthOfField,Op as DeviceFlag,I as DeviceUtilities,I1 as DirectorWrapMode,np as DisposableStore,gP as DocumentExtension,ta as DragControls,t0 as DragMode,Rp as DragProfile,ts as DropListener,b0 as Duplicatable,od as EffectWrapper,ls as EmissionModule,Fl as EmphasizeOnClick,Ud as EngineLoadingView,bp as EnvironmentScene,Ef as EventBus,ne as EventList,Py as EventListEvent,yi as EventSystem,Gp as EventTrigger,xS as FieldWithDefault,Da as FileReference,Ow as FileReferenceSerializer,W2 as FileSpawnModel,nS as File_Event,hb as FixedJoint,eS as FixedRotationAxesConstraint,Xl as Fog,dm as FontStyle,Pe as FrameEvent,qa as GENERATOR,S as GameObject,z as Gizmos,C0 as GltfExport,x0 as GltfExportBox,Ih as GrabPointPlaneConstraint,ua as Gradient,qh as Graphic,hp as GraphicRaycaster,fr as Graphics,Ql as GridHelper,tb as GridLayoutGroup,Ep as GridSnapConstraint,lo as GroundProjectedEnv,sa as GroupActionModel,gu as HideFlags,Cn as HideOnStart,Yh as HingeJoint,eb as HorizontalLayoutGroup,uC as HorizontalWrapMode,TM as HostData,Po as HoverAnimation,ac as Image,La as ImageReference,kw as ImageReferenceSerializer,bb as InheritVelocityModule,Aw as Input,Si as InputEventQueue,Ce as InputEvents,$b as InputField,ja as InstanceHandle,Aa as InstancingHandler,Sn as InstancingUtil,hw as InstantiateEvent,xt as InstantiateIdProvider,Mo as InstantiateOptions,qy as Interactable,yd as InternalScreenshotUtils,lT as JoinedRoomResponse,Mp as KeepRotationConstraint,Z1 as KeepScaleConstraint,eT as KeyEventArgs,Ti as Keyframe,mm as LODGroup,Kl as LODModel,Dw as LODsManager,cT as LeftRoomResponse,Bt as Light,Jw as LightData,bt as LimitVelocityOverLifetimeModule,j3 as LoadingElementOptions,Hy as LogStats,zi as LogType,Vb as LookAt,Hr as LookAtConstraint,A as MODULES,Kt as MainModule,Sh as MarkerType,Xh as MaskableGraphic,vs as MaterialPropertyBlock,Fp as MaterialX,j as Mathf,Gs as MeshCollider,Dh as MeshRenderer,K as MinMaxCurve,pa as MinMaxGradient,of as NEEDLE_ENGINE_FEATURE_FLAGS,qc as NEKeyboardEvent,Wo as NEPointerEvent,rP as NeedleButtonElement,o0 as NeedleEngineModelLoader,s_ as NeedleEngineWebComponent,fo as NeedleMenu,mu as NeedlePatchesKey,zf as NeedleXRController,Y as NeedleXRSession,lx as NeedleXRSync,Cx as NeedleXRUtils,Zl as NestedGltf,Fd as NetworkConnection,xo as NetworkedStreamEvents,Bd as NetworkedStreams,gb as Networking,uw as NewInstanceModel,_e as NoiseModule,hn as ObjectRaycaster,Ls as ObjectUtils,da as OffsetConstraint,ou as OneEuroFilter,$g as OneEuroFilterXYZ,lc as OpenURL,me as OrbitControls,Gl as Outline,$w as OwnershipEvent,Vw as OwnershipModel,Ts as PUBLIC_KEY,la as Padding,vm as ParticleBurst,_b as ParticleSubEmitter,ed as ParticleSystem,sr as ParticleSystemBaseBehaviour,fn as ParticleSystemRenderer,_m as ParticleSystemShapeType,Ss as PeerHandle,Uw as PeerNetworking,yc as Physics,q0 as PhysicsExtension,Ot as PhysicsMaterialCombine,sd as PixelationEffect,Zy as PlaneHeightLockConstraint,Fh as PlayAnimationOnClick,Xs as PlayAudioOnClick,wl as PlayableDirector,_c as PlayerColor,Ei as PlayerState,ZS as PlayerStateEvent,N0 as PlayerSync,Gw as PlayerView,Hw as PlayerViewManager,jd as PointerEventData,Mu as PointerType,sx as PostProcessing,ct as PostProcessingEffect,_t as PostProcessingEffectOrder,xc as PostProcessingHandler,Ya as Prefabs,zl as PreliminaryAction,zh as PreliminaryTrigger,kl as PreviewHelper,Ja as PrimitiveType,ce as Progress,jg as PromiseAllWithErrors,Dg as PromiseErrorResult,re as RGBAColor,wc as RapierPhysics,Um as RawImage,Dr as RaycastOptions,lC as Rect,Wn as RectTransform,Jo as ReflectionProbe,wS as ReflectionProbeUsage,_r as RegisteredAnimationInfo,Ny as RemoteSkybox,Ro as RenderTexture,b1 as RenderTextureSerializer,hi as Renderer,Zw as RendererData,g0 as RendererLightmap,it as Rigidbody,tt as RigidbodyConstraints,ie as RoomEvents,gn as RotationBySpeedModule,$n as RotationOverLifetimeModule,Qy as ScaleLimitConstraint,Bp as SceneLightSettings,nt as SceneSwitcher,ar as ScreenCapture,cs as ScreenSpaceAmbientOcclusion,Gn as ScreenSpaceAmbientOcclusionN8,ko as ScrollFollow,jb as SeeThrough,In as SendQueue,Sf as SerializationContext,j0 as SetActiveOnClick,Wp as ShadowCastingMode,cd as ShadowCatcher,yb as ShapeModule,Qv as ShapeOverlapResult,ad as SharpeningEffect,xh as SignalAsset,Qr as SignalReceiver,vl as SignalReceiverEvent,Ph as SignalTrackHandler,aC as Size,Ri as SizeBySpeedModule,ma as SizeOverLifetimeModule,f0 as SkinnedMeshRenderer,Lm as SmoothFollow,Jy as SnapToSurfaceConstraint,Ta as SpatialGrabRaycaster,md as SpatialHtml,Dm as SpatialTrigger,So as SpatialTriggerReceiver,jm as SpectatorCamera,Sl as SphereCollider,ty as SphereIntersection,wa as SplineContainer,Co as SplineData,l_ as SplineUtils,_n as SplineWalker,ns as Sprite,Nl as SpriteData,Oi as SpriteRenderer,Ul as SpriteSheet,$R as StateMachineBehaviour,Db as StreamEndedEvent,MC as StreamReceivedEvent,Pm as SubEmitterSystem,Bb as SyncedCamera,Hn as SyncedRoom,Bn as SyncedTransform,F0 as TapGestureTrigger,am as TeleportTarget,Ub as TestRunner,Nb as TestSimulateUserData,Yt as Text,rt as TextAnchor,Z0 as TextBuilder,um as TextExtension,Zt as TextureSheetAnimationModule,wo as TiltShiftEffect,tx as Time,gp as TimelineActivationTrack,Ch as TimelineAnimationTrack,xs as TimelineAudioTrack,rg as TimelineBuilder,fp as TimelineControlTrack,mp as TimelineMarkerTrack,Yr as TimelineTrackHandler,fa as ToneMappingEffect,xe as TrackType,Ne as TrailModule,He as TransformData,xa as TransformGizmo,Xt as TriggerBuilder,mr as TriggerModel,P as TypeStore,Ty as UIRaycastUtils,Vh as UIRootComponent,P0 as USDDocument,pt as USDObject,RS as USDWriter,IS as USDZExporter,_o as USDZExporter$1,Hl as USDZText,ob as USDZUIExtension,_1 as UriSerializer,Ah as UsageMarker,hT as UserJoinedOrLeftRoomModel,xi as VERSION,I0 as VariantAction,Ke as VelocityOverLifetimeModule,J0 as VerticalLayoutGroup,dC as VerticalWrapMode,vt as VideoPlayer,ut as ViewBox,Vo as ViewDevice,_a as Vignette,Uh as VisibilityAction,hs as Voip,nc as Volume,N as VolumeParameter,km as VolumeProfile,YM as WaitForFrames,Mw as WaitForPromise,Mf as WaitForSeconds,_s as Watch,bd as WebARCameraBackground,Pn as WebARSessionRoot,lm as WebXR,gr as WebXRButtonFactory,_d as WebXRImageTracking,ms as WebXRImageTrackingModel,gs as WebXRPlaneTracking,vc as WebXRTrackedImage,ps as XRControllerFollow,os as XRControllerModel,Yi as XRControllerMovement,Un as XRFlag,qm as XRRig,fi as XRState,yo as XRStateFlag,Nc as _$qWUhYZU,io as _XtEQ,fP as __Ignore,sR as __internalNotifyObjectDestroyed,eo as activeInHierarchyFieldName,iu as addAttributeChangeCallback,so as addComponent,uI as addCustomExtensionPlugin,$r as addNewComponent,pu as addPatch,Xu as apply,DR as applyHMRChanges,Ux as applyPrototypeExtensions,dw as beginListenDestroy,gw as beginListenInstantiate,If as binaryIdentifierCasts,QT as build_scene_functions,Tr as builtinComponentKeyName,o_ as calculateProgress01,tE as clearMessages,v1 as colorSerializer,bw as compareAssociation,gh as componentSerializer,kv as copyTexture,l1 as createMotion,Ci as debugNet,il as debugOwner,FS as decompressGpuTexture,Rc as deepClone,zo as delay,Jd as delayForFrames,Ou as deserializeObject,Vi as destroy,e1 as destroyComponentInstance,oS as determineMimeTypeFromExtension,Re as disposeObjectResources,bn as disposeStream,zc as editorGuidKeyName,Ha as enableSpatialConsole,w1 as eventListSerializer,q3 as exportAsGLTF,hy as findByGuid,yl as findObjectOfType,n1 as findObjectsOfType,iy as findResourceUsers,k1 as fitCamera,Ev as fitObjectIntoVolume,Nr as foreachComponent,py as foreachComponentEnumerator,vE as forward,bx as generateQRCode,mw as generateSeed,vi as getBoundingBox,pv as getCameraController,js as getComponent,ch as getComponentInChildren,hh as getComponentInParent,gl as getComponents,fl as getComponentsInChildren,ip as getComponentsInParent,OS as getFormattedDate,Pt as getIconElement,Hf as getIconTexture,Uo as getLoader,lh as getOrAddComponent,w as getParam,SE as getParentHierarchyPath,IO as getPath,nT as getPeerOptions,Fw as getPeerjsInstance,aR as getResourceUserCount,Qw as getSceneData,yv as getTempColor,_i as getTempQuaternion,B as getTempVector,Ec as getUrlParams,Ov as getVisibleInCustomShadowRendering,wv as getWorldDirection,Yg as getWorldEuler,se as getWorldPosition,we as getWorldQuaternion,lu as getWorldRotation,Qe as getWorldScale,cp as hasPointerEventComponent,Iv as hideDebugConsole,zS as imageToCanvas,Ew as initAddressableSerializers,x1 as initBuiltinSerializers,V3 as initEngine,nP as initPhysics,F1 as initVolumeParameterSerializer,Wr as instantiate,fS as invokeLoadedImportPluginHooks,yx as invokeXRSessionEnd,fx as invokeXRSessionStart,Wx as isActiveInHierarchy,pl as isActiveSelf,zO as isAndroidDevice,Pv as isAnimationAction,yu as isComponent,EO as isDebugMode,DO as isDesktop,Ur as isDestroyed,M as isDevEnvironment,jR as isDisposable,oR as isDisposed,G3 as isExporting,Hv as isGLTFModel,X_ as isHostedOnGlitch,Sy as isHotReloadEnabled,IR as isHotReloading,BO as isIPad,_x as isIconElement,Bi as isLocalNetwork,NO as isMacOS,jO as isMobileDevice,UO as isMozillaXR,VO as isQuest,Ax as isResourceTrackingEnabled,$O as isSafari,XA as isTrackModel,Yu as isUsingInstancing,WO as isiOS,FO as isiPad,k3 as loadAsset,wp as loadPMREM,e_ as loadSync,cu as logHierarchy,uE as lookAtInverse,Ac as lookAtObject,pE as lookAtScreenPoint,TO as makeId,J_ as makeIdFromRandomWords,Qi as makeNameSafe,$x as markAsInstancedRendered,GO as microphonePermissionsGranted,OO as nameof,Q_ as nameofFactory,uT as needle,Oy as objectSerializer,gx as offBeforeXRSession,mx as offXRSessionEnd,px as offXRSessionStart,BR as on,mM as onAfterRender,pM as onBeforeRender,UT as onBeforeXRSession,dM as onClear,uM as onDestroy,hf as onInitialized,vu as onStart,MM as onSyncDestroy,pw as onSyncInstantiate,nw as onUpdate,Vf as onXRSessionEnd,Fu as onXRSessionStart,eP as parseSync,Mv as placeOnSurface,Jg as postprocessFBXMaterials,EA as prefix,Y_ as pushState,RO as randomNumber,Lf as registerBinaryType,$u as registerComponent,d0 as registerComponentExtension,yn as registerCustomEffectType,u0 as registerExportExtensions,Up as registerExtensions,o1 as registerHotReloadType,Zv as registerLoader,fw as registerPrefabProvider,cy as registerPrototypeExtensions,nf as registerType,tv as relativePathPrefix,nv as removeAttributeChangeCallback,xy as removeComponent,pI as removeCustomImportExtensionType,sM as removePatch,Kn as resolveUrl,ev as sanitizeString,qC as saveImage,r3 as screenshot,Kb as screenshot2,yf as sendDestroyed,u as serializable,xw as serializeObject,Ye as serializeable,sh as setActive,rv as setAllowBalloonMessages,KO as setAllowOverlayMessages,ru as setAutoFitEnabled,Vg as setCameraController,Gx as setDestroyed,rE as setDevEnvironment,Lx as setDisposable,ml as setDontDestroy,Ag as setOrAddParamsToUrl,MO as setParam,Mc as setParamWithoutReload,oT as setPeerOptions,nR as setResourceTrackingEnabled,Ig as setState,Zg as setVisibleInCustomShadowRendering,Kg as setWorldEuler,Ui as setWorldPosition,Pr as setWorldPositionXYZ,Rn as setWorldQuaternion,Qg as setWorldQuaternionXYZW,Cv as setWorldRotation,Ic as setWorldRotationXYZ,Ga as setWorldScale,jc as showBalloonError,Me as showBalloonMessage,be as showBalloonWarning,ef as showDebugConsole,gv as slerp,Vc as syncDestroy,zy as syncField,bf as syncInstantiate,CE as textureToCanvas,iv as toSourceId,jw as tryCastBinary,rS as tryDetermineMimetypeFromBinary,sS as tryDetermineMimetypeFromURL,Tc as tryFindObject,Bw as tryGetGuid,s1 as unregisterHotReloadType,AM as unregisterPrefabProvider,Lg as unwatchWrite,mv as useForAutoFit,Be as validate,tu as watchWrite};
|
|
1734
|
+
`),Ai&&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(Ai==="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 Y3=Object.freeze(Object.defineProperty({__proto__:null,PostProcessingHandler:xc},Symbol.toStringTag,{value:"Module"}));class rg{_name;_tracks=[];_currentTrack=null;_pendingSignals=[];_idProvider;constructor(e,t){this._name=e,this._idProvider=new xt(t??Date.now())}static create(e,t){return new rg(e??"Timeline",t)}animationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Animation,t??null),this}audioTrack(e,t,i){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Audio,t??null),this._currentTrack.volume=i,this}activationTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Activation,t??null),this}controlTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Control,null),this}signalTrack(e,t){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.Signal,t??null),this}markerTrack(e){return this.commitInlineTracks(),this._currentTrack=this.pushTrack(e,xe.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 xe.Animation:{let n;if(e instanceof Vt)n=e;else{const h=Array.isArray(e)?e:[e],d=i.outputs[0],p=d instanceof E?d:d!=null&&"gameObject"in d?d.gameObject:void 0;n=mh(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??st.None,postExtrapolationMode:s.postExtrapolation??st.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 xe.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:st.None,postExtrapolationMode:st.None,asset:{clip:n,loop:s.loop??!1,volume:s.volume??1}};i.clips.push(c),i.cursor=l;break}case xe.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:st.None,postExtrapolationMode:st.None,asset:{}};i.clips.push(a),i.cursor=r;break}case xe.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:st.None,postExtrapolationMode:st.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!==xe.Signal&&this._currentTrack.type!==xe.Marker)throw new Error(`TimelineBuilder: .marker() is only supported on signal and marker tracks, not "${this._currentTrack.type}"`);const n={type:Sh.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!==xe.Signal&&this._currentTrack.type!==xe.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:Sh.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!==xe.Animation)throw new Error("TimelineBuilder: .track() is only supported on animation tracks");return this._currentTrack.inlineTracks.push(Cy(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=S.getComponent(i,Qr);n||(n=S.addComponent(i,Qr)),n.events||(n.events=[]);for(const s of this._pendingSignals){const r=new xh;r.guid=s.guid;const a=new vl;a.signal=r,a.reaction=new ne([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 E?t:t!=null&&"gameObject"in t?t.gameObject:void 0,n=mh(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:st.None,postExtrapolationMode:st.None,asset:{clip:n,loop:!1,duration:n.duration,removeStartOffset:!1}};e.clips.push(a),e.cursor=s+r,e.inlineTracks=[]}}class fP{}const K3=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:fe,ActionCollection:XS,ActionModel:Ii,AlignmentConstraint:Mh,Animation:Ht,AnimationBuilder:ng,AnimationCurve:Kh,AnimationExtension:tm,Animator:kt,AnimatorController:ro,Antialiasing:td,Attractor:tc,AudioExtension:Ra,AudioListener:qo,AudioSource:Hi,Avatar:Qs,AvatarMarker:mt,AxesHelper:xl,AxisRotationConstraint:Ky,BaseUIComponent:wn,BasicIKConstraint:$y,BehaviorExtension:H0,BehaviorModel:Wt,BloomEffect:Em,BoxCollider:kp,BoxGizmo:ha,BoxHelperComponent:$t,Button:ds,CallInfo:zs,Camera:li,CameraTargetReachedEvent:wh,Canvas:ql,CanvasGroup:tr,CapsuleCollider:Xo,ChangeMaterialOnClick:D0,ChangeTransformOnClick:ra,CharacterController:Zr,CharacterControllerInput:Yo,ChromaticAberration:id,ClickThrough:$m,ColorAdjustments:rr,ColorBySpeedModule:Jl,ColorOverLifetimeModule:wm,ContactShadows:Rh,CursorFollow:Ca,CustomBranding:ca,Deletable:Xy,DeleteBox:br,DepthOfField:Vn,DeviceFlag:Op,DocumentExtension:gP,DragControls:ta,DragProfile:Rp,DropListener:ts,Duplicatable:b0,EffectWrapper:od,EmissionModule:ls,EmphasizeOnClick:Fl,EnvironmentScene:bp,EventList:ne,EventListEvent:Py,EventSystem:yi,EventTrigger:Gp,FieldWithDefault:xS,FixedJoint:hb,FixedRotationAxesConstraint:eS,Fog:Xl,GltfExport:C0,GltfExportBox:x0,GrabPointPlaneConstraint:Ih,Gradient:ua,Graphic:qh,GraphicRaycaster:hp,GridHelper:Ql,GridLayoutGroup:tb,GridSnapConstraint:Ep,GroundProjectedEnv:lo,GroupActionModel:sa,HideOnStart:Cn,HingeJoint:Yh,HorizontalLayoutGroup:eb,get HoverAnimation(){return Po},Image:ac,InheritVelocityModule:bb,InputField:$b,InstanceHandle:ja,InstancingHandler:Aa,Interactable:qy,KeepRotationConstraint:Mp,KeepScaleConstraint:Z1,Keyframe:Ti,LODGroup:mm,LODModel:Kl,Light:Bt,LimitVelocityOverLifetimeModule:bt,LogStats:Hy,LookAt:Vb,LookAtConstraint:Hr,MainModule:Kt,MaskableGraphic:Xh,MeshCollider:Gs,MeshRenderer:Dh,MinMaxCurve:K,MinMaxGradient:pa,NeedleMenu:fo,NestedGltf:Zl,Networking:gb,NoiseModule:_e,ObjectRaycaster:hn,OffsetConstraint:da,OpenURL:lc,OrbitControls:me,Outline:Gl,Padding:la,ParticleBurst:vm,ParticleSubEmitter:_b,ParticleSystem:ed,ParticleSystemRenderer:fn,PhysicsExtension:q0,PixelationEffect:sd,PlaneHeightLockConstraint:Zy,PlayAnimationOnClick:Fh,PlayAudioOnClick:Xs,PlayableDirector:wl,PlayerColor:_c,PointerEventData:jd,PostProcessingHandler:xc,PreliminaryAction:zl,PreliminaryTrigger:zh,RawImage:Um,Rect:lC,RectTransform:Wn,ReflectionProbe:Jo,RegisteredAnimationInfo:_r,RemoteSkybox:Ny,Renderer:hi,RendererLightmap:g0,Rigidbody:it,RotationBySpeedModule:gn,RotationOverLifetimeModule:$n,ScaleLimitConstraint:Qy,SceneSwitcher:nt,ScreenCapture:ar,ScreenSpaceAmbientOcclusion:cs,ScreenSpaceAmbientOcclusionN8:Gn,ScrollFollow:ko,SeeThrough:jb,SetActiveOnClick:j0,ShadowCatcher:cd,ShapeModule:yb,SharpeningEffect:ad,SignalAsset:xh,SignalReceiver:Qr,SignalReceiverEvent:vl,SignalTrackHandler:Ph,Size:aC,SizeBySpeedModule:Ri,SizeOverLifetimeModule:ma,SkinnedMeshRenderer:f0,SmoothFollow:Lm,SnapToSurfaceConstraint:Jy,SpatialGrabRaycaster:Ta,SpatialHtml:md,SpatialTrigger:Dm,SpatialTriggerReceiver:So,SpectatorCamera:jm,SphereCollider:Sl,SplineContainer:wa,SplineData:Co,SplineWalker:_n,Sprite:ns,SpriteData:Nl,SpriteRenderer:Oi,SpriteSheet:Ul,SubEmitterSystem:Pm,SyncedCamera:Bb,SyncedRoom:Hn,SyncedTransform:Bn,TapGestureTrigger:F0,TeleportTarget:am,TestRunner:Ub,TestSimulateUserData:Nb,Text:Yt,TextBuilder:Z0,TextExtension:um,TextureSheetAnimationModule:Zt,TiltShiftEffect:wo,TimelineActivationTrack:gp,TimelineAnimationTrack:Ch,TimelineAudioTrack:xs,TimelineBuilder:rg,TimelineControlTrack:fp,TimelineMarkerTrack:mp,ToneMappingEffect:fa,TrailModule:Ne,TransformData:He,TransformGizmo:xa,TriggerBuilder:Xt,TriggerModel:mr,UIRaycastUtils:Ty,UIRootComponent:Vh,USDZExporter:_o,USDZText:Hl,USDZUIExtension:ob,UsageMarker:Ah,VariantAction:I0,VelocityOverLifetimeModule:Ke,VerticalLayoutGroup:J0,VideoPlayer:vt,get ViewBox(){return ut},Vignette:_a,VisibilityAction:Uh,Voip:hs,Volume:nc,VolumeParameter:N,VolumeProfile:km,WebARCameraBackground:bd,WebARSessionRoot:Pn,WebXR:lm,WebXRImageTracking:_d,WebXRImageTrackingModel:ms,WebXRPlaneTracking:gs,WebXRTrackedImage:vc,XRControllerFollow:ps,XRControllerModel:os,XRControllerMovement:Yi,XRFlag:Un,XRRig:qm,XRState:fi,__Ignore:fP},Symbol.toStringTag,{value:"Module"}));var l_;(o=>{function e(t,i=!1,n=.75){const s=new wa,r=1-j.clamp(n,0,1);return t.forEach((a,l)=>{const c=new _;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 Co;h.position.copy(a),h.tangentIn.copy(c),h.tangentOut.copy(c),s.addKnot(h)}),s.closed=i,s}o.createFromPoints=e})(l_||(l_={}));class Z3 extends SO{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=CO.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 f=new ot(d.index,1,!1);t.setIndex(f)}g.setBoundingBox&&(t.boundingBox=m.getBoundingBox(new ei)),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 J3=Object.freeze(Object.defineProperty({__proto__:null,GenerateMeshBVHWorker:Z3},Symbol.toStringTag,{value:"Module"}));export{io as $KhjWEFh,fu as $componentName,lM as $physicsKey,fe as ActionBuilder,XS as ActionCollection,Ii as ActionModel,Pw as Addressables,Mh as AlignmentConstraint,ol as AmbientMode,Ht as Animation,ng as AnimationBuilder,Kh as AnimationCurve,tm as AnimationExtension,ii as AnimationUtils,kt as Animator,Pi as AnimatorConditionMode,ro as AnimatorController,og as AnimatorControllerBuilder,Gr as AnimatorControllerParameterType,ph as AnimatorStateInfo,td as Antialiasing,Xn as Application,Tx as AssetDatabase,ee as AssetReference,tc as Attractor,ky as AudioClip,Ra as AudioExtension,qo as AudioListener,R1 as AudioRolloffMode,Hi as AudioSource,Qs as Avatar,mt as AvatarMarker,bl as Axes,xl as AxesHelper,Ky as AxisRotationConstraint,Fc as BUILD_TIME,wn as BaseUIComponent,$y as BasicIKConstraint,H0 as BehaviorExtension,Wt as BehaviorModel,Rr as BlobStorage,Em as BloomEffect,kp as BoxCollider,ha as BoxGizmo,$t as BoxHelperComponent,ds as Button,xn as ButtonsFactory,TC as CallDirection,zs as CallInfo,li as Camera,wh as CameraTargetReachedEvent,ql as Canvas,tr as CanvasGroup,Xo as CapsuleCollider,D0 as ChangeMaterialOnClick,ra as ChangeTransformOnClick,Zr as CharacterController,Yo as CharacterControllerInput,id as ChromaticAberration,Fi as CircularBuffer,Xr as ClearFlags,$m as ClickThrough,st as ClipExtrapolation,qi as Collider,Xv as Collision,lp as CollisionDetectionMode,rr as ColorAdjustments,Jl as ColorBySpeedModule,wm as ColorOverLifetimeModule,FR as Component,R as Component$1,uu as ComponentLifecycleEvents,K3 as Components,Ww as ConnectionEvents,qv as ContactPoint,Rh as ContactShadows,U as Context,YT as ContextArgs,ue as ContextEvent,le as ContextRegistry,Ca as CursorFollow,ca as CustomBranding,Le as CustomShader,Du as DefaultReflectionMode,Xy as Deletable,br as DeleteBox,Vn as DepthOfField,Op as DeviceFlag,I as DeviceUtilities,I1 as DirectorWrapMode,np as DisposableStore,gP as DocumentExtension,ta as DragControls,t0 as DragMode,Rp as DragProfile,ts as DropListener,b0 as Duplicatable,od as EffectWrapper,ls as EmissionModule,Fl as EmphasizeOnClick,Ud as EngineLoadingView,bp as EnvironmentScene,Ef as EventBus,ne as EventList,Py as EventListEvent,yi as EventSystem,Gp as EventTrigger,xS as FieldWithDefault,Da as FileReference,Ow as FileReferenceSerializer,W2 as FileSpawnModel,nS as File_Event,hb as FixedJoint,eS as FixedRotationAxesConstraint,Xl as Fog,dm as FontStyle,Pe as FrameEvent,qa as GENERATOR,S as GameObject,z as Gizmos,C0 as GltfExport,x0 as GltfExportBox,Ih as GrabPointPlaneConstraint,ua as Gradient,qh as Graphic,hp as GraphicRaycaster,fr as Graphics,Ql as GridHelper,tb as GridLayoutGroup,Ep as GridSnapConstraint,lo as GroundProjectedEnv,sa as GroupActionModel,gu as HideFlags,Cn as HideOnStart,Yh as HingeJoint,eb as HorizontalLayoutGroup,uC as HorizontalWrapMode,TM as HostData,Po as HoverAnimation,ac as Image,La as ImageReference,kw as ImageReferenceSerializer,bb as InheritVelocityModule,Aw as Input,Si as InputEventQueue,Ce as InputEvents,$b as InputField,ja as InstanceHandle,Aa as InstancingHandler,Sn as InstancingUtil,hw as InstantiateEvent,xt as InstantiateIdProvider,Mo as InstantiateOptions,qy as Interactable,yd as InternalScreenshotUtils,lT as JoinedRoomResponse,Mp as KeepRotationConstraint,Z1 as KeepScaleConstraint,eT as KeyEventArgs,Ti as Keyframe,mm as LODGroup,Kl as LODModel,Dw as LODsManager,cT as LeftRoomResponse,Bt as Light,Jw as LightData,bt as LimitVelocityOverLifetimeModule,j3 as LoadingElementOptions,Hy as LogStats,zi as LogType,Vb as LookAt,Hr as LookAtConstraint,A as MODULES,Kt as MainModule,Sh as MarkerType,Xh as MaskableGraphic,vs as MaterialPropertyBlock,Fp as MaterialX,j as Mathf,Gs as MeshCollider,Dh as MeshRenderer,K as MinMaxCurve,pa as MinMaxGradient,of as NEEDLE_ENGINE_FEATURE_FLAGS,qc as NEKeyboardEvent,Wo as NEPointerEvent,rP as NeedleButtonElement,o0 as NeedleEngineModelLoader,s_ as NeedleEngineWebComponent,fo as NeedleMenu,mu as NeedlePatchesKey,zf as NeedleXRController,Y as NeedleXRSession,lx as NeedleXRSync,Cx as NeedleXRUtils,Zl as NestedGltf,Fd as NetworkConnection,xo as NetworkedStreamEvents,Bd as NetworkedStreams,gb as Networking,uw as NewInstanceModel,_e as NoiseModule,hn as ObjectRaycaster,Ls as ObjectUtils,da as OffsetConstraint,ou as OneEuroFilter,$g as OneEuroFilterXYZ,lc as OpenURL,me as OrbitControls,Gl as Outline,$w as OwnershipEvent,Vw as OwnershipModel,Ts as PUBLIC_KEY,la as Padding,vm as ParticleBurst,_b as ParticleSubEmitter,ed as ParticleSystem,sr as ParticleSystemBaseBehaviour,fn as ParticleSystemRenderer,_m as ParticleSystemShapeType,Ss as PeerHandle,Uw as PeerNetworking,yc as Physics,q0 as PhysicsExtension,Ot as PhysicsMaterialCombine,sd as PixelationEffect,Zy as PlaneHeightLockConstraint,Fh as PlayAnimationOnClick,Xs as PlayAudioOnClick,wl as PlayableDirector,_c as PlayerColor,Ei as PlayerState,ZS as PlayerStateEvent,N0 as PlayerSync,Gw as PlayerView,Hw as PlayerViewManager,jd as PointerEventData,Mu as PointerType,sx as PostProcessing,ct as PostProcessingEffect,_t as PostProcessingEffectOrder,xc as PostProcessingHandler,Ya as Prefabs,zl as PreliminaryAction,zh as PreliminaryTrigger,kl as PreviewHelper,Ja as PrimitiveType,ce as Progress,jg as PromiseAllWithErrors,Dg as PromiseErrorResult,re as RGBAColor,wc as RapierPhysics,Um as RawImage,Dr as RaycastOptions,lC as Rect,Wn as RectTransform,Jo as ReflectionProbe,wS as ReflectionProbeUsage,_r as RegisteredAnimationInfo,Ny as RemoteSkybox,Ro as RenderTexture,b1 as RenderTextureSerializer,hi as Renderer,Zw as RendererData,g0 as RendererLightmap,it as Rigidbody,tt as RigidbodyConstraints,ie as RoomEvents,gn as RotationBySpeedModule,$n as RotationOverLifetimeModule,Qy as ScaleLimitConstraint,Bp as SceneLightSettings,nt as SceneSwitcher,ar as ScreenCapture,cs as ScreenSpaceAmbientOcclusion,Gn as ScreenSpaceAmbientOcclusionN8,ko as ScrollFollow,jb as SeeThrough,In as SendQueue,Sf as SerializationContext,j0 as SetActiveOnClick,Wp as ShadowCastingMode,cd as ShadowCatcher,yb as ShapeModule,Qv as ShapeOverlapResult,ad as SharpeningEffect,xh as SignalAsset,Qr as SignalReceiver,vl as SignalReceiverEvent,Ph as SignalTrackHandler,aC as Size,Ri as SizeBySpeedModule,ma as SizeOverLifetimeModule,f0 as SkinnedMeshRenderer,Lm as SmoothFollow,Jy as SnapToSurfaceConstraint,Ta as SpatialGrabRaycaster,md as SpatialHtml,Dm as SpatialTrigger,So as SpatialTriggerReceiver,jm as SpectatorCamera,Sl as SphereCollider,ty as SphereIntersection,wa as SplineContainer,Co as SplineData,l_ as SplineUtils,_n as SplineWalker,ns as Sprite,Nl as SpriteData,Oi as SpriteRenderer,Ul as SpriteSheet,$R as StateMachineBehaviour,Db as StreamEndedEvent,MC as StreamReceivedEvent,Pm as SubEmitterSystem,Bb as SyncedCamera,Hn as SyncedRoom,Bn as SyncedTransform,F0 as TapGestureTrigger,am as TeleportTarget,Ub as TestRunner,Nb as TestSimulateUserData,Yt as Text,rt as TextAnchor,Z0 as TextBuilder,um as TextExtension,Zt as TextureSheetAnimationModule,wo as TiltShiftEffect,tx as Time,gp as TimelineActivationTrack,Ch as TimelineAnimationTrack,xs as TimelineAudioTrack,rg as TimelineBuilder,fp as TimelineControlTrack,mp as TimelineMarkerTrack,Yr as TimelineTrackHandler,fa as ToneMappingEffect,xe as TrackType,Ne as TrailModule,He as TransformData,xa as TransformGizmo,Xt as TriggerBuilder,mr as TriggerModel,P as TypeStore,Ty as UIRaycastUtils,Vh as UIRootComponent,P0 as USDDocument,pt as USDObject,RS as USDWriter,IS as USDZExporter,_o as USDZExporter$1,Hl as USDZText,ob as USDZUIExtension,_1 as UriSerializer,Ah as UsageMarker,hT as UserJoinedOrLeftRoomModel,xi as VERSION,I0 as VariantAction,Ke as VelocityOverLifetimeModule,J0 as VerticalLayoutGroup,dC as VerticalWrapMode,vt as VideoPlayer,ut as ViewBox,Vo as ViewDevice,_a as Vignette,Uh as VisibilityAction,hs as Voip,nc as Volume,N as VolumeParameter,km as VolumeProfile,YM as WaitForFrames,Mw as WaitForPromise,Mf as WaitForSeconds,_s as Watch,bd as WebARCameraBackground,Pn as WebARSessionRoot,lm as WebXR,gr as WebXRButtonFactory,_d as WebXRImageTracking,ms as WebXRImageTrackingModel,gs as WebXRPlaneTracking,vc as WebXRTrackedImage,ps as XRControllerFollow,os as XRControllerModel,Yi as XRControllerMovement,Un as XRFlag,qm as XRRig,fi as XRState,yo as XRStateFlag,Nc as _$WfJljBK,An as __Aale,fP as __Ignore,sR as __internalNotifyObjectDestroyed,eo as activeInHierarchyFieldName,iu as addAttributeChangeCallback,so as addComponent,uI as addCustomExtensionPlugin,$r as addNewComponent,pu as addPatch,Xu as apply,DR as applyHMRChanges,Ux as applyPrototypeExtensions,dw as beginListenDestroy,gw as beginListenInstantiate,If as binaryIdentifierCasts,QT as build_scene_functions,Tr as builtinComponentKeyName,o_ as calculateProgress01,tE as clearMessages,v1 as colorSerializer,bw as compareAssociation,gh as componentSerializer,kv as copyTexture,l1 as createMotion,Ci as debugNet,il as debugOwner,FS as decompressGpuTexture,Rc as deepClone,zo as delay,Jd as delayForFrames,Ou as deserializeObject,Vi as destroy,e1 as destroyComponentInstance,oS as determineMimeTypeFromExtension,Re as disposeObjectResources,bn as disposeStream,zc as editorGuidKeyName,Ha as enableSpatialConsole,w1 as eventListSerializer,q3 as exportAsGLTF,hy as findByGuid,yl as findObjectOfType,n1 as findObjectsOfType,iy as findResourceUsers,k1 as fitCamera,Ev as fitObjectIntoVolume,Nr as foreachComponent,py as foreachComponentEnumerator,vE as forward,bx as generateQRCode,mw as generateSeed,vi as getBoundingBox,pv as getCameraController,js as getComponent,ch as getComponentInChildren,hh as getComponentInParent,gl as getComponents,fl as getComponentsInChildren,ip as getComponentsInParent,OS as getFormattedDate,Pt as getIconElement,Hf as getIconTexture,Uo as getLoader,lh as getOrAddComponent,w as getParam,SE as getParentHierarchyPath,IO as getPath,nT as getPeerOptions,Fw as getPeerjsInstance,aR as getResourceUserCount,Qw as getSceneData,yv as getTempColor,_i as getTempQuaternion,B as getTempVector,Ec as getUrlParams,Ov as getVisibleInCustomShadowRendering,wv as getWorldDirection,Yg as getWorldEuler,se as getWorldPosition,we as getWorldQuaternion,lu as getWorldRotation,Qe as getWorldScale,cp as hasPointerEventComponent,Iv as hideDebugConsole,zS as imageToCanvas,Ew as initAddressableSerializers,x1 as initBuiltinSerializers,V3 as initEngine,nP as initPhysics,F1 as initVolumeParameterSerializer,Wr as instantiate,fS as invokeLoadedImportPluginHooks,yx as invokeXRSessionEnd,fx as invokeXRSessionStart,Wx as isActiveInHierarchy,pl as isActiveSelf,zO as isAndroidDevice,Pv as isAnimationAction,yu as isComponent,EO as isDebugMode,DO as isDesktop,Ur as isDestroyed,M as isDevEnvironment,jR as isDisposable,oR as isDisposed,G3 as isExporting,Hv as isGLTFModel,X_ as isHostedOnGlitch,Sy as isHotReloadEnabled,IR as isHotReloading,BO as isIPad,_x as isIconElement,Bi as isLocalNetwork,NO as isMacOS,jO as isMobileDevice,UO as isMozillaXR,VO as isQuest,Ax as isResourceTrackingEnabled,$O as isSafari,XA as isTrackModel,Yu as isUsingInstancing,WO as isiOS,FO as isiPad,k3 as loadAsset,wp as loadPMREM,e_ as loadSync,cu as logHierarchy,uE as lookAtInverse,Ac as lookAtObject,pE as lookAtScreenPoint,TO as makeId,J_ as makeIdFromRandomWords,Qi as makeNameSafe,$x as markAsInstancedRendered,GO as microphonePermissionsGranted,OO as nameof,Q_ as nameofFactory,uT as needle,Oy as objectSerializer,gx as offBeforeXRSession,mx as offXRSessionEnd,px as offXRSessionStart,BR as on,mM as onAfterRender,pM as onBeforeRender,UT as onBeforeXRSession,dM as onClear,uM as onDestroy,hf as onInitialized,vu as onStart,MM as onSyncDestroy,pw as onSyncInstantiate,nw as onUpdate,Vf as onXRSessionEnd,Fu as onXRSessionStart,eP as parseSync,Mv as placeOnSurface,Jg as postprocessFBXMaterials,EA as prefix,Y_ as pushState,RO as randomNumber,Lf as registerBinaryType,$u as registerComponent,d0 as registerComponentExtension,yn as registerCustomEffectType,u0 as registerExportExtensions,Up as registerExtensions,o1 as registerHotReloadType,Zv as registerLoader,fw as registerPrefabProvider,cy as registerPrototypeExtensions,nf as registerType,tv as relativePathPrefix,nv as removeAttributeChangeCallback,xy as removeComponent,pI as removeCustomImportExtensionType,sM as removePatch,Kn as resolveUrl,ev as sanitizeString,qC as saveImage,r3 as screenshot,Kb as screenshot2,yf as sendDestroyed,u as serializable,xw as serializeObject,Ye as serializeable,sh as setActive,rv as setAllowBalloonMessages,KO as setAllowOverlayMessages,ru as setAutoFitEnabled,Vg as setCameraController,Gx as setDestroyed,rE as setDevEnvironment,Lx as setDisposable,ml as setDontDestroy,Ag as setOrAddParamsToUrl,MO as setParam,Mc as setParamWithoutReload,oT as setPeerOptions,nR as setResourceTrackingEnabled,Ig as setState,Zg as setVisibleInCustomShadowRendering,Kg as setWorldEuler,Ui as setWorldPosition,Pr as setWorldPositionXYZ,Rn as setWorldQuaternion,Qg as setWorldQuaternionXYZW,Cv as setWorldRotation,Ic as setWorldRotationXYZ,Ga as setWorldScale,jc as showBalloonError,Me as showBalloonMessage,be as showBalloonWarning,ef as showDebugConsole,gv as slerp,Vc as syncDestroy,zy as syncField,bf as syncInstantiate,CE as textureToCanvas,iv as toSourceId,jw as tryCastBinary,rS as tryDetermineMimetypeFromBinary,sS as tryDetermineMimetypeFromURL,Tc as tryFindObject,Bw as tryGetGuid,s1 as unregisterHotReloadType,AM as unregisterPrefabProvider,Lg as unwatchWrite,mv as useForAutoFit,Be as validate,tu as watchWrite};
|
package/dist/needle-engine.d.ts
CHANGED
|
@@ -118,11 +118,13 @@ import { XRHandSpace } from 'three';
|
|
|
118
118
|
|
|
119
119
|
export declare const $componentName: unique symbol;
|
|
120
120
|
|
|
121
|
-
/* Excluded from this release type: $
|
|
121
|
+
/* Excluded from this release type: $KhjWEFh */
|
|
122
122
|
|
|
123
123
|
export declare const $physicsKey: unique symbol;
|
|
124
124
|
|
|
125
|
-
/* Excluded from this release type: _$
|
|
125
|
+
/* Excluded from this release type: _$WfJljBK */
|
|
126
|
+
|
|
127
|
+
/* Excluded from this release type: __Aale */
|
|
126
128
|
|
|
127
129
|
export declare class __Ignore {
|
|
128
130
|
}
|
|
@@ -25152,8 +25154,6 @@ export declare class OrbitControls extends Component implements ICameraControlle
|
|
|
25152
25154
|
All = 4294967295
|
|
25153
25155
|
}
|
|
25154
25156
|
|
|
25155
|
-
/* Excluded from this release type: _XtEQ */
|
|
25156
|
-
|
|
25157
25157
|
export { }
|
|
25158
25158
|
|
|
25159
25159
|
|
|
@@ -25179,13 +25179,6 @@ declare module 'three' {
|
|
|
25179
25179
|
}
|
|
25180
25180
|
|
|
25181
25181
|
|
|
25182
|
-
declare module 'three' {
|
|
25183
|
-
interface Vector3 {
|
|
25184
|
-
slerp(end: Vector3, t: number): Vector3;
|
|
25185
|
-
}
|
|
25186
|
-
}
|
|
25187
|
-
|
|
25188
|
-
|
|
25189
25182
|
declare module 'three' {
|
|
25190
25183
|
interface Object3D {
|
|
25191
25184
|
get guid(): string | undefined;
|
|
@@ -25324,3 +25317,10 @@ declare module 'three' {
|
|
|
25324
25317
|
contains(object: Object3D | null | undefined): boolean;
|
|
25325
25318
|
}
|
|
25326
25319
|
}
|
|
25320
|
+
|
|
25321
|
+
|
|
25322
|
+
declare module 'three' {
|
|
25323
|
+
interface Vector3 {
|
|
25324
|
+
slerp(end: Vector3, t: number): Vector3;
|
|
25325
|
+
}
|
|
25326
|
+
}
|