u-space 0.0.28 → 0.0.30

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.
Files changed (73) hide show
  1. package/README.md +9 -0
  2. package/dist/Viewer-BKNV67Jj.cjs +1 -0
  3. package/dist/Viewer-Cs_y7IiH.js +1256 -0
  4. package/dist/index.cjs +3 -3
  5. package/dist/index.js +1715 -1497
  6. package/dist/plugins/atmosphere/AgxToneMapping.d.ts +1 -1
  7. package/dist/plugins/atmosphere/index.cjs +1 -1
  8. package/dist/plugins/atmosphere/index.js +4 -4
  9. package/dist/plugins/curve-movement/index.cjs +1 -1
  10. package/dist/plugins/curve-movement/index.js +1 -1
  11. package/dist/plugins/fire/index.cjs +1 -1
  12. package/dist/plugins/fire/index.js +5 -5
  13. package/dist/plugins/object-controls/index.cjs +1 -1
  14. package/dist/plugins/object-controls/index.js +4 -4
  15. package/dist/plugins/tiles/index.cjs +1 -1
  16. package/dist/plugins/tiles/index.js +5 -5
  17. package/dist/plugins/u-manager/index.cjs +51 -51
  18. package/dist/plugins/u-manager/index.d.ts +1 -1
  19. package/dist/plugins/u-manager/index.js +8330 -8637
  20. package/dist/plugins/u-manager/loaders/SceneEditableBatchLayer.d.ts +17 -0
  21. package/dist/plugins/u-manager/loaders/SceneInstancedLayer.d.ts +3 -3
  22. package/dist/plugins/u-manager/loaders/SceneLoader.d.ts +20 -3
  23. package/dist/plugins/u-manager/loaders/UManagerLoader.d.ts +4 -4
  24. package/dist/plugins/u-manager/semantics/objects/BuildingGroup.d.ts +12 -5
  25. package/dist/plugins/u-manager/semantics/objects/FacilityInstancedLayer.d.ts +4 -4
  26. package/dist/plugins/u-manager/semantics/objects/FloorMesh.d.ts +28 -22
  27. package/dist/plugins/u-manager/semantics/objects/SemanticGroup.d.ts +6 -6
  28. package/dist/protocol-C-OMPz15.js +10 -0
  29. package/dist/protocol-IUAzx0lk.cjs +1 -0
  30. package/dist/src/batches/EditableGeometryBatchLayer.d.ts +50 -0
  31. package/dist/src/batches/ModelInstancedLayer.d.ts +42 -0
  32. package/dist/src/batches/index.d.ts +2 -0
  33. package/dist/src/effects/TSLEffects.d.ts +24 -1
  34. package/dist/src/index.d.ts +2 -0
  35. package/dist/src/instances/InstanceObject.d.ts +57 -0
  36. package/dist/src/instances/index.d.ts +1 -0
  37. package/dist/src/interactions/MeshBVHRaycast.d.ts +9 -0
  38. package/dist/src/interactions/index.d.ts +1 -0
  39. package/dist/src/viewers/RenderPipeline.d.ts +37 -0
  40. package/dist/src/viewers/ReversedDepthSSGICompat.d.ts +10 -0
  41. package/dist/src/viewers/ReversedDepthSSRCompat.d.ts +20 -0
  42. package/dist/src/viewers/Viewer.d.ts +3 -1
  43. package/dist/src/viewers/renderInvalidation.d.ts +2 -0
  44. package/dist/src/worker/FrameTimingWindow.d.ts +16 -0
  45. package/dist/src/worker/OffscreenViewerHost.d.ts +20 -0
  46. package/dist/src/worker/WorkerDomTarget.d.ts +44 -0
  47. package/dist/src/worker/createWorkerViewer.d.ts +18 -0
  48. package/dist/src/worker/index.d.ts +2 -0
  49. package/dist/src/worker/installWorkerImageLoader.d.ts +5 -0
  50. package/dist/src/worker/protocol.d.ts +102 -0
  51. package/dist/src/worker/runtime.d.ts +2 -0
  52. package/dist/worker/index.cjs +1 -0
  53. package/dist/worker/index.js +224 -0
  54. package/dist/worker/runtime.cjs +1 -0
  55. package/dist/worker/runtime.js +418 -0
  56. package/docs/api-batches.md +112 -0
  57. package/docs/api-effects.md +2 -2
  58. package/docs/api-interactions.md +8 -0
  59. package/docs/api-managers.md +1 -1
  60. package/docs/api-objects.md +207 -0
  61. package/docs/api-plugin-u-manager.md +245 -96
  62. package/docs/api-render-pipeline.md +103 -5
  63. package/docs/api-viewer.md +188 -1
  64. package/docs/changelog.md +69 -6
  65. package/docs/examples-guide.md +111 -17
  66. package/docs/getting-started.md +1 -1
  67. package/docs/index.md +11 -4
  68. package/docs/mcp.md +29 -14
  69. package/docs/release.md +95 -0
  70. package/package.json +27 -4
  71. package/dist/plugins/u-manager/instances/SemanticInstanceObject.d.ts +0 -37
  72. package/dist/plugins/u-manager/instances/SemanticModelInstancedLayer.d.ts +0 -33
  73. package/dist/plugins/u-manager/instances/index.d.ts +0 -2
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("three/webgpu"),t=require("three/tsl"),st=require("three/addons/tsl/display/BloomNode.js"),it=require("three/addons/tsl/display/GaussianBlurNode.js"),ot=require("three/addons/math/ImprovedNoise.js"),nt=require("three/addons/geometries/TeapotGeometry.js"),B=require("three/addons/tsl/math/curlNoise.js"),rt={x:100,y:100,z:200},$=new i.Vector3(12,12,24),ht=new i.Vector3;function at(c){const s=Math.max(2,Math.floor(Number.isFinite(c)?c:2));return s%2===0?s:s+1}function Q(c={},s){const e=s??{position:ht.clone(),size:$.clone(),gridSize:{...rt},volumeLayer:10,emitterGeometry:null,emitter:null,emitterRadius:1,simulate:!0,simSpeed:1.2,pressureIterations:2,raymarchSteps:16,renderResolution:.5,denoise:!0,denoiseStrength:.5,bloom:!0,bloomStrength:.1,bloomRadius:1,bloomThreshold:.5,smokeLifespan:3.5,smokeIntensity:1,smokeColor:16777215,fireLifespan:1.3,turbulence:3.2,turbulenceDecay:.1,turbulenceFrequency:10,buoyancy:3,velocityDamping:.25,emitDensity:7,emitTemperature:5.5,motionBoost:.25,windStrength:6.5,fireIntensity:40,glowSpread:5,fireHue:0,saturation:1.1,fireStartColor:16770700,fireMidColor:16741125,fireEndColor:16711680,phaseAsymmetry:0,powderStrength:.59,multiScattering:1,shadowAbsorption:2,shadowAmbient:.5,keyLight:!0,pointLight:!0,pointLightIntensity:1,pointLightDistance:40};return{...e,...c,position:c.position?.clone()??e.position.clone(),size:c.size?.clone()??e.size.clone(),gridSize:{x:Math.max(2,Math.floor(c.gridSize?.x??e.gridSize.x)),y:Math.max(2,Math.floor(c.gridSize?.y??e.gridSize.y)),z:Math.max(2,Math.floor(c.gridSize?.z??e.gridSize.z))},volumeLayer:Math.max(0,Math.min(31,Math.floor(c.volumeLayer??e.volumeLayer))),emitter:c.emitter===void 0?e.emitter:c.emitter,emitterGeometry:c.emitterGeometry===void 0?e.emitterGeometry:c.emitterGeometry,emitterRadius:Math.max(.01,c.emitterRadius??e.emitterRadius),pressureIterations:at(c.pressureIterations??e.pressureIterations),raymarchSteps:Math.max(4,Math.floor(c.raymarchSteps??e.raymarchSteps)),renderResolution:Math.min(1,Math.max(.1,c.renderResolution??e.renderResolution)),smokeIntensity:Math.max(0,c.smokeIntensity??e.smokeIntensity)}}function I(c,s){const e=new i.Storage3DTexture(s.x,s.y,s.z);return e.name=c,e.format=i.RGBAFormat,e.type=i.HalfFloatType,e.minFilter=i.LinearFilter,e.magFilter=i.LinearFilter,e.wrapS=i.ClampToEdgeWrapping,e.wrapT=i.ClampToEdgeWrapping,e.wrapR=i.ClampToEdgeWrapping,e}function G(c,s,e){return t.textureStore(c,s,e).toWriteOnly()}class lt{viewer;mesh=null;shadowMesh=null;keyLight=null;pointLight=null;#o=!1;#t;#it="demand";#ot=new i.Object3D;#m=new i.Vector3;#q=new i.Vector3;#d=new i.Vector3;#a=null;#p=null;#R=0;#f=null;#b=null;#L=null;#S=null;#z=null;#T=null;#F=null;#h=null;#v=null;#D=null;#P=!1;#B=null;#G=null;#W=null;#j=null;#O=null;#_=null;#U=null;#Z=null;#i=null;#M=new i.Layers;#H;#N=[];#y=0;#l=0;#u=new ot.ImprovedNoise;#n=t.uniform(.016);#r=t.uniform(0);#s=t.uniform($.clone());#g=t.uniform(new i.Vector3);#nt=t.uniform(new i.Matrix4);#X=t.uniform(0);#rt=t.uniform(new i.Vector3);#x=t.uniform(new i.Vector3);#Y=t.uniform(1);#V=t.uniform(new i.Vector3);#ht=t.uniform(3);#kt=t.uniform(.15);#E=t.uniform(3.2);#at=t.uniform(.1);#w=t.uniform(10);#lt=t.uniform(.25);#ut=t.uniform(1);#ct=t.uniform(.4);#A=t.uniform(7);#c=t.uniform(5.5);#mt=t.uniform(.25);#dt=t.uniform(6.5);#k=t.uniform(40);#pt=t.uniform(5);#K=t.uniform(2);#ft=t.uniform(.5);#J=t.uniform(new i.Color(16770700));#Q=t.uniform(new i.Color(16741125));#$=t.uniform(new i.Color(16711680));#vt=t.uniform(1);#yt=t.uniform(new i.Color(16777215));#C=t.uniform(0);#I=t.uniform(1.1);#gt=t.uniform(0);#xt=t.uniform(.59);#wt=t.uniform(1);#Ct=t.uniform(2);#It=t.uniform(10);#qt=t.uniform(10);#Rt=t.uniform(15);#Bt=t.uniform(10);#Gt=t.uniform(20);#Wt=t.uniform(.2);#jt=t.uniform(17);#Ot=t.uniform(3.25);#bt=t.uniform(3.5);#Lt=t.uniform(new i.Vector3);#St=t.uniform(1);#zt=t.uniform(0);constructor(s,e={}){this.viewer=s,this.#t=Q(e),this.#Tt(),this.#H=this.#Xt()}get enabled(){return this.#o}get emitter(){return this.#t.emitter??this.#ot}enable(s={}){return this.#o?this.update(s):(this.#t=Q(s,this.#t),this.#et(),this.#tt(),this.#it=this.viewer.frameloop,this.viewer.frameloop="always",this.viewer.renderPipeline.addOutputEffect(this.#H),this.viewer.addEventListener("beforeRender",this.#Et),this.viewer.addEventListener("cameraChange",this.#Pt),this.#o=!0,this.viewer.render(),this)}update(s={}){const e=this.#t;this.#t=Q(s,this.#t);const n=!e.size.equals(this.#t.size),a=e.gridSize.x!==this.#t.gridSize.x||e.gridSize.y!==this.#t.gridSize.y||e.gridSize.z!==this.#t.gridSize.z||e.emitterGeometry!==this.#t.emitterGeometry||e.volumeLayer!==this.#t.volumeLayer||e.raymarchSteps!==this.#t.raymarchSteps;return this.#o&&a&&(this.#st(),this.#et()),this.#o&&n&&!a&&(this.#P=!1),this.#tt(),this.viewer.renderPipeline.needsUpdateOutputNode=!0,this.viewer.render(),this}setPosition(s){return this.update({position:s})}setEmitter(s,e=this.#t.emitterGeometry){return this.update({emitter:s,emitterGeometry:e})}reset(){return this.#o?(this.#st(),this.#et(),this.#tt(),this.viewer.render(),this):this}disable(){return this.#o?(this.viewer.removeEventListener("beforeRender",this.#Et),this.viewer.removeEventListener("cameraChange",this.#Pt),this.viewer.renderPipeline.removeOutputEffect(this.#H),this.viewer.frameloop=this.#it,this.#o=!1,this.#st(),this.viewer.render(),this):this}dispose(){return this.disable(),this.#a?.dispose(),this.#a=null,this}#tt(){const{position:s,size:e}=this.#t,n=new i.Vector3(s.x,s.y+e.y*.5,s.z);this.#Tt(),this.#g.value.copy(n),this.#s.value.copy(e),this.#V.value.set(s.x-3*(e.x/8),s.y+6*(e.y/8)+e.y*.5+.4,s.z+3*(e.z/8)),this.#A.value=this.#t.emitDensity,this.#c.value=this.#t.emitTemperature,this.#mt.value=this.#t.motionBoost,this.#dt.value=this.#t.windStrength,this.#Y.value=this.#t.emitterRadius,this.#ht.value=this.#t.buoyancy,this.#lt.value=this.#t.velocityDamping,this.#at.value=this.#t.turbulenceDecay,this.#w.value=this.#t.turbulenceFrequency,this.#k.value=this.#t.fireIntensity,this.#pt.value=this.#t.glowSpread,this.#K.value=this.#t.shadowAbsorption,this.#ft.value=this.#t.shadowAmbient,this.#gt.value=this.#t.phaseAsymmetry,this.#xt.value=this.#t.powderStrength,this.#wt.value=this.#t.multiScattering,this.#I.value=this.#t.saturation,this.#J.value.set(this.#t.fireStartColor),this.#Q.value.set(this.#t.fireMidColor),this.#$.value.set(this.#t.fireEndColor),this.#vt.value=this.#t.smokeIntensity,this.#yt.value.set(this.#t.smokeColor),this.#C.value=this.#t.fireHue*Math.PI/180,this.mesh&&(this.mesh.position.copy(n),this.mesh.geometry.dispose(),this.mesh.geometry=new i.BoxGeometry(e.x,e.y,e.z),this.mesh.material.steps=this.#t.raymarchSteps,this.mesh.layers.disableAll(),this.mesh.layers.enable(this.#t.volumeLayer)),this.shadowMesh&&(this.shadowMesh.position.copy(n),this.shadowMesh.geometry.dispose(),this.shadowMesh.geometry=new i.BoxGeometry(e.x,e.y,e.z),this.shadowMesh.material.steps=this.#t.raymarchSteps),this.#i&&(this.#Ft(),this.#i.setLayers(this.#M),this.#i.setResolutionScale(this.#t.renderResolution)),this.#o&&this.#t.keyLight&&!this.keyLight&&this.#Nt(),this.keyLight&&(this.keyLight.visible=this.#t.keyLight,this.keyLight.position.copy(this.#V.value),this.keyLight.layers.enable(this.#t.volumeLayer),this.keyLight.target.position.set(s.x+1,s.y,s.z)),this.#o&&this.#t.pointLight&&!this.pointLight&&this.#Vt(),this.pointLight&&(this.pointLight.visible=this.#t.pointLight,this.pointLight.intensity=this.#t.pointLightIntensity,this.pointLight.layers.enable(this.#t.volumeLayer))}#Tt(){this.#t.emitter||this.#ot.position.copy(this.#t.position)}#Ft(){this.#M.disableAll(),this.#M.enable(this.#t.volumeLayer)}#et(){this.#y=0,this.#l=0,this.#P=!1,this.#_t(),this.#Ut(),this.#Zt(),this.#Ht(),this.#Nt(),this.#Dt(),this.#Vt(),this.emitter.updateMatrixWorld(),this.emitter.getWorldPosition(this.#d),this.#x.value.copy(this.#d)}#_t(){const s=this.#t.gridSize;this.#f=I("fire velocity A",s),this.#b=I("fire velocity B",s),this.#L=I("fire dye A",s),this.#S=I("fire dye B",s),this.#z=I("fire divergence",s),this.#T=I("fire pressure A",s),this.#F=I("fire pressure B",s),this.#h=I("fire curl noise",s),this.#h.wrapS=i.RepeatWrapping,this.#h.wrapT=i.RepeatWrapping,this.#h.wrapR=i.RepeatWrapping,this.#v=t.texture3D(this.#L),this.#D=t.storageTexture(this.#S).toWriteOnly()}#Ut(){this.#a?.dispose(),this.#a=null,this.#p=this.#t.emitterGeometry,this.#p||(this.#a=new nt.TeapotGeometry(.8,28),this.#p=this.#a);const s=this.#p.getAttribute("position");if(!s)throw new Error("FireEffect: emitterGeometry requires a position attribute.");this.#R=s.count}#Zt(){const s=this.#e(this.#f),e=this.#e(this.#b),n=this.#e(this.#v),a=this.#e(this.#D),p=this.#e(this.#z),f=this.#e(this.#T),N=this.#e(this.#F),d=this.#e(this.#h),v=t.texture3D(d),m=this.#e(this.#p).getAttribute("position"),T=t.storage(m,"vec3",this.#R).toReadOnly(),r=this.#t.gridSize,b=r.x*r.y*r.z,x=1/r.x,L=1/r.y,F=1/r.z,D=l=>{const o=l.mod(r.x),h=l.div(r.x).mod(r.y),y=l.div(r.x*r.y);return t.uvec3(o,h,y)},P=l=>t.vec3(l).add(.5).div(t.vec3(r.x,r.y,r.z)),W=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=this.#w,y=t.float(.1).div(h),u=t.vec3(y,0,0),z=t.vec3(0,y,0),S=t.vec3(0,0,y),g=o.mul(t.vec3(this.#s.x.div(this.#s.y),1,this.#s.z.div(this.#s.y))),w=B.snoiseVec3(g.sub(u).mul(h)),M=B.snoiseVec3(g.add(u).mul(h)),V=B.snoiseVec3(g.sub(z).mul(h)),E=B.snoiseVec3(g.add(z).mul(h)),k=B.snoiseVec3(g.sub(S).mul(h)),C=B.snoiseVec3(g.add(S).mul(h)),Z=E.z.sub(V.z).sub(C.y).add(k.y),X=C.x.sub(k.x).sub(M.z).add(w.z),O=M.y.sub(w.y).sub(E.x).add(V.x);G(d,l,t.vec4(t.vec3(Z,X,O).mul(5),0))})().compute(b).setName("fire.computeCurlNoise"),q=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(s,o,0).xyz,y=o.sub(h.div(this.#s).mul(this.#n)),u=t.texture3D(s,y,0).xyz.toVar(),z=n.sample(o).level(t.float(0)),S=z.r,g=z.g,w=z.b,M=g.mul(this.#ht).sub(S.mul(this.#kt)).mul(this.#s.y);u.addAssign(t.vec3(0,M,0).mul(this.#n));const V=o.add(t.vec3(0,w.negate().mul(.6),w.mul(.13)).div(this.#w)),E=w.mul(this.#at.negate()).exp(),k=v.sample(V).level(t.float(0)).xyz.mul(this.#E).mul(g).mul(E),C=o.mul(.5).add(t.vec3(0,this.#r.mul(.25),this.#r.mul(.06)).div(this.#w)),Z=v.sample(C).level(t.float(0)).xyz.mul(this.#E.mul(.2)).mul(S);u.addAssign(k.add(Z).mul(this.#s.y).mul(this.#n)),u.mulAssign(t.max(t.float(1).sub(this.#lt.mul(this.#n)),t.float(0)));const O=o.sub(.5).mul(this.#s).add(this.#g).distance(this.#x);t.If(O.lessThan(this.#Y),()=>{const K=t.smoothstep(t.float(0),t.float(1),t.float(1).sub(O.div(this.#Y))),J=o.add(t.vec3(0,this.#r.mul(.5),0).div(this.#w)),tt=v.sample(J).level(t.float(0)).xyz.mul(this.#E).mul(this.#X),et=this.#rt.mul(this.#dt).add(tt).mul(this.#n).mul(K);u.addAssign(et)});const H=t.min(o,t.vec3(1).sub(o)),Y=t.smoothstep(t.float(0),t.float(.08),t.min(H.x,t.min(H.y,H.z)));u.mulAssign(Y),G(e,l,t.vec4(u,0))})().compute(b).setName("fire.advectVelocity"),_=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(e,o.add(t.vec3(x,0,0)),0).x,y=t.texture3D(e,o.sub(t.vec3(x,0,0)),0).x,u=t.texture3D(e,o.add(t.vec3(0,L,0)),0).y,z=t.texture3D(e,o.sub(t.vec3(0,L,0)),0).y,S=t.texture3D(e,o.add(t.vec3(0,0,F)),0).z,g=t.texture3D(e,o.sub(t.vec3(0,0,F)),0).z,w=h.sub(y).add(u.sub(z)).add(S.sub(g)).mul(.5);G(p,l,t.vec4(w,0,0,0))})().compute(b).setName("fire.divergence"),j=(l,o,h)=>t.Fn(()=>{const y=D(t.instanceIndex),u=P(y),z=t.texture3D(l,u.add(t.vec3(x,0,0)),0).x,S=t.texture3D(l,u.sub(t.vec3(x,0,0)),0).x,g=t.texture3D(l,u.add(t.vec3(0,L,0)),0).x,w=t.texture3D(l,u.sub(t.vec3(0,L,0)),0).x,M=t.texture3D(l,u.add(t.vec3(0,0,F)),0).x,V=t.texture3D(l,u.sub(t.vec3(0,0,F)),0).x,E=t.texture3D(p,u,0).x,k=z.add(S).add(g).add(w).add(M).add(V).sub(E).div(6);G(o,y,t.vec4(k,0,0,0))})().compute(b).setName(h),A=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(f,o.add(t.vec3(x,0,0)),0).x,y=t.texture3D(f,o.sub(t.vec3(x,0,0)),0).x,u=t.texture3D(f,o.add(t.vec3(0,L,0)),0).x,z=t.texture3D(f,o.sub(t.vec3(0,L,0)),0).x,S=t.texture3D(f,o.add(t.vec3(0,0,F)),0).x,g=t.texture3D(f,o.sub(t.vec3(0,0,F)),0).x,w=t.vec3(h.sub(y),u.sub(z),S.sub(g)).mul(.5),M=t.texture3D(e,o,0).xyz.sub(w);G(s,l,t.vec4(M,0))})().compute(b).setName("fire.project"),R=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(s,o,0).xyz,y=o.sub(h.div(this.#s).mul(this.#n)),u=n.sample(y).level(t.float(0)),z=u.r.mul(t.max(t.float(1).sub(this.#ct.mul(this.#n)),t.float(0))).toVar(),S=u.g.mul(t.max(t.float(1).sub(this.#ut.mul(this.#n)),t.float(0))).toVar(),g=t.vec3(r.x,r.y,r.z),w=t.floor(y.mul(g)).add(.5).div(g),M=n.sample(w).level(t.float(0)).b.add(this.#n).toVar();S.assign(S.clamp(0,12)),t.If(z.lessThanEqual(.01),()=>{M.assign(0)}),G(a,l,t.vec4(z,S,M,1))})().compute(b).setName("fire.advectDye"),U=t.Fn(()=>{const l=T.element(t.instanceIndex),h=this.#nt.mul(t.vec4(l,1)).xyz.sub(this.#g).div(this.#s).add(.5);t.If(h.x.greaterThanEqual(0).and(h.x.lessThanEqual(1)).and(h.y.greaterThanEqual(0)).and(h.y.lessThanEqual(1)).and(h.z.greaterThanEqual(0)).and(h.z.lessThanEqual(1)),()=>{const y=t.uvec3(h.mul(t.vec3(r.x,r.y,r.z))),u=t.mx_noise_float(l.mul(9).add(t.vec3(0,this.#r.negate().mul(2.5),this.#r.mul(.7)))).mul(.5).add(.5),z=this.#c.greaterThan(0).select(t.float(1),t.float(0)),S=this.#X.mul(this.#mt),g=z.add(S),w=this.#A.mul(t.float(1/120)).mul(u.mul(.85).add(.15)).mul(g);t.If(w.greaterThan(0),()=>{const M=this.#c.mul(t.float(.008333333333333333)).mul(u.mul(.85).add(.15)).mul(g),V=n.sample(h).level(t.float(0)),E=V.r.add(w),k=V.g.add(M).clamp(0,12),C=t.mix(V.b,t.float(0),w.div(t.max(E,t.float(.001))));G(a,y,t.vec4(E,k,C,1))})})})().compute(this.#R).setName("fire.emit");this.#B=W,this.#G=q,this.#W=_,this.#j=j(f,N,"fire.jacobiAB"),this.#O=j(N,f,"fire.jacobiBA"),this.#_=A,this.#U=R,this.#Z=U}#Ht(){const s=this.#e(this.#v),e=this.#e(this.#f),n=new i.VolumeNodeMaterial;n.steps=this.#t.raymarchSteps,n.transparent=!0,n.blending=i.AdditiveBlending,n.depthWrite=!1,n.offsetNode=t.fract(t.interleavedGradientNoise(t.screenCoordinate).add(t.float(t.frameId).mul(.618033988749895)));const a=t.Fn(([v])=>{const m=t.vec3(0).toVar();return m.assign(t.mix(t.vec3(0,0,0),this.#$,t.smoothstep(t.float(.05),t.float(.35),v))),m.assign(t.mix(m,this.#Q,t.smoothstep(t.float(.35),t.float(.65),v))),m.assign(t.mix(m,this.#J,t.smoothstep(t.float(.65),t.float(1),v))),m}),p=t.Fn(([v,m])=>{const T=m.mul(m),r=t.float(1).add(T).sub(t.float(2).mul(m).mul(v));return t.float(1).sub(T).div(r.pow(1.5)).mul(.079577)}),f=({positionRay:v})=>{const m=v.sub(this.#g).div(this.#s).add(.5).toVar(),T=t.texture3D(e,m,0).xyz.div(this.#s).mul(.15),r=m.add(T).clamp(0,1).toVar(),b=s.sample(r).level(t.float(0)),x=b.r.toVar(),L=b.b,F=b.g,D=B.snoise(v.mul(5.5).add(t.vec3(0,L.mul(.8).negate(),0)));x.mulAssign(D.mul(.35).add(.85));const P=t.min(r,t.vec3(1).sub(r));return x.mulAssign(t.smoothstep(t.float(0),t.float(.06),t.min(P.x,t.min(P.y,P.z)))),{density:x,temperature:F}};n.scatteringNode=t.Fn(({positionRay:v})=>{const{density:m}=f({positionRay:v}),T=this.#V.sub(v).normalize(),r=t.float(0).toVar(),b=.35;for(let R=0;R<2;R++){const U=(R+.5)*b,o=v.add(T.mul(U)).sub(this.#g).div(this.#s).add(.5),h=t.min(o,t.vec3(1).sub(o)),y=t.smoothstep(t.float(0),t.float(.06),t.min(h.x,t.min(h.y,h.z)));r.addAssign(s.sample(o).level(t.float(0)).r.mul(y))}const x=r.mul(b).mul(this.#K),L=x.negate().exp(),F=x.mul(.25).negate().exp().mul(.5),D=t.mix(L,L.add(F),this.#wt),P=t.float(1).sub(x.mul(2).negate().exp()),q=t.mix(D,D.mul(P),this.#xt).add(this.#ft).clamp(0,1),j=t.cameraPosition.sub(v).normalize().dot(T).clamp(-1,1),A=p(j,this.#gt);return this.#yt.mul(m).mul(q).mul(A.mul(12.56637)).mul(this.#vt)}),n.scatteringEmissiveNode=t.Fn(({positionRay:v})=>{const{density:m,temperature:T}=f({positionRay:v}),r=t.float(6).sub(this.#pt),b=a(T.clamp(0,1)).mul(T.pow(r)).mul(this.#k),x=t.hue(b,this.#C),L=v.sub(this.#V).length(),F=t.float(400).div(L.pow(2));return x.mul(m.add(.15)).mul(F)});const N=t.Fn(()=>{const v=t.positionWorld,m=t.positionWorld.sub(t.cameraPosition).normalize(),T=this.#t.raymarchSteps,r=this.#s.length().div(T).toVar(),b=m.toVar(),x=t.float(0).toVar(),L=t.float(1).toVar();return t.Loop(T,()=>{const F=v.add(b.mul(x)),{density:D}=f({positionRay:F}),W=D.mul(this.#K).mul(.01).negate().mul(r).exp();L.mulAssign(W),x.addAssign(r)}),L.greaterThanEqual(.99).discard(),t.vec4(t.vec3(0),L.oneMinus().mul(5))});this.mesh=new i.Mesh(new i.BoxGeometry(this.#t.size.x,this.#t.size.y,this.#t.size.z),n),this.mesh.name="FireEffect.volume",this.mesh.frustumCulled=!1,this.mesh.receiveShadow=!0,this.mesh.layers.disableAll(),this.mesh.layers.enable(this.#t.volumeLayer),this.viewer.scene.add(this.mesh);const d=new i.VolumeNodeMaterial;d.steps=n.steps,d.offsetNode=n.offsetNode,d.castShadowNode=N(),d.shadowSide=i.FrontSide,d.colorWrite=!1,d.depthWrite=!1,d.blending=i.CustomBlending,d.blendEquation=i.AddEquation,d.blendSrc=i.ZeroFactor,d.blendDst=i.OneMinusSrcAlphaFactor,d.blendEquationAlpha=i.AddEquation,d.blendSrcAlpha=i.OneFactor,d.blendDstAlpha=i.OneMinusSrcAlphaFactor,this.shadowMesh=new i.Mesh(new i.BoxGeometry(this.#t.size.x,this.#t.size.y,this.#t.size.z),d),this.shadowMesh.name="FireEffect.shadow",this.shadowMesh.position.copy(this.mesh.position),this.shadowMesh.castShadow=!0,this.viewer.scene.add(this.shadowMesh)}#Dt(){this.#Ft(),this.#i=t.pass(this.viewer.scene,this.viewer.camera),this.#i.name="FireEffect Volumetric Pass",this.#i.setLayers(this.#M),this.#i.setResolutionScale(this.#t.renderResolution)}#Pt=()=>{this.#o&&(this.#i?.dispose(),this.#Dt(),this.viewer.renderPipeline.needsUpdateOutputNode=!0,this.viewer.render())};#Xt(){return((s,e)=>{if(this.#Mt(),!this.#i)return e;let n=this.#i;if(this.#t.denoise){const d=it.gaussianBlur(this.#i,this.#t.denoiseStrength,1);this.#N.push(d),n=d}const a=n.rgb,p=t.saturation(a,this.#I),f=t.vec4(p,n.a).mul(.5);let N=e.max(f).add(f);if(this.#t.bloom){const d=st.bloom(N,this.#t.bloomStrength,this.#t.bloomRadius,this.#t.bloomThreshold);this.#N.push(d),N=N.add(d)}return N})}#Mt(){for(const s of this.#N)s.dispose();this.#N=[]}#Nt(){!this.#t.keyLight||this.keyLight||(this.keyLight=new i.SpotLight(16777215,1e3),this.keyLight.name="FireEffect.keyLight",this.keyLight.angle=Math.PI/5,this.keyLight.penumbra=1,this.keyLight.decay=2,this.keyLight.distance=0,this.keyLight.castShadow=!0,this.keyLight.shadow.intensity=.98,this.keyLight.shadow.mapSize.width=1024,this.keyLight.shadow.mapSize.height=1024,this.keyLight.shadow.camera.near=1,this.keyLight.shadow.camera.far=20*(Math.max(this.#t.size.x,this.#t.size.y,this.#t.size.z)/8),this.keyLight.shadow.bias=-.001,this.keyLight.shadow.focus=1,this.keyLight.layers.enable(this.#t.volumeLayer),this.viewer.scene.add(this.keyLight),this.viewer.scene.add(this.keyLight.target))}#Vt(){if(!this.#t.pointLight||this.pointLight)return;const s=t.Fn(([a])=>{const p=t.vec3(0).toVar();return p.assign(t.mix(t.vec3(0,0,0),this.#$,t.smoothstep(t.float(.05),t.float(.35),a))),p.assign(t.mix(p,this.#Q,t.smoothstep(t.float(.35),t.float(.65),a))),p.assign(t.mix(p,this.#J,t.smoothstep(t.float(.65),t.float(1),a))),p}),e=t.Fn(({material:a})=>{const p=a&&a.isVolumeNodeMaterial;return t.float(p?1:0)})(),n=t.Fn(()=>{const a=t.positionWorld,p=this.#x,f=t.vec3(0,this.#bt,0),d=a.sub(p).dot(f).div(f.dot(f)).clamp(0,1),v=p.add(this.#Lt).add(f.mul(d)),m=a.sub(v).length(),T=t.float(1.2),r=t.float(1).div(m.pow(2).add(T.pow(2))),x=a.sub(p).length().pow(2).max(.01).reciprocal(),L=e.equal(1).select(r.div(x),t.float(1)),F=e.equal(1).select(this.#Ct,this.#It),D=this.#c.div(8.34).mul(.5).add(.2).add(this.#zt).clamp(0,1),P=s(D),W=t.hue(t.saturation(P,this.#I),this.#C),q=a.xz.sub(p.xz),_=t.atan(q.y,q.x),j=q.length(),A=this.#Wt,R=t.mx_noise_float(t.vec3(t.cos(_).mul(t.float(1.5).mul(A)),t.sin(_).mul(t.float(1.5).mul(A)),this.#r.mul(.6))).mul(.5).add(.5),U=t.smoothstep(t.float(0),this.#Ot,j),l=t.mix(t.float(1),R,U),o=t.vec3(a.x.mul(t.float(.6).mul(A)),this.#r.mul(1.2),a.z.mul(t.float(.6).mul(A))),h=t.mx_noise_float(o).mul(.5).add(.5),y=t.vec3(a.x.mul(t.float(1.5).mul(A)),this.#r.mul(2.5),a.z.mul(t.float(1.5).mul(A))),u=t.mx_noise_float(y).mul(.5).add(.5),S=h.mul(.65).add(u.mul(.35)).mul(l.mul(.5).add(.5)),g=m.div(this.#jt).clamp(0,1),w=t.mix(S,t.float(1),g),V=t.float(1).sub(m.div(this.#Gt)).clamp(0,1).mul(w).clamp(0,1),E=s(V),k=t.hue(t.saturation(E,this.#I),this.#C),C=e.equal(1).select(W,k),Z=this.#c.div(8.34).max(0).pow(4),X=this.#A.div(11.02).max(0),O=t.smoothstep(t.float(0),t.float(3),this.#r),H=C.mul(Z).mul(X).mul(this.#k).mul(F).mul(this.#St).mul(O),Y=m.div(this.#Bt).clamp(0,1),K=t.mix(this.#qt,this.#Rt,t.smoothstep(t.float(0),t.float(1),Y)),J=e.equal(1).select(K,t.float(1));return H.mul(L).mul(J)})();this.pointLight=new i.PointLight(16777215,this.#t.pointLightIntensity,this.#t.pointLightDistance,2),this.pointLight.name="FireEffect.pointLight",this.pointLight.colorNode=n,this.pointLight.layers.enable(this.#t.volumeLayer),this.viewer.scene.add(this.pointLight)}#Et=({delta:s})=>{if(!this.#o)return;const e=this.viewer.renderer;if(this.#P||(e.compute(this.#e(this.#B)),this.#P=!0),this.#Yt(s),this.#At(this.#y),this.#t.simulate&&this.#t.simSpeed>0){const n=.008333333333333333*this.#t.simSpeed;for(this.#l+=Math.min(s,1/30)*this.#t.simSpeed,this.#l=Math.min(this.#l,n*8),this.#n.value=n,this.#E.value=this.#t.turbulence/Math.sqrt(this.#t.simSpeed),this.#ct.value=this.#t.smokeLifespan>=100?0:1/this.#t.smokeLifespan,this.#ut.value=1/this.#t.fireLifespan;this.#l>=n;){this.#y+=n,this.#At(this.#y),e.compute(this.#e(this.#G)),e.compute(this.#e(this.#W));for(let a=0;a<this.#t.pressureIterations;a++)e.compute(this.#e(a%2===0?this.#j:this.#O));e.compute(this.#e(this.#_)),e.compute(this.#e(this.#U)),e.compute(this.#e(this.#Z)),this.#Kt(),this.#l-=n}}if(this.pointLight){const n=this.#c.value/8.34,a=this.#A.value/11.02,p=this.#k.value/5.63,f=Math.sqrt(Math.max(.01,n*a*p)),N=ut(Math.min(Math.max(this.#y/3,0),1));this.pointLight.position.copy(this.#x.value),this.pointLight.distance=Math.max(.01,this.#t.pointLightDistance*Math.max(.2,f)*N),this.pointLight.intensity=this.#t.pointLightIntensity}};#Yt(s){const e=this.emitter;e.updateMatrixWorld(),this.#nt.value.copy(e.matrixWorld),e.getWorldPosition(this.#m),this.#q.set(0,0,0),s>0&&this.#q.subVectors(this.#m,this.#d).multiplyScalar(1/s),this.#X.value=s>0?this.#m.distanceTo(this.#d)/s:0,this.#rt.value.copy(this.#q),this.#x.value.copy(this.#m),this.#d.copy(this.#m)}#At(s){this.#r.value=s%1e3;const e=this.#u.noise(0,s*2.5,0);this.#bt.value=3.5+e*.8;const n=this.#u.noise(s*3.5,0,0)*.4,a=this.#u.noise(0,0,s*3.5)*.4;this.#Lt.value.set(n,0,a);const p=this.#u.noise(0,s*.8,0),f=this.#u.noise(0,s*15,0);this.#St.value=p*.12+f*.06+.82,this.#zt.value=this.#u.noise(s*5,s*5,0)*.08}#Kt(){const s=this.#e(this.#v),e=this.#e(this.#D),n=s.value;s.value=e.value,e.value=n}#st(){this.mesh&&(this.viewer.scene.remove(this.mesh),this.mesh.geometry.dispose(),this.mesh.material.dispose(),this.mesh=null),this.shadowMesh&&(this.viewer.scene.remove(this.shadowMesh),this.shadowMesh.geometry.dispose(),this.shadowMesh.material.dispose(),this.shadowMesh=null),this.keyLight&&(this.viewer.scene.remove(this.keyLight.target),this.viewer.scene.remove(this.keyLight),this.keyLight.dispose(),this.keyLight=null),this.pointLight&&(this.viewer.scene.remove(this.pointLight),this.pointLight.dispose(),this.pointLight=null),this.#i?.dispose(),this.#i=null,this.#f?.dispose(),this.#b?.dispose(),this.#L?.dispose(),this.#S?.dispose(),this.#z?.dispose(),this.#T?.dispose(),this.#F?.dispose(),this.#h?.dispose(),this.#f=null,this.#b=null,this.#L=null,this.#S=null,this.#z=null,this.#T=null,this.#F=null,this.#h=null,this.#v=null,this.#D=null,this.#B=null,this.#G=null,this.#W=null,this.#j=null,this.#O=null,this.#_=null,this.#U=null,this.#Z=null,this.#Mt()}#e(s){if(s===null)throw new Error("FireEffect: resource is not initialized.");return s}}function ut(c){return c*c*(3-2*c)}exports.FireEffect=lt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("three/webgpu"),t=require("three/tsl"),st=require("three/addons/tsl/display/BloomNode.js"),it=require("three/addons/tsl/display/GaussianBlurNode.js"),ot=require("three/addons/math/ImprovedNoise.js"),nt=require("three/addons/geometries/TeapotGeometry.js"),B=require("three/addons/tsl/math/curlNoise.js"),rt={x:100,y:100,z:200},$=new i.Vector3(12,12,24),ht=new i.Vector3;function at(c){const s=Math.max(2,Math.floor(Number.isFinite(c)?c:2));return s%2===0?s:s+1}function Q(c={},s){const e=s??{position:ht.clone(),size:$.clone(),gridSize:{...rt},volumeLayer:10,emitterGeometry:null,emitter:null,emitterRadius:1,simulate:!0,simSpeed:1.2,pressureIterations:2,raymarchSteps:16,renderResolution:.5,denoise:!0,denoiseStrength:.5,bloom:!0,bloomStrength:.1,bloomRadius:1,bloomThreshold:.5,smokeLifespan:3.5,smokeIntensity:1,smokeColor:16777215,fireLifespan:1.3,turbulence:3.2,turbulenceDecay:.1,turbulenceFrequency:10,buoyancy:3,velocityDamping:.25,emitDensity:7,emitTemperature:5.5,motionBoost:.25,windStrength:6.5,fireIntensity:40,glowSpread:5,fireHue:0,saturation:1.1,fireStartColor:16770700,fireMidColor:16741125,fireEndColor:16711680,phaseAsymmetry:0,powderStrength:.59,multiScattering:1,shadowAbsorption:2,shadowAmbient:.5,keyLight:!0,pointLight:!0,pointLightIntensity:1,pointLightDistance:40};return{...e,...c,position:c.position?.clone()??e.position.clone(),size:c.size?.clone()??e.size.clone(),gridSize:{x:Math.max(2,Math.floor(c.gridSize?.x??e.gridSize.x)),y:Math.max(2,Math.floor(c.gridSize?.y??e.gridSize.y)),z:Math.max(2,Math.floor(c.gridSize?.z??e.gridSize.z))},volumeLayer:Math.max(0,Math.min(31,Math.floor(c.volumeLayer??e.volumeLayer))),emitter:c.emitter===void 0?e.emitter:c.emitter,emitterGeometry:c.emitterGeometry===void 0?e.emitterGeometry:c.emitterGeometry,emitterRadius:Math.max(.01,c.emitterRadius??e.emitterRadius),pressureIterations:at(c.pressureIterations??e.pressureIterations),raymarchSteps:Math.max(4,Math.floor(c.raymarchSteps??e.raymarchSteps)),renderResolution:Math.min(1,Math.max(.1,c.renderResolution??e.renderResolution)),smokeIntensity:Math.max(0,c.smokeIntensity??e.smokeIntensity)}}function I(c,s){const e=new i.Storage3DTexture(s.x,s.y,s.z);return e.name=c,e.format=i.RGBAFormat,e.type=i.HalfFloatType,e.minFilter=i.LinearFilter,e.magFilter=i.LinearFilter,e.wrapS=i.ClampToEdgeWrapping,e.wrapT=i.ClampToEdgeWrapping,e.wrapR=i.ClampToEdgeWrapping,e}function G(c,s,e){return t.textureStore(c,s,e).toWriteOnly()}class lt{viewer;mesh=null;shadowMesh=null;keyLight=null;pointLight=null;#o=!1;#t;#it="demand";#ot=new i.Object3D;#m=new i.Vector3;#q=new i.Vector3;#d=new i.Vector3;#a=null;#p=null;#R=0;#f=null;#b=null;#L=null;#S=null;#z=null;#T=null;#F=null;#h=null;#v=null;#D=null;#P=!1;#B=null;#G=null;#W=null;#j=null;#O=null;#_=null;#U=null;#Z=null;#i=null;#M=new i.Layers;#H;#N=[];#y=0;#l=0;#u=new ot.ImprovedNoise;#n=t.uniform(.016);#r=t.uniform(0);#s=t.uniform($.clone());#g=t.uniform(new i.Vector3);#nt=t.uniform(new i.Matrix4);#X=t.uniform(0);#rt=t.uniform(new i.Vector3);#x=t.uniform(new i.Vector3);#Y=t.uniform(1);#V=t.uniform(new i.Vector3);#ht=t.uniform(3);#kt=t.uniform(.15);#E=t.uniform(3.2);#at=t.uniform(.1);#w=t.uniform(10);#lt=t.uniform(.25);#ut=t.uniform(1);#ct=t.uniform(.4);#A=t.uniform(7);#c=t.uniform(5.5);#mt=t.uniform(.25);#dt=t.uniform(6.5);#k=t.uniform(40);#pt=t.uniform(5);#K=t.uniform(2);#ft=t.uniform(.5);#J=t.uniform(new i.Color(16770700));#Q=t.uniform(new i.Color(16741125));#$=t.uniform(new i.Color(16711680));#vt=t.uniform(1);#yt=t.uniform(new i.Color(16777215));#C=t.uniform(0);#I=t.uniform(1.1);#gt=t.uniform(0);#xt=t.uniform(.59);#wt=t.uniform(1);#Ct=t.uniform(2);#It=t.uniform(10);#qt=t.uniform(10);#Rt=t.uniform(15);#Bt=t.uniform(10);#Gt=t.uniform(20);#Wt=t.uniform(.2);#jt=t.uniform(17);#Ot=t.uniform(3.25);#bt=t.uniform(3.5);#Lt=t.uniform(new i.Vector3);#St=t.uniform(1);#zt=t.uniform(0);constructor(s,e={}){this.viewer=s,this.#t=Q(e),this.#Tt(),this.#H=this.#Xt()}get enabled(){return this.#o}get emitter(){return this.#t.emitter??this.#ot}enable(s={}){return this.#o?this.update(s):(this.#t=Q(s,this.#t),this.#et(),this.#tt(),this.#it=this.viewer.frameloop,this.viewer.frameloop="always",this.viewer.renderPipeline.addOutputEffect(this.#H),this.viewer.addEventListener("beforeRender",this.#Et),this.viewer.addEventListener("cameraChange",this.#Pt),this.#o=!0,this.viewer.invalidate(),this)}update(s={}){const e=this.#t;this.#t=Q(s,this.#t);const n=!e.size.equals(this.#t.size),a=e.gridSize.x!==this.#t.gridSize.x||e.gridSize.y!==this.#t.gridSize.y||e.gridSize.z!==this.#t.gridSize.z||e.emitterGeometry!==this.#t.emitterGeometry||e.volumeLayer!==this.#t.volumeLayer||e.raymarchSteps!==this.#t.raymarchSteps;return this.#o&&a&&(this.#st(),this.#et()),this.#o&&n&&!a&&(this.#P=!1),this.#tt(),this.viewer.renderPipeline.needsUpdateOutputNode=!0,this.viewer.invalidate(),this}setPosition(s){return this.update({position:s})}setEmitter(s,e=this.#t.emitterGeometry){return this.update({emitter:s,emitterGeometry:e})}reset(){return this.#o?(this.#st(),this.#et(),this.#tt(),this.viewer.invalidate(),this):this}disable(){return this.#o?(this.viewer.removeEventListener("beforeRender",this.#Et),this.viewer.removeEventListener("cameraChange",this.#Pt),this.viewer.renderPipeline.removeOutputEffect(this.#H),this.viewer.frameloop=this.#it,this.#o=!1,this.#st(),this.viewer.invalidate(),this):this}dispose(){return this.disable(),this.#a?.dispose(),this.#a=null,this}#tt(){const{position:s,size:e}=this.#t,n=new i.Vector3(s.x,s.y+e.y*.5,s.z);this.#Tt(),this.#g.value.copy(n),this.#s.value.copy(e),this.#V.value.set(s.x-3*(e.x/8),s.y+6*(e.y/8)+e.y*.5+.4,s.z+3*(e.z/8)),this.#A.value=this.#t.emitDensity,this.#c.value=this.#t.emitTemperature,this.#mt.value=this.#t.motionBoost,this.#dt.value=this.#t.windStrength,this.#Y.value=this.#t.emitterRadius,this.#ht.value=this.#t.buoyancy,this.#lt.value=this.#t.velocityDamping,this.#at.value=this.#t.turbulenceDecay,this.#w.value=this.#t.turbulenceFrequency,this.#k.value=this.#t.fireIntensity,this.#pt.value=this.#t.glowSpread,this.#K.value=this.#t.shadowAbsorption,this.#ft.value=this.#t.shadowAmbient,this.#gt.value=this.#t.phaseAsymmetry,this.#xt.value=this.#t.powderStrength,this.#wt.value=this.#t.multiScattering,this.#I.value=this.#t.saturation,this.#J.value.set(this.#t.fireStartColor),this.#Q.value.set(this.#t.fireMidColor),this.#$.value.set(this.#t.fireEndColor),this.#vt.value=this.#t.smokeIntensity,this.#yt.value.set(this.#t.smokeColor),this.#C.value=this.#t.fireHue*Math.PI/180,this.mesh&&(this.mesh.position.copy(n),this.mesh.geometry.dispose(),this.mesh.geometry=new i.BoxGeometry(e.x,e.y,e.z),this.mesh.material.steps=this.#t.raymarchSteps,this.mesh.layers.disableAll(),this.mesh.layers.enable(this.#t.volumeLayer)),this.shadowMesh&&(this.shadowMesh.position.copy(n),this.shadowMesh.geometry.dispose(),this.shadowMesh.geometry=new i.BoxGeometry(e.x,e.y,e.z),this.shadowMesh.material.steps=this.#t.raymarchSteps),this.#i&&(this.#Ft(),this.#i.setLayers(this.#M),this.#i.setResolutionScale(this.#t.renderResolution)),this.#o&&this.#t.keyLight&&!this.keyLight&&this.#Nt(),this.keyLight&&(this.keyLight.visible=this.#t.keyLight,this.keyLight.position.copy(this.#V.value),this.keyLight.layers.enable(this.#t.volumeLayer),this.keyLight.target.position.set(s.x+1,s.y,s.z)),this.#o&&this.#t.pointLight&&!this.pointLight&&this.#Vt(),this.pointLight&&(this.pointLight.visible=this.#t.pointLight,this.pointLight.intensity=this.#t.pointLightIntensity,this.pointLight.layers.enable(this.#t.volumeLayer))}#Tt(){this.#t.emitter||this.#ot.position.copy(this.#t.position)}#Ft(){this.#M.disableAll(),this.#M.enable(this.#t.volumeLayer)}#et(){this.#y=0,this.#l=0,this.#P=!1,this.#_t(),this.#Ut(),this.#Zt(),this.#Ht(),this.#Nt(),this.#Dt(),this.#Vt(),this.emitter.updateMatrixWorld(),this.emitter.getWorldPosition(this.#d),this.#x.value.copy(this.#d)}#_t(){const s=this.#t.gridSize;this.#f=I("fire velocity A",s),this.#b=I("fire velocity B",s),this.#L=I("fire dye A",s),this.#S=I("fire dye B",s),this.#z=I("fire divergence",s),this.#T=I("fire pressure A",s),this.#F=I("fire pressure B",s),this.#h=I("fire curl noise",s),this.#h.wrapS=i.RepeatWrapping,this.#h.wrapT=i.RepeatWrapping,this.#h.wrapR=i.RepeatWrapping,this.#v=t.texture3D(this.#L),this.#D=t.storageTexture(this.#S).toWriteOnly()}#Ut(){this.#a?.dispose(),this.#a=null,this.#p=this.#t.emitterGeometry,this.#p||(this.#a=new nt.TeapotGeometry(.8,28),this.#p=this.#a);const s=this.#p.getAttribute("position");if(!s)throw new Error("FireEffect: emitterGeometry requires a position attribute.");this.#R=s.count}#Zt(){const s=this.#e(this.#f),e=this.#e(this.#b),n=this.#e(this.#v),a=this.#e(this.#D),p=this.#e(this.#z),f=this.#e(this.#T),N=this.#e(this.#F),d=this.#e(this.#h),v=t.texture3D(d),m=this.#e(this.#p).getAttribute("position"),T=t.storage(m,"vec3",this.#R).toReadOnly(),r=this.#t.gridSize,b=r.x*r.y*r.z,x=1/r.x,L=1/r.y,F=1/r.z,D=l=>{const o=l.mod(r.x),h=l.div(r.x).mod(r.y),y=l.div(r.x*r.y);return t.uvec3(o,h,y)},P=l=>t.vec3(l).add(.5).div(t.vec3(r.x,r.y,r.z)),W=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=this.#w,y=t.float(.1).div(h),u=t.vec3(y,0,0),z=t.vec3(0,y,0),S=t.vec3(0,0,y),g=o.mul(t.vec3(this.#s.x.div(this.#s.y),1,this.#s.z.div(this.#s.y))),w=B.snoiseVec3(g.sub(u).mul(h)),M=B.snoiseVec3(g.add(u).mul(h)),V=B.snoiseVec3(g.sub(z).mul(h)),E=B.snoiseVec3(g.add(z).mul(h)),k=B.snoiseVec3(g.sub(S).mul(h)),C=B.snoiseVec3(g.add(S).mul(h)),Z=E.z.sub(V.z).sub(C.y).add(k.y),X=C.x.sub(k.x).sub(M.z).add(w.z),O=M.y.sub(w.y).sub(E.x).add(V.x);G(d,l,t.vec4(t.vec3(Z,X,O).mul(5),0))})().compute(b).setName("fire.computeCurlNoise"),q=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(s,o,0).xyz,y=o.sub(h.div(this.#s).mul(this.#n)),u=t.texture3D(s,y,0).xyz.toVar(),z=n.sample(o).level(t.float(0)),S=z.r,g=z.g,w=z.b,M=g.mul(this.#ht).sub(S.mul(this.#kt)).mul(this.#s.y);u.addAssign(t.vec3(0,M,0).mul(this.#n));const V=o.add(t.vec3(0,w.negate().mul(.6),w.mul(.13)).div(this.#w)),E=w.mul(this.#at.negate()).exp(),k=v.sample(V).level(t.float(0)).xyz.mul(this.#E).mul(g).mul(E),C=o.mul(.5).add(t.vec3(0,this.#r.mul(.25),this.#r.mul(.06)).div(this.#w)),Z=v.sample(C).level(t.float(0)).xyz.mul(this.#E.mul(.2)).mul(S);u.addAssign(k.add(Z).mul(this.#s.y).mul(this.#n)),u.mulAssign(t.max(t.float(1).sub(this.#lt.mul(this.#n)),t.float(0)));const O=o.sub(.5).mul(this.#s).add(this.#g).distance(this.#x);t.If(O.lessThan(this.#Y),()=>{const K=t.smoothstep(t.float(0),t.float(1),t.float(1).sub(O.div(this.#Y))),J=o.add(t.vec3(0,this.#r.mul(.5),0).div(this.#w)),tt=v.sample(J).level(t.float(0)).xyz.mul(this.#E).mul(this.#X),et=this.#rt.mul(this.#dt).add(tt).mul(this.#n).mul(K);u.addAssign(et)});const H=t.min(o,t.vec3(1).sub(o)),Y=t.smoothstep(t.float(0),t.float(.08),t.min(H.x,t.min(H.y,H.z)));u.mulAssign(Y),G(e,l,t.vec4(u,0))})().compute(b).setName("fire.advectVelocity"),_=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(e,o.add(t.vec3(x,0,0)),0).x,y=t.texture3D(e,o.sub(t.vec3(x,0,0)),0).x,u=t.texture3D(e,o.add(t.vec3(0,L,0)),0).y,z=t.texture3D(e,o.sub(t.vec3(0,L,0)),0).y,S=t.texture3D(e,o.add(t.vec3(0,0,F)),0).z,g=t.texture3D(e,o.sub(t.vec3(0,0,F)),0).z,w=h.sub(y).add(u.sub(z)).add(S.sub(g)).mul(.5);G(p,l,t.vec4(w,0,0,0))})().compute(b).setName("fire.divergence"),j=(l,o,h)=>t.Fn(()=>{const y=D(t.instanceIndex),u=P(y),z=t.texture3D(l,u.add(t.vec3(x,0,0)),0).x,S=t.texture3D(l,u.sub(t.vec3(x,0,0)),0).x,g=t.texture3D(l,u.add(t.vec3(0,L,0)),0).x,w=t.texture3D(l,u.sub(t.vec3(0,L,0)),0).x,M=t.texture3D(l,u.add(t.vec3(0,0,F)),0).x,V=t.texture3D(l,u.sub(t.vec3(0,0,F)),0).x,E=t.texture3D(p,u,0).x,k=z.add(S).add(g).add(w).add(M).add(V).sub(E).div(6);G(o,y,t.vec4(k,0,0,0))})().compute(b).setName(h),A=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(f,o.add(t.vec3(x,0,0)),0).x,y=t.texture3D(f,o.sub(t.vec3(x,0,0)),0).x,u=t.texture3D(f,o.add(t.vec3(0,L,0)),0).x,z=t.texture3D(f,o.sub(t.vec3(0,L,0)),0).x,S=t.texture3D(f,o.add(t.vec3(0,0,F)),0).x,g=t.texture3D(f,o.sub(t.vec3(0,0,F)),0).x,w=t.vec3(h.sub(y),u.sub(z),S.sub(g)).mul(.5),M=t.texture3D(e,o,0).xyz.sub(w);G(s,l,t.vec4(M,0))})().compute(b).setName("fire.project"),R=t.Fn(()=>{const l=D(t.instanceIndex),o=P(l),h=t.texture3D(s,o,0).xyz,y=o.sub(h.div(this.#s).mul(this.#n)),u=n.sample(y).level(t.float(0)),z=u.r.mul(t.max(t.float(1).sub(this.#ct.mul(this.#n)),t.float(0))).toVar(),S=u.g.mul(t.max(t.float(1).sub(this.#ut.mul(this.#n)),t.float(0))).toVar(),g=t.vec3(r.x,r.y,r.z),w=t.floor(y.mul(g)).add(.5).div(g),M=n.sample(w).level(t.float(0)).b.add(this.#n).toVar();S.assign(S.clamp(0,12)),t.If(z.lessThanEqual(.01),()=>{M.assign(0)}),G(a,l,t.vec4(z,S,M,1))})().compute(b).setName("fire.advectDye"),U=t.Fn(()=>{const l=T.element(t.instanceIndex),h=this.#nt.mul(t.vec4(l,1)).xyz.sub(this.#g).div(this.#s).add(.5);t.If(h.x.greaterThanEqual(0).and(h.x.lessThanEqual(1)).and(h.y.greaterThanEqual(0)).and(h.y.lessThanEqual(1)).and(h.z.greaterThanEqual(0)).and(h.z.lessThanEqual(1)),()=>{const y=t.uvec3(h.mul(t.vec3(r.x,r.y,r.z))),u=t.mx_noise_float(l.mul(9).add(t.vec3(0,this.#r.negate().mul(2.5),this.#r.mul(.7)))).mul(.5).add(.5),z=this.#c.greaterThan(0).select(t.float(1),t.float(0)),S=this.#X.mul(this.#mt),g=z.add(S),w=this.#A.mul(t.float(1/120)).mul(u.mul(.85).add(.15)).mul(g);t.If(w.greaterThan(0),()=>{const M=this.#c.mul(t.float(.008333333333333333)).mul(u.mul(.85).add(.15)).mul(g),V=n.sample(h).level(t.float(0)),E=V.r.add(w),k=V.g.add(M).clamp(0,12),C=t.mix(V.b,t.float(0),w.div(t.max(E,t.float(.001))));G(a,y,t.vec4(E,k,C,1))})})})().compute(this.#R).setName("fire.emit");this.#B=W,this.#G=q,this.#W=_,this.#j=j(f,N,"fire.jacobiAB"),this.#O=j(N,f,"fire.jacobiBA"),this.#_=A,this.#U=R,this.#Z=U}#Ht(){const s=this.#e(this.#v),e=this.#e(this.#f),n=new i.VolumeNodeMaterial;n.steps=this.#t.raymarchSteps,n.transparent=!0,n.blending=i.AdditiveBlending,n.depthWrite=!1,n.offsetNode=t.fract(t.interleavedGradientNoise(t.screenCoordinate).add(t.float(t.frameId).mul(.618033988749895)));const a=t.Fn(([v])=>{const m=t.vec3(0).toVar();return m.assign(t.mix(t.vec3(0,0,0),this.#$,t.smoothstep(t.float(.05),t.float(.35),v))),m.assign(t.mix(m,this.#Q,t.smoothstep(t.float(.35),t.float(.65),v))),m.assign(t.mix(m,this.#J,t.smoothstep(t.float(.65),t.float(1),v))),m}),p=t.Fn(([v,m])=>{const T=m.mul(m),r=t.float(1).add(T).sub(t.float(2).mul(m).mul(v));return t.float(1).sub(T).div(r.pow(1.5)).mul(.079577)}),f=({positionRay:v})=>{const m=v.sub(this.#g).div(this.#s).add(.5).toVar(),T=t.texture3D(e,m,0).xyz.div(this.#s).mul(.15),r=m.add(T).clamp(0,1).toVar(),b=s.sample(r).level(t.float(0)),x=b.r.toVar(),L=b.b,F=b.g,D=B.snoise(v.mul(5.5).add(t.vec3(0,L.mul(.8).negate(),0)));x.mulAssign(D.mul(.35).add(.85));const P=t.min(r,t.vec3(1).sub(r));return x.mulAssign(t.smoothstep(t.float(0),t.float(.06),t.min(P.x,t.min(P.y,P.z)))),{density:x,temperature:F}};n.scatteringNode=t.Fn(({positionRay:v})=>{const{density:m}=f({positionRay:v}),T=this.#V.sub(v).normalize(),r=t.float(0).toVar(),b=.35;for(let R=0;R<2;R++){const U=(R+.5)*b,o=v.add(T.mul(U)).sub(this.#g).div(this.#s).add(.5),h=t.min(o,t.vec3(1).sub(o)),y=t.smoothstep(t.float(0),t.float(.06),t.min(h.x,t.min(h.y,h.z)));r.addAssign(s.sample(o).level(t.float(0)).r.mul(y))}const x=r.mul(b).mul(this.#K),L=x.negate().exp(),F=x.mul(.25).negate().exp().mul(.5),D=t.mix(L,L.add(F),this.#wt),P=t.float(1).sub(x.mul(2).negate().exp()),q=t.mix(D,D.mul(P),this.#xt).add(this.#ft).clamp(0,1),j=t.cameraPosition.sub(v).normalize().dot(T).clamp(-1,1),A=p(j,this.#gt);return this.#yt.mul(m).mul(q).mul(A.mul(12.56637)).mul(this.#vt)}),n.scatteringEmissiveNode=t.Fn(({positionRay:v})=>{const{density:m,temperature:T}=f({positionRay:v}),r=t.float(6).sub(this.#pt),b=a(T.clamp(0,1)).mul(T.pow(r)).mul(this.#k),x=t.hue(b,this.#C),L=v.sub(this.#V).length(),F=t.float(400).div(L.pow(2));return x.mul(m.add(.15)).mul(F)});const N=t.Fn(()=>{const v=t.positionWorld,m=t.positionWorld.sub(t.cameraPosition).normalize(),T=this.#t.raymarchSteps,r=this.#s.length().div(T).toVar(),b=m.toVar(),x=t.float(0).toVar(),L=t.float(1).toVar();return t.Loop(T,()=>{const F=v.add(b.mul(x)),{density:D}=f({positionRay:F}),W=D.mul(this.#K).mul(.01).negate().mul(r).exp();L.mulAssign(W),x.addAssign(r)}),L.greaterThanEqual(.99).discard(),t.vec4(t.vec3(0),L.oneMinus().mul(5))});this.mesh=new i.Mesh(new i.BoxGeometry(this.#t.size.x,this.#t.size.y,this.#t.size.z),n),this.mesh.name="FireEffect.volume",this.mesh.frustumCulled=!1,this.mesh.receiveShadow=!0,this.mesh.layers.disableAll(),this.mesh.layers.enable(this.#t.volumeLayer),this.viewer.scene.add(this.mesh);const d=new i.VolumeNodeMaterial;d.steps=n.steps,d.offsetNode=n.offsetNode,d.castShadowNode=N(),d.shadowSide=i.FrontSide,d.colorWrite=!1,d.depthWrite=!1,d.blending=i.CustomBlending,d.blendEquation=i.AddEquation,d.blendSrc=i.ZeroFactor,d.blendDst=i.OneMinusSrcAlphaFactor,d.blendEquationAlpha=i.AddEquation,d.blendSrcAlpha=i.OneFactor,d.blendDstAlpha=i.OneMinusSrcAlphaFactor,this.shadowMesh=new i.Mesh(new i.BoxGeometry(this.#t.size.x,this.#t.size.y,this.#t.size.z),d),this.shadowMesh.name="FireEffect.shadow",this.shadowMesh.position.copy(this.mesh.position),this.shadowMesh.castShadow=!0,this.viewer.scene.add(this.shadowMesh)}#Dt(){this.#Ft(),this.#i=t.pass(this.viewer.scene,this.viewer.camera),this.#i.name="FireEffect Volumetric Pass",this.#i.setLayers(this.#M),this.#i.setResolutionScale(this.#t.renderResolution)}#Pt=()=>{this.#o&&(this.#i?.dispose(),this.#Dt(),this.viewer.renderPipeline.needsUpdateOutputNode=!0,this.viewer.invalidate())};#Xt(){return((s,e)=>{if(this.#Mt(),!this.#i)return e;let n=this.#i;if(this.#t.denoise){const d=it.gaussianBlur(this.#i,this.#t.denoiseStrength,1);this.#N.push(d),n=d}const a=n.rgb,p=t.saturation(a,this.#I),f=t.vec4(p,n.a).mul(.5);let N=e.max(f).add(f);if(this.#t.bloom){const d=st.bloom(N,this.#t.bloomStrength,this.#t.bloomRadius,this.#t.bloomThreshold);this.#N.push(d),N=N.add(d)}return N})}#Mt(){for(const s of this.#N)s.dispose();this.#N=[]}#Nt(){!this.#t.keyLight||this.keyLight||(this.keyLight=new i.SpotLight(16777215,1e3),this.keyLight.name="FireEffect.keyLight",this.keyLight.angle=Math.PI/5,this.keyLight.penumbra=1,this.keyLight.decay=2,this.keyLight.distance=0,this.keyLight.castShadow=!0,this.keyLight.shadow.intensity=.98,this.keyLight.shadow.mapSize.width=1024,this.keyLight.shadow.mapSize.height=1024,this.keyLight.shadow.camera.near=1,this.keyLight.shadow.camera.far=20*(Math.max(this.#t.size.x,this.#t.size.y,this.#t.size.z)/8),this.keyLight.shadow.bias=-.001,this.keyLight.shadow.focus=1,this.keyLight.layers.enable(this.#t.volumeLayer),this.viewer.scene.add(this.keyLight),this.viewer.scene.add(this.keyLight.target))}#Vt(){if(!this.#t.pointLight||this.pointLight)return;const s=t.Fn(([a])=>{const p=t.vec3(0).toVar();return p.assign(t.mix(t.vec3(0,0,0),this.#$,t.smoothstep(t.float(.05),t.float(.35),a))),p.assign(t.mix(p,this.#Q,t.smoothstep(t.float(.35),t.float(.65),a))),p.assign(t.mix(p,this.#J,t.smoothstep(t.float(.65),t.float(1),a))),p}),e=t.Fn(({material:a})=>{const p=a&&a.isVolumeNodeMaterial;return t.float(p?1:0)})(),n=t.Fn(()=>{const a=t.positionWorld,p=this.#x,f=t.vec3(0,this.#bt,0),d=a.sub(p).dot(f).div(f.dot(f)).clamp(0,1),v=p.add(this.#Lt).add(f.mul(d)),m=a.sub(v).length(),T=t.float(1.2),r=t.float(1).div(m.pow(2).add(T.pow(2))),x=a.sub(p).length().pow(2).max(.01).reciprocal(),L=e.equal(1).select(r.div(x),t.float(1)),F=e.equal(1).select(this.#Ct,this.#It),D=this.#c.div(8.34).mul(.5).add(.2).add(this.#zt).clamp(0,1),P=s(D),W=t.hue(t.saturation(P,this.#I),this.#C),q=a.xz.sub(p.xz),_=t.atan(q.y,q.x),j=q.length(),A=this.#Wt,R=t.mx_noise_float(t.vec3(t.cos(_).mul(t.float(1.5).mul(A)),t.sin(_).mul(t.float(1.5).mul(A)),this.#r.mul(.6))).mul(.5).add(.5),U=t.smoothstep(t.float(0),this.#Ot,j),l=t.mix(t.float(1),R,U),o=t.vec3(a.x.mul(t.float(.6).mul(A)),this.#r.mul(1.2),a.z.mul(t.float(.6).mul(A))),h=t.mx_noise_float(o).mul(.5).add(.5),y=t.vec3(a.x.mul(t.float(1.5).mul(A)),this.#r.mul(2.5),a.z.mul(t.float(1.5).mul(A))),u=t.mx_noise_float(y).mul(.5).add(.5),S=h.mul(.65).add(u.mul(.35)).mul(l.mul(.5).add(.5)),g=m.div(this.#jt).clamp(0,1),w=t.mix(S,t.float(1),g),V=t.float(1).sub(m.div(this.#Gt)).clamp(0,1).mul(w).clamp(0,1),E=s(V),k=t.hue(t.saturation(E,this.#I),this.#C),C=e.equal(1).select(W,k),Z=this.#c.div(8.34).max(0).pow(4),X=this.#A.div(11.02).max(0),O=t.smoothstep(t.float(0),t.float(3),this.#r),H=C.mul(Z).mul(X).mul(this.#k).mul(F).mul(this.#St).mul(O),Y=m.div(this.#Bt).clamp(0,1),K=t.mix(this.#qt,this.#Rt,t.smoothstep(t.float(0),t.float(1),Y)),J=e.equal(1).select(K,t.float(1));return H.mul(L).mul(J)})();this.pointLight=new i.PointLight(16777215,this.#t.pointLightIntensity,this.#t.pointLightDistance,2),this.pointLight.name="FireEffect.pointLight",this.pointLight.colorNode=n,this.pointLight.layers.enable(this.#t.volumeLayer),this.viewer.scene.add(this.pointLight)}#Et=({delta:s})=>{if(!this.#o)return;const e=this.viewer.renderer;if(this.#P||(e.compute(this.#e(this.#B)),this.#P=!0),this.#Yt(s),this.#At(this.#y),this.#t.simulate&&this.#t.simSpeed>0){const n=.008333333333333333*this.#t.simSpeed;for(this.#l+=Math.min(s,1/30)*this.#t.simSpeed,this.#l=Math.min(this.#l,n*8),this.#n.value=n,this.#E.value=this.#t.turbulence/Math.sqrt(this.#t.simSpeed),this.#ct.value=this.#t.smokeLifespan>=100?0:1/this.#t.smokeLifespan,this.#ut.value=1/this.#t.fireLifespan;this.#l>=n;){this.#y+=n,this.#At(this.#y),e.compute(this.#e(this.#G)),e.compute(this.#e(this.#W));for(let a=0;a<this.#t.pressureIterations;a++)e.compute(this.#e(a%2===0?this.#j:this.#O));e.compute(this.#e(this.#_)),e.compute(this.#e(this.#U)),e.compute(this.#e(this.#Z)),this.#Kt(),this.#l-=n}}if(this.pointLight){const n=this.#c.value/8.34,a=this.#A.value/11.02,p=this.#k.value/5.63,f=Math.sqrt(Math.max(.01,n*a*p)),N=ut(Math.min(Math.max(this.#y/3,0),1));this.pointLight.position.copy(this.#x.value),this.pointLight.distance=Math.max(.01,this.#t.pointLightDistance*Math.max(.2,f)*N),this.pointLight.intensity=this.#t.pointLightIntensity}};#Yt(s){const e=this.emitter;e.updateMatrixWorld(),this.#nt.value.copy(e.matrixWorld),e.getWorldPosition(this.#m),this.#q.set(0,0,0),s>0&&this.#q.subVectors(this.#m,this.#d).multiplyScalar(1/s),this.#X.value=s>0?this.#m.distanceTo(this.#d)/s:0,this.#rt.value.copy(this.#q),this.#x.value.copy(this.#m),this.#d.copy(this.#m)}#At(s){this.#r.value=s%1e3;const e=this.#u.noise(0,s*2.5,0);this.#bt.value=3.5+e*.8;const n=this.#u.noise(s*3.5,0,0)*.4,a=this.#u.noise(0,0,s*3.5)*.4;this.#Lt.value.set(n,0,a);const p=this.#u.noise(0,s*.8,0),f=this.#u.noise(0,s*15,0);this.#St.value=p*.12+f*.06+.82,this.#zt.value=this.#u.noise(s*5,s*5,0)*.08}#Kt(){const s=this.#e(this.#v),e=this.#e(this.#D),n=s.value;s.value=e.value,e.value=n}#st(){this.mesh&&(this.viewer.scene.remove(this.mesh),this.mesh.geometry.dispose(),this.mesh.material.dispose(),this.mesh=null),this.shadowMesh&&(this.viewer.scene.remove(this.shadowMesh),this.shadowMesh.geometry.dispose(),this.shadowMesh.material.dispose(),this.shadowMesh=null),this.keyLight&&(this.viewer.scene.remove(this.keyLight.target),this.viewer.scene.remove(this.keyLight),this.keyLight.dispose(),this.keyLight=null),this.pointLight&&(this.viewer.scene.remove(this.pointLight),this.pointLight.dispose(),this.pointLight=null),this.#i?.dispose(),this.#i=null,this.#f?.dispose(),this.#b?.dispose(),this.#L?.dispose(),this.#S?.dispose(),this.#z?.dispose(),this.#T?.dispose(),this.#F?.dispose(),this.#h?.dispose(),this.#f=null,this.#b=null,this.#L=null,this.#S=null,this.#z=null,this.#T=null,this.#F=null,this.#h=null,this.#v=null,this.#D=null,this.#B=null,this.#G=null,this.#W=null,this.#j=null,this.#O=null,this.#_=null,this.#U=null,this.#Z=null,this.#Mt()}#e(s){if(s===null)throw new Error("FireEffect: resource is not initialized.");return s}}function ut(c){return c*c*(3-2*c)}exports.FireEffect=lt;
@@ -192,13 +192,13 @@ class ge {
192
192
  return this.#t.emitter ?? this.#ot;
193
193
  }
194
194
  enable(e = {}) {
195
- return this.#o ? this.update(e) : (this.#t = vt(e, this.#t), this.#et(), this.#tt(), this.#it = this.viewer.frameloop, this.viewer.frameloop = "always", this.viewer.renderPipeline.addOutputEffect(this.#H), this.viewer.addEventListener("beforeRender", this.#kt), this.viewer.addEventListener("cameraChange", this.#Et), this.#o = !0, this.viewer.render(), this);
195
+ return this.#o ? this.update(e) : (this.#t = vt(e, this.#t), this.#et(), this.#tt(), this.#it = this.viewer.frameloop, this.viewer.frameloop = "always", this.viewer.renderPipeline.addOutputEffect(this.#H), this.viewer.addEventListener("beforeRender", this.#kt), this.viewer.addEventListener("cameraChange", this.#Et), this.#o = !0, this.viewer.invalidate(), this);
196
196
  }
197
197
  update(e = {}) {
198
198
  const t = this.#t;
199
199
  this.#t = vt(e, this.#t);
200
200
  const h = !t.size.equals(this.#t.size), l = t.gridSize.x !== this.#t.gridSize.x || t.gridSize.y !== this.#t.gridSize.y || t.gridSize.z !== this.#t.gridSize.z || t.emitterGeometry !== this.#t.emitterGeometry || t.volumeLayer !== this.#t.volumeLayer || t.raymarchSteps !== this.#t.raymarchSteps;
201
- return this.#o && l && (this.#st(), this.#et()), this.#o && h && !l && (this.#E = !1), this.#tt(), this.viewer.renderPipeline.needsUpdateOutputNode = !0, this.viewer.render(), this;
201
+ return this.#o && l && (this.#st(), this.#et()), this.#o && h && !l && (this.#E = !1), this.#tt(), this.viewer.renderPipeline.needsUpdateOutputNode = !0, this.viewer.invalidate(), this;
202
202
  }
203
203
  setPosition(e) {
204
204
  return this.update({ position: e });
@@ -207,10 +207,10 @@ class ge {
207
207
  return this.update({ emitter: e, emitterGeometry: t });
208
208
  }
209
209
  reset() {
210
- return this.#o ? (this.#st(), this.#et(), this.#tt(), this.viewer.render(), this) : this;
210
+ return this.#o ? (this.#st(), this.#et(), this.#tt(), this.viewer.invalidate(), this) : this;
211
211
  }
212
212
  disable() {
213
- return this.#o ? (this.viewer.removeEventListener("beforeRender", this.#kt), this.viewer.removeEventListener("cameraChange", this.#Et), this.viewer.renderPipeline.removeOutputEffect(this.#H), this.viewer.frameloop = this.#it, this.#o = !1, this.#st(), this.viewer.render(), this) : this;
213
+ return this.#o ? (this.viewer.removeEventListener("beforeRender", this.#kt), this.viewer.removeEventListener("cameraChange", this.#Et), this.viewer.renderPipeline.removeOutputEffect(this.#H), this.viewer.frameloop = this.#it, this.#o = !1, this.#st(), this.viewer.invalidate(), this) : this;
214
214
  }
215
215
  dispose() {
216
216
  return this.disable(), this.#a?.dispose(), this.#a = null, this;
@@ -333,7 +333,7 @@ class ge {
333
333
  this.#Pt(), this.#i = Yt(this.viewer.scene, this.viewer.camera), this.#i.name = "FireEffect Volumetric Pass", this.#i.setLayers(this.#N), this.#i.setResolutionScale(this.#t.renderResolution);
334
334
  }
335
335
  #Et = () => {
336
- this.#o && (this.#i?.dispose(), this.#Mt(), this.viewer.renderPipeline.needsUpdateOutputNode = !0, this.viewer.render());
336
+ this.#o && (this.#i?.dispose(), this.#Mt(), this.viewer.renderPipeline.needsUpdateOutputNode = !0, this.viewer.invalidate());
337
337
  };
338
338
  #Xt() {
339
339
  return ((e, t) => {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("three/addons/controls/TransformControls.js");class s extends r.TransformControls{viewer;_active=!1;_prevFrameloop="demand";constructor(i,e){super(i.camera,i.renderer.domElement),this.viewer=i,e?.mode!==void 0&&(this.mode=e.mode),e?.space!==void 0&&(this.space=e.space),e?.size!==void 0&&(this.size=e.size),e?.showX!==void 0&&(this.showX=e.showX),e?.showY!==void 0&&(this.showY=e.showY),e?.showZ!==void 0&&(this.showZ=e.showZ),this.addEventListener("dragging-changed",this._onDraggingChanged),this.viewer.addEventListener("cameraChange",this._onCameraChange)}_onDraggingChanged=i=>{this.viewer.controls.enabled=!i.value};_onCameraChange=({camera:i})=>{this.camera=i};get isActive(){return this._active}enable(){return this._active?this:(this._active=!0,this._prevFrameloop=this.viewer.frameloop,this.viewer.frameloop="always",this.viewer.scene.add(this.getHelper()),this.viewer.render(),this)}disable(){return this._active?(this._active=!1,this.viewer.frameloop=this._prevFrameloop,this.viewer.scene.remove(this.getHelper()),this.viewer.controls.enabled=!0,this.viewer.render(),this):this}dispose(){this.disable(),this.removeEventListener("dragging-changed",this._onDraggingChanged),this.viewer.removeEventListener("cameraChange",this._onCameraChange),super.dispose()}}exports.ObjectControls=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("three/addons/controls/TransformControls.js");class r extends s.TransformControls{viewer;_active=!1;_prevFrameloop="demand";constructor(i,e){super(i.camera,i.renderer.domElement),this.viewer=i,e?.mode!==void 0&&(this.mode=e.mode),e?.space!==void 0&&(this.space=e.space),e?.size!==void 0&&(this.size=e.size),e?.showX!==void 0&&(this.showX=e.showX),e?.showY!==void 0&&(this.showY=e.showY),e?.showZ!==void 0&&(this.showZ=e.showZ),this.addEventListener("dragging-changed",this._onDraggingChanged),this.viewer.addEventListener("cameraChange",this._onCameraChange)}_onDraggingChanged=i=>{this.viewer.controls.enabled=!i.value};_onCameraChange=({camera:i})=>{this.camera=i};get isActive(){return this._active}enable(){return this._active?this:(this._active=!0,this._prevFrameloop=this.viewer.frameloop,this.viewer.frameloop="always",this.viewer.scene.add(this.getHelper()),this.viewer.invalidate(),this)}disable(){return this._active?(this._active=!1,this.viewer.frameloop=this._prevFrameloop,this.viewer.scene.remove(this.getHelper()),this.viewer.controls.enabled=!0,this.viewer.invalidate(),this):this}dispose(){this.disable(),this.removeEventListener("dragging-changed",this._onDraggingChanged),this.viewer.removeEventListener("cameraChange",this._onCameraChange),super.dispose()}}exports.ObjectControls=r;
@@ -1,5 +1,5 @@
1
- import { TransformControls as r } from "three/addons/controls/TransformControls.js";
2
- class a extends r {
1
+ import { TransformControls as s } from "three/addons/controls/TransformControls.js";
2
+ class a extends s {
3
3
  viewer;
4
4
  _active = !1;
5
5
  _prevFrameloop = "demand";
@@ -24,7 +24,7 @@ class a extends r {
24
24
  * so drags render continuously.
25
25
  */
26
26
  enable() {
27
- return this._active ? this : (this._active = !0, this._prevFrameloop = this.viewer.frameloop, this.viewer.frameloop = "always", this.viewer.scene.add(this.getHelper()), this.viewer.render(), this);
27
+ return this._active ? this : (this._active = !0, this._prevFrameloop = this.viewer.frameloop, this.viewer.frameloop = "always", this.viewer.scene.add(this.getHelper()), this.viewer.invalidate(), this);
28
28
  }
29
29
  /**
30
30
  * Disable the controls.
@@ -32,7 +32,7 @@ class a extends r {
32
32
  * Re-enables CameraControls in case they were suspended mid-drag.
33
33
  */
34
34
  disable() {
35
- return this._active ? (this._active = !1, this.viewer.frameloop = this._prevFrameloop, this.viewer.scene.remove(this.getHelper()), this.viewer.controls.enabled = !0, this.viewer.render(), this) : this;
35
+ return this._active ? (this._active = !1, this.viewer.frameloop = this._prevFrameloop, this.viewer.scene.remove(this.getHelper()), this.viewer.controls.enabled = !0, this.viewer.invalidate(), this) : this;
36
36
  }
37
37
  /** Fully dispose all resources and remove the gizmo from the scene. */
38
38
  dispose() {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("three/webgpu"),M=require("3d-tiles-renderer"),o=require("3d-tiles-renderer/plugins"),P=require("3d-tiles-renderer/src/three/plugins/fade/FadeMaterialManager.js"),T=require("3d-tiles-renderer/src/three/plugins/fade/wrapFadeMaterial.js"),l=require("three/tsl"),d=require("@takram/three-geospatial"),g=require("@takram/three-geospatial/webgpu"),u=Symbol("FADE_PARAMS"),h=g.FnLayout({name:"bayerDither2x2",type:"float",inputs:[{name:"v",type:"vec2"}]})(([t])=>(d.reinterpretType(t),t.y.mul(3).add(t.x.mul(2)).mod(4))),v=g.FnLayout({name:"bayerDither4x4",type:"float",inputs:[{name:"v",type:"vec2"}]})(([t])=>{d.reinterpretType(t);const e=t.mod(2),i=t.mod(4).mul(.5).floor();return h(e).mul(4).add(h(i))}),f=l.uniform(0).onObjectUpdate(({material:t})=>t!=null?t?.params?.fadeIn.value??0:0),y=l.uniform(0).onObjectUpdate(({material:t})=>t!=null?t?.params?.fadeOut.value??0:0),R=l.Fn(()=>{const i=v(l.screenCoordinate.xy.mod(4).floor()).add(.5).div(16);return l.If(i.greaterThanEqual(f),()=>{l.Discard()}),l.If(i.lessThan(y),()=>{l.Discard()}),l.output})();function w(t){if(d.reinterpretType(t),t[u]!=null)return t[u];const e={fadeIn:{value:0},fadeOut:{value:0},fadeTexture:{value:null}};let i=0;return t.params=e,t.defines={get FEATURE_FADE(){return i},set FEATURE_FADE(s){s!==i&&(i=s,t.outputNode=s===1?R:null)}},e}class _ extends P.FadeMaterialManager{prepareMaterial(e){const i=this._fadeParams;if(i.has(e))return;let s;e instanceof r.NodeMaterial?s=w(e):s=T.wrapFadeMaterial(e,e.onBeforeCompile),i.set(e,s)}}class E extends o.TilesFadePlugin{constructor(...e){super(...e),this._fadeMaterialManager=new _}}function p(t,e){const i=t.material;if(Array.isArray(i))throw new Error("Multiple materials are not supported yet.");const s=new e;"map"in i&&i.map!=null&&"map"in s&&(d.reinterpretType(i.map),d.reinterpretType(s.map),i.map.flipY=!1,s.map=i.map.clone()),t.material=s,i.dispose()}class x{tiles;overrideMaterial;constructor(e=r.MeshBasicNodeMaterial){this.overrideMaterial=e}init(e){this.tiles=e,e.group.traverse(i=>{i instanceof r.Mesh&&p(i,this.overrideMaterial)}),e.addEventListener("load-model",this.handleLoadModel),e.addEventListener("dispose-model",this.handleDisposeModel)}handleLoadModel=({scene:e})=>{e.traverse(i=>{i instanceof r.Mesh&&p(i,this.overrideMaterial)})};handleDisposeModel=({scene:e})=>{e.traverse(i=>{i instanceof r.Mesh&&i.material.dispose()})};dispose(){this.tiles?.removeEventListener("load-model",this.handleLoadModel),this.tiles?.removeEventListener("dispose-model",this.handleDisposeModel)}}class c{tiles;tileCompressionPlugin;updateOnChangePlugin;reorientationPlugin;xyzTilesPlugin;tilesFadePlugin;tileMaterialReplacementPlugin;constructor(){this.tiles=this._initTilesRenderer(),this.tileCompressionPlugin=this._initTileCompressionPlugin(),this.updateOnChangePlugin=this._initUpdateOnChangePlugin(),this.reorientationPlugin=this._initReorientationPlugin(),this.xyzTilesPlugin=this._initXYZTilesPlugin(),this.tilesFadePlugin=this._initTilesFadePlugin(),this.tileMaterialReplacementPlugin=this._initTileMaterialReplacementPlugin()}_initTilesRenderer(){const e=new M.TilesRenderer;return e.maxDepth=20,e.errorTarget=1,e}_initTileCompressionPlugin(){const e=new o.TileCompressionPlugin;return this.tiles.registerPlugin(e),e}_initUpdateOnChangePlugin(){const e=new o.UpdateOnChangePlugin;return this.tiles.registerPlugin(e),e}_initReorientationPlugin(){const e=new o.ReorientationPlugin;return this.tiles.registerPlugin(e),e}_initXYZTilesPlugin(){const e=new o.XYZTilesPlugin({center:!0,shape:"ellipsoid",url:"https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"});return this.tiles.registerPlugin(e),e}_initTilesFadePlugin(){const e=new E;return this.tiles.registerPlugin(e),e}_initTileMaterialReplacementPlugin(){const e=new x(r.MeshBasicNodeMaterial);return this.tiles.registerPlugin(e),e}}class F extends c{viewer;loedTilesSets=new Set;gisOrigin=null;_worldToEllipsoidMatrix=new r.Matrix4;_ellipsoidPosition=new r.Vector3;constructor(e){super(),this.viewer=e,this.tiles.addEventListener("needs-render",this.render),this.tiles.addEventListener("needs-update",this.render)}render=()=>{this.viewer.render()};applyGisOrigin(e,i,s){const n=r.MathUtils.degToRad(i),a=r.MathUtils.degToRad(e);this.reorientationPlugin.transformLatLonHeightToOrigin(n,a,s),this.gisOrigin={lon:e,lat:i,height:s},this.render()}beforeRenderHandler=()=>{this.viewer.camera.updateMatrixWorld(),this.tiles.setCamera(this.viewer.camera),this.tiles.setResolutionFromRenderer(this.viewer.camera,this.viewer.renderer),this.tiles.update()};enable(){return this.viewer.scene.add(this.tiles.group),this.viewer.addEventListener("beforeRender",this.beforeRenderHandler),this}disable(){return this.viewer.scene.remove(this.tiles.group),this.viewer.removeEventListener("beforeRender",this.beforeRenderHandler),this}invalidate(e,i,s){const n=()=>{this.applyGisOrigin(e,i,s),a()},a=()=>{this.tiles.removeEventListener("load-root-tileset",n),this.loedTilesSets.delete(n)};return this.tiles.root||(this.tiles.addEventListener("load-root-tileset",n),this.loedTilesSets.add(n)),this.applyGisOrigin(e,i,s),a}lonLatHeightToPosition(e,i,s=0,n=new r.Vector3){const a=r.MathUtils.degToRad(i),m=r.MathUtils.degToRad(e);return this.tiles.ellipsoid.getCartographicToPosition(a,m,s,n),this.tiles.group.updateWorldMatrix(!0,!1),n.applyMatrix4(this.tiles.group.matrixWorld)}positionToLonLatHeight(e,i={lon:0,lat:0,height:0}){return this.tiles.group.updateWorldMatrix(!0,!1),this._worldToEllipsoidMatrix.copy(this.tiles.group.matrixWorld).invert(),this._ellipsoidPosition.copy(e).applyMatrix4(this._worldToEllipsoidMatrix),this.tiles.ellipsoid.getPositionToCartographic(this._ellipsoidPosition,i),i.lon=r.MathUtils.radToDeg(i.lon),i.lat=r.MathUtils.radToDeg(i.lat),i}dispose(){this.disable(),this.loedTilesSets.forEach(e=>this.tiles.removeEventListener("load-root-tileset",e)),this.loedTilesSets.clear(),this.tiles.removeEventListener("needs-render",this.render),this.tiles.removeEventListener("needs-update",this.render),this.tiles.dispose()}}exports.ArcgisTilesRenderer=F;exports.Globe=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("three/webgpu"),M=require("3d-tiles-renderer"),o=require("3d-tiles-renderer/plugins"),P=require("3d-tiles-renderer/src/three/plugins/fade/FadeMaterialManager.js"),T=require("3d-tiles-renderer/src/three/plugins/fade/wrapFadeMaterial.js"),l=require("three/tsl"),d=require("@takram/three-geospatial"),g=require("@takram/three-geospatial/webgpu"),u=Symbol("FADE_PARAMS"),h=g.FnLayout({name:"bayerDither2x2",type:"float",inputs:[{name:"v",type:"vec2"}]})(([t])=>(d.reinterpretType(t),t.y.mul(3).add(t.x.mul(2)).mod(4))),v=g.FnLayout({name:"bayerDither4x4",type:"float",inputs:[{name:"v",type:"vec2"}]})(([t])=>{d.reinterpretType(t);const e=t.mod(2),i=t.mod(4).mul(.5).floor();return h(e).mul(4).add(h(i))}),f=l.uniform(0).onObjectUpdate(({material:t})=>t!=null?t?.params?.fadeIn.value??0:0),y=l.uniform(0).onObjectUpdate(({material:t})=>t!=null?t?.params?.fadeOut.value??0:0),R=l.Fn(()=>{const i=v(l.screenCoordinate.xy.mod(4).floor()).add(.5).div(16);return l.If(i.greaterThanEqual(f),()=>{l.Discard()}),l.If(i.lessThan(y),()=>{l.Discard()}),l.output})();function w(t){if(d.reinterpretType(t),t[u]!=null)return t[u];const e={fadeIn:{value:0},fadeOut:{value:0},fadeTexture:{value:null}};let i=0;return t.params=e,t.defines={get FEATURE_FADE(){return i},set FEATURE_FADE(s){s!==i&&(i=s,t.outputNode=s===1?R:null)}},e}class _ extends P.FadeMaterialManager{prepareMaterial(e){const i=this._fadeParams;if(i.has(e))return;let s;e instanceof r.NodeMaterial?s=w(e):s=T.wrapFadeMaterial(e,e.onBeforeCompile),i.set(e,s)}}class E extends o.TilesFadePlugin{constructor(...e){super(...e),this._fadeMaterialManager=new _}}function p(t,e){const i=t.material;if(Array.isArray(i))throw new Error("Multiple materials are not supported yet.");const s=new e;"map"in i&&i.map!=null&&"map"in s&&(d.reinterpretType(i.map),d.reinterpretType(s.map),i.map.flipY=!1,s.map=i.map.clone()),t.material=s,i.dispose()}class x{tiles;overrideMaterial;constructor(e=r.MeshBasicNodeMaterial){this.overrideMaterial=e}init(e){this.tiles=e,e.group.traverse(i=>{i instanceof r.Mesh&&p(i,this.overrideMaterial)}),e.addEventListener("load-model",this.handleLoadModel),e.addEventListener("dispose-model",this.handleDisposeModel)}handleLoadModel=({scene:e})=>{e.traverse(i=>{i instanceof r.Mesh&&p(i,this.overrideMaterial)})};handleDisposeModel=({scene:e})=>{e.traverse(i=>{i instanceof r.Mesh&&i.material.dispose()})};dispose(){this.tiles?.removeEventListener("load-model",this.handleLoadModel),this.tiles?.removeEventListener("dispose-model",this.handleDisposeModel)}}class c{tiles;tileCompressionPlugin;updateOnChangePlugin;reorientationPlugin;xyzTilesPlugin;tilesFadePlugin;tileMaterialReplacementPlugin;constructor(){this.tiles=this._initTilesRenderer(),this.tileCompressionPlugin=this._initTileCompressionPlugin(),this.updateOnChangePlugin=this._initUpdateOnChangePlugin(),this.reorientationPlugin=this._initReorientationPlugin(),this.xyzTilesPlugin=this._initXYZTilesPlugin(),this.tilesFadePlugin=this._initTilesFadePlugin(),this.tileMaterialReplacementPlugin=this._initTileMaterialReplacementPlugin()}_initTilesRenderer(){const e=new M.TilesRenderer;return e.maxDepth=20,e.errorTarget=1,e}_initTileCompressionPlugin(){const e=new o.TileCompressionPlugin;return this.tiles.registerPlugin(e),e}_initUpdateOnChangePlugin(){const e=new o.UpdateOnChangePlugin;return this.tiles.registerPlugin(e),e}_initReorientationPlugin(){const e=new o.ReorientationPlugin;return this.tiles.registerPlugin(e),e}_initXYZTilesPlugin(){const e=new o.XYZTilesPlugin({center:!0,shape:"ellipsoid",url:"https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"});return this.tiles.registerPlugin(e),e}_initTilesFadePlugin(){const e=new E;return this.tiles.registerPlugin(e),e}_initTileMaterialReplacementPlugin(){const e=new x(r.MeshBasicNodeMaterial);return this.tiles.registerPlugin(e),e}}class F extends c{viewer;loedTilesSets=new Set;gisOrigin=null;_worldToEllipsoidMatrix=new r.Matrix4;_ellipsoidPosition=new r.Vector3;constructor(e){super(),this.viewer=e,this.tiles.addEventListener("needs-render",this.render),this.tiles.addEventListener("needs-update",this.render)}render=()=>{this.viewer.invalidate()};applyGisOrigin(e,i,s){const n=r.MathUtils.degToRad(i),a=r.MathUtils.degToRad(e);this.reorientationPlugin.transformLatLonHeightToOrigin(n,a,s),this.gisOrigin={lon:e,lat:i,height:s},this.render()}beforeRenderHandler=()=>{this.viewer.camera.updateMatrixWorld(),this.tiles.setCamera(this.viewer.camera),this.tiles.setResolutionFromRenderer(this.viewer.camera,this.viewer.renderer),this.tiles.update()};enable(){return this.viewer.scene.add(this.tiles.group),this.viewer.addEventListener("beforeRender",this.beforeRenderHandler),this}disable(){return this.viewer.scene.remove(this.tiles.group),this.viewer.removeEventListener("beforeRender",this.beforeRenderHandler),this}invalidate(e,i,s){const n=()=>{this.applyGisOrigin(e,i,s),a()},a=()=>{this.tiles.removeEventListener("load-root-tileset",n),this.loedTilesSets.delete(n)};return this.tiles.root||(this.tiles.addEventListener("load-root-tileset",n),this.loedTilesSets.add(n)),this.applyGisOrigin(e,i,s),a}lonLatHeightToPosition(e,i,s=0,n=new r.Vector3){const a=r.MathUtils.degToRad(i),m=r.MathUtils.degToRad(e);return this.tiles.ellipsoid.getCartographicToPosition(a,m,s,n),this.tiles.group.updateWorldMatrix(!0,!1),n.applyMatrix4(this.tiles.group.matrixWorld)}positionToLonLatHeight(e,i={lon:0,lat:0,height:0}){return this.tiles.group.updateWorldMatrix(!0,!1),this._worldToEllipsoidMatrix.copy(this.tiles.group.matrixWorld).invert(),this._ellipsoidPosition.copy(e).applyMatrix4(this._worldToEllipsoidMatrix),this.tiles.ellipsoid.getPositionToCartographic(this._ellipsoidPosition,i),i.lon=r.MathUtils.radToDeg(i.lon),i.lat=r.MathUtils.radToDeg(i.lat),i}dispose(){this.disable(),this.loedTilesSets.forEach(e=>this.tiles.removeEventListener("load-root-tileset",e)),this.loedTilesSets.clear(),this.tiles.removeEventListener("needs-render",this.render),this.tiles.removeEventListener("needs-update",this.render),this.tiles.dispose()}}exports.ArcgisTilesRenderer=F;exports.Globe=c;
@@ -1,4 +1,4 @@
1
- import { NodeMaterial as v, MeshBasicNodeMaterial as m, Mesh as o, Matrix4 as M, Vector3 as d, MathUtils as l } from "three/webgpu";
1
+ import { NodeMaterial as T, MeshBasicNodeMaterial as m, Mesh as o, Matrix4 as M, Vector3 as d, MathUtils as l } from "three/webgpu";
2
2
  import { TilesRenderer as R } from "3d-tiles-renderer";
3
3
  import { TilesFadePlugin as y, TileCompressionPlugin as w, UpdateOnChangePlugin as E, ReorientationPlugin as _, XYZTilesPlugin as x } from "3d-tiles-renderer/plugins";
4
4
  import { FadeMaterialManager as F } from "3d-tiles-renderer/src/three/plugins/fade/FadeMaterialManager.js";
@@ -55,7 +55,7 @@ class W extends F {
55
55
  if (i.has(e))
56
56
  return;
57
57
  let s;
58
- e instanceof v ? s = H(e) : s = L(e, e.onBeforeCompile), i.set(e, s);
58
+ e instanceof T ? s = H(e) : s = L(e, e.onBeforeCompile), i.set(e, s);
59
59
  }
60
60
  }
61
61
  class I extends y {
@@ -152,7 +152,7 @@ class k extends z {
152
152
  super(), this.viewer = e, this.tiles.addEventListener("needs-render", this.render), this.tiles.addEventListener("needs-update", this.render);
153
153
  }
154
154
  render = () => {
155
- this.viewer.render();
155
+ this.viewer.invalidate();
156
156
  };
157
157
  applyGisOrigin(e, i, s) {
158
158
  const r = l.degToRad(i), n = l.degToRad(e);
@@ -176,8 +176,8 @@ class k extends z {
176
176
  return this.tiles.root || (this.tiles.addEventListener("load-root-tileset", r), this.loedTilesSets.add(r)), this.applyGisOrigin(e, i, s), n;
177
177
  }
178
178
  lonLatHeightToPosition(e, i, s = 0, r = new d()) {
179
- const n = l.degToRad(i), T = l.degToRad(e);
180
- return this.tiles.ellipsoid.getCartographicToPosition(n, T, s, r), this.tiles.group.updateWorldMatrix(!0, !1), r.applyMatrix4(this.tiles.group.matrixWorld);
179
+ const n = l.degToRad(i), v = l.degToRad(e);
180
+ return this.tiles.ellipsoid.getCartographicToPosition(n, v, s, r), this.tiles.group.updateWorldMatrix(!0, !1), r.applyMatrix4(this.tiles.group.matrixWorld);
181
181
  }
182
182
  positionToLonLatHeight(e, i = { lon: 0, lat: 0, height: 0 }) {
183
183
  return this.tiles.group.updateWorldMatrix(!0, !1), this._worldToEllipsoidMatrix.copy(this.tiles.group.matrixWorld).invert(), this._ellipsoidPosition.copy(e).applyMatrix4(this._worldToEllipsoidMatrix), this.tiles.ellipsoid.getPositionToCartographic(this._ellipsoidPosition, i), i.lon = l.radToDeg(i.lon), i.lat = l.radToDeg(i.lat), i;