aptechka 0.5.42 → 0.5.44
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/lib/DRACOLoader-C2CFpMGS.cjs +2 -0
- package/lib/DRACOLoader-D2KY2dku.js +241 -0
- package/lib/KTX2Loader-DdUl1XiY.cjs +2 -0
- package/lib/KTX2Loader-DqpAffDj.js +536 -0
- package/lib/MeshoptDecoder-6XfTpOG2.js +201 -0
- package/lib/MeshoptDecoder-CMeN3oU0.cjs +1 -0
- package/lib/accordion/AccordionElement.d.ts +2 -2
- package/lib/accordion/index.cjs +1 -1
- package/lib/accordion/index.js +26 -26
- package/lib/animation/Animation.d.ts +2 -2
- package/lib/animation/AnimationLink.d.ts +1 -1
- package/lib/animation/Damped.d.ts +1 -1
- package/lib/animation/Tweened.d.ts +2 -2
- package/lib/attribute/index.d.ts +1 -1
- package/lib/canvas/index.cjs +1 -1
- package/lib/canvas/index.d.ts +1 -1
- package/lib/canvas/index.js +26 -26
- package/lib/checkbox/index.cjs +1 -1
- package/lib/checkbox/index.js +17 -17
- package/lib/controls/AutoplayControls.d.ts +1 -1
- package/lib/controls/DragControls.d.ts +1 -1
- package/lib/controls/WheelControls.d.ts +1 -1
- package/lib/css-property/index.d.ts +1 -1
- package/lib/custom-element/index.d.ts +1 -4
- package/lib/element-constructor/ElementConstructor.d.ts +2 -2
- package/lib/en3/attachments/En3SourceManager.d.ts +2 -2
- package/lib/en3/core/En3View.d.ts +2 -2
- package/lib/en3/core/en3.d.ts +2 -2
- package/lib/en3/index.cjs +22 -24
- package/lib/en3/index.js +1811 -2733
- package/lib/en3/loaders/en3GLTFLoader.d.ts +5 -5
- package/lib/en3/objects/En3Clip.d.ts +2 -2
- package/lib/en3/objects/En3ClipHelpers.d.ts +1 -1
- package/lib/en3/objects/En3GLTF.d.ts +3 -3
- package/lib/en3/objects/En3Image.d.ts +1 -1
- package/lib/en3/objects/En3ImageLike.d.ts +2 -2
- package/lib/en3/objects/En3Video.d.ts +1 -1
- package/lib/en3/objects/fluid/Advection.d.ts +1 -1
- package/lib/en3/objects/fluid/Divergence.d.ts +1 -1
- package/lib/en3/objects/fluid/En3Fluid.d.ts +1 -1
- package/lib/en3/objects/fluid/En3FluidElement.d.ts +1 -1
- package/lib/en3/objects/fluid/ExternalForce.d.ts +1 -1
- package/lib/en3/objects/fluid/Poisson.d.ts +1 -1
- package/lib/en3/objects/fluid/Pressure.d.ts +1 -1
- package/lib/en3/objects/fluid/Simulation.d.ts +1 -1
- package/lib/en3/objects/fluid/Viscous.d.ts +1 -1
- package/lib/en3/utils/coverTexture.d.ts +1 -1
- package/lib/{index-BtsOv9u0.js → index-BN9X-l9M.js} +63 -63
- package/lib/index-BbgmbQ-5.cjs +9 -0
- package/lib/layout-box/index.d.ts +2 -2
- package/lib/modal/index.cjs +1 -1
- package/lib/modal/index.js +9 -9
- package/lib/pointer/Pointer.d.ts +1 -1
- package/lib/pointer/PointerElement.d.ts +1 -1
- package/lib/pointer/index.cjs +1 -1
- package/lib/pointer/index.js +1 -1
- package/lib/popover/PopoverButtonElement.d.ts +1 -1
- package/lib/popover/PopoverElement.d.ts +2 -2
- package/lib/popover/index.cjs +1 -1
- package/lib/popover/index.js +48 -48
- package/lib/scroll/ScrollElement.d.ts +6 -6
- package/lib/scroll/ScrollSegmentElement.d.ts +3 -3
- package/lib/scroll/ScrollUserElement.d.ts +1 -1
- package/lib/scroll/index.cjs +1 -1
- package/lib/scroll/index.js +10 -10
- package/lib/scroll-entries/index.d.ts +1 -1
- package/lib/select/SelectUserElement.d.ts +1 -1
- package/lib/select/index.cjs +1 -1
- package/lib/select/index.js +1 -1
- package/lib/sequence/index.cjs +1 -1
- package/lib/sequence/index.d.ts +1 -1
- package/lib/sequence/index.js +7 -7
- package/lib/slicer/SlicerElement.d.ts +2 -2
- package/lib/slicer/index.cjs +4 -4
- package/lib/slicer/index.js +31 -31
- package/lib/source/SourceElement.d.ts +2 -2
- package/lib/source/SourceManager.d.ts +1 -1
- package/lib/tweaker/TweakerBooleanManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerColorManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerElement.d.ts +1 -1
- package/lib/tweaker/TweakerFieldElement.d.ts +2 -2
- package/lib/tweaker/TweakerFolderElement.d.ts +3 -3
- package/lib/tweaker/TweakerLinkManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerNumberManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerRangeManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerSelectManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerStoreManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerStringManagerElement.d.ts +1 -1
- package/lib/tweaker/index.cjs +2 -2
- package/lib/tweaker/index.js +125 -125
- package/lib/tweaker/tweakerManagerConstructors.d.ts +1 -1
- package/lib/utils/function.d.ts +2 -2
- package/lib/utils/layout.d.ts +1 -1
- package/lib/video/index.cjs +1 -1
- package/lib/video/index.js +13 -13
- package/package.json +4 -12
- package/lib/index-Buf76Qoq.cjs +0 -9
- package/lib/resized/index.cjs +0 -1
- package/lib/resized/index.d.ts +0 -12
- package/lib/resized/index.js +0 -30
package/lib/en3/index.cjs
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Cn=Object.defineProperty,Dn=Object.defineProperties;var On=Object.getOwnPropertyDescriptors;var ln=Object.getOwnPropertySymbols;var Fn=Object.prototype.hasOwnProperty,In=Object.prototype.propertyIsEnumerable;var un=(h,t,e)=>t in h?Cn(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e,W=(h,t)=>{for(var e in t||(t={}))Fn.call(t,e)&&un(h,e,t[e]);if(ln)for(var e of ln(t))In.call(t,e)&&un(h,e,t[e]);return h},ut=(h,t)=>Dn(h,On(t));var zt=(h,t,e)=>{if(!t.has(h))throw TypeError("Cannot "+e)};var r=(h,t,e)=>(zt(h,t,"read from private field"),e?e.call(h):t.get(h)),g=(h,t,e)=>{if(t.has(h))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(h):t.set(h,e)},y=(h,t,e,s)=>(zt(h,t,"write to private field"),s?s.call(h,e):t.set(h,e),e);var Y=(h,t,e)=>(zt(h,t,"access private method"),e);var Kt=(h,t,e)=>new Promise((s,n)=>{var i=a=>{try{c(e.next(a))}catch(u){n(u)}},o=a=>{try{c(e.throw(a))}catch(u){n(u)}},c=a=>a.done?s(a.value):Promise.resolve(a.value).then(i,o);c((e=e.apply(h,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ft=require("../order/index.cjs"),Ae=require("../window-resizer/index.cjs"),ve=require("../ticker/index.cjs"),An=require("../dom-JBOkFLTh.cjs"),l=require("three"),Zt=require("../layout-box/index.cjs"),jt=require("../loading/index.cjs"),Nn=require("../SourceManager-vSlsMKUE.cjs"),F=require("../Store-C-1ruEIm.cjs"),Pn=require("../easings-DsS5-Kqc.cjs"),kn=require("../function-MthRj-GJ.cjs"),Bn=require("../Tweened-DIt9j9B-.cjs"),Gn=require("../Viewport-DMB0dO-s.cjs"),vn=require("../custom-element/index.cjs");function Hn(h){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(h){for(const e in h)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(h,e);Object.defineProperty(t,e,s.get?s:{enumerable:!0,get:()=>h[e]})}}return t.default=h,Object.freeze(t)}const Xt=Hn(l);function Ne(h){const t=e=>{e.dispose();for(const s of Object.keys(e)){const n=e[s];n&&typeof n=="object"&&"minFilter"in n&&n.dispose()}};h.traverse(e=>{if(e instanceof l.Mesh){if(e.geometry.dispose(),!Array.isArray(e.material)&&e.material.isMaterial)t(e.material);else if(Array.isArray(e.material))for(const s of e.material)t(s)}})}var pt,O,Se,oe,ae,ke,ce,le;class Jt{constructor(t,e){g(this,pt,void 0);g(this,O,void 0);g(this,Se,void 0);g(this,oe,void 0);g(this,ae,void 0);g(this,ke,void 0);g(this,ce,void 0);g(this,le,void 0);y(this,pt,t),y(this,O,(e==null?void 0:e.cameraType)==="orthographic"?new l.OrthographicCamera:new l.PerspectiveCamera),y(this,Se,new l.Scene),y(this,oe,[]),y(this,ae,(e==null?void 0:e.cameraDistance)||1e3),r(this,O).near=(e==null?void 0:e.cameraNear)||1,r(this,O).far=(e==null?void 0:e.cameraFar)||11e3,y(this,ke,(e==null?void 0:e.cameraFov)||"auto"),y(this,ce,An.getElement(e==null?void 0:e.sizeElement)||document.documentElement),this.beforeRenderCallback=e==null?void 0:e.beforeRender,y(this,le,new Zt.LayoutBox(r(this,ce))),r(this,le).onScale(()=>{this.resize()})}get name(){return r(this,pt)}get camera(){return r(this,O)}get scene(){return r(this,Se)}get box(){return r(this,le)}get cameraDistance(){return r(this,ae)}set cameraDistance(t){y(this,ae,t),this.resize()}get sizeElement(){return r(this,ce)}get isClipped(){return r(this,ce)!==R.containerElement}resize(){const{width:t,height:e}=r(this,le);r(this,O).position.z=r(this,ae),r(this,O)instanceof l.PerspectiveCamera?(r(this,O).aspect=t/e,r(this,O).fov=r(this,ke)==="auto"?2*Math.atan(e/2/r(this,ae))*(180/Math.PI):r(this,ke)):r(this,O)instanceof l.OrthographicCamera&&(r(this,O).left=t/-2,r(this,O).right=t/2,r(this,O).top=e/2,r(this,O).bottom=e/-2),r(this,O).updateProjectionMatrix()}destroy(){r(this,oe).forEach(t=>{t.userData.box.destroy()}),r(this,Se).clear(),Ne(r(this,Se)),R.destroyView(this.name),r(this,le).destroy()}attachToHTMLElement(t,e,s){const n=new Zt.LayoutBox(t,ut(W({},s),{containerElement:r(this,ce),cartesian:!0,scrollStep:!this.isClipped}));return n.bindObject(e),e.userData.box=n,r(this,oe).push(e),e}detachFromHTMLElement(t){y(this,oe,r(this,oe).filter(e=>e===t?(t.userData.box.destroy(),!1):!0))}add(...t){const e=t[0],s=t[1],n=t[2];return this.scene.add(e),s?this.attachToHTMLElement(s,e,n):e}remove(t,e){this.scene.remove(t),e&&this.detachFromHTMLElement(t)}}pt=new WeakMap,O=new WeakMap,Se=new WeakMap,oe=new WeakMap,ae=new WeakMap,ke=new WeakMap,ce=new WeakMap,le=new WeakMap;const V=new Map;var kt,Z,C,P,Be,Ge,He,mt,be,gt,xt,yt;class Vn{constructor(){g(this,kt,`https://unpkg.com/three@0.${l.REVISION}.x`);g(this,Z,null);g(this,C,null);g(this,P,new Map);g(this,Be,0);g(this,Ge,0);g(this,He,0);g(this,mt,2);g(this,be,!1);g(this,gt,!1);g(this,xt,()=>{var t;y(this,Be,r(this,Z).clientWidth),y(this,Ge,r(this,Z).clientHeight),y(this,He,Math.min(r(this,mt),devicePixelRatio||1)),r(this,C).setPixelRatio(r(this,He)),r(this,C).setSize(r(this,Be),r(this,Ge)),(t=this.onResize)==null||t.call(this)});g(this,yt,()=>{r(this,C).setRenderTarget(null),r(this,P).forEach(t=>{this.render(t)})})}get CDNVersion(){return r(this,kt)}get containerElement(){return r(this,Z)}get webglRenderer(){return r(this,C)}get views(){return r(this,P)}get view(){return this.getView("default")}get width(){return r(this,Be)}get height(){return r(this,Ge)}get pixelRatio(){return r(this,He)}get cacheAssets(){return r(this,gt)}setup(t){if(r(this,be)){console.warn("[en3.setup]: You are trying to setup en3 again.");return}y(this,Z,An.getElement(t==null?void 0:t.containerElement)||document.body),y(this,mt,(t==null?void 0:t.maxPixelRatio)||2),y(this,C,new l.WebGLRenderer(t==null?void 0:t.webGLRendererParameters)),r(this,C).domElement.style.cssText=`
|
|
2
2
|
position: fixed;
|
|
3
3
|
left: 0;
|
|
4
4
|
top: 0;
|
|
5
5
|
width: 100%;
|
|
6
6
|
height: 100%;
|
|
7
7
|
z-index: -1;
|
|
8
|
-
`,o(this,iA).append(o(this,T).domElement),o(this,k).set("default",new Rt("default",eA({sizeElement:o(this,iA)},A==null?void 0:A.view))),D(this,Se,(A==null?void 0:A.cacheAssets)||!1),D(this,xA,!0),wA.windowResizer.subscribe(o(this,Le),we.RESIZE_ORDER.EN3),yA.ticker.subscribe(o(this,Te),{order:we.TICK_ORDER.EN3})}destroy(){if(!o(this,xA)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}wA.windowResizer.unsubscribe(o(this,Le)),yA.ticker.unsubscribe(o(this,Te)),o(this,k).forEach(A=>{A.destroy()}),o(this,T).dispose(),o(this,T).domElement.remove(),D(this,T,null),D(this,xA,!1),Y.forEach(A=>{A.dispose()}),Y.clear()}createView(A,e){const s=o(this,k).size,t=new Rt(A,e);return o(this,k).set(A,t),s===1&&o(this,T).setScissorTest(!0),t}getView(A){return o(this,k).get(A)}destroyView(A){const e=o(this,k).get(A);e&&(o(this,k).delete(A),e.destroy(),o(this,k).size<=1&&o(this,T).setScissorTest(!1))}render(A){var e;if(o(this,k).size>1||this.view.isClipped){const s=A.box.left+A.box.CSSTranslation.x+A.box.scrollValue.x,t=w.height-A.box.height-A.box.top+A.box.CSSTranslation.y+A.box.scrollValue.y*-1;o(this,T).setScissor(s,t,A.box.width,A.box.height),o(this,T).setViewport(s,t,A.box.width,A.box.height)}(e=A.beforeRenderCallback)==null||e.call(A),o(this,T).render(A.scene,A.camera)}}nt=new WeakMap,iA=new WeakMap,T=new WeakMap,k=new WeakMap,VA=new WeakMap,WA=new WeakMap,jA=new WeakMap,Me=new WeakMap,xA=new WeakMap,Se=new WeakMap,Le=new WeakMap,Te=new WeakMap;const w=new Hs,MA=new B.TextureLoader,Js=MA.load.bind(MA),Us=MA.loadAsync.bind(MA);MA.load=(C,A,...e)=>{if(w.cacheAssets&&Y.has(C)){const s=Y.get(C);return A==null||A(s.data),s.data}return Js(C,s=>{w.cacheAssets&&Y.set(C,{data:s,dispose:()=>s.dispose()}),A==null||A(s)},...e)};MA.loadAsync=(C,...A)=>YA(exports,null,function*(){if(w.cacheAssets&&Y.has(C))return Y.get(C).data;const e=yield Us(C,...A);return w.cacheAssets&&Y.set(C,{data:e,dispose:()=>e.dispose()}),e});function kt(C,A){if(A===B.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),C;if(A===B.TriangleFanDrawMode||A===B.TriangleStripDrawMode){let e=C.getIndex();if(e===null){const i=[],a=C.getAttribute("position");if(a!==void 0){for(let r=0;r<a.count;r++)i.push(r);C.setIndex(i),e=C.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),C}const s=e.count-2,t=[];if(A===B.TriangleFanDrawMode)for(let i=1;i<=s;i++)t.push(e.getX(0)),t.push(e.getX(i)),t.push(e.getX(i+1));else for(let i=0;i<s;i++)i%2===0?(t.push(e.getX(i)),t.push(e.getX(i+1)),t.push(e.getX(i+2))):(t.push(e.getX(i+2)),t.push(e.getX(i+1)),t.push(e.getX(i)));t.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const n=C.clone();return n.setIndex(t),n.clearGroups(),n}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),C}class bs extends B.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new _s(e)}),this.register(function(e){return new Zs(e)}),this.register(function(e){return new zs(e)}),this.register(function(e){return new $s(e)}),this.register(function(e){return new Ps(e)}),this.register(function(e){return new Ys(e)}),this.register(function(e){return new qs(e)}),this.register(function(e){return new Xs(e)}),this.register(function(e){return new Os(e)}),this.register(function(e){return new Vs(e)}),this.register(function(e){return new vs(e)}),this.register(function(e){return new js(e)}),this.register(function(e){return new Ws(e)}),this.register(function(e){return new ks(e)}),this.register(function(e){return new An(e)}),this.register(function(e){return new en(e)})}load(A,e,s,t){const n=this;let i;if(this.resourcePath!=="")i=this.resourcePath;else if(this.path!==""){const I=B.LoaderUtils.extractUrlBase(A);i=B.LoaderUtils.resolveURL(I,this.path)}else i=B.LoaderUtils.extractUrlBase(A);this.manager.itemStart(A);const a=function(I){t?t(I):console.error(I),n.manager.itemError(A),n.manager.itemEnd(A)},r=new B.FileLoader(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,function(I){try{n.parse(I,i,function(c){e(c),n.manager.itemEnd(A)},a)}catch(c){a(c)}},s,a)}setDRACOLoader(A){return this.dracoLoader=A,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,s,t){let n;const i={},a={},r=new TextDecoder;if(typeof A=="string")n=JSON.parse(A);else if(A instanceof ArrayBuffer)if(r.decode(new Uint8Array(A,0,4))===$t){try{i[R.KHR_BINARY_GLTF]=new tn(A)}catch(g){t&&t(g);return}n=JSON.parse(i[R.KHR_BINARY_GLTF].content)}else n=JSON.parse(r.decode(A));else n=A;if(n.asset===void 0||n.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const I=new ln(n,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});I.fileLoader.setRequestHeader(this.requestHeader);for(let c=0;c<this.pluginCallbacks.length;c++){const g=this.pluginCallbacks[c](I);g.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),a[g.name]=g,i[g.name]=!0}if(n.extensionsUsed)for(let c=0;c<n.extensionsUsed.length;++c){const g=n.extensionsUsed[c],Q=n.extensionsRequired||[];switch(g){case R.KHR_MATERIALS_UNLIT:i[g]=new Ks;break;case R.KHR_DRACO_MESH_COMPRESSION:i[g]=new sn(n,this.dracoLoader);break;case R.KHR_TEXTURE_TRANSFORM:i[g]=new nn;break;case R.KHR_MESH_QUANTIZATION:i[g]=new on;break;default:Q.indexOf(g)>=0&&a[g]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+g+'".')}}I.setExtensions(i),I.setPlugins(a),I.parse(s,t)}parseAsync(A,e){const s=this;return new Promise(function(t,n){s.parse(A,e,t,n)})}}function Ns(){let C={};return{get:function(A){return C[A]},add:function(A,e){C[A]=e},remove:function(A){delete C[A]},removeAll:function(){C={}}}}const R={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class ks{constructor(A){this.parser=A,this.name=R.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let s=0,t=e.length;s<t;s++){const n=e[s];n.extensions&&n.extensions[this.name]&&n.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(A){const e=this.parser,s="light:"+A;let t=e.cache.get(s);if(t)return t;const n=e.json,r=((n.extensions&&n.extensions[this.name]||{}).lights||[])[A];let I;const c=new B.Color(16777215);r.color!==void 0&&c.setRGB(r.color[0],r.color[1],r.color[2],B.LinearSRGBColorSpace);const g=r.range!==void 0?r.range:0;switch(r.type){case"directional":I=new B.DirectionalLight(c),I.target.position.set(0,0,-1),I.add(I.target);break;case"point":I=new B.PointLight(c),I.distance=g;break;case"spot":I=new B.SpotLight(c),I.distance=g,r.spot=r.spot||{},r.spot.innerConeAngle=r.spot.innerConeAngle!==void 0?r.spot.innerConeAngle:0,r.spot.outerConeAngle=r.spot.outerConeAngle!==void 0?r.spot.outerConeAngle:Math.PI/4,I.angle=r.spot.outerConeAngle,I.penumbra=1-r.spot.innerConeAngle/r.spot.outerConeAngle,I.target.position.set(0,0,-1),I.add(I.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+r.type)}return I.position.set(0,0,0),I.decay=2,cA(I,r),r.intensity!==void 0&&(I.intensity=r.intensity),I.name=e.createUniqueName(r.name||"light_"+A),t=Promise.resolve(I),e.cache.add(s,t),t}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,s=this.parser,n=s.json.nodes[A],a=(n.extensions&&n.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(r){return s._getNodeRef(e.cache,a,r)})}}class Ks{constructor(){this.name=R.KHR_MATERIALS_UNLIT}getMaterialType(){return B.MeshBasicMaterial}extendParams(A,e,s){const t=[];A.color=new B.Color(1,1,1),A.opacity=1;const n=e.pbrMetallicRoughness;if(n){if(Array.isArray(n.baseColorFactor)){const i=n.baseColorFactor;A.color.setRGB(i[0],i[1],i[2],B.LinearSRGBColorSpace),A.opacity=i[3]}n.baseColorTexture!==void 0&&t.push(s.assignTexture(A,"map",n.baseColorTexture,B.SRGBColorSpace))}return Promise.all(t)}}class Os{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=t.extensions[this.name].emissiveStrength;return n!==void 0&&(e.emissiveIntensity=n),Promise.resolve()}}class _s{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];if(i.clearcoatFactor!==void 0&&(e.clearcoat=i.clearcoatFactor),i.clearcoatTexture!==void 0&&n.push(s.assignTexture(e,"clearcoatMap",i.clearcoatTexture)),i.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=i.clearcoatRoughnessFactor),i.clearcoatRoughnessTexture!==void 0&&n.push(s.assignTexture(e,"clearcoatRoughnessMap",i.clearcoatRoughnessTexture)),i.clearcoatNormalTexture!==void 0&&(n.push(s.assignTexture(e,"clearcoatNormalMap",i.clearcoatNormalTexture)),i.clearcoatNormalTexture.scale!==void 0)){const a=i.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new B.Vector2(a,a)}return Promise.all(n)}}class vs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.iridescenceFactor!==void 0&&(e.iridescence=i.iridescenceFactor),i.iridescenceTexture!==void 0&&n.push(s.assignTexture(e,"iridescenceMap",i.iridescenceTexture)),i.iridescenceIor!==void 0&&(e.iridescenceIOR=i.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),i.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),i.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),i.iridescenceThicknessTexture!==void 0&&n.push(s.assignTexture(e,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(n)}}class Ps{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_SHEEN}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[];e.sheenColor=new B.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const i=t.extensions[this.name];if(i.sheenColorFactor!==void 0){const a=i.sheenColorFactor;e.sheenColor.setRGB(a[0],a[1],a[2],B.LinearSRGBColorSpace)}return i.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=i.sheenRoughnessFactor),i.sheenColorTexture!==void 0&&n.push(s.assignTexture(e,"sheenColorMap",i.sheenColorTexture,B.SRGBColorSpace)),i.sheenRoughnessTexture!==void 0&&n.push(s.assignTexture(e,"sheenRoughnessMap",i.sheenRoughnessTexture)),Promise.all(n)}}class Ys{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.transmissionFactor!==void 0&&(e.transmission=i.transmissionFactor),i.transmissionTexture!==void 0&&n.push(s.assignTexture(e,"transmissionMap",i.transmissionTexture)),Promise.all(n)}}class qs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_VOLUME}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];e.thickness=i.thicknessFactor!==void 0?i.thicknessFactor:0,i.thicknessTexture!==void 0&&n.push(s.assignTexture(e,"thicknessMap",i.thicknessTexture)),e.attenuationDistance=i.attenuationDistance||1/0;const a=i.attenuationColor||[1,1,1];return e.attenuationColor=new B.Color().setRGB(a[0],a[1],a[2],B.LinearSRGBColorSpace),Promise.all(n)}}class Xs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_IOR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=t.extensions[this.name];return e.ior=n.ior!==void 0?n.ior:1.5,Promise.resolve()}}class Vs{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_SPECULAR}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];e.specularIntensity=i.specularFactor!==void 0?i.specularFactor:1,i.specularTexture!==void 0&&n.push(s.assignTexture(e,"specularIntensityMap",i.specularTexture));const a=i.specularColorFactor||[1,1,1];return e.specularColor=new B.Color().setRGB(a[0],a[1],a[2],B.LinearSRGBColorSpace),i.specularColorTexture!==void 0&&n.push(s.assignTexture(e,"specularColorMap",i.specularColorTexture,B.SRGBColorSpace)),Promise.all(n)}}class Ws{constructor(A){this.parser=A,this.name=R.EXT_MATERIALS_BUMP}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return e.bumpScale=i.bumpFactor!==void 0?i.bumpFactor:1,i.bumpTexture!==void 0&&n.push(s.assignTexture(e,"bumpMap",i.bumpTexture)),Promise.all(n)}}class js{constructor(A){this.parser=A,this.name=R.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const s=this.parser.json.materials[A];return!s.extensions||!s.extensions[this.name]?null:B.MeshPhysicalMaterial}extendMaterialParams(A,e){const s=this.parser,t=s.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const n=[],i=t.extensions[this.name];return i.anisotropyStrength!==void 0&&(e.anisotropy=i.anisotropyStrength),i.anisotropyRotation!==void 0&&(e.anisotropyRotation=i.anisotropyRotation),i.anisotropyTexture!==void 0&&n.push(s.assignTexture(e,"anisotropyMap",i.anisotropyTexture)),Promise.all(n)}}class Zs{constructor(A){this.parser=A,this.name=R.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,s=e.json,t=s.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const n=t.extensions[this.name],i=e.options.ktx2Loader;if(!i){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,n.source,i)}}class zs{constructor(A){this.parser=A,this.name=R.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,n=t.textures[A];if(!n.extensions||!n.extensions[e])return null;const i=n.extensions[e],a=t.images[i.source];let r=s.textureLoader;if(a.uri){const I=s.options.manager.getHandler(a.uri);I!==null&&(r=I)}return this.detectSupport().then(function(I){if(I)return s.loadTextureImage(A,i.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class $s{constructor(A){this.parser=A,this.name=R.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,s=this.parser,t=s.json,n=t.textures[A];if(!n.extensions||!n.extensions[e])return null;const i=n.extensions[e],a=t.images[i.source];let r=s.textureLoader;if(a.uri){const I=s.options.manager.getHandler(a.uri);I!==null&&(r=I)}return this.detectSupport().then(function(I){if(I)return s.loadTextureImage(A,i.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class An{constructor(A){this.name=R.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,s=e.bufferViews[A];if(s.extensions&&s.extensions[this.name]){const t=s.extensions[this.name],n=this.parser.getDependency("buffer",t.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return n.then(function(a){const r=t.byteOffset||0,I=t.byteLength||0,c=t.count,g=t.byteStride,Q=new Uint8Array(a,r,I);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(c,g,Q,t.mode,t.filter).then(function(l){return l.buffer}):i.ready.then(function(){const l=new ArrayBuffer(c*g);return i.decodeGltfBuffer(new Uint8Array(l),c,g,Q,t.mode,t.filter),l})})}else return null}}class en{constructor(A){this.name=R.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,s=e.nodes[A];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const t=e.meshes[s.mesh];for(const I of t.primitives)if(I.mode!==v.TRIANGLES&&I.mode!==v.TRIANGLE_STRIP&&I.mode!==v.TRIANGLE_FAN&&I.mode!==void 0)return null;const i=s.extensions[this.name].attributes,a=[],r={};for(const I in i)a.push(this.parser.getDependency("accessor",i[I]).then(c=>(r[I]=c,r[I])));return a.length<1?null:(a.push(this.parser.createNodeMesh(A)),Promise.all(a).then(I=>{const c=I.pop(),g=c.isGroup?c.children:[c],Q=I[0].count,l=[];for(const u of g){const h=new B.Matrix4,E=new B.Vector3,f=new B.Quaternion,p=new B.Vector3(1,1,1),F=new B.InstancedMesh(u.geometry,u.material,Q);for(let G=0;G<Q;G++)r.TRANSLATION&&E.fromBufferAttribute(r.TRANSLATION,G),r.ROTATION&&f.fromBufferAttribute(r.ROTATION,G),r.SCALE&&p.fromBufferAttribute(r.SCALE,G),F.setMatrixAt(G,h.compose(E,f,p));for(const G in r)if(G==="_COLOR_0"){const y=r[G];F.instanceColor=new B.InstancedBufferAttribute(y.array,y.itemSize,y.normalized)}else G!=="TRANSLATION"&&G!=="ROTATION"&&G!=="SCALE"&&u.geometry.setAttribute(G,r[G]);B.Object3D.prototype.copy.call(F,u),this.parser.assignFinalMaterial(F),l.push(F)}return c.isGroup?(c.clear(),c.add(...l),c):l[0]}))}}const $t="glTF",Ge=12,Kt={JSON:1313821514,BIN:5130562};class tn{constructor(A){this.name=R.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,Ge),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==$t)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const t=this.header.length-Ge,n=new DataView(A,Ge);let i=0;for(;i<t;){const a=n.getUint32(i,!0);i+=4;const r=n.getUint32(i,!0);if(i+=4,r===Kt.JSON){const I=new Uint8Array(A,Ge+i,a);this.content=s.decode(I)}else if(r===Kt.BIN){const I=Ge+i;this.body=A.slice(I,I+a)}i+=a}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class sn{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=R.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const s=this.json,t=this.dracoLoader,n=A.extensions[this.name].bufferView,i=A.extensions[this.name].attributes,a={},r={},I={};for(const c in i){const g=wt[c]||c.toLowerCase();a[g]=i[c]}for(const c in A.attributes){const g=wt[c]||c.toLowerCase();if(i[c]!==void 0){const Q=s.accessors[A.attributes[c]],l=qA[Q.componentType];I[g]=l.name,r[g]=Q.normalized===!0}}return e.getDependency("bufferView",n).then(function(c){return new Promise(function(g,Q){t.decodeDracoFile(c,function(l){for(const u in l.attributes){const h=l.attributes[u],E=r[u];E!==void 0&&(h.normalized=E)}g(l)},a,I,B.LinearSRGBColorSpace,Q)})})}}class nn{constructor(){this.name=R.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class on{constructor(){this.name=R.KHR_MESH_QUANTIZATION}}class As extends B.Interpolant{constructor(A,e,s,t){super(A,e,s,t)}copySampleValue_(A){const e=this.resultBuffer,s=this.sampleValues,t=this.valueSize,n=A*t*3+t;for(let i=0;i!==t;i++)e[i]=s[n+i];return e}interpolate_(A,e,s,t){const n=this.resultBuffer,i=this.sampleValues,a=this.valueSize,r=a*2,I=a*3,c=t-e,g=(s-e)/c,Q=g*g,l=Q*g,u=A*I,h=u-I,E=-2*l+3*Q,f=l-Q,p=1-E,F=f-Q+g;for(let G=0;G!==a;G++){const y=i[h+G+a],M=i[h+G+r]*c,L=i[u+G+a],V=i[u+G]*c;n[G]=p*y+F*M+E*L+f*V}return n}}const rn=new B.Quaternion;class Bn extends As{interpolate_(A,e,s,t){const n=super.interpolate_(A,e,s,t);return rn.fromArray(n).normalize().toArray(n),n}}const v={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},qA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ot={9728:B.NearestFilter,9729:B.LinearFilter,9984:B.NearestMipmapNearestFilter,9985:B.LinearMipmapNearestFilter,9986:B.NearestMipmapLinearFilter,9987:B.LinearMipmapLinearFilter},_t={33071:B.ClampToEdgeWrapping,33648:B.MirroredRepeatWrapping,10497:B.RepeatWrapping},gt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},wt={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},gA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},an={CUBICSPLINE:void 0,LINEAR:B.InterpolateLinear,STEP:B.InterpolateDiscrete},ct={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Cn(C){return C.DefaultMaterial===void 0&&(C.DefaultMaterial=new B.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:B.FrontSide})),C.DefaultMaterial}function LA(C,A,e){for(const s in e.extensions)C[s]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[s]=e.extensions[s])}function cA(C,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(C.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function In(C,A,e){let s=!1,t=!1,n=!1;for(let I=0,c=A.length;I<c;I++){const g=A[I];if(g.POSITION!==void 0&&(s=!0),g.NORMAL!==void 0&&(t=!0),g.COLOR_0!==void 0&&(n=!0),s&&t&&n)break}if(!s&&!t&&!n)return Promise.resolve(C);const i=[],a=[],r=[];for(let I=0,c=A.length;I<c;I++){const g=A[I];if(s){const Q=g.POSITION!==void 0?e.getDependency("accessor",g.POSITION):C.attributes.position;i.push(Q)}if(t){const Q=g.NORMAL!==void 0?e.getDependency("accessor",g.NORMAL):C.attributes.normal;a.push(Q)}if(n){const Q=g.COLOR_0!==void 0?e.getDependency("accessor",g.COLOR_0):C.attributes.color;r.push(Q)}}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(r)]).then(function(I){const c=I[0],g=I[1],Q=I[2];return s&&(C.morphAttributes.position=c),t&&(C.morphAttributes.normal=g),n&&(C.morphAttributes.color=Q),C.morphTargetsRelative=!0,C})}function gn(C,A){if(C.updateMorphTargets(),A.weights!==void 0)for(let e=0,s=A.weights.length;e<s;e++)C.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(C.morphTargetInfluences.length===e.length){C.morphTargetDictionary={};for(let s=0,t=e.length;s<t;s++)C.morphTargetDictionary[e[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function cn(C){let A;const e=C.extensions&&C.extensions[R.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+Et(e.attributes):A=C.indices+":"+Et(C.attributes)+":"+C.mode,C.targets!==void 0)for(let s=0,t=C.targets.length;s<t;s++)A+=":"+Et(C.targets[s]);return A}function Et(C){let A="";const e=Object.keys(C).sort();for(let s=0,t=e.length;s<t;s++)A+=e[s]+":"+C[e[s]]+";";return A}function yt(C){switch(C){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function En(C){return C.search(/\.jpe?g($|\?)/i)>0||C.search(/^data\:image\/jpeg/)===0?"image/jpeg":C.search(/\.webp($|\?)/i)>0||C.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const Qn=new B.Matrix4;class ln{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new Ns,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,t=!1,n=-1;typeof navigator!="undefined"&&(s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,t=navigator.userAgent.indexOf("Firefox")>-1,n=t?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap=="undefined"||s||t&&n<98?this.textureLoader=new B.TextureLoader(this.options.manager):this.textureLoader=new B.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new B.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const s=this,t=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(i){return i._markDefs&&i._markDefs()}),Promise.all(this._invokeAll(function(i){return i.beforeRoot&&i.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(i){const a={scene:i[0][t.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:t.asset,parser:s,userData:{}};return LA(n,a,t),cA(a,t),Promise.all(s._invokeAll(function(r){return r.afterRoot&&r.afterRoot(a)})).then(function(){for(const r of a.scenes)r.updateMatrixWorld();A(a)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],s=this.json.meshes||[];for(let t=0,n=e.length;t<n;t++){const i=e[t].joints;for(let a=0,r=i.length;a<r;a++)A[i[a]].isBone=!0}for(let t=0,n=A.length;t<n;t++){const i=A[t];i.mesh!==void 0&&(this._addNodeRef(this.meshCache,i.mesh),i.skin!==void 0&&(s[i.mesh].isSkinnedMesh=!0)),i.camera!==void 0&&this._addNodeRef(this.cameraCache,i.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,s){if(A.refs[e]<=1)return s;const t=s.clone(),n=(i,a)=>{const r=this.associations.get(i);r!=null&&this.associations.set(a,r);for(const[I,c]of i.children.entries())n(c,a.children[I])};return n(s,t),t.name+="_instance_"+A.uses[e]++,t}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let s=0;s<e.length;s++){const t=A(e[s]);if(t)return t}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const s=[];for(let t=0;t<e.length;t++){const n=A(e[t]);n&&s.push(n)}return s}getDependency(A,e){const s=A+":"+e;let t=this.cache.get(s);if(!t){switch(A){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(n){return n.loadNode&&n.loadNode(e)});break;case"mesh":t=this._invokeOne(function(n){return n.loadMesh&&n.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(n){return n.loadBufferView&&n.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(n){return n.loadMaterial&&n.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(n){return n.loadTexture&&n.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(n){return n.loadAnimation&&n.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(A,e)}),!t)throw new Error("Unknown type: "+A);break}this.cache.add(s,t)}return t}getDependencies(A){let e=this.cache.get(A);if(!e){const s=this,t=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(n,i){return s.getDependency(A,i)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],s=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[R.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(n,i){s.load(B.LoaderUtils.resolveURL(e.uri,t.path),n,void 0,function(){i(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(s){const t=e.byteLength||0,n=e.byteOffset||0;return s.slice(n,n+t)})}loadAccessor(A){const e=this,s=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const i=gt[t.type],a=qA[t.componentType],r=t.normalized===!0,I=new a(t.count*i);return Promise.resolve(new B.BufferAttribute(I,i,r))}const n=[];return t.bufferView!==void 0?n.push(this.getDependency("bufferView",t.bufferView)):n.push(null),t.sparse!==void 0&&(n.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),n.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(n).then(function(i){const a=i[0],r=gt[t.type],I=qA[t.componentType],c=I.BYTES_PER_ELEMENT,g=c*r,Q=t.byteOffset||0,l=t.bufferView!==void 0?s.bufferViews[t.bufferView].byteStride:void 0,u=t.normalized===!0;let h,E;if(l&&l!==g){const f=Math.floor(Q/l),p="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+f+":"+t.count;let F=e.cache.get(p);F||(h=new I(a,f*l,t.count*l/c),F=new B.InterleavedBuffer(h,l/c),e.cache.add(p,F)),E=new B.InterleavedBufferAttribute(F,r,Q%l/c,u)}else a===null?h=new I(t.count*r):h=new I(a,Q,t.count*r),E=new B.BufferAttribute(h,r,u);if(t.sparse!==void 0){const f=gt.SCALAR,p=qA[t.sparse.indices.componentType],F=t.sparse.indices.byteOffset||0,G=t.sparse.values.byteOffset||0,y=new p(i[1],F,t.sparse.count*f),M=new I(i[2],G,t.sparse.count*r);a!==null&&(E=new B.BufferAttribute(E.array.slice(),E.itemSize,E.normalized));for(let L=0,V=y.length;L<V;L++){const N=y[L];if(E.setX(N,M[L*r]),r>=2&&E.setY(N,M[L*r+1]),r>=3&&E.setZ(N,M[L*r+2]),r>=4&&E.setW(N,M[L*r+3]),r>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return E})}loadTexture(A){const e=this.json,s=this.options,n=e.textures[A].source,i=e.images[n];let a=this.textureLoader;if(i.uri){const r=s.manager.getHandler(i.uri);r!==null&&(a=r)}return this.loadTextureImage(A,n,a)}loadTextureImage(A,e,s){const t=this,n=this.json,i=n.textures[A],a=n.images[e],r=(a.uri||a.bufferView)+":"+i.sampler;if(this.textureCache[r])return this.textureCache[r];const I=this.loadImageSource(e,s).then(function(c){c.flipY=!1,c.name=i.name||a.name||"",c.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(c.name=a.uri);const Q=(n.samplers||{})[i.sampler]||{};return c.magFilter=Ot[Q.magFilter]||B.LinearFilter,c.minFilter=Ot[Q.minFilter]||B.LinearMipmapLinearFilter,c.wrapS=_t[Q.wrapS]||B.RepeatWrapping,c.wrapT=_t[Q.wrapT]||B.RepeatWrapping,t.associations.set(c,{textures:A}),c}).catch(function(){return null});return this.textureCache[r]=I,I}loadImageSource(A,e){const s=this,t=this.json,n=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(g=>g.clone());const i=t.images[A],a=self.URL||self.webkitURL;let r=i.uri||"",I=!1;if(i.bufferView!==void 0)r=s.getDependency("bufferView",i.bufferView).then(function(g){I=!0;const Q=new Blob([g],{type:i.mimeType});return r=a.createObjectURL(Q),r});else if(i.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const c=Promise.resolve(r).then(function(g){return new Promise(function(Q,l){let u=Q;e.isImageBitmapLoader===!0&&(u=function(h){const E=new B.Texture(h);E.needsUpdate=!0,Q(E)}),e.load(B.LoaderUtils.resolveURL(g,n.path),u,void 0,l)})}).then(function(g){return I===!0&&a.revokeObjectURL(r),g.userData.mimeType=i.mimeType||En(i.uri),g}).catch(function(g){throw console.error("THREE.GLTFLoader: Couldn't load texture",r),g});return this.sourceCache[A]=c,c}assignTexture(A,e,s,t){const n=this;return this.getDependency("texture",s.index).then(function(i){if(!i)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(i=i.clone(),i.channel=s.texCoord),n.extensions[R.KHR_TEXTURE_TRANSFORM]){const a=s.extensions!==void 0?s.extensions[R.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const r=n.associations.get(i);i=n.extensions[R.KHR_TEXTURE_TRANSFORM].extendTexture(i,a),n.associations.set(i,r)}}return t!==void 0&&(i.colorSpace=t),A[e]=i,i})}assignFinalMaterial(A){const e=A.geometry;let s=A.material;const t=e.attributes.tangent===void 0,n=e.attributes.color!==void 0,i=e.attributes.normal===void 0;if(A.isPoints){const a="PointsMaterial:"+s.uuid;let r=this.cache.get(a);r||(r=new B.PointsMaterial,B.Material.prototype.copy.call(r,s),r.color.copy(s.color),r.map=s.map,r.sizeAttenuation=!1,this.cache.add(a,r)),s=r}else if(A.isLine){const a="LineBasicMaterial:"+s.uuid;let r=this.cache.get(a);r||(r=new B.LineBasicMaterial,B.Material.prototype.copy.call(r,s),r.color.copy(s.color),r.map=s.map,this.cache.add(a,r)),s=r}if(t||n||i){let a="ClonedMaterial:"+s.uuid+":";t&&(a+="derivative-tangents:"),n&&(a+="vertex-colors:"),i&&(a+="flat-shading:");let r=this.cache.get(a);r||(r=s.clone(),n&&(r.vertexColors=!0),i&&(r.flatShading=!0),t&&(r.normalScale&&(r.normalScale.y*=-1),r.clearcoatNormalScale&&(r.clearcoatNormalScale.y*=-1)),this.cache.add(a,r),this.associations.set(r,this.associations.get(s))),s=r}A.material=s}getMaterialType(){return B.MeshStandardMaterial}loadMaterial(A){const e=this,s=this.json,t=this.extensions,n=s.materials[A];let i;const a={},r=n.extensions||{},I=[];if(r[R.KHR_MATERIALS_UNLIT]){const g=t[R.KHR_MATERIALS_UNLIT];i=g.getMaterialType(),I.push(g.extendParams(a,n,e))}else{const g=n.pbrMetallicRoughness||{};if(a.color=new B.Color(1,1,1),a.opacity=1,Array.isArray(g.baseColorFactor)){const Q=g.baseColorFactor;a.color.setRGB(Q[0],Q[1],Q[2],B.LinearSRGBColorSpace),a.opacity=Q[3]}g.baseColorTexture!==void 0&&I.push(e.assignTexture(a,"map",g.baseColorTexture,B.SRGBColorSpace)),a.metalness=g.metallicFactor!==void 0?g.metallicFactor:1,a.roughness=g.roughnessFactor!==void 0?g.roughnessFactor:1,g.metallicRoughnessTexture!==void 0&&(I.push(e.assignTexture(a,"metalnessMap",g.metallicRoughnessTexture)),I.push(e.assignTexture(a,"roughnessMap",g.metallicRoughnessTexture))),i=this._invokeOne(function(Q){return Q.getMaterialType&&Q.getMaterialType(A)}),I.push(Promise.all(this._invokeAll(function(Q){return Q.extendMaterialParams&&Q.extendMaterialParams(A,a)})))}n.doubleSided===!0&&(a.side=B.DoubleSide);const c=n.alphaMode||ct.OPAQUE;if(c===ct.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,c===ct.MASK&&(a.alphaTest=n.alphaCutoff!==void 0?n.alphaCutoff:.5)),n.normalTexture!==void 0&&i!==B.MeshBasicMaterial&&(I.push(e.assignTexture(a,"normalMap",n.normalTexture)),a.normalScale=new B.Vector2(1,1),n.normalTexture.scale!==void 0)){const g=n.normalTexture.scale;a.normalScale.set(g,g)}if(n.occlusionTexture!==void 0&&i!==B.MeshBasicMaterial&&(I.push(e.assignTexture(a,"aoMap",n.occlusionTexture)),n.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=n.occlusionTexture.strength)),n.emissiveFactor!==void 0&&i!==B.MeshBasicMaterial){const g=n.emissiveFactor;a.emissive=new B.Color().setRGB(g[0],g[1],g[2],B.LinearSRGBColorSpace)}return n.emissiveTexture!==void 0&&i!==B.MeshBasicMaterial&&I.push(e.assignTexture(a,"emissiveMap",n.emissiveTexture,B.SRGBColorSpace)),Promise.all(I).then(function(){const g=new i(a);return n.name&&(g.name=n.name),cA(g,n),e.associations.set(g,{materials:A}),n.extensions&&LA(t,g,n),g})}createUniqueName(A){const e=B.PropertyBinding.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,s=this.extensions,t=this.primitiveCache;function n(a){return s[R.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,e).then(function(r){return vt(r,a,e)})}const i=[];for(let a=0,r=A.length;a<r;a++){const I=A[a],c=cn(I),g=t[c];if(g)i.push(g.promise);else{let Q;I.extensions&&I.extensions[R.KHR_DRACO_MESH_COMPRESSION]?Q=n(I):Q=vt(new B.BufferGeometry,I,e),t[c]={primitive:I,promise:Q},i.push(Q)}}return Promise.all(i)}loadMesh(A){const e=this,s=this.json,t=this.extensions,n=s.meshes[A],i=n.primitives,a=[];for(let r=0,I=i.length;r<I;r++){const c=i[r].material===void 0?Cn(this.cache):this.getDependency("material",i[r].material);a.push(c)}return a.push(e.loadGeometries(i)),Promise.all(a).then(function(r){const I=r.slice(0,r.length-1),c=r[r.length-1],g=[];for(let l=0,u=c.length;l<u;l++){const h=c[l],E=i[l];let f;const p=I[l];if(E.mode===v.TRIANGLES||E.mode===v.TRIANGLE_STRIP||E.mode===v.TRIANGLE_FAN||E.mode===void 0)f=n.isSkinnedMesh===!0?new B.SkinnedMesh(h,p):new B.Mesh(h,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),E.mode===v.TRIANGLE_STRIP?f.geometry=kt(f.geometry,B.TriangleStripDrawMode):E.mode===v.TRIANGLE_FAN&&(f.geometry=kt(f.geometry,B.TriangleFanDrawMode));else if(E.mode===v.LINES)f=new B.LineSegments(h,p);else if(E.mode===v.LINE_STRIP)f=new B.Line(h,p);else if(E.mode===v.LINE_LOOP)f=new B.LineLoop(h,p);else if(E.mode===v.POINTS)f=new B.Points(h,p);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+E.mode);Object.keys(f.geometry.morphAttributes).length>0&&gn(f,n),f.name=e.createUniqueName(n.name||"mesh_"+A),cA(f,n),E.extensions&&LA(t,f,E),e.assignFinalMaterial(f),g.push(f)}for(let l=0,u=g.length;l<u;l++)e.associations.set(g[l],{meshes:A,primitives:l});if(g.length===1)return n.extensions&&LA(t,g[0],n),g[0];const Q=new B.Group;n.extensions&&LA(t,Q,n),e.associations.set(Q,{meshes:A});for(let l=0,u=g.length;l<u;l++)Q.add(g[l]);return Q})}loadCamera(A){let e;const s=this.json.cameras[A],t=s[s.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?e=new B.PerspectiveCamera(B.MathUtils.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):s.type==="orthographic"&&(e=new B.OrthographicCamera(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),s.name&&(e.name=this.createUniqueName(s.name)),cA(e,s),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],s=[];for(let t=0,n=e.joints.length;t<n;t++)s.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",e.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(t){const n=t.pop(),i=t,a=[],r=[];for(let I=0,c=i.length;I<c;I++){const g=i[I];if(g){a.push(g);const Q=new B.Matrix4;n!==null&&Q.fromArray(n.array,I*16),r.push(Q)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[I])}return new B.Skeleton(a,r)})}loadAnimation(A){const e=this.json,s=this,t=e.animations[A],n=t.name?t.name:"animation_"+A,i=[],a=[],r=[],I=[],c=[];for(let g=0,Q=t.channels.length;g<Q;g++){const l=t.channels[g],u=t.samplers[l.sampler],h=l.target,E=h.node,f=t.parameters!==void 0?t.parameters[u.input]:u.input,p=t.parameters!==void 0?t.parameters[u.output]:u.output;h.node!==void 0&&(i.push(this.getDependency("node",E)),a.push(this.getDependency("accessor",f)),r.push(this.getDependency("accessor",p)),I.push(u),c.push(h))}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(r),Promise.all(I),Promise.all(c)]).then(function(g){const Q=g[0],l=g[1],u=g[2],h=g[3],E=g[4],f=[];for(let p=0,F=Q.length;p<F;p++){const G=Q[p],y=l[p],M=u[p],L=h[p],V=E[p];if(G===void 0)continue;G.updateMatrix&&G.updateMatrix();const N=s._createAnimationTracks(G,y,M,L,V);if(N)for(let $=0;$<N.length;$++)f.push(N[$])}return new B.AnimationClip(n,void 0,f)})}createNodeMesh(A){const e=this.json,s=this,t=e.nodes[A];return t.mesh===void 0?null:s.getDependency("mesh",t.mesh).then(function(n){const i=s._getNodeRef(s.meshCache,t.mesh,n);return t.weights!==void 0&&i.traverse(function(a){if(a.isMesh)for(let r=0,I=t.weights.length;r<I;r++)a.morphTargetInfluences[r]=t.weights[r]}),i})}loadNode(A){const e=this.json,s=this,t=e.nodes[A],n=s._loadNodeShallow(A),i=[],a=t.children||[];for(let I=0,c=a.length;I<c;I++)i.push(s.getDependency("node",a[I]));const r=t.skin===void 0?Promise.resolve(null):s.getDependency("skin",t.skin);return Promise.all([n,Promise.all(i),r]).then(function(I){const c=I[0],g=I[1],Q=I[2];Q!==null&&c.traverse(function(l){l.isSkinnedMesh&&l.bind(Q,Qn)});for(let l=0,u=g.length;l<u;l++)c.add(g[l]);return c})}_loadNodeShallow(A){const e=this.json,s=this.extensions,t=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const n=e.nodes[A],i=n.name?t.createUniqueName(n.name):"",a=[],r=t._invokeOne(function(I){return I.createNodeMesh&&I.createNodeMesh(A)});return r&&a.push(r),n.camera!==void 0&&a.push(t.getDependency("camera",n.camera).then(function(I){return t._getNodeRef(t.cameraCache,n.camera,I)})),t._invokeAll(function(I){return I.createNodeAttachment&&I.createNodeAttachment(A)}).forEach(function(I){a.push(I)}),this.nodeCache[A]=Promise.all(a).then(function(I){let c;if(n.isBone===!0?c=new B.Bone:I.length>1?c=new B.Group:I.length===1?c=I[0]:c=new B.Object3D,c!==I[0])for(let g=0,Q=I.length;g<Q;g++)c.add(I[g]);if(n.name&&(c.userData.name=n.name,c.name=i),cA(c,n),n.extensions&&LA(s,c,n),n.matrix!==void 0){const g=new B.Matrix4;g.fromArray(n.matrix),c.applyMatrix4(g)}else n.translation!==void 0&&c.position.fromArray(n.translation),n.rotation!==void 0&&c.quaternion.fromArray(n.rotation),n.scale!==void 0&&c.scale.fromArray(n.scale);return t.associations.has(c)||t.associations.set(c,{}),t.associations.get(c).nodes=A,c}),this.nodeCache[A]}loadScene(A){const e=this.extensions,s=this.json.scenes[A],t=this,n=new B.Group;s.name&&(n.name=t.createUniqueName(s.name)),cA(n,s),s.extensions&&LA(e,n,s);const i=s.nodes||[],a=[];for(let r=0,I=i.length;r<I;r++)a.push(t.getDependency("node",i[r]));return Promise.all(a).then(function(r){for(let c=0,g=r.length;c<g;c++)n.add(r[c]);const I=c=>{const g=new Map;for(const[Q,l]of t.associations)(Q instanceof B.Material||Q instanceof B.Texture)&&g.set(Q,l);return c.traverse(Q=>{const l=t.associations.get(Q);l!=null&&g.set(Q,l)}),g};return t.associations=I(n),n})}_createAnimationTracks(A,e,s,t,n){const i=[],a=A.name?A.name:A.uuid,r=[];gA[n.path]===gA.weights?A.traverse(function(Q){Q.morphTargetInfluences&&r.push(Q.name?Q.name:Q.uuid)}):r.push(a);let I;switch(gA[n.path]){case gA.weights:I=B.NumberKeyframeTrack;break;case gA.rotation:I=B.QuaternionKeyframeTrack;break;case gA.position:case gA.scale:I=B.VectorKeyframeTrack;break;default:switch(s.itemSize){case 1:I=B.NumberKeyframeTrack;break;case 2:case 3:default:I=B.VectorKeyframeTrack;break}break}const c=t.interpolation!==void 0?an[t.interpolation]:B.InterpolateLinear,g=this._getArrayFromAccessor(s);for(let Q=0,l=r.length;Q<l;Q++){const u=new I(r[Q]+"."+gA[n.path],e.array,g,c);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(u),i.push(u)}return i}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const s=yt(e.constructor),t=new Float32Array(e.length);for(let n=0,i=e.length;n<i;n++)t[n]=e[n]*s;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(s){const t=this instanceof B.QuaternionKeyframeTrack?Bn:As;return new t(this.times,this.values,this.getValueSize()/3,s)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function hn(C,A,e){const s=A.attributes,t=new B.Box3;if(s.POSITION!==void 0){const a=e.json.accessors[s.POSITION],r=a.min,I=a.max;if(r!==void 0&&I!==void 0){if(t.set(new B.Vector3(r[0],r[1],r[2]),new B.Vector3(I[0],I[1],I[2])),a.normalized){const c=yt(qA[a.componentType]);t.min.multiplyScalar(c),t.max.multiplyScalar(c)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const n=A.targets;if(n!==void 0){const a=new B.Vector3,r=new B.Vector3;for(let I=0,c=n.length;I<c;I++){const g=n[I];if(g.POSITION!==void 0){const Q=e.json.accessors[g.POSITION],l=Q.min,u=Q.max;if(l!==void 0&&u!==void 0){if(r.setX(Math.max(Math.abs(l[0]),Math.abs(u[0]))),r.setY(Math.max(Math.abs(l[1]),Math.abs(u[1]))),r.setZ(Math.max(Math.abs(l[2]),Math.abs(u[2]))),Q.normalized){const h=yt(qA[Q.componentType]);r.multiplyScalar(h)}a.max(r)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(a)}C.boundingBox=t;const i=new B.Sphere;t.getCenter(i.center),i.radius=t.min.distanceTo(t.max)/2,C.boundingSphere=i}function vt(C,A,e){const s=A.attributes,t=[];function n(i,a){return e.getDependency("accessor",i).then(function(r){C.setAttribute(a,r)})}for(const i in s){const a=wt[i]||i.toLowerCase();a in C.attributes||t.push(n(s[i],a))}if(A.indices!==void 0&&!C.index){const i=e.getDependency("accessor",A.indices).then(function(a){C.setIndex(a)});t.push(i)}return B.ColorManagement.workingColorSpace!==B.LinearSRGBColorSpace&&"COLOR_0"in s&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${B.ColorManagement.workingColorSpace}" not supported.`),cA(C,A),hn(C,A,e),Promise.all(t).then(function(){return A.targets!==void 0?In(C,A.targets,e):C})}const Qt=new WeakMap;class un extends B.Loader{constructor(A){super(A),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,s,t){const n=new B.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(A,i=>{this.parse(i,e,t)},s,t)}parse(A,e,s=()=>{}){this.decodeDracoFile(A,e,null,null,B.SRGBColorSpace).catch(s)}decodeDracoFile(A,e,s,t,n=B.LinearSRGBColorSpace,i=()=>{}){const a={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:n};return this.decodeGeometry(A,a).then(e).catch(i)}decodeGeometry(A,e){const s=JSON.stringify(e);if(Qt.has(A)){const r=Qt.get(A);if(r.key===s)return r.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let t;const n=this.workerNextTaskID++,i=A.byteLength,a=this._getWorker(n,i).then(r=>(t=r,new Promise((I,c)=>{t._callbacks[n]={resolve:I,reject:c},t.postMessage({type:"decode",id:n,taskConfig:e,buffer:A},[A])}))).then(r=>this._createGeometry(r.geometry));return a.catch(()=>!0).then(()=>{t&&n&&this._releaseTask(t,n)}),Qt.set(A,{key:s,promise:a}),a}_createGeometry(A){const e=new B.BufferGeometry;A.index&&e.setIndex(new B.BufferAttribute(A.index.array,1));for(let s=0;s<A.attributes.length;s++){const t=A.attributes[s],n=t.name,i=t.array,a=t.itemSize,r=new B.BufferAttribute(i,a);n==="color"&&(this._assignVertexColorSpace(r,t.vertexColorSpace),r.normalized=!(i instanceof Float32Array)),e.setAttribute(n,r)}return e}_assignVertexColorSpace(A,e){if(e!==B.SRGBColorSpace)return;const s=new B.Color;for(let t=0,n=A.count;t<n;t++)s.fromBufferAttribute(A,t).convertSRGBToLinear(),A.setXYZ(t,s.r,s.g,s.b)}_loadLibrary(A,e){const s=new B.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(e),s.setWithCredentials(this.withCredentials),new Promise((t,n)=>{s.load(A,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(s=>{const t=s[0];A||(this.decoderConfig.wasmBinary=s[1]);const n=dn.toString(),i=["/* draco decoder */",t,"","/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join(`
|
|
9
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const t=new Worker(this.workerSourceURL);t._callbacks={},t._taskCosts={},t._taskLoad=0,t.postMessage({type:"init",decoderConfig:this.decoderConfig}),t.onmessage=function(n){const i=n.data;switch(i.type){case"decode":t._callbacks[i.id].resolve(i);break;case"error":t._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,n){return t._taskLoad>n._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[A]=e,s._taskLoad+=e,s})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function dn(){let C,A;onmessage=function(i){const a=i.data;switch(a.type){case"init":C=a.decoderConfig,A=new Promise(function(c){C.onModuleLoaded=function(g){c({draco:g})},DracoDecoderModule(C)});break;case"decode":const r=a.buffer,I=a.taskConfig;A.then(c=>{const g=c.draco,Q=new g.Decoder;try{const l=e(g,Q,new Int8Array(r),I),u=l.attributes.map(h=>h.array.buffer);l.index&&u.push(l.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:l},u)}catch(l){console.error(l),self.postMessage({type:"error",id:a.id,error:l.message})}finally{g.destroy(Q)}});break}};function e(i,a,r,I){const c=I.attributeIDs,g=I.attributeTypes;let Q,l;const u=a.GetEncodedGeometryType(r);if(u===i.TRIANGULAR_MESH)Q=new i.Mesh,l=a.DecodeArrayToMesh(r,r.byteLength,Q);else if(u===i.POINT_CLOUD)Q=new i.PointCloud,l=a.DecodeArrayToPointCloud(r,r.byteLength,Q);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!l.ok()||Q.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+l.error_msg());const h={index:null,attributes:[]};for(const E in c){const f=self[g[E]];let p,F;if(I.useUniqueIDs)F=c[E],p=a.GetAttributeByUniqueId(Q,F);else{if(F=a.GetAttributeId(Q,i[c[E]]),F===-1)continue;p=a.GetAttribute(Q,F)}const G=t(i,a,Q,E,f,p);E==="color"&&(G.vertexColorSpace=I.vertexColorSpace),h.attributes.push(G)}return u===i.TRIANGULAR_MESH&&(h.index=s(i,a,Q)),i.destroy(Q),h}function s(i,a,r){const c=r.num_faces()*3,g=c*4,Q=i._malloc(g);a.GetTrianglesUInt32Array(r,g,Q);const l=new Uint32Array(i.HEAPF32.buffer,Q,c).slice();return i._free(Q),{array:l,itemSize:1}}function t(i,a,r,I,c,g){const Q=g.num_components(),u=r.num_points()*Q,h=u*c.BYTES_PER_ELEMENT,E=n(i,c),f=i._malloc(h);a.GetAttributeDataArrayForAllPoints(r,g,E,h,f);const p=new c(i.HEAPF32.buffer,f,u).slice();return i._free(f),{name:I,array:p,itemSize:Q}}function n(i,a){switch(a){case Float32Array:return i.DT_FLOAT32;case Int8Array:return i.DT_INT8;case Int16Array:return i.DT_INT16;case Int32Array:return i.DT_INT32;case Uint8Array:return i.DT_UINT8;case Uint16Array:return i.DT_UINT16;case Uint32Array:return i.DT_UINT32}}}class fn{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const s=this.workersResolve[A];if(s&&s(e),this.queue.length){const{resolve:t,msg:n,transfer:i}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(n,i)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(s=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=s,this.workers[t].postMessage(A,e)):this.queue.push({resolve:s,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Dn=0,Pt=2,pn=1,Yt=2,Fn=0,Gn=1,mn=10,Rn=0,es=9,ts=15,ss=16,ns=22,is=37,os=43,rs=76,Bs=83,as=97,Cs=100,Is=103,gs=109,cs=165,Es=166;class wn{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class me{constructor(A,e,s,t){this._dataView=new DataView(A.buffer,A.byteOffset+e,s),this._littleEndian=t,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_skip(A){return this._offset+=A,this}_scan(A,e=0){const s=this._offset;let t=0;for(;this._dataView.getUint8(this._offset)!==e&&t<A;)t++,this._offset++;return t<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+s,t)}}const b=[171,75,84,88,32,50,48,187,13,10,26,10];function qt(C){return typeof TextDecoder!="undefined"?new TextDecoder().decode(C):Buffer.from(C).toString("utf8")}function yn(C){const A=new Uint8Array(C.buffer,C.byteOffset,b.length);if(A[0]!==b[0]||A[1]!==b[1]||A[2]!==b[2]||A[3]!==b[3]||A[4]!==b[4]||A[5]!==b[5]||A[6]!==b[6]||A[7]!==b[7]||A[8]!==b[8]||A[9]!==b[9]||A[10]!==b[10]||A[11]!==b[11])throw new Error("Missing KTX 2.0 identifier.");const e=new wn,s=17*Uint32Array.BYTES_PER_ELEMENT,t=new me(C,b.length,s,!0);e.vkFormat=t._nextUint32(),e.typeSize=t._nextUint32(),e.pixelWidth=t._nextUint32(),e.pixelHeight=t._nextUint32(),e.pixelDepth=t._nextUint32(),e.layerCount=t._nextUint32(),e.faceCount=t._nextUint32();const n=t._nextUint32();e.supercompressionScheme=t._nextUint32();const i=t._nextUint32(),a=t._nextUint32(),r=t._nextUint32(),I=t._nextUint32(),c=t._nextUint64(),g=t._nextUint64(),Q=new me(C,b.length+s,3*n*8,!0);for(let U=0;U<n;U++)e.levels.push({levelData:new Uint8Array(C.buffer,C.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});const l=new me(C,i,a,!0),u={vendorId:l._skip(4)._nextUint16(),descriptorType:l._nextUint16(),versionNumber:l._nextUint16(),descriptorBlockSize:l._nextUint16(),colorModel:l._nextUint8(),colorPrimaries:l._nextUint8(),transferFunction:l._nextUint8(),flags:l._nextUint8(),texelBlockDimension:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],bytesPlane:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],samples:[]},h=(u.descriptorBlockSize/4-6)/4;for(let U=0;U<h;U++){const K={bitOffset:l._nextUint16(),bitLength:l._nextUint8(),channelType:l._nextUint8(),samplePosition:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&K.channelType?(K.sampleLower=l._nextInt32(),K.sampleUpper=l._nextInt32()):(K.sampleLower=l._nextUint32(),K.sampleUpper=l._nextUint32()),u.samples[U]=K}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(u);const E=new me(C,r,I,!0);for(;E._offset<I;){const U=E._nextUint32(),K=E._scan(U),pe=qt(K),AA=E._scan(U-K.byteLength);e.keyValue[pe]=pe.match(/^ktx/i)?qt(AA):AA,E._offset%4&&E._skip(4-E._offset%4)}if(g<=0)return e;const f=new me(C,c,g,!0),p=f._nextUint16(),F=f._nextUint16(),G=f._nextUint32(),y=f._nextUint32(),M=f._nextUint32(),L=f._nextUint32(),V=[];for(let U=0;U<n;U++)V.push({imageFlags:f._nextUint32(),rgbSliceByteOffset:f._nextUint32(),rgbSliceByteLength:f._nextUint32(),alphaSliceByteOffset:f._nextUint32(),alphaSliceByteLength:f._nextUint32()});const N=c+f._offset,$=N+G,De=$+y,ze=De+M,SA=new Uint8Array(C.buffer,C.byteOffset+N,G),$e=new Uint8Array(C.buffer,C.byteOffset+$,y),IA=new Uint8Array(C.buffer,C.byteOffset+De,M),At=new Uint8Array(C.buffer,C.byteOffset+ze,L);return e.globalData={endpointCount:p,selectorCount:F,imageDescs:V,endpointsData:SA,selectorsData:$e,tablesData:IA,extendedData:At},e}let lt,sA,Mt;const ht={env:{emscripten_notify_memory_growth:function(C){Mt=new Uint8Array(sA.exports.memory.buffer)}}};class Mn{init(){return lt||(lt=typeof fetch!="undefined"?fetch("data:application/wasm;base64,"+Xt).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,ht)).then(this._init):WebAssembly.instantiate(Buffer.from(Xt,"base64"),ht).then(this._init),lt)}_init(A){sA=A.instance,ht.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!sA)throw new Error("ZSTDDecoder: Await .init() before decoding.");const s=A.byteLength,t=sA.exports.malloc(s);Mt.set(A,t),e=e||Number(sA.exports.ZSTD_findDecompressedSize(t,s));const n=sA.exports.malloc(e),i=sA.exports.ZSTD_decompress(n,e,t,s),a=Mt.slice(n,n+i);return sA.exports.free(t),sA.exports.free(n),a}}const Xt="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",ut=new WeakMap;let dt=0,ft;class z extends B.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new fn,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER!="undefined"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}detectSupportAsync(A){return YA(this,null,function*(){return this.workerConfig={astcSupported:yield A.hasFeatureAsync("texture-compression-astc"),etc1Supported:yield A.hasFeatureAsync("texture-compression-etc1"),etc2Supported:yield A.hasFeatureAsync("texture-compression-etc2"),dxtSupported:yield A.hasFeatureAsync("texture-compression-bc"),bptcSupported:yield A.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:yield A.hasFeatureAsync("texture-compression-pvrtc")},this})}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-bc"),bptcSupported:A.hasFeature("texture-compression-bptc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:(this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this.workerConfig.etc1Supported=!1),this}init(){if(!this.transcoderPending){const A=new B.FileLoader(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),s=new B.FileLoader(this.manager);s.setPath(this.transcoderPath),s.setResponseType("arraybuffer"),s.setWithCredentials(this.withCredentials);const t=s.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,t]).then(([n,i])=>{const a=z.BasisWorker.toString(),r=["/* constants */","let _EngineFormat = "+JSON.stringify(z.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(z.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(z.BasisFormat),"/* basis_transcoder.js */",n,"/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
|
|
10
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([r])),this.transcoderBinary=i,this.workerPool.setWorkerCreator(()=>{const I=new Worker(this.workerSourceURL),c=this.transcoderBinary.slice(0);return I.postMessage({type:"init",config:this.workerConfig,transcoderBinary:c},[c]),I})}),dt>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),dt++}return this.transcoderPending}load(A,e,s,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const n=new B.FileLoader(this.manager);n.setResponseType("arraybuffer"),n.setWithCredentials(this.withCredentials),n.load(A,i=>{if(ut.has(i))return ut.get(i).promise.then(e).catch(t);this._createTexture(i).then(a=>e?e(a):null).catch(t)},s,t)}_createTextureFrom(A,e){const{faces:s,width:t,height:n,format:i,type:a,error:r,dfdFlags:I}=A;if(a==="error")return Promise.reject(r);let c;if(e.faceCount===6)c=new B.CompressedCubeTexture(s,i,B.UnsignedByteType);else{const g=s[0].mipmaps;c=e.layerCount>1?new B.CompressedArrayTexture(g,t,n,e.layerCount,i,B.UnsignedByteType):new B.CompressedTexture(g,t,n,i,B.UnsignedByteType)}return c.minFilter=s[0].mipmaps.length===1?B.LinearFilter:B.LinearMipmapLinearFilter,c.magFilter=B.LinearFilter,c.generateMipmaps=!1,c.needsUpdate=!0,c.colorSpace=Qs(e),c.premultiplyAlpha=!!(I&pn),c}_createTexture(s){return YA(this,arguments,function*(A,e={}){const t=yn(new Uint8Array(A));if(t.vkFormat!==Rn)return Ln(t);const n=e,i=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:n},[A])).then(a=>this._createTextureFrom(a.data,t));return ut.set(A,{promise:i}),i})}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),dt--,this}}z.BasisFormat={ETC1S:0,UASTC_4x4:1};z.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16};z.EngineFormat={RGBAFormat:B.RGBAFormat,RGBA_ASTC_4x4_Format:B.RGBA_ASTC_4x4_Format,RGBA_BPTC_Format:B.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:B.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:B.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:B.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:B.RGB_ETC1_Format,RGB_ETC2_Format:B.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:B.RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format:B.RGB_S3TC_DXT1_Format};z.BasisWorker=function(){let C,A,e;const s=_EngineFormat,t=_TranscoderFormat,n=_BasisFormat;self.addEventListener("message",function(u){const h=u.data;switch(h.type){case"init":C=h.config,i(h.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:E,buffers:f,width:p,height:F,hasAlpha:G,format:y,dfdFlags:M}=a(h.buffer);self.postMessage({type:"transcode",id:h.id,faces:E,width:p,height:F,hasAlpha:G,format:y,dfdFlags:M},f)}catch(E){console.error(E),self.postMessage({type:"error",id:h.id,error:E.message})}});break}});function i(u){A=new Promise(h=>{e={wasmBinary:u,onRuntimeInitialized:h},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function a(u){const h=new e.KTX2File(new Uint8Array(u));function E(){h.close(),h.delete()}if(!h.isValid())throw E(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const f=h.isUASTC()?n.UASTC_4x4:n.ETC1S,p=h.getWidth(),F=h.getHeight(),G=h.getLayers()||1,y=h.getLevels(),M=h.getFaces(),L=h.getHasAlpha(),V=h.getDFDFlags(),{transcoderFormat:N,engineFormat:$}=g(f,p,F,L);if(!p||!F||!y)throw E(),new Error("THREE.KTX2Loader: Invalid texture");if(!h.startTranscoding())throw E(),new Error("THREE.KTX2Loader: .startTranscoding failed");const De=[],ze=[];for(let SA=0;SA<M;SA++){const $e=[];for(let IA=0;IA<y;IA++){const At=[];let U,K;for(let AA=0;AA<G;AA++){const PA=h.getImageLevelInfo(IA,AA,SA);SA===0&&IA===0&&AA===0&&(PA.origWidth%4!==0||PA.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),y>1?(U=PA.origWidth,K=PA.origHeight):(U=PA.width,K=PA.height);const Ut=new Uint8Array(h.getImageTranscodedSizeInBytes(IA,AA,0,N));if(!h.transcodeImage(Ut,IA,AA,SA,N,0,-1,-1))throw E(),new Error("THREE.KTX2Loader: .transcodeImage failed.");At.push(Ut)}const pe=l(At);$e.push({data:pe,width:U,height:K}),ze.push(pe.buffer)}De.push({mipmaps:$e,width:p,height:F,format:$})}return E(),{faces:De,buffers:ze,width:p,height:F,hasAlpha:L,format:$,dfdFlags:V}}const r=[{if:"astcSupported",basisFormat:[n.UASTC_4x4],transcoderFormat:[t.ASTC_4x4,t.ASTC_4x4],engineFormat:[s.RGBA_ASTC_4x4_Format,s.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.BC7_M5,t.BC7_M5],engineFormat:[s.RGBA_BPTC_Format,s.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.BC1,t.BC3],engineFormat:[s.RGB_S3TC_DXT1_Format,s.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.ETC1,t.ETC2],engineFormat:[s.RGB_ETC2_Format,s.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.ETC1],engineFormat:[s.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[n.ETC1S,n.UASTC_4x4],transcoderFormat:[t.PVRTC1_4_RGB,t.PVRTC1_4_RGBA],engineFormat:[s.RGB_PVRTC_4BPPV1_Format,s.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],I=r.sort(function(u,h){return u.priorityETC1S-h.priorityETC1S}),c=r.sort(function(u,h){return u.priorityUASTC-h.priorityUASTC});function g(u,h,E,f){let p,F;const G=u===n.ETC1S?I:c;for(let y=0;y<G.length;y++){const M=G[y];if(C[M.if]&&M.basisFormat.includes(u)&&!(f&&M.transcoderFormat.length<2)&&!(M.needsPowerOfTwo&&!(Q(h)&&Q(E))))return p=M.transcoderFormat[f?1:0],F=M.engineFormat[f?1:0],{transcoderFormat:p,engineFormat:F}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),p=t.RGBA32,F=s.RGBAFormat,{transcoderFormat:p,engineFormat:F}}function Q(u){return u<=2?!0:(u&u-1)===0&&u!==0}function l(u){if(u.length===1)return u[0];let h=0;for(let p=0;p<u.length;p++){const F=u[p];h+=F.byteLength}const E=new Uint8Array(h);let f=0;for(let p=0;p<u.length;p++){const F=u[p];E.set(F,f),f+=F.byteLength}return E}};const Sn=new Set([B.RGBAFormat,B.RGFormat,B.RedFormat]),Dt={[gs]:B.RGBAFormat,[as]:B.RGBAFormat,[is]:B.RGBAFormat,[os]:B.RGBAFormat,[Is]:B.RGFormat,[Bs]:B.RGFormat,[ss]:B.RGFormat,[ns]:B.RGFormat,[Cs]:B.RedFormat,[rs]:B.RedFormat,[ts]:B.RedFormat,[es]:B.RedFormat,[Es]:B.RGBA_ASTC_6x6_Format,[cs]:B.RGBA_ASTC_6x6_Format},pt={[gs]:B.FloatType,[as]:B.HalfFloatType,[is]:B.UnsignedByteType,[os]:B.UnsignedByteType,[Is]:B.FloatType,[Bs]:B.HalfFloatType,[ss]:B.UnsignedByteType,[ns]:B.UnsignedByteType,[Cs]:B.FloatType,[rs]:B.HalfFloatType,[ts]:B.UnsignedByteType,[es]:B.UnsignedByteType,[Es]:B.UnsignedByteType,[cs]:B.UnsignedByteType};function Ln(C){return YA(this,null,function*(){const{vkFormat:A}=C;if(Dt[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;C.supercompressionScheme===Pt&&(ft||(ft=new Promise(n=>YA(this,null,function*(){const i=new Mn;yield i.init(),n(i)}))),e=yield ft);const s=[];for(let n=0;n<C.levels.length;n++){const i=Math.max(1,C.pixelWidth>>n),a=Math.max(1,C.pixelHeight>>n),r=C.pixelDepth?Math.max(1,C.pixelDepth>>n):0,I=C.levels[n];let c;if(C.supercompressionScheme===Dn)c=I.levelData;else if(C.supercompressionScheme===Pt)c=e.decode(I.levelData,I.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let g;pt[A]===B.FloatType?g=new Float32Array(c.buffer,c.byteOffset,c.byteLength/Float32Array.BYTES_PER_ELEMENT):pt[A]===B.HalfFloatType?g=new Uint16Array(c.buffer,c.byteOffset,c.byteLength/Uint16Array.BYTES_PER_ELEMENT):g=c,s.push({data:g,width:i,height:a,depth:r})}let t;if(Sn.has(Dt[A]))t=C.pixelDepth===0?new B.DataTexture(s[0].data,C.pixelWidth,C.pixelHeight):new B.Data3DTexture(s[0].data,C.pixelWidth,C.pixelHeight,C.pixelDepth);else{if(C.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");t=new B.CompressedTexture(s,C.pixelWidth,C.pixelHeight)}return t.mipmaps=s,t.type=pt[A],t.format=Dt[A],t.colorSpace=Qs(C),t.needsUpdate=!0,Promise.resolve(t)})}function Qs(C){const A=C.dataFormatDescriptor[0];return A.colorPrimaries===Gn?A.transferFunction===Yt?B.SRGBColorSpace:B.LinearSRGBColorSpace:A.colorPrimaries===mn?A.transferFunction===Yt?B.DisplayP3ColorSpace:B.LinearDisplayP3ColorSpace:(A.colorPrimaries===Fn||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),B.NoColorSpace)}let et;const Tn=()=>{if(et)return et;const C="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",A="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",e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),s=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if(typeof WebAssembly!="object")return{supported:!1};let t=C;WebAssembly.validate(e)&&(t=A);let n;const i=WebAssembly.instantiate(a(t),{}).then(g=>{n=g.instance,n.exports.__wasm_call_ctors()});function a(g){const Q=new Uint8Array(g.length);for(let u=0;u<g.length;++u){const h=g.charCodeAt(u);Q[u]=h>96?h-71:h>64?h-65:h>47?h+4:h>46?63:62}let l=0;for(let u=0;u<g.length;++u)Q[l++]=Q[u]<60?s[Q[u]]:(Q[u]-60)*64+Q[++u];return Q.buffer.slice(0,l)}function r(g,Q,l,u,h,E){const f=n.exports.sbrk,p=l+3&-4,F=f(p*u),G=f(h.length),y=new Uint8Array(n.exports.memory.buffer);y.set(h,G);const M=g(F,l,u,G,h.length);if(M===0&&E&&E(F,p,u),Q.set(y.subarray(F,F+l*u)),f(F-f(0)),M!==0)throw new Error(`Malformed buffer data: ${M}`)}const I={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},c={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return et={ready:i,supported:!0,decodeVertexBuffer(g,Q,l,u,h){r(n.exports.meshopt_decodeVertexBuffer,g,Q,l,u,n.exports[I[h]])},decodeIndexBuffer(g,Q,l,u){r(n.exports.meshopt_decodeIndexBuffer,g,Q,l,u)},decodeIndexSequence(g,Q,l,u){r(n.exports.meshopt_decodeIndexSequence,g,Q,l,u)},decodeGltfBuffer(g,Q,l,u,h,E){r(n.exports[c[h]],g,Q,l,u,n.exports[I[E]])}},et};var ZA,xe,He,Je;class xn{constructor(){d(this,ZA,new bs);d(this,xe,new un().setDecoderPath(`${w.CDNVersion}/examples/jsm/libs/draco/gltf/`));d(this,He,new z().setTranscoderPath(`${w.CDNVersion}/examples/jsm/libs/basis/`));d(this,Je,!1);o(this,ZA).setCrossOrigin("anonymous").setDRACOLoader(o(this,xe)).setMeshoptDecoder(Tn)}get gltfLoader(){return o(this,ZA)}get dracoLoader(){return o(this,xe)}get ktx2Loader(){return o(this,He)}load(...A){o(this,Je)||(o(this,ZA).setKTX2Loader(o(this,He).detectSupport(w.webglRenderer)),D(this,Je,!0));const[e,s,...t]=A;if(w.cacheAssets&&Y.has(e)){const n=Y.get(e).data;s(n)}else this.gltfLoader.load(e,n=>{w.cacheAssets&&Y.set(e,{data:n,dispose:()=>{n.cameras.forEach(i=>vA(i)),n.scenes.forEach(i=>{vA(i)})}}),s(n)},...t)}}ZA=new WeakMap,xe=new WeakMap,He=new WeakMap,Je=new WeakMap;const ls=new xn;var oA,x,rA,Ue;class Hn{constructor(A,e){d(this,oA,void 0);d(this,x,void 0);d(this,rA,[]);d(this,Ue,()=>{const A=o(this,x).left-o(this,oA).box.left,e=o(this,x).top-o(this,oA).box.top;let s=0,t=0;o(this,oA).isClipped||(s=o(this,x).position.x-o(this,x).left,t=o(this,x).position.y-o(this,x).top);const n=o(this,oA).box.width-o(this,x).scale.x,i=A-n,a=o(this,oA).box.height-o(this,x).scale.y,r=e-a;o(this,rA)[0].constant=o(this,x).scale.y/2+t*-1-a/2-r,o(this,rA)[1].constant=o(this,x).scale.y/2+t+a/2+r,o(this,rA)[2].constant=o(this,x).scale.x/2+s+n/2+i,o(this,rA)[3].constant=o(this,x).scale.x/2+s*-1-n/2-i});D(this,oA,w.getView((e==null?void 0:e.viewName)||"default")),D(this,x,new mt.LayoutBox(A,{cartesian:!1}));const s=(e==null?void 0:e.scale)||1;D(this,rA,[new B.Plane(new B.Vector3(0,-1*s,0)),new B.Plane(new B.Vector3(0,1*s,0)),new B.Plane(new B.Vector3(-1*s,0,0)),new B.Plane(new B.Vector3(1*s,0,0))]),yA.ticker.subscribe(o(this,Ue),{order:we.TICK_ORDER.LAYOUT_BOX})}get planes(){return o(this,rA)}get layoutBox(){return o(this,x)}destroy(){yA.ticker.unsubscribe(o(this,Ue)),o(this,x).destroy()}}oA=new WeakMap,x=new WeakMap,rA=new WeakMap,Ue=new WeakMap;class Jn extends B.Group{constructor(A,e=500){super(),this.add(new B.PlaneHelper(A.planes[0],e,16711680)),this.add(new B.PlaneHelper(A.planes[1],e,16711680)),this.add(new B.PlaneHelper(A.planes[2],e,16711680)),this.add(new B.PlaneHelper(A.planes[3],e,16711680))}}var zA,HA,$A,be,Ne,uA,Ae,ke;class xt extends ys.SourceManager{constructor(e){super(e);d(this,zA,new J.Store(null));d(this,HA,new J.Store(void 0));d(this,$A,void 0);d(this,be,void 0);d(this,Ne,void 0);d(this,uA,void 0);d(this,Ae,!1);d(this,ke,()=>{if(!(o(this,uA)&&!o(this,Ae))&&(this.current!==this.previous&&(o(this,zA).current=null),this.current)){const e=o(this,Ne)?this.current.url:this.current.name+this.current.extension;o(this,uA)||Ct.loading.setTotal(e,1),o(this,HA).current="start",o(this,be).load(e,s=>{var t;o(this,zA).current=((t=this.processData)==null?void 0:t.call(this,s))||s,o(this,HA).current="complete",o(this,uA)||Ct.loading.setLoaded(e,1)},void 0,()=>{o(this,uA)||(o(this,HA).current="error",Ct.loading.setError(e,e))})}});D(this,$A,e.consumer),D(this,be,e.loader),D(this,Ne,e.keepSourceParameters||!1),D(this,uA,e.lazy||!1),this.subscribe(o(this,ke)),o(this,$A).addEventListener("added",()=>{this.connect()}),o(this,$A).addEventListener("removed",()=>{this.disconnect()})}get data(){return o(this,zA)}get loading(){return o(this,HA)}lazyLoad(){o(this,Ae)||(D(this,Ae,!0),o(this,ke).call(this))}}zA=new WeakMap,HA=new WeakMap,$A=new WeakMap,be=new WeakMap,Ne=new WeakMap,uA=new WeakMap,Ae=new WeakMap,ke=new WeakMap;var JA;class Un extends B.Group{constructor(e){super();d(this,JA,void 0);D(this,JA,new xt(eA({loader:ls,consumer:this},e))),o(this,JA).processData=s=>{if(w.cacheAssets){const t=eA({},s);return t.scene=s.scene.clone(!0),t.scenes=s.scenes.map(n=>s.scene===n?t.scene:n.clone(!0)),t}return s},o(this,JA).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(t=>{this.remove(t),vA(t)})})}get sourceManager(){return o(this,JA)}}JA=new WeakMap;const de=`attribute vec3 position;
|
|
8
|
+
`,r(this,Z).append(r(this,C).domElement),r(this,P).set("default",new Jt("default",W({sizeElement:r(this,Z)},t==null?void 0:t.view))),y(this,gt,(t==null?void 0:t.cacheAssets)||!1),y(this,be,!0),Ae.windowResizer.subscribe(r(this,xt),ft.RESIZE_ORDER.EN3),ve.ticker.subscribe(r(this,yt),{order:ft.TICK_ORDER.EN3})}destroy(){if(!r(this,be)){console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");return}Ae.windowResizer.unsubscribe(r(this,xt)),ve.ticker.unsubscribe(r(this,yt)),r(this,P).forEach(t=>{t.destroy()}),r(this,C).dispose(),r(this,C).domElement.remove(),y(this,C,null),y(this,be,!1),V.forEach(t=>{t.dispose()}),V.clear()}createView(t,e){const s=r(this,P).size,n=new Jt(t,e);return r(this,P).set(t,n),s===1&&r(this,C).setScissorTest(!0),n}getView(t){return r(this,P).get(t)}destroyView(t){const e=r(this,P).get(t);e&&(r(this,P).delete(t),e.destroy(),r(this,P).size<=1&&r(this,C).setScissorTest(!1))}render(t){var e;if(r(this,P).size>1||this.view.isClipped){const s=t.box.left+t.box.CSSTranslation.x+t.box.scrollValue.x,n=R.height-t.box.height-t.box.top+t.box.CSSTranslation.y+t.box.scrollValue.y*-1;r(this,C).setScissor(s,n,t.box.width,t.box.height),r(this,C).setViewport(s,n,t.box.width,t.box.height)}(e=t.beforeRenderCallback)==null||e.call(t),r(this,C).render(t.scene,t.camera)}}kt=new WeakMap,Z=new WeakMap,C=new WeakMap,P=new WeakMap,Be=new WeakMap,Ge=new WeakMap,He=new WeakMap,mt=new WeakMap,be=new WeakMap,gt=new WeakMap,xt=new WeakMap,yt=new WeakMap;const R=new Vn,Te=new l.TextureLoader,Un=Te.load.bind(Te),zn=Te.loadAsync.bind(Te);Te.load=(h,t,...e)=>{if(R.cacheAssets&&V.has(h)){const s=V.get(h);return t==null||t(s.data),s.data}return Un(h,s=>{R.cacheAssets&&V.set(h,{data:s,dispose:()=>s.dispose()}),t==null||t(s)},...e)};Te.loadAsync=(h,...t)=>Kt(exports,null,function*(){if(R.cacheAssets&&V.has(h))return V.get(h).data;const e=yield zn(h,...t);return R.cacheAssets&&V.set(h,{data:e,dispose:()=>e.dispose()}),e});function hn(h,t){if(t===l.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),h;if(t===l.TriangleFanDrawMode||t===l.TriangleStripDrawMode){let e=h.getIndex();if(e===null){const o=[],c=h.getAttribute("position");if(c!==void 0){for(let a=0;a<c.count;a++)o.push(a);h.setIndex(o),e=h.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),h}const s=e.count-2,n=[];if(t===l.TriangleFanDrawMode)for(let o=1;o<=s;o++)n.push(e.getX(0)),n.push(e.getX(o)),n.push(e.getX(o+1));else for(let o=0;o<s;o++)o%2===0?(n.push(e.getX(o)),n.push(e.getX(o+1)),n.push(e.getX(o+2))):(n.push(e.getX(o+2)),n.push(e.getX(o+1)),n.push(e.getX(o)));n.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=h.clone();return i.setIndex(n),i.clearGroups(),i}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),h}class Kn extends l.Loader{constructor(t){super(t),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new Yn(e)}),this.register(function(e){return new Qn(e)}),this.register(function(e){return new rs(e)}),this.register(function(e){return new os(e)}),this.register(function(e){return new as(e)}),this.register(function(e){return new Zn(e)}),this.register(function(e){return new Jn(e)}),this.register(function(e){return new es(e)}),this.register(function(e){return new ts(e)}),this.register(function(e){return new Wn(e)}),this.register(function(e){return new ns(e)}),this.register(function(e){return new $n(e)}),this.register(function(e){return new is(e)}),this.register(function(e){return new ss(e)}),this.register(function(e){return new Xn(e)}),this.register(function(e){return new cs(e)}),this.register(function(e){return new ls(e)})}load(t,e,s,n){const i=this;let o;if(this.resourcePath!=="")o=this.resourcePath;else if(this.path!==""){const u=l.LoaderUtils.extractUrlBase(t);o=l.LoaderUtils.resolveURL(u,this.path)}else o=l.LoaderUtils.extractUrlBase(t);this.manager.itemStart(t);const c=function(u){n?n(u):console.error(u),i.manager.itemError(t),i.manager.itemEnd(t)},a=new l.FileLoader(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(t,function(u){try{i.parse(u,o,function(f){e(f),i.manager.itemEnd(t)},c)}catch(f){c(f)}},s,c)}setDRACOLoader(t){return this.dracoLoader=t,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(t){return this.ktx2Loader=t,this}setMeshoptDecoder(t){return this.meshoptDecoder=t,this}register(t){return this.pluginCallbacks.indexOf(t)===-1&&this.pluginCallbacks.push(t),this}unregister(t){return this.pluginCallbacks.indexOf(t)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(t),1),this}parse(t,e,s,n){let i;const o={},c={},a=new TextDecoder;if(typeof t=="string")i=JSON.parse(t);else if(t instanceof ArrayBuffer)if(a.decode(new Uint8Array(t,0,4))===Tn){try{o[S.KHR_BINARY_GLTF]=new us(t)}catch(d){n&&n(d);return}i=JSON.parse(o[S.KHR_BINARY_GLTF].content)}else i=JSON.parse(a.decode(t));else i=t;if(i.asset===void 0||i.asset.version[0]<2){n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const u=new Ss(i,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let f=0;f<this.pluginCallbacks.length;f++){const d=this.pluginCallbacks[f](u);d.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),c[d.name]=d,o[d.name]=!0}if(i.extensionsUsed)for(let f=0;f<i.extensionsUsed.length;++f){const d=i.extensionsUsed[f],m=i.extensionsRequired||[];switch(d){case S.KHR_MATERIALS_UNLIT:o[d]=new qn;break;case S.KHR_DRACO_MESH_COMPRESSION:o[d]=new hs(i,this.dracoLoader);break;case S.KHR_TEXTURE_TRANSFORM:o[d]=new ds;break;case S.KHR_MESH_QUANTIZATION:o[d]=new fs;break;default:m.indexOf(d)>=0&&c[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}u.setExtensions(o),u.setPlugins(c),u.parse(s,n)}parseAsync(t,e){const s=this;return new Promise(function(n,i){s.parse(t,e,n,i)})}}function jn(){let h={};return{get:function(t){return h[t]},add:function(t,e){h[t]=e},remove:function(t){delete h[t]},removeAll:function(){h={}}}}const S={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Xn{constructor(t){this.parser=t,this.name=S.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const t=this.parser,e=this.parser.json.nodes||[];for(let s=0,n=e.length;s<n;s++){const i=e[s];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&t._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(t){const e=this.parser,s="light:"+t;let n=e.cache.get(s);if(n)return n;const i=e.json,a=((i.extensions&&i.extensions[this.name]||{}).lights||[])[t];let u;const f=new l.Color(16777215);a.color!==void 0&&f.setRGB(a.color[0],a.color[1],a.color[2],l.LinearSRGBColorSpace);const d=a.range!==void 0?a.range:0;switch(a.type){case"directional":u=new l.DirectionalLight(f),u.target.position.set(0,0,-1),u.add(u.target);break;case"point":u=new l.PointLight(f),u.distance=d;break;case"spot":u=new l.SpotLight(f),u.distance=d,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle!==void 0?a.spot.innerConeAngle:0,a.spot.outerConeAngle=a.spot.outerConeAngle!==void 0?a.spot.outerConeAngle:Math.PI/4,u.angle=a.spot.outerConeAngle,u.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,u.target.position.set(0,0,-1),u.add(u.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+a.type)}return u.position.set(0,0,0),u.decay=2,$(u,a),a.intensity!==void 0&&(u.intensity=a.intensity),u.name=e.createUniqueName(a.name||"light_"+t),n=Promise.resolve(u),e.cache.add(s,n),n}getDependency(t,e){if(t==="light")return this._loadLight(e)}createNodeAttachment(t){const e=this,s=this.parser,i=s.json.nodes[t],c=(i.extensions&&i.extensions[this.name]||{}).light;return c===void 0?null:this._loadLight(c).then(function(a){return s._getNodeRef(e.cache,c,a)})}}class qn{constructor(){this.name=S.KHR_MATERIALS_UNLIT}getMaterialType(){return l.MeshBasicMaterial}extendParams(t,e,s){const n=[];t.color=new l.Color(1,1,1),t.opacity=1;const i=e.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const o=i.baseColorFactor;t.color.setRGB(o[0],o[1],o[2],l.LinearSRGBColorSpace),t.opacity=o[3]}i.baseColorTexture!==void 0&&n.push(s.assignTexture(t,"map",i.baseColorTexture,l.SRGBColorSpace))}return Promise.all(n)}}class Wn{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(t,e){const n=this.parser.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name].emissiveStrength;return i!==void 0&&(e.emissiveIntensity=i),Promise.resolve()}}class Yn{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_CLEARCOAT}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];if(o.clearcoatFactor!==void 0&&(e.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&i.push(s.assignTexture(e,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&i.push(s.assignTexture(e,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(i.push(s.assignTexture(e,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const c=o.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new l.Vector2(c,c)}return Promise.all(i)}}class Qn{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_DISPERSION}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const n=this.parser.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name];return e.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}}class $n{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_IRIDESCENCE}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.iridescenceFactor!==void 0&&(e.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&i.push(s.assignTexture(e,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(e.iridescenceIOR=o.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&i.push(s.assignTexture(e,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(i)}}class Zn{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_SHEEN}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[];e.sheenColor=new l.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const o=n.extensions[this.name];if(o.sheenColorFactor!==void 0){const c=o.sheenColorFactor;e.sheenColor.setRGB(c[0],c[1],c[2],l.LinearSRGBColorSpace)}return o.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&i.push(s.assignTexture(e,"sheenColorMap",o.sheenColorTexture,l.SRGBColorSpace)),o.sheenRoughnessTexture!==void 0&&i.push(s.assignTexture(e,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(i)}}class Jn{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_TRANSMISSION}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.transmissionFactor!==void 0&&(e.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&i.push(s.assignTexture(e,"transmissionMap",o.transmissionTexture)),Promise.all(i)}}class es{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_VOLUME}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];e.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&i.push(s.assignTexture(e,"thicknessMap",o.thicknessTexture)),e.attenuationDistance=o.attenuationDistance||1/0;const c=o.attenuationColor||[1,1,1];return e.attenuationColor=new l.Color().setRGB(c[0],c[1],c[2],l.LinearSRGBColorSpace),Promise.all(i)}}class ts{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_IOR}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const n=this.parser.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name];return e.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}}class ns{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_SPECULAR}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];e.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&i.push(s.assignTexture(e,"specularIntensityMap",o.specularTexture));const c=o.specularColorFactor||[1,1,1];return e.specularColor=new l.Color().setRGB(c[0],c[1],c[2],l.LinearSRGBColorSpace),o.specularColorTexture!==void 0&&i.push(s.assignTexture(e,"specularColorMap",o.specularColorTexture,l.SRGBColorSpace)),Promise.all(i)}}class ss{constructor(t){this.parser=t,this.name=S.EXT_MATERIALS_BUMP}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return e.bumpScale=o.bumpFactor!==void 0?o.bumpFactor:1,o.bumpTexture!==void 0&&i.push(s.assignTexture(e,"bumpMap",o.bumpTexture)),Promise.all(i)}}class is{constructor(t){this.parser=t,this.name=S.KHR_MATERIALS_ANISOTROPY}getMaterialType(t){const s=this.parser.json.materials[t];return!s.extensions||!s.extensions[this.name]?null:l.MeshPhysicalMaterial}extendMaterialParams(t,e){const s=this.parser,n=s.json.materials[t];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=[],o=n.extensions[this.name];return o.anisotropyStrength!==void 0&&(e.anisotropy=o.anisotropyStrength),o.anisotropyRotation!==void 0&&(e.anisotropyRotation=o.anisotropyRotation),o.anisotropyTexture!==void 0&&i.push(s.assignTexture(e,"anisotropyMap",o.anisotropyTexture)),Promise.all(i)}}class rs{constructor(t){this.parser=t,this.name=S.KHR_TEXTURE_BASISU}loadTexture(t){const e=this.parser,s=e.json,n=s.textures[t];if(!n.extensions||!n.extensions[this.name])return null;const i=n.extensions[this.name],o=e.options.ktx2Loader;if(!o){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(t,i.source,o)}}class os{constructor(t){this.parser=t,this.name=S.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(t){const e=this.name,s=this.parser,n=s.json,i=n.textures[t];if(!i.extensions||!i.extensions[e])return null;const o=i.extensions[e],c=n.images[o.source];let a=s.textureLoader;if(c.uri){const u=s.options.manager.getHandler(c.uri);u!==null&&(a=u)}return this.detectSupport().then(function(u){if(u)return s.loadTextureImage(t,o.source,a);if(n.extensionsRequired&&n.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return s.loadTexture(t)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(t){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){t(e.height===1)}})),this.isSupported}}class as{constructor(t){this.parser=t,this.name=S.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(t){const e=this.name,s=this.parser,n=s.json,i=n.textures[t];if(!i.extensions||!i.extensions[e])return null;const o=i.extensions[e],c=n.images[o.source];let a=s.textureLoader;if(c.uri){const u=s.options.manager.getHandler(c.uri);u!==null&&(a=u)}return this.detectSupport().then(function(u){if(u)return s.loadTextureImage(t,o.source,a);if(n.extensionsRequired&&n.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return s.loadTexture(t)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(t){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){t(e.height===1)}})),this.isSupported}}class cs{constructor(t){this.name=S.EXT_MESHOPT_COMPRESSION,this.parser=t}loadBufferView(t){const e=this.parser.json,s=e.bufferViews[t];if(s.extensions&&s.extensions[this.name]){const n=s.extensions[this.name],i=this.parser.getDependency("buffer",n.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(c){const a=n.byteOffset||0,u=n.byteLength||0,f=n.count,d=n.byteStride,m=new Uint8Array(c,a,u);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(f,d,m,n.mode,n.filter).then(function(A){return A.buffer}):o.ready.then(function(){const A=new ArrayBuffer(f*d);return o.decodeGltfBuffer(new Uint8Array(A),f,d,m,n.mode,n.filter),A})})}else return null}}class ls{constructor(t){this.name=S.EXT_MESH_GPU_INSTANCING,this.parser=t}createNodeMesh(t){const e=this.parser.json,s=e.nodes[t];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const n=e.meshes[s.mesh];for(const u of n.primitives)if(u.mode!==G.TRIANGLES&&u.mode!==G.TRIANGLE_STRIP&&u.mode!==G.TRIANGLE_FAN&&u.mode!==void 0)return null;const o=s.extensions[this.name].attributes,c=[],a={};for(const u in o)c.push(this.parser.getDependency("accessor",o[u]).then(f=>(a[u]=f,a[u])));return c.length<1?null:(c.push(this.parser.createNodeMesh(t)),Promise.all(c).then(u=>{const f=u.pop(),d=f.isGroup?f.children:[f],m=u[0].count,A=[];for(const v of d){const b=new l.Matrix4,x=new l.Vector3,p=new l.Quaternion,T=new l.Vector3(1,1,1),_=new l.InstancedMesh(v.geometry,v.material,m);for(let w=0;w<m;w++)a.TRANSLATION&&x.fromBufferAttribute(a.TRANSLATION,w),a.ROTATION&&p.fromBufferAttribute(a.ROTATION,w),a.SCALE&&T.fromBufferAttribute(a.SCALE,w),_.setMatrixAt(w,b.compose(x,p,T));for(const w in a)if(w==="_COLOR_0"){const L=a[w];_.instanceColor=new l.InstancedBufferAttribute(L.array,L.itemSize,L.normalized)}else w!=="TRANSLATION"&&w!=="ROTATION"&&w!=="SCALE"&&v.geometry.setAttribute(w,a[w]);l.Object3D.prototype.copy.call(_,v),this.parser.assignFinalMaterial(_),A.push(_)}return f.isGroup?(f.clear(),f.add(...A),f):A[0]}))}}const Tn="glTF",ht=12,dn={JSON:1313821514,BIN:5130562};class us{constructor(t){this.name=S.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(t,0,ht),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(t.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==Tn)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-ht,i=new DataView(t,ht);let o=0;for(;o<n;){const c=i.getUint32(o,!0);o+=4;const a=i.getUint32(o,!0);if(o+=4,a===dn.JSON){const u=new Uint8Array(t,ht+o,c);this.content=s.decode(u)}else if(a===dn.BIN){const u=ht+o;this.body=t.slice(u,u+c)}o+=c}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class hs{constructor(t,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=S.KHR_DRACO_MESH_COMPRESSION,this.json=t,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(t,e){const s=this.json,n=this.dracoLoader,i=t.extensions[this.name].bufferView,o=t.extensions[this.name].attributes,c={},a={},u={};for(const f in o){const d=en[f]||f.toLowerCase();c[d]=o[f]}for(const f in t.attributes){const d=en[f]||f.toLowerCase();if(o[f]!==void 0){const m=s.accessors[t.attributes[f]],A=Pe[m.componentType];u[d]=A.name,a[d]=m.normalized===!0}}return e.getDependency("bufferView",i).then(function(f){return new Promise(function(d,m){n.decodeDracoFile(f,function(A){for(const v in A.attributes){const b=A.attributes[v],x=a[v];x!==void 0&&(b.normalized=x)}d(A)},c,u,l.LinearSRGBColorSpace,m)})})}}class ds{constructor(){this.name=S.KHR_TEXTURE_TRANSFORM}extendTexture(t,e){return(e.texCoord===void 0||e.texCoord===t.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(t=t.clone(),e.texCoord!==void 0&&(t.channel=e.texCoord),e.offset!==void 0&&t.offset.fromArray(e.offset),e.rotation!==void 0&&(t.rotation=e.rotation),e.scale!==void 0&&t.repeat.fromArray(e.scale),t.needsUpdate=!0),t}}class fs{constructor(){this.name=S.KHR_MESH_QUANTIZATION}}class wn extends l.Interpolant{constructor(t,e,s,n){super(t,e,s,n)}copySampleValue_(t){const e=this.resultBuffer,s=this.sampleValues,n=this.valueSize,i=t*n*3+n;for(let o=0;o!==n;o++)e[o]=s[i+o];return e}interpolate_(t,e,s,n){const i=this.resultBuffer,o=this.sampleValues,c=this.valueSize,a=c*2,u=c*3,f=n-e,d=(s-e)/f,m=d*d,A=m*d,v=t*u,b=v-u,x=-2*A+3*m,p=A-m,T=1-x,_=p-m+d;for(let w=0;w!==c;w++){const L=o[b+w+c],I=o[b+w+a]*f,N=o[v+w+c],U=o[v+w]*f;i[w]=T*L+_*I+x*N+p*U}return i}}const ps=new l.Quaternion;class ms extends wn{interpolate_(t,e,s,n){const i=super.interpolate_(t,e,s,n);return ps.fromArray(i).normalize().toArray(i),i}}const G={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Pe={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},fn={9728:l.NearestFilter,9729:l.LinearFilter,9984:l.NearestMipmapNearestFilter,9985:l.LinearMipmapNearestFilter,9986:l.NearestMipmapLinearFilter,9987:l.LinearMipmapLinearFilter},pn={33071:l.ClampToEdgeWrapping,33648:l.MirroredRepeatWrapping,10497:l.RepeatWrapping},qt={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},en={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},re={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},gs={CUBICSPLINE:void 0,LINEAR:l.InterpolateLinear,STEP:l.InterpolateDiscrete},Wt={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function xs(h){return h.DefaultMaterial===void 0&&(h.DefaultMaterial=new l.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:l.FrontSide})),h.DefaultMaterial}function we(h,t,e){for(const s in e.extensions)h[s]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[s]=e.extensions[s])}function $(h,t){t.extras!==void 0&&(typeof t.extras=="object"?Object.assign(h.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function ys(h,t,e){let s=!1,n=!1,i=!1;for(let u=0,f=t.length;u<f;u++){const d=t[u];if(d.POSITION!==void 0&&(s=!0),d.NORMAL!==void 0&&(n=!0),d.COLOR_0!==void 0&&(i=!0),s&&n&&i)break}if(!s&&!n&&!i)return Promise.resolve(h);const o=[],c=[],a=[];for(let u=0,f=t.length;u<f;u++){const d=t[u];if(s){const m=d.POSITION!==void 0?e.getDependency("accessor",d.POSITION):h.attributes.position;o.push(m)}if(n){const m=d.NORMAL!==void 0?e.getDependency("accessor",d.NORMAL):h.attributes.normal;c.push(m)}if(i){const m=d.COLOR_0!==void 0?e.getDependency("accessor",d.COLOR_0):h.attributes.color;a.push(m)}}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(a)]).then(function(u){const f=u[0],d=u[1],m=u[2];return s&&(h.morphAttributes.position=f),n&&(h.morphAttributes.normal=d),i&&(h.morphAttributes.color=m),h.morphTargetsRelative=!0,h})}function As(h,t){if(h.updateMorphTargets(),t.weights!==void 0)for(let e=0,s=t.weights.length;e<s;e++)h.morphTargetInfluences[e]=t.weights[e];if(t.extras&&Array.isArray(t.extras.targetNames)){const e=t.extras.targetNames;if(h.morphTargetInfluences.length===e.length){h.morphTargetDictionary={};for(let s=0,n=e.length;s<n;s++)h.morphTargetDictionary[e[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function vs(h){let t;const e=h.extensions&&h.extensions[S.KHR_DRACO_MESH_COMPRESSION];if(e?t="draco:"+e.bufferView+":"+e.indices+":"+Yt(e.attributes):t=h.indices+":"+Yt(h.attributes)+":"+h.mode,h.targets!==void 0)for(let s=0,n=h.targets.length;s<n;s++)t+=":"+Yt(h.targets[s]);return t}function Yt(h){let t="";const e=Object.keys(h).sort();for(let s=0,n=e.length;s<n;s++)t+=e[s]+":"+h[e[s]]+";";return t}function tn(h){switch(h){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Ts(h){return h.search(/\.jpe?g($|\?)/i)>0||h.search(/^data\:image\/jpeg/)===0?"image/jpeg":h.search(/\.webp($|\?)/i)>0||h.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const ws=new l.Matrix4;class Ss{constructor(t={},e={}){this.json=t,this.extensions={},this.plugins={},this.options=e,this.cache=new jn,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,n=!1,i=-1;typeof navigator!="undefined"&&(s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,n=navigator.userAgent.indexOf("Firefox")>-1,i=n?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap=="undefined"||s||n&&i<98?this.textureLoader=new l.TextureLoader(this.options.manager):this.textureLoader=new l.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new l.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(t){this.extensions=t}setPlugins(t){this.plugins=t}parse(t,e){const s=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(o){const c={scene:o[0][n.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:n.asset,parser:s,userData:{}};return we(i,c,n),$(c,n),Promise.all(s._invokeAll(function(a){return a.afterRoot&&a.afterRoot(c)})).then(function(){for(const a of c.scenes)a.updateMatrixWorld();t(c)})}).catch(e)}_markDefs(){const t=this.json.nodes||[],e=this.json.skins||[],s=this.json.meshes||[];for(let n=0,i=e.length;n<i;n++){const o=e[n].joints;for(let c=0,a=o.length;c<a;c++)t[o[c]].isBone=!0}for(let n=0,i=t.length;n<i;n++){const o=t[n];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(s[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(t,e){e!==void 0&&(t.refs[e]===void 0&&(t.refs[e]=t.uses[e]=0),t.refs[e]++)}_getNodeRef(t,e,s){if(t.refs[e]<=1)return s;const n=s.clone(),i=(o,c)=>{const a=this.associations.get(o);a!=null&&this.associations.set(c,a);for(const[u,f]of o.children.entries())i(f,c.children[u])};return i(s,n),n.name+="_instance_"+t.uses[e]++,n}_invokeOne(t){const e=Object.values(this.plugins);e.push(this);for(let s=0;s<e.length;s++){const n=t(e[s]);if(n)return n}return null}_invokeAll(t){const e=Object.values(this.plugins);e.unshift(this);const s=[];for(let n=0;n<e.length;n++){const i=t(e[n]);i&&s.push(i)}return s}getDependency(t,e){const s=t+":"+e;let n=this.cache.get(s);if(!n){switch(t){case"scene":n=this.loadScene(e);break;case"node":n=this._invokeOne(function(i){return i.loadNode&&i.loadNode(e)});break;case"mesh":n=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(e)});break;case"accessor":n=this.loadAccessor(e);break;case"bufferView":n=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(e)});break;case"buffer":n=this.loadBuffer(e);break;case"material":n=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(e)});break;case"texture":n=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(e)});break;case"skin":n=this.loadSkin(e);break;case"animation":n=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(e)});break;case"camera":n=this.loadCamera(e);break;default:if(n=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(t,e)}),!n)throw new Error("Unknown type: "+t);break}this.cache.add(s,n)}return n}getDependencies(t){let e=this.cache.get(t);if(!e){const s=this,n=this.json[t+(t==="mesh"?"es":"s")]||[];e=Promise.all(n.map(function(i,o){return s.getDependency(t,o)})),this.cache.add(t,e)}return e}loadBuffer(t){const e=this.json.buffers[t],s=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&t===0)return Promise.resolve(this.extensions[S.KHR_BINARY_GLTF].body);const n=this.options;return new Promise(function(i,o){s.load(l.LoaderUtils.resolveURL(e.uri,n.path),i,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(t){const e=this.json.bufferViews[t];return this.getDependency("buffer",e.buffer).then(function(s){const n=e.byteLength||0,i=e.byteOffset||0;return s.slice(i,i+n)})}loadAccessor(t){const e=this,s=this.json,n=this.json.accessors[t];if(n.bufferView===void 0&&n.sparse===void 0){const o=qt[n.type],c=Pe[n.componentType],a=n.normalized===!0,u=new c(n.count*o);return Promise.resolve(new l.BufferAttribute(u,o,a))}const i=[];return n.bufferView!==void 0?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),n.sparse!==void 0&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(o){const c=o[0],a=qt[n.type],u=Pe[n.componentType],f=u.BYTES_PER_ELEMENT,d=f*a,m=n.byteOffset||0,A=n.bufferView!==void 0?s.bufferViews[n.bufferView].byteStride:void 0,v=n.normalized===!0;let b,x;if(A&&A!==d){const p=Math.floor(m/A),T="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+p+":"+n.count;let _=e.cache.get(T);_||(b=new u(c,p*A,n.count*A/f),_=new l.InterleavedBuffer(b,A/f),e.cache.add(T,_)),x=new l.InterleavedBufferAttribute(_,a,m%A/f,v)}else c===null?b=new u(n.count*a):b=new u(c,m,n.count*a),x=new l.BufferAttribute(b,a,v);if(n.sparse!==void 0){const p=qt.SCALAR,T=Pe[n.sparse.indices.componentType],_=n.sparse.indices.byteOffset||0,w=n.sparse.values.byteOffset||0,L=new T(o[1],_,n.sparse.count*p),I=new u(o[2],w,n.sparse.count*a);c!==null&&(x=new l.BufferAttribute(x.array.slice(),x.itemSize,x.normalized));for(let N=0,U=L.length;N<U;N++){const ie=L[N];if(x.setX(ie,I[N*a]),a>=2&&x.setY(ie,I[N*a+1]),a>=3&&x.setZ(ie,I[N*a+2]),a>=4&&x.setW(ie,I[N*a+3]),a>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return x})}loadTexture(t){const e=this.json,s=this.options,i=e.textures[t].source,o=e.images[i];let c=this.textureLoader;if(o.uri){const a=s.manager.getHandler(o.uri);a!==null&&(c=a)}return this.loadTextureImage(t,i,c)}loadTextureImage(t,e,s){const n=this,i=this.json,o=i.textures[t],c=i.images[e],a=(c.uri||c.bufferView)+":"+o.sampler;if(this.textureCache[a])return this.textureCache[a];const u=this.loadImageSource(e,s).then(function(f){f.flipY=!1,f.name=o.name||c.name||"",f.name===""&&typeof c.uri=="string"&&c.uri.startsWith("data:image/")===!1&&(f.name=c.uri);const m=(i.samplers||{})[o.sampler]||{};return f.magFilter=fn[m.magFilter]||l.LinearFilter,f.minFilter=fn[m.minFilter]||l.LinearMipmapLinearFilter,f.wrapS=pn[m.wrapS]||l.RepeatWrapping,f.wrapT=pn[m.wrapT]||l.RepeatWrapping,n.associations.set(f,{textures:t}),f}).catch(function(){return null});return this.textureCache[a]=u,u}loadImageSource(t,e){const s=this,n=this.json,i=this.options;if(this.sourceCache[t]!==void 0)return this.sourceCache[t].then(d=>d.clone());const o=n.images[t],c=self.URL||self.webkitURL;let a=o.uri||"",u=!1;if(o.bufferView!==void 0)a=s.getDependency("bufferView",o.bufferView).then(function(d){u=!0;const m=new Blob([d],{type:o.mimeType});return a=c.createObjectURL(m),a});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+t+" is missing URI and bufferView");const f=Promise.resolve(a).then(function(d){return new Promise(function(m,A){let v=m;e.isImageBitmapLoader===!0&&(v=function(b){const x=new l.Texture(b);x.needsUpdate=!0,m(x)}),e.load(l.LoaderUtils.resolveURL(d,i.path),v,void 0,A)})}).then(function(d){return u===!0&&c.revokeObjectURL(a),$(d,o),d.userData.mimeType=o.mimeType||Ts(o.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),d});return this.sourceCache[t]=f,f}assignTexture(t,e,s,n){const i=this;return this.getDependency("texture",s.index).then(function(o){if(!o)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(o=o.clone(),o.channel=s.texCoord),i.extensions[S.KHR_TEXTURE_TRANSFORM]){const c=s.extensions!==void 0?s.extensions[S.KHR_TEXTURE_TRANSFORM]:void 0;if(c){const a=i.associations.get(o);o=i.extensions[S.KHR_TEXTURE_TRANSFORM].extendTexture(o,c),i.associations.set(o,a)}}return n!==void 0&&(o.colorSpace=n),t[e]=o,o})}assignFinalMaterial(t){const e=t.geometry;let s=t.material;const n=e.attributes.tangent===void 0,i=e.attributes.color!==void 0,o=e.attributes.normal===void 0;if(t.isPoints){const c="PointsMaterial:"+s.uuid;let a=this.cache.get(c);a||(a=new l.PointsMaterial,l.Material.prototype.copy.call(a,s),a.color.copy(s.color),a.map=s.map,a.sizeAttenuation=!1,this.cache.add(c,a)),s=a}else if(t.isLine){const c="LineBasicMaterial:"+s.uuid;let a=this.cache.get(c);a||(a=new l.LineBasicMaterial,l.Material.prototype.copy.call(a,s),a.color.copy(s.color),a.map=s.map,this.cache.add(c,a)),s=a}if(n||i||o){let c="ClonedMaterial:"+s.uuid+":";n&&(c+="derivative-tangents:"),i&&(c+="vertex-colors:"),o&&(c+="flat-shading:");let a=this.cache.get(c);a||(a=s.clone(),i&&(a.vertexColors=!0),o&&(a.flatShading=!0),n&&(a.normalScale&&(a.normalScale.y*=-1),a.clearcoatNormalScale&&(a.clearcoatNormalScale.y*=-1)),this.cache.add(c,a),this.associations.set(a,this.associations.get(s))),s=a}t.material=s}getMaterialType(){return l.MeshStandardMaterial}loadMaterial(t){const e=this,s=this.json,n=this.extensions,i=s.materials[t];let o;const c={},a=i.extensions||{},u=[];if(a[S.KHR_MATERIALS_UNLIT]){const d=n[S.KHR_MATERIALS_UNLIT];o=d.getMaterialType(),u.push(d.extendParams(c,i,e))}else{const d=i.pbrMetallicRoughness||{};if(c.color=new l.Color(1,1,1),c.opacity=1,Array.isArray(d.baseColorFactor)){const m=d.baseColorFactor;c.color.setRGB(m[0],m[1],m[2],l.LinearSRGBColorSpace),c.opacity=m[3]}d.baseColorTexture!==void 0&&u.push(e.assignTexture(c,"map",d.baseColorTexture,l.SRGBColorSpace)),c.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,c.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(u.push(e.assignTexture(c,"metalnessMap",d.metallicRoughnessTexture)),u.push(e.assignTexture(c,"roughnessMap",d.metallicRoughnessTexture))),o=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(t)}),u.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(t,c)})))}i.doubleSided===!0&&(c.side=l.DoubleSide);const f=i.alphaMode||Wt.OPAQUE;if(f===Wt.BLEND?(c.transparent=!0,c.depthWrite=!1):(c.transparent=!1,f===Wt.MASK&&(c.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&o!==l.MeshBasicMaterial&&(u.push(e.assignTexture(c,"normalMap",i.normalTexture)),c.normalScale=new l.Vector2(1,1),i.normalTexture.scale!==void 0)){const d=i.normalTexture.scale;c.normalScale.set(d,d)}if(i.occlusionTexture!==void 0&&o!==l.MeshBasicMaterial&&(u.push(e.assignTexture(c,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(c.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&o!==l.MeshBasicMaterial){const d=i.emissiveFactor;c.emissive=new l.Color().setRGB(d[0],d[1],d[2],l.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&o!==l.MeshBasicMaterial&&u.push(e.assignTexture(c,"emissiveMap",i.emissiveTexture,l.SRGBColorSpace)),Promise.all(u).then(function(){const d=new o(c);return i.name&&(d.name=i.name),$(d,i),e.associations.set(d,{materials:t}),i.extensions&&we(n,d,i),d})}createUniqueName(t){const e=l.PropertyBinding.sanitizeNodeName(t||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(t){const e=this,s=this.extensions,n=this.primitiveCache;function i(c){return s[S.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(c,e).then(function(a){return mn(a,c,e)})}const o=[];for(let c=0,a=t.length;c<a;c++){const u=t[c],f=vs(u),d=n[f];if(d)o.push(d.promise);else{let m;u.extensions&&u.extensions[S.KHR_DRACO_MESH_COMPRESSION]?m=i(u):m=mn(new l.BufferGeometry,u,e),n[f]={primitive:u,promise:m},o.push(m)}}return Promise.all(o)}loadMesh(t){const e=this,s=this.json,n=this.extensions,i=s.meshes[t],o=i.primitives,c=[];for(let a=0,u=o.length;a<u;a++){const f=o[a].material===void 0?xs(this.cache):this.getDependency("material",o[a].material);c.push(f)}return c.push(e.loadGeometries(o)),Promise.all(c).then(function(a){const u=a.slice(0,a.length-1),f=a[a.length-1],d=[];for(let A=0,v=f.length;A<v;A++){const b=f[A],x=o[A];let p;const T=u[A];if(x.mode===G.TRIANGLES||x.mode===G.TRIANGLE_STRIP||x.mode===G.TRIANGLE_FAN||x.mode===void 0)p=i.isSkinnedMesh===!0?new l.SkinnedMesh(b,T):new l.Mesh(b,T),p.isSkinnedMesh===!0&&p.normalizeSkinWeights(),x.mode===G.TRIANGLE_STRIP?p.geometry=hn(p.geometry,l.TriangleStripDrawMode):x.mode===G.TRIANGLE_FAN&&(p.geometry=hn(p.geometry,l.TriangleFanDrawMode));else if(x.mode===G.LINES)p=new l.LineSegments(b,T);else if(x.mode===G.LINE_STRIP)p=new l.Line(b,T);else if(x.mode===G.LINE_LOOP)p=new l.LineLoop(b,T);else if(x.mode===G.POINTS)p=new l.Points(b,T);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+x.mode);Object.keys(p.geometry.morphAttributes).length>0&&As(p,i),p.name=e.createUniqueName(i.name||"mesh_"+t),$(p,i),x.extensions&&we(n,p,x),e.assignFinalMaterial(p),d.push(p)}for(let A=0,v=d.length;A<v;A++)e.associations.set(d[A],{meshes:t,primitives:A});if(d.length===1)return i.extensions&&we(n,d[0],i),d[0];const m=new l.Group;i.extensions&&we(n,m,i),e.associations.set(m,{meshes:t});for(let A=0,v=d.length;A<v;A++)m.add(d[A]);return m})}loadCamera(t){let e;const s=this.json.cameras[t],n=s[s.type];if(!n){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?e=new l.PerspectiveCamera(l.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):s.type==="orthographic"&&(e=new l.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),s.name&&(e.name=this.createUniqueName(s.name)),$(e,s),Promise.resolve(e)}loadSkin(t){const e=this.json.skins[t],s=[];for(let n=0,i=e.joints.length;n<i;n++)s.push(this._loadNodeShallow(e.joints[n]));return e.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",e.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(n){const i=n.pop(),o=n,c=[],a=[];for(let u=0,f=o.length;u<f;u++){const d=o[u];if(d){c.push(d);const m=new l.Matrix4;i!==null&&m.fromArray(i.array,u*16),a.push(m)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[u])}return new l.Skeleton(c,a)})}loadAnimation(t){const e=this.json,s=this,n=e.animations[t],i=n.name?n.name:"animation_"+t,o=[],c=[],a=[],u=[],f=[];for(let d=0,m=n.channels.length;d<m;d++){const A=n.channels[d],v=n.samplers[A.sampler],b=A.target,x=b.node,p=n.parameters!==void 0?n.parameters[v.input]:v.input,T=n.parameters!==void 0?n.parameters[v.output]:v.output;b.node!==void 0&&(o.push(this.getDependency("node",x)),c.push(this.getDependency("accessor",p)),a.push(this.getDependency("accessor",T)),u.push(v),f.push(b))}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(a),Promise.all(u),Promise.all(f)]).then(function(d){const m=d[0],A=d[1],v=d[2],b=d[3],x=d[4],p=[];for(let T=0,_=m.length;T<_;T++){const w=m[T],L=A[T],I=v[T],N=b[T],U=x[T];if(w===void 0)continue;w.updateMatrix&&w.updateMatrix();const ie=s._createAnimationTracks(w,L,I,N,U);if(ie)for(let Ut=0;Ut<ie.length;Ut++)p.push(ie[Ut])}return new l.AnimationClip(i,void 0,p)})}createNodeMesh(t){const e=this.json,s=this,n=e.nodes[t];return n.mesh===void 0?null:s.getDependency("mesh",n.mesh).then(function(i){const o=s._getNodeRef(s.meshCache,n.mesh,i);return n.weights!==void 0&&o.traverse(function(c){if(c.isMesh)for(let a=0,u=n.weights.length;a<u;a++)c.morphTargetInfluences[a]=n.weights[a]}),o})}loadNode(t){const e=this.json,s=this,n=e.nodes[t],i=s._loadNodeShallow(t),o=[],c=n.children||[];for(let u=0,f=c.length;u<f;u++)o.push(s.getDependency("node",c[u]));const a=n.skin===void 0?Promise.resolve(null):s.getDependency("skin",n.skin);return Promise.all([i,Promise.all(o),a]).then(function(u){const f=u[0],d=u[1],m=u[2];m!==null&&f.traverse(function(A){A.isSkinnedMesh&&A.bind(m,ws)});for(let A=0,v=d.length;A<v;A++)f.add(d[A]);return f})}_loadNodeShallow(t){const e=this.json,s=this.extensions,n=this;if(this.nodeCache[t]!==void 0)return this.nodeCache[t];const i=e.nodes[t],o=i.name?n.createUniqueName(i.name):"",c=[],a=n._invokeOne(function(u){return u.createNodeMesh&&u.createNodeMesh(t)});return a&&c.push(a),i.camera!==void 0&&c.push(n.getDependency("camera",i.camera).then(function(u){return n._getNodeRef(n.cameraCache,i.camera,u)})),n._invokeAll(function(u){return u.createNodeAttachment&&u.createNodeAttachment(t)}).forEach(function(u){c.push(u)}),this.nodeCache[t]=Promise.all(c).then(function(u){let f;if(i.isBone===!0?f=new l.Bone:u.length>1?f=new l.Group:u.length===1?f=u[0]:f=new l.Object3D,f!==u[0])for(let d=0,m=u.length;d<m;d++)f.add(u[d]);if(i.name&&(f.userData.name=i.name,f.name=o),$(f,i),i.extensions&&we(s,f,i),i.matrix!==void 0){const d=new l.Matrix4;d.fromArray(i.matrix),f.applyMatrix4(d)}else i.translation!==void 0&&f.position.fromArray(i.translation),i.rotation!==void 0&&f.quaternion.fromArray(i.rotation),i.scale!==void 0&&f.scale.fromArray(i.scale);return n.associations.has(f)||n.associations.set(f,{}),n.associations.get(f).nodes=t,f}),this.nodeCache[t]}loadScene(t){const e=this.extensions,s=this.json.scenes[t],n=this,i=new l.Group;s.name&&(i.name=n.createUniqueName(s.name)),$(i,s),s.extensions&&we(e,i,s);const o=s.nodes||[],c=[];for(let a=0,u=o.length;a<u;a++)c.push(n.getDependency("node",o[a]));return Promise.all(c).then(function(a){for(let f=0,d=a.length;f<d;f++)i.add(a[f]);const u=f=>{const d=new Map;for(const[m,A]of n.associations)(m instanceof l.Material||m instanceof l.Texture)&&d.set(m,A);return f.traverse(m=>{const A=n.associations.get(m);A!=null&&d.set(m,A)}),d};return n.associations=u(i),i})}_createAnimationTracks(t,e,s,n,i){const o=[],c=t.name?t.name:t.uuid,a=[];re[i.path]===re.weights?t.traverse(function(m){m.morphTargetInfluences&&a.push(m.name?m.name:m.uuid)}):a.push(c);let u;switch(re[i.path]){case re.weights:u=l.NumberKeyframeTrack;break;case re.rotation:u=l.QuaternionKeyframeTrack;break;case re.position:case re.scale:u=l.VectorKeyframeTrack;break;default:switch(s.itemSize){case 1:u=l.NumberKeyframeTrack;break;case 2:case 3:default:u=l.VectorKeyframeTrack;break}break}const f=n.interpolation!==void 0?gs[n.interpolation]:l.InterpolateLinear,d=this._getArrayFromAccessor(s);for(let m=0,A=a.length;m<A;m++){const v=new u(a[m]+"."+re[i.path],e.array,d,f);n.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(v),o.push(v)}return o}_getArrayFromAccessor(t){let e=t.array;if(t.normalized){const s=tn(e.constructor),n=new Float32Array(e.length);for(let i=0,o=e.length;i<o;i++)n[i]=e[i]*s;e=n}return e}_createCubicSplineTrackInterpolant(t){t.createInterpolant=function(s){const n=this instanceof l.QuaternionKeyframeTrack?ms:wn;return new n(this.times,this.values,this.getValueSize()/3,s)},t.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function bs(h,t,e){const s=t.attributes,n=new l.Box3;if(s.POSITION!==void 0){const c=e.json.accessors[s.POSITION],a=c.min,u=c.max;if(a!==void 0&&u!==void 0){if(n.set(new l.Vector3(a[0],a[1],a[2]),new l.Vector3(u[0],u[1],u[2])),c.normalized){const f=tn(Pe[c.componentType]);n.min.multiplyScalar(f),n.max.multiplyScalar(f)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const i=t.targets;if(i!==void 0){const c=new l.Vector3,a=new l.Vector3;for(let u=0,f=i.length;u<f;u++){const d=i[u];if(d.POSITION!==void 0){const m=e.json.accessors[d.POSITION],A=m.min,v=m.max;if(A!==void 0&&v!==void 0){if(a.setX(Math.max(Math.abs(A[0]),Math.abs(v[0]))),a.setY(Math.max(Math.abs(A[1]),Math.abs(v[1]))),a.setZ(Math.max(Math.abs(A[2]),Math.abs(v[2]))),m.normalized){const b=tn(Pe[m.componentType]);a.multiplyScalar(b)}c.max(a)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}n.expandByVector(c)}h.boundingBox=n;const o=new l.Sphere;n.getCenter(o.center),o.radius=n.min.distanceTo(n.max)/2,h.boundingSphere=o}function mn(h,t,e){const s=t.attributes,n=[];function i(o,c){return e.getDependency("accessor",o).then(function(a){h.setAttribute(c,a)})}for(const o in s){const c=en[o]||o.toLowerCase();c in h.attributes||n.push(i(s[o],c))}if(t.indices!==void 0&&!h.index){const o=e.getDependency("accessor",t.indices).then(function(c){h.setIndex(c)});n.push(o)}return l.ColorManagement.workingColorSpace!==l.LinearSRGBColorSpace&&"COLOR_0"in s&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${l.ColorManagement.workingColorSpace}" not supported.`),$(h,t),bs(h,t,e),Promise.all(n).then(function(){return t.targets!==void 0?ys(h,t.targets,e):h})}var Ee;class Es{constructor(){g(this,Ee,new Kn)}get gltfLoader(){return r(this,Ee)}setLoaders(t){return Kt(this,null,function*(){if(t!=null&&t.draco){const{DRACOLoader:e}=yield Promise.resolve().then(()=>require("../DRACOLoader-C2CFpMGS.cjs")),s=new e,n=typeof t.draco=="boolean"?`${R.CDNVersion}/examples/jsm/libs/draco/gltf/`:t.draco;s.setDecoderPath(n),r(this,Ee).setDRACOLoader(s)}if(t!=null&&t.ktx2){const{KTX2Loader:e}=yield Promise.resolve().then(()=>require("../KTX2Loader-DdUl1XiY.cjs")),s=new e,n=typeof t.ktx2=="boolean"?`${R.CDNVersion}/examples/jsm/libs/basis/`:t.ktx2;s.setTranscoderPath(n),r(this,Ee).setKTX2Loader(s.detectSupport(R.webglRenderer))}if(t!=null&&t.meshopt){const{MeshoptDecoder:e}=yield Promise.resolve().then(()=>require("../MeshoptDecoder-CMeN3oU0.cjs"));r(this,Ee).setMeshoptDecoder(e())}})}load(...t){const[e,s,...n]=t;if(R.cacheAssets&&V.has(e)){const i=V.get(e).data;s(i)}else this.gltfLoader.load(e,i=>{R.cacheAssets&&V.set(e,{data:i,dispose:()=>{i.cameras.forEach(o=>Ne(o)),i.scenes.forEach(o=>{Ne(o)})}}),s(i)},...n)}}Ee=new WeakMap;const Sn=new Es;var J,D,ee,At;class Rs{constructor(t,e){g(this,J,void 0);g(this,D,void 0);g(this,ee,[]);g(this,At,()=>{const t=r(this,D).left-r(this,J).box.left,e=r(this,D).top-r(this,J).box.top;let s=0,n=0;r(this,J).isClipped||(s=r(this,D).position.x-r(this,D).left,n=r(this,D).position.y-r(this,D).top);const i=r(this,J).box.width-r(this,D).scale.x,o=t-i,c=r(this,J).box.height-r(this,D).scale.y,a=e-c;r(this,ee)[0].constant=r(this,D).scale.y/2+n*-1-c/2-a,r(this,ee)[1].constant=r(this,D).scale.y/2+n+c/2+a,r(this,ee)[2].constant=r(this,D).scale.x/2+s+i/2+o,r(this,ee)[3].constant=r(this,D).scale.x/2+s*-1-i/2-o});y(this,J,R.getView((e==null?void 0:e.viewName)||"default")),y(this,D,new Zt.LayoutBox(t,{cartesian:!1}));const s=(e==null?void 0:e.scale)||1;y(this,ee,[new l.Plane(new l.Vector3(0,-1*s,0)),new l.Plane(new l.Vector3(0,1*s,0)),new l.Plane(new l.Vector3(-1*s,0,0)),new l.Plane(new l.Vector3(1*s,0,0))]),ve.ticker.subscribe(r(this,At),{order:ft.TICK_ORDER.LAYOUT_BOX})}get planes(){return r(this,ee)}get layoutBox(){return r(this,D)}destroy(){ve.ticker.unsubscribe(r(this,At)),r(this,D).destroy()}}J=new WeakMap,D=new WeakMap,ee=new WeakMap,At=new WeakMap;class Ms extends l.Group{constructor(t,e=500){super(),this.add(new l.PlaneHelper(t.planes[0],e,16711680)),this.add(new l.PlaneHelper(t.planes[1],e,16711680)),this.add(new l.PlaneHelper(t.planes[2],e,16711680)),this.add(new l.PlaneHelper(t.planes[3],e,16711680))}}var Ve,Re,Ue,vt,Tt,ue,ze,wt;class on extends Nn.SourceManager{constructor(e){super(e);g(this,Ve,new F.Store(null));g(this,Re,new F.Store(void 0));g(this,Ue,void 0);g(this,vt,void 0);g(this,Tt,void 0);g(this,ue,void 0);g(this,ze,!1);g(this,wt,()=>{if(!(r(this,ue)&&!r(this,ze))&&(this.current!==this.previous&&(r(this,Ve).current=null),this.current)){const e=r(this,Tt)?this.current.url:this.current.name+this.current.extension;r(this,ue)||jt.loading.setTotal(e,1),r(this,Re).current="start",r(this,vt).load(e,s=>{var n;r(this,Ve).current=((n=this.processData)==null?void 0:n.call(this,s))||s,r(this,Re).current="complete",r(this,ue)||jt.loading.setLoaded(e,1)},void 0,()=>{r(this,ue)||(r(this,Re).current="error",jt.loading.setError(e,e))})}});y(this,Ue,e.consumer),y(this,vt,e.loader),y(this,Tt,e.keepSourceParameters||!1),y(this,ue,e.lazy||!1),this.subscribe(r(this,wt)),r(this,Ue).addEventListener("added",()=>{this.connect()}),r(this,Ue).addEventListener("removed",()=>{this.disconnect()})}get data(){return r(this,Ve)}get loading(){return r(this,Re)}lazyLoad(){r(this,ze)||(y(this,ze,!0),r(this,wt).call(this))}}Ve=new WeakMap,Re=new WeakMap,Ue=new WeakMap,vt=new WeakMap,Tt=new WeakMap,ue=new WeakMap,ze=new WeakMap,wt=new WeakMap;var Me;class _s extends l.Group{constructor(e){super();g(this,Me,void 0);y(this,Me,new on(W({loader:Sn,consumer:this},e))),r(this,Me).processData=s=>{if(R.cacheAssets){const n=W({},s);return n.scene=s.scene.clone(!0),n.scenes=s.scenes.map(i=>s.scene===i?n.scene:i.clone(!0)),n}return s},r(this,Me).data.subscribe(s=>{s.current?this.add(...s.current.scene.children):this.children.forEach(n=>{this.remove(n),Ne(n)})})}get sourceManager(){return r(this,Me)}}Me=new WeakMap;const ct=`attribute vec3 position;
|
|
11
9
|
uniform vec2 px;
|
|
12
10
|
uniform vec2 boundarySpace;
|
|
13
11
|
varying vec2 uv;
|
|
@@ -20,7 +18,7 @@ void main(){
|
|
|
20
18
|
pos.xy = pos.xy * scale;
|
|
21
19
|
uv = vec2(0.5)+(pos.xy)*0.5;
|
|
22
20
|
gl_Position = vec4(pos, 1.0);
|
|
23
|
-
}`,
|
|
21
|
+
}`,Ls=`precision highp float;
|
|
24
22
|
uniform vec3 backgroundColor;
|
|
25
23
|
uniform float backgroundOpacity;
|
|
26
24
|
uniform vec3 fluidColor;
|
|
@@ -41,7 +39,7 @@ void main(){
|
|
|
41
39
|
vec4 finalColor = mix(backgroundColorA, fluidColorA, len);
|
|
42
40
|
|
|
43
41
|
gl_FragColor = finalColor;
|
|
44
|
-
}`,
|
|
42
|
+
}`,Cs=`attribute vec3 position;
|
|
45
43
|
varying vec2 uv;
|
|
46
44
|
uniform vec2 px;
|
|
47
45
|
|
|
@@ -54,7 +52,7 @@ void main(){
|
|
|
54
52
|
pos.xy = abs(pos.xy) - px * 1.0;
|
|
55
53
|
pos.xy *= n;
|
|
56
54
|
gl_Position = vec4(pos, 1.0);
|
|
57
|
-
}`,
|
|
55
|
+
}`,gn=`precision highp float;
|
|
58
56
|
uniform sampler2D velocity;
|
|
59
57
|
uniform float dt;
|
|
60
58
|
uniform bool isBFECC;
|
|
@@ -92,7 +90,7 @@ void main(){
|
|
|
92
90
|
vec2 newVel2 = texture2D(velocity, spot_old2).xy;
|
|
93
91
|
gl_FragColor = vec4(newVel2, 0.0, 0.0);
|
|
94
92
|
}
|
|
95
|
-
}`;var
|
|
93
|
+
}`;var he,_e,St,bt,Et,Rt,Le;class lt{constructor(t){g(this,he,null);g(this,_e,null);g(this,St,null);g(this,bt,null);g(this,Et,null);g(this,Rt,void 0);g(this,Le,{});var e;if(y(this,Rt,t.material),(e=t.material)!=null&&e.uniforms)for(const s in t.material.uniforms)r(this,Le)[s]={value:t.material.uniforms[s]};this.output=t.output}get scene(){return r(this,he)}get camera(){return r(this,_e)}get uniforms(){return r(this,Le)}update(...t){R.webglRenderer.setRenderTarget(this.output),R.webglRenderer.render(r(this,he),r(this,_e)),R.webglRenderer.setRenderTarget(null)}dispose(){Ne(r(this,_e)),Ne(r(this,he))}init(...t){y(this,he,new l.Scene),y(this,_e,new l.Camera),Object.keys(r(this,Le)).length&&(y(this,St,new l.PlaneGeometry(2,2)),y(this,bt,new l.RawShaderMaterial(ut(W({},r(this,Rt)),{uniforms:r(this,Le)}))),y(this,Et,new l.Mesh(r(this,St),r(this,bt))),r(this,he).add(r(this,Et)))}}he=new WeakMap,_e=new WeakMap,St=new WeakMap,bt=new WeakMap,Et=new WeakMap,Rt=new WeakMap,Le=new WeakMap;var Ke,Bt,bn;class Ds extends lt{constructor(e){super({material:{vertexShader:ct,fragmentShader:gn,uniforms:{boundarySpace:e.cellScale,px:e.cellScale,fboSize:e.fboSize,velocity:e.src.texture,dt:e.dt,isBFECC:e.BFECC}},output:e.dst});g(this,Bt);g(this,Ke,null);this.init()}update(e){this.uniforms.dt.value=e.dt,r(this,Ke).visible=e.isBounce,this.uniforms.isBFECC.value=e.BFECC,super.update()}init(){super.init(),Y(this,Bt,bn).call(this)}}Ke=new WeakMap,Bt=new WeakSet,bn=function(){const e=new l.BufferGeometry,s=new Float32Array([-1,-1,0,-1,1,0,-1,1,0,1,1,0,1,1,0,1,-1,0,1,-1,0,-1,-1,0]);e.setAttribute("position",new l.BufferAttribute(s,3));const n=new l.RawShaderMaterial({vertexShader:Cs,fragmentShader:gn,uniforms:this.uniforms});y(this,Ke,new l.LineSegments(e,n)),this.scene.add(r(this,Ke))};const Os=`precision highp float;
|
|
96
94
|
|
|
97
95
|
attribute vec3 position;
|
|
98
96
|
attribute vec2 uv;
|
|
@@ -106,7 +104,7 @@ void main(){
|
|
|
106
104
|
vUv = uv;
|
|
107
105
|
gl_Position = vec4(pos, 0.0, 1.0);
|
|
108
106
|
}
|
|
109
|
-
`,
|
|
107
|
+
`,Fs=`precision highp float;
|
|
110
108
|
|
|
111
109
|
uniform vec2 force;
|
|
112
110
|
uniform vec2 center;
|
|
@@ -120,7 +118,7 @@ void main(){
|
|
|
120
118
|
d *= d;
|
|
121
119
|
gl_FragColor = vec4(force * d, 0, 1);
|
|
122
120
|
}
|
|
123
|
-
`;var
|
|
121
|
+
`;var z,K,de,je;class Is{constructor(){g(this,z,void 0);g(this,K,void 0);g(this,de,void 0);g(this,je,void 0);this.disabled=!1,y(this,z,new Xt.Vector2),y(this,K,new Xt.Vector2),y(this,de,new Xt.Vector2),y(this,je,t=>{this.disabled||this.updateCoords(t.clientX,t.clientY)})}init(){document.body.addEventListener("pointermove",r(this,je),!1)}dispose(){document.body.removeEventListener("pointermove",r(this,je),!1)}get coords(){return r(this,z)}get diff(){return r(this,de)}updateCoords(t=0,e=0){r(this,z).set(t/R.width*2-1,-(e/R.height)*2+1),Math.abs(r(this,z).x-r(this,K).x)>.2&&(r(this,K).copy(r(this,z)),r(this,de).subVectors(r(this,z),r(this,K)))}update(){r(this,de).subVectors(r(this,z),r(this,K)),r(this,K).copy(r(this,z)),r(this,K).x===0&&r(this,K).y===0&&r(this,de).set(0,0)}}z=new WeakMap,K=new WeakMap,de=new WeakMap,je=new WeakMap;const ye=new Is;var Xe;class Ns extends lt{constructor(e){super({output:e.dst});g(this,Xe,null);this.init(e)}update(e){const s=ye.diff.x/2*e.pointerForce,n=ye.diff.y/2*e.pointerForce,i=e.pointerSize*e.cellScale.x,o=e.pointerSize*e.cellScale.y,c=Math.min(Math.max(ye.coords.x,-1+i+e.cellScale.x*2),1-i-e.cellScale.x*2),a=Math.min(Math.max(ye.coords.y,-1+o+e.cellScale.y*2),1-o-e.cellScale.y*2),u=r(this,Xe).material.uniforms;u.force.value.set(s,n),u.center.value.set(c,a),u.scale.value.set(e.pointerSize,e.pointerSize),super.update()}init(e){super.init();const s=new l.PlaneGeometry(1,1),n=new l.RawShaderMaterial({vertexShader:Os,fragmentShader:Fs,blending:l.AdditiveBlending,uniforms:{px:{value:e.cellScale},force:{value:new l.Vector2(0,0)},center:{value:new l.Vector2(0,0)},scale:{value:new l.Vector2(e.pointerSize,e.pointerSize)}}});y(this,Xe,new l.Mesh(s,n)),this.scene.add(r(this,Xe))}}Xe=new WeakMap;const Ps=`precision highp float;
|
|
124
122
|
uniform sampler2D velocity;
|
|
125
123
|
uniform sampler2D velocity_new;
|
|
126
124
|
uniform float v;
|
|
@@ -142,7 +140,7 @@ void main(){
|
|
|
142
140
|
|
|
143
141
|
gl_FragColor = vec4(new, 0.0, 0.0);
|
|
144
142
|
}
|
|
145
|
-
`;var
|
|
143
|
+
`;var qe,We;class ks extends lt{constructor(e){super({material:{vertexShader:ct,fragmentShader:Ps,uniforms:{boundarySpace:e.boundarySpace,velocity:e.src.texture,velocity_new:e.dst_.texture,v:e.viscous,px:e.cellScale,dt:e.dt}},output:e.dst});g(this,qe,void 0);g(this,We,void 0);y(this,qe,e.dst_),y(this,We,e.dst),this.init()}update(e){let s=null,n=null;this.uniforms.v.value=e.viscous;for(var i=0;i<e.iterations;i++)i%2==0?(s=r(this,qe),n=r(this,We)):(s=r(this,We),n=r(this,qe)),this.uniforms.velocity_new.value=s.texture,this.output=n,this.uniforms.dt.value=e.dt,super.update();return n}}qe=new WeakMap,We=new WeakMap;const Bs=`precision highp float;
|
|
146
144
|
uniform sampler2D velocity;
|
|
147
145
|
uniform float dt;
|
|
148
146
|
uniform vec2 px;
|
|
@@ -157,7 +155,7 @@ void main(){
|
|
|
157
155
|
|
|
158
156
|
gl_FragColor = vec4(divergence / dt);
|
|
159
157
|
}
|
|
160
|
-
`;class
|
|
158
|
+
`;class Gs extends lt{constructor(t){super({material:{vertexShader:ct,fragmentShader:Bs,uniforms:{boundarySpace:t.boundarySpace,velocity:t.src.texture,px:t.cellScale,dt:t.dt}},output:t.dst}),this.init()}update(t){this.uniforms.velocity.value=t.vel.texture,super.update()}}const Hs=`precision highp float;
|
|
161
159
|
uniform sampler2D pressure;
|
|
162
160
|
uniform sampler2D divergence;
|
|
163
161
|
uniform vec2 px;
|
|
@@ -174,7 +172,7 @@ void main(){
|
|
|
174
172
|
float newP = (p0 + p1 + p2 + p3) / 4.0 - div;
|
|
175
173
|
gl_FragColor = vec4(newP);
|
|
176
174
|
}
|
|
177
|
-
`;var
|
|
175
|
+
`;var Ye,Qe;class Vs extends lt{constructor(e){super({material:{vertexShader:ct,fragmentShader:Hs,uniforms:{boundarySpace:e.boundarySpace,pressure:e.dst_.texture,divergence:e.src.texture,px:e.cellScale}},output:e.dst});g(this,Ye,void 0);g(this,Qe,void 0);y(this,Ye,e.dst_),y(this,Qe,e.dst),this.init()}update(e){let s=null,n=null;for(var i=0;i<e.iterations;i++)i%2==0?(s=r(this,Ye),n=r(this,Qe)):(s=r(this,Qe),n=r(this,Ye)),this.uniforms.pressure.value=s.texture,this.output=n,super.update();return n}}Ye=new WeakMap,Qe=new WeakMap;const Us=`precision highp float;
|
|
178
176
|
uniform sampler2D pressure;
|
|
179
177
|
uniform sampler2D velocity;
|
|
180
178
|
uniform vec2 px;
|
|
@@ -194,7 +192,7 @@ void main(){
|
|
|
194
192
|
v = v - gradP * dt;
|
|
195
193
|
gl_FragColor = vec4(v, 0.0, 1.0);
|
|
196
194
|
}
|
|
197
|
-
`;class Zn extends fe{constructor(A){super({material:{vertexShader:de,fragmentShader:jn,uniforms:{boundarySpace:A.boundarySpace,pressure:A.srcP.texture,velocity:A.srcV.texture,px:A.cellScale,dt:A.dt}},output:A.dst}),this.init()}update(A){this.uniforms.velocity.value=A.vel.texture,this.uniforms.pressure.value=A.pressure.texture,super.update()}}var m,S,BA,P,aA,Be,Pe,ae,Ce,Ie,ge,Ye,St,ot,us,rt,ds;class zn{constructor(){d(this,Ye);d(this,ot);d(this,rt);d(this,m,{isViscous:new J.Store(!1,{passport:{name:"Fluid.Вязкость.Активна",manager:{type:"boolean"}}}),viscous:new J.Store(30,{passport:{name:"Fluid.Вязкость.Величина",manager:{type:"range",min:0,max:500}}}),iterationsViscous:new J.Store(16,{passport:{name:"Fluid.Вязкость.Количество итераций",manager:{type:"range",min:1,max:32,step:1}}}),pointerForce:new J.Store(20,{passport:{name:"Fluid.Курсор.Сила",manager:{type:"range",min:1,max:200,step:1}}}),pointerSize:new J.Store(100,{passport:{name:"Fluid.Курсор.Размер",manager:{type:"range",min:10,max:200,step:1}}}),dt:new J.Store(.014,{passport:{name:"Fluid.Скорость",manager:{type:"range",min:.001,max:.1,step:.001}}}),iterationsPoisson:new J.Store(16,{passport:{name:"Fluid.Poisson",manager:{type:"range",min:1,max:32,step:1}}}),resolution:new J.Store(.5,{passport:{name:"Fluid.Разрешение",manager:{type:"range",min:.1,max:1}}}),isBounce:new J.Store(!1,{passport:{name:"Fluid.Bounce",manager:{type:"boolean"}}}),BFECC:new J.Store(!0,{passport:{name:"Fluid.BFECC",manager:{type:"boolean"}}})});d(this,S,{vel0:null,vel1:null,velViscous0:null,velViscous1:null,div:null,pressure0:null,pressure1:null});d(this,BA,new B.Vector2);d(this,P,new B.Vector2);d(this,aA,new B.Vector2);d(this,Be,null);d(this,Pe,null);d(this,ae,null);d(this,Ce,null);d(this,Ie,null);d(this,ge,null);this.init()}get parameters(){return o(this,m)}get fbos(){return o(this,S)}resize(){tA(this,Ye,St).call(this);for(let A in this.fbos)o(this,S)[A].setSize(o(this,BA).x,o(this,BA).y)}update(){o(this,m).isBounce.current?o(this,aA).set(0,0):o(this,aA).copy(o(this,P)),o(this,Be).update({BFECC:o(this,m).BFECC.current,dt:o(this,m).dt.current,isBounce:o(this,m).isBounce.current}),o(this,Pe).update({pointerSize:o(this,m).pointerSize.current,pointerForce:o(this,m).pointerForce.current,cellScale:o(this,P)});let A=o(this,S).vel1;o(this,m).isViscous.current&&(A=o(this,ae).update({viscous:o(this,m).viscous.current,iterations:o(this,m).iterationsViscous.current,dt:o(this,m).dt.current})),o(this,Ce).update({vel:A});const e=o(this,Ie).update({iterations:o(this,m).iterationsPoisson.current});o(this,ge).update({vel:A,pressure:e})}dispose(){o(this,Be).dispose(),o(this,ae).dispose(),o(this,Ce).dispose(),o(this,Ie).dispose(),o(this,ge).dispose();for(const A in o(this,S))o(this,S)[A].dispose();for(const A in o(this,m))o(this,m)[A].close()}init(){tA(this,Ye,St).call(this),tA(this,ot,us).call(this),tA(this,rt,ds).call(this),setTimeout(()=>{o(this,m).isViscous.subscribe(()=>{}),o(this,m).viscous.subscribe(()=>{}),o(this,m).iterationsViscous.subscribe(()=>{}),o(this,m).pointerSize.subscribe(()=>{}),o(this,m).pointerForce.subscribe(()=>{}),o(this,m).dt.subscribe(()=>{}),o(this,m).resolution.subscribe(()=>{this.resize()}),o(this,m).iterationsPoisson.subscribe(()=>{}),o(this,m).isBounce.subscribe(()=>{}),o(this,m).BFECC.subscribe(()=>{})})}}m=new WeakMap,S=new WeakMap,BA=new WeakMap,P=new WeakMap,aA=new WeakMap,Be=new WeakMap,Pe=new WeakMap,ae=new WeakMap,Ce=new WeakMap,Ie=new WeakMap,ge=new WeakMap,Ye=new WeakSet,St=function(){const A=Math.round(o(this,m).resolution.current*w.width),e=Math.round(o(this,m).resolution.current*w.height),s=1/A,t=1/e;o(this,P).set(s,t),o(this,BA).set(A,e)},ot=new WeakSet,us=function(){const A=Ts.device.isApple?B.HalfFloatType:B.FloatType;for(let e in o(this,S))o(this,S)[e]=new B.WebGLRenderTarget(o(this,BA).x,o(this,BA).y,{type:A})},rt=new WeakSet,ds=function(){D(this,Be,new kn({cellScale:o(this,P),fboSize:o(this,BA),dt:o(this,m).dt.current,src:o(this,S).vel0,dst:o(this,S).vel1,BFECC:o(this,m).BFECC.current})),D(this,Pe,new vn({cellScale:o(this,P),pointerSize:o(this,m).pointerSize.current,dst:o(this,S).vel1})),D(this,ae,new Yn({cellScale:o(this,P),boundarySpace:o(this,aA),viscous:o(this,m).viscous.current,src:o(this,S).vel1,dst:o(this,S).velViscous1,dst_:o(this,S).velViscous0,dt:o(this,m).dt.current})),D(this,Ce,new Xn({cellScale:o(this,P),boundarySpace:o(this,aA),src:o(this,S).velViscous0,dst:o(this,S).div,dt:o(this,m).dt.current})),D(this,Ie,new Wn({cellScale:o(this,P),boundarySpace:o(this,aA),src:o(this,S).div,dst:o(this,S).pressure1,dst_:o(this,S).pressure0})),D(this,ge,new Zn({cellScale:o(this,P),boundarySpace:o(this,aA),srcP:o(this,S).pressure0,srcV:o(this,S).velViscous0,dst:o(this,S).vel0,dt:o(this,m).dt.current}))};var DA,NA,kA,pA,KA,FA,OA,ce,Ee,Qe,le,he;class fs extends B.Mesh{constructor(){super();d(this,DA,void 0);d(this,NA,void 0);d(this,kA,void 0);d(this,pA,void 0);d(this,KA,void 0);d(this,FA,void 0);d(this,OA,void 0);d(this,ce,void 0);d(this,Ee,void 0);d(this,Qe,void 0);d(this,le,void 0);d(this,he,void 0);this.colorTweenDuration=1e3,D(this,NA,new J.Store("#000000",{passport:{name:"Fluid.Цвета.Фон.Цвет",manager:{type:"color"}}})),D(this,kA,new J.Store(1,{passport:{name:"Fluid.Цвета.Фон.Порог",manager:{type:"range"}}})),D(this,pA,new J.Store(1,{passport:{name:"Fluid.Цвета.Фон.Прозрачность",manager:{type:"range"}}})),D(this,KA,new J.Store("#ffffff",{passport:{name:"Fluid.Цвета.Жидкость.Цвет",manager:{type:"color"}}})),D(this,FA,new J.Store(1,{passport:{name:"Fluid.Цвета.Жидкость.Прозрачность",manager:{type:"range"}}})),D(this,OA,new Ls.Tweened(0,{easing:Ms.easeInOutCubic,min:0,max:1,duration:this.colorTweenDuration})),D(this,ce,new B.Color),D(this,Ee,new B.Color),D(this,Qe,new B.Color),D(this,le,new B.Color),D(this,he,Ss.debounce(()=>{o(this,OA).reset(),o(this,OA).set(1)},0)),D(this,DA,new zn),RA.init(),this.geometry=new B.PlaneGeometry(2,2),this.material=new B.RawShaderMaterial({vertexShader:de,fragmentShader:bn,transparent:!0,uniforms:{velocity:{value:o(this,DA).fbos.vel0.texture},backgroundColor:{value:o(this,Ee)},backgroundOpacity:{value:o(this,pA).current},fluidColor:{value:o(this,ce)},fluidOpacity:{value:o(this,FA).current},backgroundMixThreshold:{value:0},opacity:{value:1},boundarySpace:{value:new B.Vector2(0,0)}}}),o(this,NA).subscribe(e=>{D(this,le,new B.Color(e.current)),o(this,he).call(this)}),o(this,KA).subscribe(e=>{D(this,Qe,new B.Color(e.current)),o(this,he).call(this)}),o(this,pA).subscribe(e=>{this.material.uniforms.backgroundOpacity.value=e.current}),o(this,FA).subscribe(e=>{this.material.uniforms.fluidOpacity.value=e.current}),o(this,kA).subscribe(e=>{this.material.uniforms.backgroundMixThreshold.value=e.current}),o(this,OA).subscribe(e=>{o(this,Ee).lerp(o(this,le),e.current),o(this,ce).lerp(o(this,Qe),e.current)})}get backgroundColor(){return o(this,NA)}get backgroundMixThreshold(){return o(this,kA)}get backgroundOpacity(){return o(this,pA)}get fluidColor(){return o(this,KA)}get fluidOpacity(){return o(this,FA)}resize(){o(this,DA).resize()}update(){RA.update(),o(this,DA).update()}dispose(){RA.dispose(),o(this,DA).dispose(),o(this,NA).close(),o(this,pA).close(),o(this,KA).close(),o(this,FA).close(),o(this,kA).close()}}DA=new WeakMap,NA=new WeakMap,kA=new WeakMap,pA=new WeakMap,KA=new WeakMap,FA=new WeakMap,OA=new WeakMap,ce=new WeakMap,Ee=new WeakMap,Qe=new WeakMap,le=new WeakMap,he=new WeakMap;var $n=Object.defineProperty,Ai=Object.getOwnPropertyDescriptor,ei=(C,A,e,s)=>{for(var t=s>1?void 0:s?Ai(A,e):A,n=C.length-1,i;n>=0;n--)(i=C[n])&&(t=(s?i(A,e,t):i(t))||t);return s&&t&&$n(A,e,t),t},Ds=(C,A,e)=>{if(!A.has(C))throw TypeError("Cannot "+e)},W=(C,A,e)=>(Ds(C,A,"read from private field"),e?e.call(C):A.get(C)),Ft=(C,A,e)=>{if(A.has(C))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(C):A.set(C,e)},ti=(C,A,e,s)=>(Ds(C,A,"write to private field"),s?s.call(C,e):A.set(C,e),e),nA,tt,st;exports.En3FluidElement=class extends zt.CustomElement{constructor(){super(...arguments),Ft(this,nA,null),Ft(this,tt,()=>{W(this,nA).resize()}),Ft(this,st,()=>{w.width&&W(this,nA).update()})}get fluid(){return W(this,nA)}connectedCallback(){ti(this,nA,new fs),w.view.add(W(this,nA)),wA.windowResizer.subscribe(W(this,tt)),yA.ticker.subscribe(W(this,st))}disconnectedCallback(){w.view.remove(W(this,nA)),W(this,nA).dispose(),wA.windowResizer.unsubscribe(W(this,tt)),yA.ticker.unsubscribe(W(this,st))}};nA=new WeakMap;tt=new WeakMap;st=new WeakMap;exports.En3FluidElement=ei([zt.define("en3-fluid")],exports.En3FluidElement);function Ht(C,A,e){const s=A.x,t=A.y,n=e||C.image.width/C.image.height;let i=0,a=0,r=C.offset.x,I=C.offset.y,c=C.rotation,g=C.center.x,Q=C.center.y;s/t>n?(i=1,a=t/s*n):(a=1,i=s/t/n),C.matrix.setUvTransform(r,I,i,a,c,g,Q)}const Re=new B.Vector3;function _(C,A,e,s,t,n){const i=2*Math.PI*t/4,a=Math.max(n-2*t,0),r=Math.PI/4;Re.copy(A),Re[s]=0,Re.normalize();const I=.5*i/(i+a),c=1-Re.angleTo(C)/r;return Math.sign(Re[e])===1?c*I:a/(i+a)+I+I*(1-c)}class si extends B.BoxGeometry{constructor(A=1,e=1,s=1,t=2,n=.1){if(t=t*2+1,n=Math.min(A/2,e/2,s/2,n),super(1,1,1,t,t,t),t===1)return;const i=this.toNonIndexed();this.index=null,this.attributes.position=i.attributes.position,this.attributes.normal=i.attributes.normal,this.attributes.uv=i.attributes.uv;const a=new B.Vector3,r=new B.Vector3,I=new B.Vector3(A,e,s).divideScalar(2).subScalar(n),c=this.attributes.position.array,g=this.attributes.normal.array,Q=this.attributes.uv.array,l=c.length/6,u=new B.Vector3,h=.5/t;for(let E=0,f=0;E<c.length;E+=3,f+=2)switch(a.fromArray(c,E),r.copy(a),r.x-=Math.sign(r.x)*h,r.y-=Math.sign(r.y)*h,r.z-=Math.sign(r.z)*h,r.normalize(),c[E+0]=I.x*Math.sign(a.x)+r.x*n,c[E+1]=I.y*Math.sign(a.y)+r.y*n,c[E+2]=I.z*Math.sign(a.z)+r.z*n,g[E+0]=r.x,g[E+1]=r.y,g[E+2]=r.z,Math.floor(E/l)){case 0:u.set(1,0,0),Q[f+0]=_(u,r,"z","y",n,s),Q[f+1]=1-_(u,r,"y","z",n,e);break;case 1:u.set(-1,0,0),Q[f+0]=1-_(u,r,"z","y",n,s),Q[f+1]=1-_(u,r,"y","z",n,e);break;case 2:u.set(0,1,0),Q[f+0]=1-_(u,r,"x","z",n,A),Q[f+1]=_(u,r,"z","x",n,s);break;case 3:u.set(0,-1,0),Q[f+0]=1-_(u,r,"x","z",n,A),Q[f+1]=1-_(u,r,"z","x",n,s);break;case 4:u.set(0,0,1),Q[f+0]=1-_(u,r,"x","y",n,A),Q[f+1]=1-_(u,r,"y","x",n,e);break;case 5:u.set(0,0,-1),Q[f+0]=_(u,r,"x","y",n,A),Q[f+1]=1-_(u,r,"y","x",n,e);break}}}var CA,ue,_A;class Jt extends B.Mesh{constructor(e){super(e.round?new si(e.width,e.height,1,e.segments,e.round):new B.PlaneGeometry(e.width,e.height,e.segments,e.segments),e.material);d(this,CA,void 0);d(this,ue,void 0);d(this,_A,()=>{o(this,CA).data.current&&o(this,ue)==="cover"&&this.onCoverResize(o(this,CA).data.current)});D(this,CA,new xt(eA({consumer:this},e))),D(this,ue,e.fit),this.addEventListener("added",()=>{wA.windowResizer.subscribe(o(this,_A))}),this.addEventListener("removed",()=>{wA.windowResizer.unsubscribe(o(this,_A))}),o(this,CA).processData=s=>w.cacheAssets?s.clone():s,o(this,CA).data.subscribe(s=>{!s.current&&s.previous?s.previous.dispose():s.current&&this.material&&(o(this,ue)&&(s.current.matrixAutoUpdate=!1),s.current.colorSpace=B.SRGBColorSpace,s.current.center.set(.5,.5),this.material.map=s.current,this.material.needsUpdate=!0,o(this,_A).call(this))})}get sourceManager(){return o(this,CA)}updateTexture(){o(this,_A).call(this)}onCoverResize(e){Ht(e,{x:this.scale.x,y:this.scale.y})}}CA=new WeakMap,ue=new WeakMap,_A=new WeakMap;class ni extends Jt{constructor(A){super(Fe(eA({},A),{loader:MA}))}}class ii{load(...A){const e=A[0],s=A[1],t=A[3],n=document.createElement("video");n.src=e,n.onloadeddata=()=>{s(new B.VideoTexture(n)),n.onerror=null,n.onloadeddata=null},n.onerror=()=>{t==null||t(e),n.onerror=null,n.onloadeddata=null}}}var qe,Xe,Ve;class oi extends Jt{constructor(e){super(Fe(eA({},e),{loader:new ii}));d(this,qe,void 0);d(this,Xe,void 0);d(this,Ve,void 0);D(this,qe,e.autoplay||!1),D(this,Xe,e.muted||!1),D(this,Ve,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const t=s.current.image;o(this,Xe)&&(t.muted=!0),o(this,Ve)&&(t.loop=!0),o(this,qe)&&t.play()}})}onCoverResize(e){const s=e.image;Ht(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}qe=new WeakMap,Xe=new WeakMap,Ve=new WeakMap;function ri(C,A){C.traverse(e=>{e instanceof B.Mesh&&A(e)})}function Bi(C,A){C.traverse(e=>{e instanceof B.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(A)})}const Gt=new B.Vector3,ai=new B.Vector3;function Ci(C,A="default"){const e=w.getView(A),{width:s,height:t}=w,n=s/t;C instanceof B.Vector3?Gt.copy(C):Gt.set(...C);const i=e.camera.getWorldPosition(ai).distanceTo(Gt);if(e.camera instanceof B.OrthographicCamera)return{width:s/e.camera.zoom,height:t/e.camera.zoom,factor:1,distance:i,aspect:n};{const a=e.camera.fov*Math.PI/180,r=2*Math.tan(a/2)*i,I=r*(s/t);return{width:I,height:r,factor:s/I,distance:i,aspect:n}}}const Wt=new B.Vector3,Ii=new B.Quaternion,jt=new B.Vector3;class gi extends B.Object3D{constructor(A=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=A,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(A,e){return super.copy(A,e),this.element=A.element.cloneNode(!0),this}}const j=new B.Matrix4,ci=new B.Matrix4;class Ei{constructor(A={}){const e=this;let s,t,n,i;const a={camera:{style:""},objects:new WeakMap},r=A.element!==void 0?A.element:document.createElement("div");r.style.overflow="hidden",this.domElement=r;const I=document.createElement("div");I.style.transformOrigin="0 0",I.style.pointerEvents="none",r.appendChild(I);const c=document.createElement("div");c.style.transformStyle="preserve-3d",I.appendChild(c),this.getSize=function(){return{width:s,height:t}},this.render=function(h,E){const f=E.projectionMatrix.elements[5]*i;E.view&&E.view.enabled?(I.style.transform=`translate( ${-E.view.offsetX*(s/E.view.width)}px, ${-E.view.offsetY*(t/E.view.height)}px )`,I.style.transform+=`scale( ${E.view.fullWidth/E.view.width}, ${E.view.fullHeight/E.view.height} )`):I.style.transform="",h.matrixWorldAutoUpdate===!0&&h.updateMatrixWorld(),E.parent===null&&E.matrixWorldAutoUpdate===!0&&E.updateMatrixWorld();let p,F;E.isOrthographicCamera&&(p=-(E.right+E.left)/2,F=(E.top+E.bottom)/2);const G=E.view&&E.view.enabled?E.view.height/E.view.fullHeight:1,y=E.isOrthographicCamera?`scale( ${G} )scale(`+f+")translate("+g(p)+"px,"+g(F)+"px)"+Q(E.matrixWorldInverse):`scale( ${G} )translateZ(`+f+"px)"+Q(E.matrixWorldInverse),L=(E.isPerspectiveCamera?"perspective("+f+"px) ":"")+y+"translate("+n+"px,"+i+"px)";a.camera.style!==L&&(c.style.transform=L,a.camera.style=L),u(h,h,E)},this.setSize=function(h,E){s=h,t=E,n=s/2,i=t/2,r.style.width=h+"px",r.style.height=E+"px",I.style.width=h+"px",I.style.height=E+"px",c.style.width=h+"px",c.style.height=E+"px"};function g(h){return Math.abs(h)<1e-10?0:h}function Q(h){const E=h.elements;return"matrix3d("+g(E[0])+","+g(-E[1])+","+g(E[2])+","+g(E[3])+","+g(E[4])+","+g(-E[5])+","+g(E[6])+","+g(E[7])+","+g(E[8])+","+g(-E[9])+","+g(E[10])+","+g(E[11])+","+g(E[12])+","+g(-E[13])+","+g(E[14])+","+g(E[15])+")"}function l(h){const E=h.elements;return"translate(-50%,-50%)"+("matrix3d("+g(E[0])+","+g(E[1])+","+g(E[2])+","+g(E[3])+","+g(-E[4])+","+g(-E[5])+","+g(-E[6])+","+g(-E[7])+","+g(E[8])+","+g(E[9])+","+g(E[10])+","+g(E[11])+","+g(E[12])+","+g(E[13])+","+g(E[14])+","+g(E[15])+")")}function u(h,E,f,p){if(h.isCSS3DObject){const F=h.visible===!0&&h.layers.test(f.layers)===!0;if(h.element.style.display=F===!0?"":"none",F===!0){h.onBeforeRender(e,E,f);let G;h.isCSS3DSprite?(j.copy(f.matrixWorldInverse),j.transpose(),h.rotation2D!==0&&j.multiply(ci.makeRotationZ(h.rotation2D)),h.matrixWorld.decompose(Wt,Ii,jt),j.setPosition(Wt),j.scale(jt),j.elements[3]=0,j.elements[7]=0,j.elements[11]=0,j.elements[15]=1,G=l(j)):G=l(h.matrixWorld);const y=h.element,M=a.objects.get(h);if(M===void 0||M.style!==G){y.style.transform=G;const L={style:G};a.objects.set(h,L)}y.parentNode!==c&&c.appendChild(y),h.onAfterRender(e,E,f)}}for(let F=0,G=h.children.length;F<G;F++)u(h.children[F],E,f)}}}var Z,Bt,ps,We,je;const O=class O extends gi{static destroy(){wA.windowResizer.unsubscribe(o(this,je)),yA.ticker.unsubscribe(o(this,We)),D(this,Z,null)}constructor(A){var e;super(A.element),o(O,Z)||tA(e=O,Bt,ps).call(e)}};Z=new WeakMap,Bt=new WeakSet,ps=function(){D(O,Z,new Ei),o(O,Z).domElement.style.cssText=`
|
|
195
|
+
`;class zs extends lt{constructor(t){super({material:{vertexShader:ct,fragmentShader:Us,uniforms:{boundarySpace:t.boundarySpace,pressure:t.srcP.texture,velocity:t.srcV.texture,px:t.cellScale,dt:t.dt}},output:t.dst}),this.init()}update(t){this.uniforms.velocity.value=t.vel.texture,this.uniforms.pressure.value=t.pressure.texture,super.update()}}var E,M,te,H,ne,$e,Mt,Ze,Je,et,tt,_t,nn,Gt,En,Ht,Rn;class Ks{constructor(){g(this,_t);g(this,Gt);g(this,Ht);g(this,E,{isViscous:new F.Store(!1,{passport:{name:"Fluid.Вязкость.Активна",manager:{type:"boolean"}}}),viscous:new F.Store(30,{passport:{name:"Fluid.Вязкость.Величина",manager:{type:"range",min:0,max:500}}}),iterationsViscous:new F.Store(16,{passport:{name:"Fluid.Вязкость.Количество итераций",manager:{type:"range",min:1,max:32,step:1}}}),pointerForce:new F.Store(20,{passport:{name:"Fluid.Курсор.Сила",manager:{type:"range",min:1,max:200,step:1}}}),pointerSize:new F.Store(100,{passport:{name:"Fluid.Курсор.Размер",manager:{type:"range",min:10,max:200,step:1}}}),dt:new F.Store(.014,{passport:{name:"Fluid.Скорость",manager:{type:"range",min:.001,max:.1,step:.001}}}),iterationsPoisson:new F.Store(16,{passport:{name:"Fluid.Poisson",manager:{type:"range",min:1,max:32,step:1}}}),resolution:new F.Store(.5,{passport:{name:"Fluid.Разрешение",manager:{type:"range",min:.1,max:1}}}),isBounce:new F.Store(!1,{passport:{name:"Fluid.Bounce",manager:{type:"boolean"}}}),BFECC:new F.Store(!0,{passport:{name:"Fluid.BFECC",manager:{type:"boolean"}}})});g(this,M,{vel0:null,vel1:null,velViscous0:null,velViscous1:null,div:null,pressure0:null,pressure1:null});g(this,te,new l.Vector2);g(this,H,new l.Vector2);g(this,ne,new l.Vector2);g(this,$e,null);g(this,Mt,null);g(this,Ze,null);g(this,Je,null);g(this,et,null);g(this,tt,null);this.init()}get parameters(){return r(this,E)}get fbos(){return r(this,M)}resize(){Y(this,_t,nn).call(this);for(let t in this.fbos)r(this,M)[t].setSize(r(this,te).x,r(this,te).y)}update(){r(this,E).isBounce.current?r(this,ne).set(0,0):r(this,ne).copy(r(this,H)),r(this,$e).update({BFECC:r(this,E).BFECC.current,dt:r(this,E).dt.current,isBounce:r(this,E).isBounce.current}),r(this,Mt).update({pointerSize:r(this,E).pointerSize.current,pointerForce:r(this,E).pointerForce.current,cellScale:r(this,H)});let t=r(this,M).vel1;r(this,E).isViscous.current&&(t=r(this,Ze).update({viscous:r(this,E).viscous.current,iterations:r(this,E).iterationsViscous.current,dt:r(this,E).dt.current})),r(this,Je).update({vel:t});const e=r(this,et).update({iterations:r(this,E).iterationsPoisson.current});r(this,tt).update({vel:t,pressure:e})}dispose(){r(this,$e).dispose(),r(this,Ze).dispose(),r(this,Je).dispose(),r(this,et).dispose(),r(this,tt).dispose();for(const t in r(this,M))r(this,M)[t].dispose();for(const t in r(this,E))r(this,E)[t].close()}init(){Y(this,_t,nn).call(this),Y(this,Gt,En).call(this),Y(this,Ht,Rn).call(this),setTimeout(()=>{r(this,E).isViscous.subscribe(()=>{}),r(this,E).viscous.subscribe(()=>{}),r(this,E).iterationsViscous.subscribe(()=>{}),r(this,E).pointerSize.subscribe(()=>{}),r(this,E).pointerForce.subscribe(()=>{}),r(this,E).dt.subscribe(()=>{}),r(this,E).resolution.subscribe(()=>{this.resize()}),r(this,E).iterationsPoisson.subscribe(()=>{}),r(this,E).isBounce.subscribe(()=>{}),r(this,E).BFECC.subscribe(()=>{})})}}E=new WeakMap,M=new WeakMap,te=new WeakMap,H=new WeakMap,ne=new WeakMap,$e=new WeakMap,Mt=new WeakMap,Ze=new WeakMap,Je=new WeakMap,et=new WeakMap,tt=new WeakMap,_t=new WeakSet,nn=function(){const t=Math.round(r(this,E).resolution.current*R.width),e=Math.round(r(this,E).resolution.current*R.height),s=1/t,n=1/e;r(this,H).set(s,n),r(this,te).set(t,e)},Gt=new WeakSet,En=function(){const t=Gn.device.isApple?l.HalfFloatType:l.FloatType;for(let e in r(this,M))r(this,M)[e]=new l.WebGLRenderTarget(r(this,te).x,r(this,te).y,{type:t})},Ht=new WeakSet,Rn=function(){y(this,$e,new Ds({cellScale:r(this,H),fboSize:r(this,te),dt:r(this,E).dt.current,src:r(this,M).vel0,dst:r(this,M).vel1,BFECC:r(this,E).BFECC.current})),y(this,Mt,new Ns({cellScale:r(this,H),pointerSize:r(this,E).pointerSize.current,dst:r(this,M).vel1})),y(this,Ze,new ks({cellScale:r(this,H),boundarySpace:r(this,ne),viscous:r(this,E).viscous.current,src:r(this,M).vel1,dst:r(this,M).velViscous1,dst_:r(this,M).velViscous0,dt:r(this,E).dt.current})),y(this,Je,new Gs({cellScale:r(this,H),boundarySpace:r(this,ne),src:r(this,M).velViscous0,dst:r(this,M).div,dt:r(this,E).dt.current})),y(this,et,new Vs({cellScale:r(this,H),boundarySpace:r(this,ne),src:r(this,M).div,dst:r(this,M).pressure1,dst_:r(this,M).pressure0})),y(this,tt,new zs({cellScale:r(this,H),boundarySpace:r(this,ne),srcP:r(this,M).pressure0,srcV:r(this,M).velViscous0,dst:r(this,M).vel0,dt:r(this,E).dt.current}))};var fe,Ce,De,pe,Oe,me,Fe,nt,st,it,rt,ot;class Mn extends l.Mesh{constructor(){super();g(this,fe,void 0);g(this,Ce,void 0);g(this,De,void 0);g(this,pe,void 0);g(this,Oe,void 0);g(this,me,void 0);g(this,Fe,void 0);g(this,nt,void 0);g(this,st,void 0);g(this,it,void 0);g(this,rt,void 0);g(this,ot,void 0);this.colorTweenDuration=1e3,y(this,Ce,new F.Store("#000000",{passport:{name:"Fluid.Цвета.Фон.Цвет",manager:{type:"color"}}})),y(this,De,new F.Store(1,{passport:{name:"Fluid.Цвета.Фон.Порог",manager:{type:"range"}}})),y(this,pe,new F.Store(1,{passport:{name:"Fluid.Цвета.Фон.Прозрачность",manager:{type:"range"}}})),y(this,Oe,new F.Store("#ffffff",{passport:{name:"Fluid.Цвета.Жидкость.Цвет",manager:{type:"color"}}})),y(this,me,new F.Store(1,{passport:{name:"Fluid.Цвета.Жидкость.Прозрачность",manager:{type:"range"}}})),y(this,Fe,new Bn.Tweened(0,{easing:Pn.easeInOutCubic,min:0,max:1,duration:this.colorTweenDuration})),y(this,nt,new l.Color),y(this,st,new l.Color),y(this,it,new l.Color),y(this,rt,new l.Color),y(this,ot,kn.debounce(()=>{r(this,Fe).reset(),r(this,Fe).set(1)},0)),y(this,fe,new Ks),ye.init(),this.geometry=new l.PlaneGeometry(2,2),this.material=new l.RawShaderMaterial({vertexShader:ct,fragmentShader:Ls,transparent:!0,uniforms:{velocity:{value:r(this,fe).fbos.vel0.texture},backgroundColor:{value:r(this,st)},backgroundOpacity:{value:r(this,pe).current},fluidColor:{value:r(this,nt)},fluidOpacity:{value:r(this,me).current},backgroundMixThreshold:{value:0},opacity:{value:1},boundarySpace:{value:new l.Vector2(0,0)}}}),r(this,Ce).subscribe(e=>{y(this,rt,new l.Color(e.current)),r(this,ot).call(this)}),r(this,Oe).subscribe(e=>{y(this,it,new l.Color(e.current)),r(this,ot).call(this)}),r(this,pe).subscribe(e=>{this.material.uniforms.backgroundOpacity.value=e.current}),r(this,me).subscribe(e=>{this.material.uniforms.fluidOpacity.value=e.current}),r(this,De).subscribe(e=>{this.material.uniforms.backgroundMixThreshold.value=e.current}),r(this,Fe).subscribe(e=>{r(this,st).lerp(r(this,rt),e.current),r(this,nt).lerp(r(this,it),e.current)})}get backgroundColor(){return r(this,Ce)}get backgroundMixThreshold(){return r(this,De)}get backgroundOpacity(){return r(this,pe)}get fluidColor(){return r(this,Oe)}get fluidOpacity(){return r(this,me)}resize(){r(this,fe).resize()}update(){ye.update(),r(this,fe).update()}dispose(){ye.dispose(),r(this,fe).dispose(),r(this,Ce).close(),r(this,pe).close(),r(this,Oe).close(),r(this,me).close(),r(this,De).close()}}fe=new WeakMap,Ce=new WeakMap,De=new WeakMap,pe=new WeakMap,Oe=new WeakMap,me=new WeakMap,Fe=new WeakMap,nt=new WeakMap,st=new WeakMap,it=new WeakMap,rt=new WeakMap,ot=new WeakMap;var js=Object.defineProperty,Xs=Object.getOwnPropertyDescriptor,qs=(h,t,e,s)=>{for(var n=s>1?void 0:s?Xs(t,e):t,i=h.length-1,o;i>=0;i--)(o=h[i])&&(n=(s?o(t,e,n):o(n))||n);return s&&n&&js(t,e,n),n},_n=(h,t,e)=>{if(!t.has(h))throw TypeError("Cannot "+e)},j=(h,t,e)=>(_n(h,t,"read from private field"),e?e.call(h):t.get(h)),Qt=(h,t,e)=>{if(t.has(h))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(h):t.set(h,e)},Ws=(h,t,e,s)=>(_n(h,t,"write to private field"),t.set(h,e),e),Q,Nt,Pt;exports.En3FluidElement=class extends vn.CustomElement{constructor(){super(...arguments),Qt(this,Q,null),Qt(this,Nt,()=>{j(this,Q).resize()}),Qt(this,Pt,()=>{R.width&&j(this,Q).update()})}get fluid(){return j(this,Q)}connectedCallback(){Ws(this,Q,new Mn),R.view.add(j(this,Q)),Ae.windowResizer.subscribe(j(this,Nt)),ve.ticker.subscribe(j(this,Pt))}disconnectedCallback(){R.view.remove(j(this,Q)),j(this,Q).dispose(),Ae.windowResizer.unsubscribe(j(this,Nt)),ve.ticker.unsubscribe(j(this,Pt))}};Q=new WeakMap;Nt=new WeakMap;Pt=new WeakMap;exports.En3FluidElement=qs([vn.define("en3-fluid")],exports.En3FluidElement);function an(h,t,e){const s=t.x,n=t.y,i=e||h.image.width/h.image.height;let o=0,c=0,a=h.offset.x,u=h.offset.y,f=h.rotation,d=h.center.x,m=h.center.y;s/n>i?(o=1,c=n/s*i):(c=1,o=s/n/i),h.matrix.setUvTransform(a,u,o,c,f,d,m)}const dt=new l.Vector3;function B(h,t,e,s,n,i){const o=2*Math.PI*n/4,c=Math.max(i-2*n,0),a=Math.PI/4;dt.copy(t),dt[s]=0,dt.normalize();const u=.5*o/(o+c),f=1-dt.angleTo(h)/a;return Math.sign(dt[e])===1?f*u:c/(o+c)+u+u*(1-f)}class Ys extends l.BoxGeometry{constructor(t=1,e=1,s=1,n=2,i=.1){if(n=n*2+1,i=Math.min(t/2,e/2,s/2,i),super(1,1,1,n,n,n),n===1)return;const o=this.toNonIndexed();this.index=null,this.attributes.position=o.attributes.position,this.attributes.normal=o.attributes.normal,this.attributes.uv=o.attributes.uv;const c=new l.Vector3,a=new l.Vector3,u=new l.Vector3(t,e,s).divideScalar(2).subScalar(i),f=this.attributes.position.array,d=this.attributes.normal.array,m=this.attributes.uv.array,A=f.length/6,v=new l.Vector3,b=.5/n;for(let x=0,p=0;x<f.length;x+=3,p+=2)switch(c.fromArray(f,x),a.copy(c),a.x-=Math.sign(a.x)*b,a.y-=Math.sign(a.y)*b,a.z-=Math.sign(a.z)*b,a.normalize(),f[x+0]=u.x*Math.sign(c.x)+a.x*i,f[x+1]=u.y*Math.sign(c.y)+a.y*i,f[x+2]=u.z*Math.sign(c.z)+a.z*i,d[x+0]=a.x,d[x+1]=a.y,d[x+2]=a.z,Math.floor(x/A)){case 0:v.set(1,0,0),m[p+0]=B(v,a,"z","y",i,s),m[p+1]=1-B(v,a,"y","z",i,e);break;case 1:v.set(-1,0,0),m[p+0]=1-B(v,a,"z","y",i,s),m[p+1]=1-B(v,a,"y","z",i,e);break;case 2:v.set(0,1,0),m[p+0]=1-B(v,a,"x","z",i,t),m[p+1]=B(v,a,"z","x",i,s);break;case 3:v.set(0,-1,0),m[p+0]=1-B(v,a,"x","z",i,t),m[p+1]=1-B(v,a,"z","x",i,s);break;case 4:v.set(0,0,1),m[p+0]=1-B(v,a,"x","y",i,t),m[p+1]=1-B(v,a,"y","x",i,e);break;case 5:v.set(0,0,-1),m[p+0]=B(v,a,"x","y",i,t),m[p+1]=1-B(v,a,"y","x",i,e);break}}}var se,at,Ie;class cn extends l.Mesh{constructor(e){super(e.round?new Ys(e.width,e.height,1,e.segments,e.round):new l.PlaneGeometry(e.width,e.height,e.segments,e.segments),e.material);g(this,se,void 0);g(this,at,void 0);g(this,Ie,()=>{r(this,se).data.current&&r(this,at)==="cover"&&this.onCoverResize(r(this,se).data.current)});y(this,se,new on(W({consumer:this},e))),y(this,at,e.fit),this.addEventListener("added",()=>{Ae.windowResizer.subscribe(r(this,Ie))}),this.addEventListener("removed",()=>{Ae.windowResizer.unsubscribe(r(this,Ie))}),r(this,se).processData=s=>R.cacheAssets?s.clone():s,r(this,se).data.subscribe(s=>{!s.current&&s.previous?s.previous.dispose():s.current&&this.material&&(r(this,at)&&(s.current.matrixAutoUpdate=!1),s.current.colorSpace=l.SRGBColorSpace,s.current.center.set(.5,.5),this.material.map=s.current,this.material.needsUpdate=!0,r(this,Ie).call(this))})}get sourceManager(){return r(this,se)}updateTexture(){r(this,Ie).call(this)}onCoverResize(e){an(e,{x:this.scale.x,y:this.scale.y})}}se=new WeakMap,at=new WeakMap,Ie=new WeakMap;class Qs extends cn{constructor(t){super(ut(W({},t),{loader:Te}))}}class $s{load(...t){const e=t[0],s=t[1],n=t[3],i=document.createElement("video");i.src=e,i.onloadeddata=()=>{s(new l.VideoTexture(i)),i.onerror=null,i.onloadeddata=null},i.onerror=()=>{n==null||n(e),i.onerror=null,i.onloadeddata=null}}}var Lt,Ct,Dt;class Zs extends cn{constructor(e){super(ut(W({},e),{loader:new $s}));g(this,Lt,void 0);g(this,Ct,void 0);g(this,Dt,void 0);y(this,Lt,e.autoplay||!1),y(this,Ct,e.muted||!1),y(this,Dt,e.loop||!1),this.sourceManager.data.subscribe(s=>{if(s.current){const n=s.current.image;r(this,Ct)&&(n.muted=!0),r(this,Dt)&&(n.loop=!0),r(this,Lt)&&n.play()}})}onCoverResize(e){const s=e.image;an(e,{x:this.scale.x,y:this.scale.y},s.videoWidth/s.videoHeight)}}Lt=new WeakMap,Ct=new WeakMap,Dt=new WeakMap;function Js(h,t){h.traverse(e=>{e instanceof l.Mesh&&t(e)})}function ei(h,t){h.traverse(e=>{e instanceof l.Mesh&&e.material&&(Array.isArray(e.material)?e.material:[e.material]).forEach(t)})}const $t=new l.Vector3,ti=new l.Vector3;function ni(h,t="default"){const e=R.getView(t),{width:s,height:n}=R,i=s/n;h instanceof l.Vector3?$t.copy(h):$t.set(...h);const o=e.camera.getWorldPosition(ti).distanceTo($t);if(e.camera instanceof l.OrthographicCamera)return{width:s/e.camera.zoom,height:n/e.camera.zoom,factor:1,distance:o,aspect:i};{const c=e.camera.fov*Math.PI/180,a=2*Math.tan(c/2)*o,u=a*(s/n);return{width:u,height:a,factor:s/u,distance:o,aspect:i}}}const xn=new l.Vector3,si=new l.Quaternion,yn=new l.Vector3;class ii extends l.Object3D{constructor(t=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=t,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(t,e){return super.copy(t,e),this.element=t.element.cloneNode(!0),this}}const X=new l.Matrix4,ri=new l.Matrix4;class oi{constructor(t={}){const e=this;let s,n,i,o;const c={camera:{style:""},objects:new WeakMap},a=t.element!==void 0?t.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a;const u=document.createElement("div");u.style.transformOrigin="0 0",u.style.pointerEvents="none",a.appendChild(u);const f=document.createElement("div");f.style.transformStyle="preserve-3d",u.appendChild(f),this.getSize=function(){return{width:s,height:n}},this.render=function(x,p){const T=p.projectionMatrix.elements[5]*o;p.view&&p.view.enabled?(u.style.transform=`translate( ${-p.view.offsetX*(s/p.view.width)}px, ${-p.view.offsetY*(n/p.view.height)}px )`,u.style.transform+=`scale( ${p.view.fullWidth/p.view.width}, ${p.view.fullHeight/p.view.height} )`):u.style.transform="",x.matrixWorldAutoUpdate===!0&&x.updateMatrixWorld(),p.parent===null&&p.matrixWorldAutoUpdate===!0&&p.updateMatrixWorld();let _,w;p.isOrthographicCamera&&(_=-(p.right+p.left)/2,w=(p.top+p.bottom)/2);const L=p.view&&p.view.enabled?p.view.height/p.view.fullHeight:1,I=p.isOrthographicCamera?`scale( ${L} )scale(`+T+")translate("+d(_)+"px,"+d(w)+"px)"+m(p.matrixWorldInverse):`scale( ${L} )translateZ(`+T+"px)"+m(p.matrixWorldInverse),U=(p.isPerspectiveCamera?"perspective("+T+"px) ":"")+I+"translate("+i+"px,"+o+"px)";c.camera.style!==U&&(f.style.transform=U,c.camera.style=U),b(x,x,p)},this.setSize=function(x,p){s=x,n=p,i=s/2,o=n/2,a.style.width=x+"px",a.style.height=p+"px",u.style.width=x+"px",u.style.height=p+"px",f.style.width=x+"px",f.style.height=p+"px"};function d(x){return Math.abs(x)<1e-10?0:x}function m(x){const p=x.elements;return"matrix3d("+d(p[0])+","+d(-p[1])+","+d(p[2])+","+d(p[3])+","+d(p[4])+","+d(-p[5])+","+d(p[6])+","+d(p[7])+","+d(p[8])+","+d(-p[9])+","+d(p[10])+","+d(p[11])+","+d(p[12])+","+d(-p[13])+","+d(p[14])+","+d(p[15])+")"}function A(x){const p=x.elements;return"translate(-50%,-50%)"+("matrix3d("+d(p[0])+","+d(p[1])+","+d(p[2])+","+d(p[3])+","+d(-p[4])+","+d(-p[5])+","+d(-p[6])+","+d(-p[7])+","+d(p[8])+","+d(p[9])+","+d(p[10])+","+d(p[11])+","+d(p[12])+","+d(p[13])+","+d(p[14])+","+d(p[15])+")")}function v(x){x.isCSS3DObject&&(x.element.style.display="none");for(let p=0,T=x.children.length;p<T;p++)v(x.children[p])}function b(x,p,T,_){if(x.visible===!1){v(x);return}if(x.isCSS3DObject){const w=x.layers.test(T.layers)===!0,L=x.element;if(L.style.display=w===!0?"":"none",w===!0){x.onBeforeRender(e,p,T);let I;x.isCSS3DSprite?(X.copy(T.matrixWorldInverse),X.transpose(),x.rotation2D!==0&&X.multiply(ri.makeRotationZ(x.rotation2D)),x.matrixWorld.decompose(xn,si,yn),X.setPosition(xn),X.scale(yn),X.elements[3]=0,X.elements[7]=0,X.elements[11]=0,X.elements[15]=1,I=A(X)):I=A(x.matrixWorld);const N=c.objects.get(x);if(N===void 0||N.style!==I){L.style.transform=I;const U={style:I};c.objects.set(x,U)}L.parentNode!==f&&f.appendChild(L),x.onAfterRender(e,p,T)}}for(let w=0,L=x.children.length;w<L;w++)b(x.children[w],p,T)}}}var q,Vt,Ln,Ot,Ft;const k=class k extends ii{static destroy(){Ae.windowResizer.unsubscribe(r(this,Ft)),ve.ticker.unsubscribe(r(this,Ot)),y(this,q,null)}constructor(t){var e;super(t.element),r(k,q)||Y(e=k,Vt,Ln).call(e)}};q=new WeakMap,Vt=new WeakSet,Ln=function(){y(k,q,new oi),r(k,q).domElement.style.cssText=`
|
|
198
196
|
position: fixed;
|
|
199
197
|
left: 0;
|
|
200
198
|
top: 0;
|
|
@@ -203,13 +201,13 @@ void main(){
|
|
|
203
201
|
z-index: 1;
|
|
204
202
|
pointer-events: none;
|
|
205
203
|
overflow: hidden;
|
|
206
|
-
`,
|
|
207
|
-
${
|
|
208
|
-
${
|
|
209
|
-
`),
|
|
210
|
-
${
|
|
211
|
-
${
|
|
212
|
-
`),
|
|
213
|
-
#include <${s[
|
|
214
|
-
${s[
|
|
215
|
-
`)))};exports.En3Clip=
|
|
204
|
+
`,R.containerElement.prepend(r(k,q).domElement),Ae.windowResizer.subscribe(r(this,Ft),ft.RESIZE_ORDER.EN3+1),ve.ticker.subscribe(r(this,Ot),{order:ft.TICK_ORDER.EN3+1})},Ot=new WeakMap,Ft=new WeakMap,g(k,Vt),g(k,q,null),g(k,Ot,()=>{r(k,q).render(R.view.scene,R.view.camera)}),g(k,Ft,()=>{r(k,q).setSize(R.width,R.height)});let sn=k;var ge,xe,It,rn;class ai{constructor(t){g(this,It);g(this,ge,void 0);g(this,xe,void 0);y(this,ge,t.material),y(this,xe,t.uniforms||{}),r(this,ge).userData.uniforms=r(this,xe);let e;const s=()=>{e==null||e()};r(this,ge).addEventListener("dispose",s),r(this,ge).onBeforeCompile=n=>{var i;e==null||e();for(const o in r(this,xe))n.uniforms[o]=r(this,xe)[o];t.vertextDeclarations&&(n.vertexShader=`
|
|
205
|
+
${t.vertextDeclarations}
|
|
206
|
+
${n.vertexShader}
|
|
207
|
+
`),t.fragmentDeclarations&&(n.fragmentShader=`
|
|
208
|
+
${t.fragmentDeclarations}
|
|
209
|
+
${n.fragmentShader}
|
|
210
|
+
`),Y(this,It,rn).call(this,n,"vertex",t),Y(this,It,rn).call(this,n,"fragment",t),e=(i=t.onReady)==null?void 0:i.call(t,this),t.log&&(console.log("VERTEX SHADER: ",n.vertexShader),console.log("FRAGMENT SHADER: ",n.fragmentShader))}}get material(){return r(this,ge)}get uniforms(){return r(this,xe)}}ge=new WeakMap,xe=new WeakMap,It=new WeakSet,rn=function(t,e,s){const n=e==="vertex"?"vertexChunk":"fragmentChunk",i=e==="vertex"?"vertexShader":"fragmentShader";s[n]&&(s[n].replace?t[i]=t[i].replace(`#include <${s[n].replace}>`,s[n].content):s[n].update&&(t[i]=t[i].replace(`#include <${s[n].update}>`,`
|
|
211
|
+
#include <${s[n].update}>
|
|
212
|
+
${s[n].content}
|
|
213
|
+
`)))};exports.En3Clip=Rs;exports.En3ClipHelpers=Ms;exports.En3Fluid=Mn;exports.En3GLTF=_s;exports.En3HTML=sn;exports.En3Image=Qs;exports.En3ImageLike=cn;exports.En3ModifiedMaterial=ai;exports.En3SourceManager=on;exports.En3Video=Zs;exports.En3View=Jt;exports.coverTexture=an;exports.dispose=Ne;exports.en3=R;exports.en3Cache=V;exports.en3FluidPointer=ye;exports.en3GLTFLoader=Sn;exports.en3TextureLoader=Te;exports.getCurrentViewport=ni;exports.traverseMaterials=ei;exports.traverseMeshes=Js;
|