@jdultra/threedtiles 13.0.13 → 13.0.14

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.
@@ -1,24 +1,24 @@
1
1
  var Wt = Object.defineProperty;
2
2
  var Xt = (o, e, a) => e in o ? Wt(o, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : o[e] = a;
3
3
  var ge = (o, e, a) => Xt(o, typeof e != "symbol" ? e + "" : e, a);
4
- import * as m from "three";
5
- import { Matrix3 as Ma, Vector3 as S, Box3 as Ra, Matrix4 as De, Ray as Zt, BufferGeometry as Sa, BufferAttribute as le, TrianglesDrawMode as $t, TriangleFanDrawMode as ma, TriangleStripDrawMode as ut, Loader as Fa, LoaderUtils as Ne, FileLoader as Ce, Color as he, LinearSRGBColorSpace as K, SpotLight as eA, PointLight as aA, DirectionalLight as tA, MeshBasicMaterial as Te, SRGBColorSpace as re, MeshPhysicalMaterial as ee, Vector2 as pt, Quaternion as Ct, InstancedMesh as AA, InstancedBufferAttribute as Qa, Object3D as Bt, TextureLoader as iA, ImageBitmapLoader as sA, InterleavedBuffer as rA, InterleavedBufferAttribute as nA, LinearFilter as He, LinearMipmapLinearFilter as va, RepeatWrapping as ya, NearestFilter as M, PointsMaterial as oA, Material as ea, LineBasicMaterial as cA, MeshStandardMaterial as Ua, DoubleSide as dA, PropertyBinding as bA, SkinnedMesh as lA, Mesh as wa, LineSegments as hA, Line as gA, LineLoop as fA, Points as IA, Group as aa, PerspectiveCamera as uA, MathUtils as pA, OrthographicCamera as Et, Skeleton as CA, AnimationClip as BA, Bone as EA, InterpolateLinear as mt, ColorManagement as xa, NearestMipmapNearestFilter as mA, LinearMipmapNearestFilter as QA, NearestMipmapLinearFilter as yA, ClampToEdgeWrapping as wA, MirroredRepeatWrapping as xA, InterpolateDiscrete as kA, FrontSide as Ze, Texture as Na, VectorKeyframeTrack as Pa, NumberKeyframeTrack as _a, QuaternionKeyframeTrack as Ha, Sphere as DA, Interpolant as jA, CompressedCubeTexture as MA, CompressedArrayTexture as RA, CompressedTexture as qa, RGBAFormat as $, RGBA_ASTC_4x4_Format as Qt, RGB_BPTC_UNSIGNED_Format as SA, RGBA_BPTC_Format as FA, RGBA_ETC2_EAC_Format as vA, RGBA_PVRTC_4BPPV1_Format as TA, RGBA_S3TC_DXT5_Format as LA, RGB_ETC1_Format as GA, RGB_ETC2_Format as UA, RGB_PVRTC_4BPPV1_Format as NA, RGBA_S3TC_DXT1_Format as PA, UnsignedByteType as X, HalfFloatType as we, FloatType as F, DataTexture as Le, Data3DTexture as _A, NoColorSpace as HA, RGFormat as Ge, RedFormat as Ue, RGBA_ASTC_6x6_Format as Oa, WebGL3DRenderTarget as ne, ShaderMaterial as ta, AlwaysDepth as qA, InstancedBufferGeometry as Ja, DynamicDrawUsage as Ka, Scene as OA, PlaneGeometry as JA } from "three";
6
- class Zi {
4
+ import * as E from "three";
5
+ import { Matrix3 as Ra, Vector3 as S, Box3 as Sa, Matrix4 as je, Ray as Zt, BufferGeometry as va, BufferAttribute as le, TrianglesDrawMode as $t, TriangleFanDrawMode as Qa, TriangleStripDrawMode as It, Loader as Fa, LoaderUtils as Pe, FileLoader as Be, Color as he, LinearSRGBColorSpace as K, SpotLight as eA, PointLight as aA, DirectionalLight as tA, MeshBasicMaterial as Le, SRGBColorSpace as re, MeshPhysicalMaterial as ee, Vector2 as pt, Quaternion as Ct, InstancedMesh as AA, InstancedBufferAttribute as ya, Object3D as Bt, TextureLoader as iA, ImageBitmapLoader as sA, InterleavedBuffer as rA, InterleavedBufferAttribute as nA, LinearFilter as Ce, LinearMipmapLinearFilter as $e, RepeatWrapping as wa, NearestFilter as M, PointsMaterial as oA, Material as aa, LineBasicMaterial as cA, MeshStandardMaterial as Ua, DoubleSide as dA, PropertyBinding as bA, SkinnedMesh as lA, Mesh as xa, LineSegments as hA, Line as gA, LineLoop as fA, Points as uA, Group as ta, PerspectiveCamera as IA, MathUtils as pA, OrthographicCamera as mt, Skeleton as CA, AnimationClip as BA, Bone as mA, InterpolateLinear as Et, ColorManagement as ka, NearestMipmapNearestFilter as EA, LinearMipmapNearestFilter as QA, NearestMipmapLinearFilter as yA, ClampToEdgeWrapping as wA, MirroredRepeatWrapping as xA, InterpolateDiscrete as kA, FrontSide as Ze, Texture as Na, VectorKeyframeTrack as Pa, NumberKeyframeTrack as _a, QuaternionKeyframeTrack as Ha, Sphere as DA, Interpolant as jA, CompressedCubeTexture as MA, CompressedArrayTexture as RA, CompressedTexture as qa, RGBAFormat as $, RGBA_ASTC_4x4_Format as Qt, RGB_BPTC_UNSIGNED_Format as SA, RGBA_BPTC_Format as vA, RGBA_ETC2_EAC_Format as FA, RGBA_PVRTC_4BPPV1_Format as TA, RGBA_S3TC_DXT5_Format as LA, RGB_ETC1_Format as GA, RGB_ETC2_Format as UA, RGB_PVRTC_4BPPV1_Format as NA, RGBA_S3TC_DXT1_Format as PA, UnsignedByteType as X, HalfFloatType as xe, FloatType as v, DataTexture as Ge, Data3DTexture as _A, NoColorSpace as HA, RGFormat as Ue, RedFormat as Ne, RGBA_ASTC_6x6_Format as Oa, WebGL3DRenderTarget as ne, ShaderMaterial as Aa, InstancedBufferGeometry as Ja, DynamicDrawUsage as Ka, Scene as qA, PlaneGeometry as OA } from "three";
6
+ class $i {
7
7
  constructor() {
8
- this.cullMap = [], this.cullMaterial = new m.MeshBasicMaterial({ vertexColors: !0 }), this.cullMaterial.side = m.FrontSide, this.cullTarget = this._createCullTarget(), this.cullPixels = new Uint8Array(4 * this.cullTarget.width * this.cullTarget.height);
8
+ this.cullMap = [], this.cullMaterial = new E.MeshBasicMaterial({ vertexColors: !0 }), this.cullMaterial.side = E.FrontSide, this.cullTarget = this._createCullTarget(), this.cullPixels = new Uint8Array(4 * this.cullTarget.width * this.cullTarget.height);
9
9
  }
10
10
  setSide(e) {
11
11
  this.cullMaterial.side = e;
12
12
  }
13
13
  _createCullTarget() {
14
- const e = new m.WebGLRenderTarget(Math.floor(0.05 * window.innerWidth), Math.floor(0.05 * window.innerHeight));
15
- return e.texture.format = m.RGBAFormat, e.texture.colorSpace = m.LinearSRGBColorSpace, e.texture.minFilter = m.NearestFilter, e.texture.magFilter = m.NearestFilter, e.texture.generateMipmaps = !1, e.stencilBuffer = !1, e.depthBuffer = !0, e.depthTexture = new m.DepthTexture(), e.depthTexture.format = m.DepthFormat, e.depthTexture.type = m.UnsignedShortType, e;
14
+ const e = new E.WebGLRenderTarget(Math.floor(0.05 * window.innerWidth), Math.floor(0.05 * window.innerHeight));
15
+ return e.texture.format = E.RGBAFormat, e.texture.colorSpace = E.LinearSRGBColorSpace, e.texture.minFilter = E.NearestFilter, e.texture.magFilter = E.NearestFilter, e.texture.generateMipmaps = !1, e.stencilBuffer = !1, e.depthBuffer = !0, e.depthTexture = new E.DepthTexture(), e.depthTexture.format = E.DepthFormat, e.depthTexture.type = E.UnsignedShortType, e;
16
16
  }
17
17
  update(e, a, t) {
18
18
  let A = a.getRenderTarget(), i = e.overrideMaterial;
19
19
  e.overrideMaterial = this.cullMaterial, a.setRenderTarget(this.cullTarget), a.render(e, t), e.overrideMaterial = i, a.setRenderTarget(A), a.readRenderTargetPixels(this.cullTarget, 0, 0, this.cullTarget.width, this.cullTarget.height, this.cullPixels), this.cullMap = [];
20
20
  for (let s = 0; s < this.cullPixels.length; s += 4) {
21
- const r = m.MathUtils.clamp(this.cullPixels[s], 0, 255) << 16 ^ m.MathUtils.clamp(this.cullPixels[s + 1], 0, 255) << 8 ^ m.MathUtils.clamp(this.cullPixels[s + 2], 0, 255);
21
+ const r = E.MathUtils.clamp(this.cullPixels[s], 0, 255) << 16 ^ E.MathUtils.clamp(this.cullPixels[s + 1], 0, 255) << 8 ^ E.MathUtils.clamp(this.cullPixels[s + 2], 0, 255);
22
22
  this.cullMap[r] = !0;
23
23
  }
24
24
  }
@@ -26,10 +26,10 @@ class Zi {
26
26
  return this.cullMap[e];
27
27
  }
28
28
  }
29
- const J = new Ma(), G = new S(), za = new S(), Va = new Ra(), Ke = new De(), Ya = new De(), Wa = new Zt();
29
+ const J = new Ra(), G = new S(), za = new S(), Va = new Sa(), Ke = new je(), Ya = new je(), Wa = new Zt();
30
30
  class se {
31
31
  constructor(e) {
32
- this.center = new S(e[0], e[1], e[2]), this.e1 = new S(e[3], e[4], e[5]), this.e2 = new S(e[6], e[7], e[8]), this.e3 = new S(e[9], e[10], e[11]), this.halfSize = new S(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new Ma(), this.rotationMatrix.set(this.e1.x, this.e1.y, this.e1.z, this.e2.x, this.e2.y, this.e2.z, this.e3.x, this.e3.y, this.e3.z);
32
+ this.center = new S(e[0], e[1], e[2]), this.e1 = new S(e[3], e[4], e[5]), this.e2 = new S(e[6], e[7], e[8]), this.e3 = new S(e[9], e[10], e[11]), this.halfSize = new S(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new Ra(), this.rotationMatrix.set(this.e1.x, this.e1.y, this.e1.z, this.e2.x, this.e2.y, this.e2.z, this.e3.x, this.e3.y, this.e3.z);
33
33
  }
34
34
  copy(e) {
35
35
  this.center.copy(e.center), this.rotationMatrix.copy(e.rotationMatrix), this.halfSize.copy(e.halfSize);
@@ -159,14 +159,14 @@ class yt {
159
159
  return Array.from(this.keys()).map((a) => ({ key: a, value: this.get(a) }));
160
160
  }
161
161
  }
162
- const KA = new TextDecoder();
162
+ const JA = new TextDecoder();
163
163
  class wt {
164
164
  constructor(e, a, t, A) {
165
165
  this.buffer = e, this.binOffset = a + t, this.binLength = A;
166
166
  let i = null;
167
167
  if (t !== 0) try {
168
168
  const s = new Uint8Array(e, a, t);
169
- i = JSON.parse(KA.decode(s));
169
+ i = JSON.parse(JA.decode(s));
170
170
  } catch {
171
171
  i = {};
172
172
  }
@@ -202,43 +202,43 @@ class wt {
202
202
  default:
203
203
  throw new Error(`FeatureTable : Feature type not provided for "${e}".`);
204
204
  }
205
- const f = c + b, u = a * g;
205
+ const f = c + b, I = a * g;
206
206
  switch (l) {
207
207
  case "BYTE":
208
- h = new Int8Array(r, f, u);
208
+ h = new Int8Array(r, f, I);
209
209
  break;
210
210
  case "UNSIGNED_BYTE":
211
- h = new Uint8Array(r, f, u);
211
+ h = new Uint8Array(r, f, I);
212
212
  break;
213
213
  case "SHORT":
214
- h = new Int16Array(r, f, u);
214
+ h = new Int16Array(r, f, I);
215
215
  break;
216
216
  case "UNSIGNED_SHORT":
217
- h = new Uint16Array(r, f, u);
217
+ h = new Uint16Array(r, f, I);
218
218
  break;
219
219
  case "INT":
220
- h = new Int32Array(r, f, u);
220
+ h = new Int32Array(r, f, I);
221
221
  break;
222
222
  case "UNSIGNED_INT":
223
- h = new Uint32Array(r, f, u);
223
+ h = new Uint32Array(r, f, I);
224
224
  break;
225
225
  case "FLOAT":
226
- h = new Float32Array(r, f, u);
226
+ h = new Float32Array(r, f, I);
227
227
  break;
228
228
  case "DOUBLE":
229
- h = new Float64Array(r, f, u);
229
+ h = new Float64Array(r, f, I);
230
230
  break;
231
231
  default:
232
232
  throw new Error(`FeatureTable : Feature component type not provided for "${e}".`);
233
233
  }
234
- if (f + u * h.BYTES_PER_ELEMENT > c + n) throw new Error("FeatureTable: Feature data read outside binary body length.");
234
+ if (f + I * h.BYTES_PER_ELEMENT > c + n) throw new Error("FeatureTable: Feature data read outside binary body length.");
235
235
  return h;
236
236
  }
237
237
  }
238
238
  return s;
239
239
  }
240
240
  }
241
- class zA extends wt {
241
+ class KA extends wt {
242
242
  constructor(e, a, t, A, i) {
243
243
  super(e, t, A, i), this.batchSize = a;
244
244
  }
@@ -273,7 +273,7 @@ function Xa(o) {
273
273
  }
274
274
  function Za(o, e) {
275
275
  if (e === $t) return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), o;
276
- if (e === ma || e === ut) {
276
+ if (e === Qa || e === It) {
277
277
  let a = o.getIndex();
278
278
  if (a === null) {
279
279
  const s = [], r = o.getAttribute("position");
@@ -282,7 +282,7 @@ function Za(o, e) {
282
282
  o.setIndex(s), a = o.getIndex();
283
283
  }
284
284
  const t = a.count - 2, A = [];
285
- if (e === ma) for (let s = 1; s <= t; s++) A.push(a.getX(0)), A.push(a.getX(s)), A.push(a.getX(s + 1));
285
+ if (e === Qa) for (let s = 1; s <= t; s++) A.push(a.getX(0)), A.push(a.getX(s)), A.push(a.getX(s + 1));
286
286
  else for (let s = 0; s < t; s++) s % 2 == 0 ? (A.push(a.getX(s)), A.push(a.getX(s + 1)), A.push(a.getX(s + 2))) : (A.push(a.getX(s + 2)), A.push(a.getX(s + 1)), A.push(a.getX(s)));
287
287
  A.length / 3 !== t && console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");
288
288
  const i = o.clone();
@@ -297,7 +297,7 @@ class xt {
297
297
  this.gltfLoader.hasDracoLoader && !this.gltfLoader.dracoLoader || this.gltfLoader.hasKTX2Loader && !this.gltfLoader.ktx2Loader || (clearInterval(a), e());
298
298
  }, 10);
299
299
  }));
300
- this.gltfLoader = e, this.tempMatrix = new m.Matrix4(), this.zUpToYUpMatrix = new m.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1);
300
+ this.gltfLoader = e, this.tempMatrix = new E.Matrix4(), this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1);
301
301
  }
302
302
  parseB3DM(e, a, t, A) {
303
303
  const i = this, s = new DataView(e), r = String.fromCharCode(s.getUint8(0)) + String.fromCharCode(s.getUint8(1)) + String.fromCharCode(s.getUint8(2)) + String.fromCharCode(s.getUint8(3));
@@ -305,14 +305,14 @@ class xt {
305
305
  const c = s.getUint32(8, !0);
306
306
  console.assert(c === e.byteLength);
307
307
  const n = s.getUint32(12, !0), b = s.getUint32(16, !0), d = s.getUint32(20, !0), l = s.getUint32(24, !0), g = new wt(e, 28, n, b), h = 28 + n + b;
308
- new zA(e, g.getData("BATCH_LENGTH"), h, d, l);
309
- const f = h + d + l, u = new Uint8Array(e, f, c - f).slice().buffer;
310
- return new Promise(async (I, p) => {
311
- await this.checkLoaderInitialized(), this.gltfLoader.parse(u, null, (B) => {
308
+ new KA(e, g.getData("BATCH_LENGTH"), h, d, l);
309
+ const f = h + d + l, I = new Uint8Array(e, f, c - f).slice().buffer;
310
+ return new Promise(async (u, p) => {
311
+ await this.checkLoaderInitialized(), this.gltfLoader.parse(I, null, (B) => {
312
312
  const C = g.getData("RTC_CENTER");
313
313
  C ? (this.tempMatrix.makeTranslation(C[0], C[1], C[2]), B.scene.applyMatrix4(this.tempMatrix)) : B.userData.gltfExtensions && B.userData.gltfExtensions.CESIUM_RTC && (this.tempMatrix.makeTranslation(B.userData.gltfExtensions.CESIUM_RTC.center[0], B.userData.gltfExtensions.CESIUM_RTC.center[1], B.userData.gltfExtensions.CESIUM_RTC.center[2]), B.scene.applyMatrix4(this.tempMatrix)), t && B.scene.applyMatrix4(i.zUpToYUpMatrix), B.scene.asset = B.asset, B.scene.traverse((w) => {
314
314
  w.isMesh && (A && w.applyMatrix4(i.zUpToYUpMatrix), a && a(w));
315
- }), I(B.scene);
315
+ }), u(B.scene);
316
316
  }, (B) => {
317
317
  console.error(B);
318
318
  });
@@ -331,7 +331,7 @@ class xt {
331
331
  }), d.forEach((h) => {
332
332
  l.forEach((f) => {
333
333
  if (!h.attributes[f]) {
334
- const u = function(p) {
334
+ const I = function(p) {
335
335
  switch (p) {
336
336
  case "position":
337
337
  case "normal":
@@ -343,90 +343,90 @@ class xt {
343
343
  default:
344
344
  throw new Error(`Unknown attribute ${p}`);
345
345
  }
346
- }(f), I = new Float32Array(u * h.getAttribute("position").count).fill(0);
347
- h.setAttribute(f, new m.BufferAttribute(I, u));
346
+ }(f), u = new Float32Array(I * h.getAttribute("position").count).fill(0);
347
+ h.setAttribute(f, new E.BufferAttribute(u, I));
348
348
  }
349
349
  });
350
350
  }), function(h, f = !1) {
351
- const u = h[0].index !== null, I = new Set(Object.keys(h[0].attributes)), p = new Set(Object.keys(h[0].morphAttributes)), B = {}, C = {}, w = h[0].morphTargetsRelative, x = new Sa();
351
+ const I = h[0].index !== null, u = new Set(Object.keys(h[0].attributes)), p = new Set(Object.keys(h[0].morphAttributes)), B = {}, C = {}, w = h[0].morphTargetsRelative, x = new va();
352
352
  let y = 0;
353
- for (let E = 0; E < h.length; ++E) {
354
- const Q = h[E];
353
+ for (let m = 0; m < h.length; ++m) {
354
+ const Q = h[m];
355
355
  let k = 0;
356
- if (u !== (Q.index !== null)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + E + ". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."), null;
356
+ if (I !== (Q.index !== null)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."), null;
357
357
  for (const D in Q.attributes) {
358
- if (!I.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + E + '. All geometries must have compatible attributes; make sure "' + D + '" attribute exists among all geometries, or in none of them.'), null;
358
+ if (!u.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + '. All geometries must have compatible attributes; make sure "' + D + '" attribute exists among all geometries, or in none of them.'), null;
359
359
  B[D] === void 0 && (B[D] = []), B[D].push(Q.attributes[D]), k++;
360
360
  }
361
- if (k !== I.size) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + E + ". Make sure all geometries have the same number of attributes."), null;
362
- if (w !== Q.morphTargetsRelative) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + E + ". .morphTargetsRelative must be consistent throughout all geometries."), null;
361
+ if (k !== u.size) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". Make sure all geometries have the same number of attributes."), null;
362
+ if (w !== Q.morphTargetsRelative) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". .morphTargetsRelative must be consistent throughout all geometries."), null;
363
363
  for (const D in Q.morphAttributes) {
364
- if (!p.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + E + ". .morphAttributes must be consistent throughout all geometries."), null;
364
+ if (!p.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". .morphAttributes must be consistent throughout all geometries."), null;
365
365
  C[D] === void 0 && (C[D] = []), C[D].push(Q.morphAttributes[D]);
366
366
  }
367
367
  if (f) {
368
368
  let D;
369
- if (u) D = Q.index.count;
369
+ if (I) D = Q.index.count;
370
370
  else {
371
- if (Q.attributes.position === void 0) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + E + ". The geometry must have either an index or a position attribute"), null;
371
+ if (Q.attributes.position === void 0) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". The geometry must have either an index or a position attribute"), null;
372
372
  D = Q.attributes.position.count;
373
373
  }
374
- x.addGroup(y, D, E), y += D;
374
+ x.addGroup(y, D, m), y += D;
375
375
  }
376
376
  }
377
- if (u) {
378
- let E = 0;
377
+ if (I) {
378
+ let m = 0;
379
379
  const Q = [];
380
380
  for (let k = 0; k < h.length; ++k) {
381
381
  const D = h[k].index;
382
- for (let v = 0; v < D.count; ++v) Q.push(D.getX(v) + E);
383
- E += h[k].attributes.position.count;
382
+ for (let F = 0; F < D.count; ++F) Q.push(D.getX(F) + m);
383
+ m += h[k].attributes.position.count;
384
384
  }
385
385
  x.setIndex(Q);
386
386
  }
387
- for (const E in B) {
388
- const Q = Xa(B[E]);
389
- if (!Q) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + E + " attribute."), null;
390
- x.setAttribute(E, Q);
387
+ for (const m in B) {
388
+ const Q = Xa(B[m]);
389
+ if (!Q) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + m + " attribute."), null;
390
+ x.setAttribute(m, Q);
391
391
  }
392
- for (const E in C) {
393
- const Q = C[E][0].length;
392
+ for (const m in C) {
393
+ const Q = C[m][0].length;
394
394
  if (Q === 0) break;
395
- x.morphAttributes = x.morphAttributes || {}, x.morphAttributes[E] = [];
395
+ x.morphAttributes = x.morphAttributes || {}, x.morphAttributes[m] = [];
396
396
  for (let k = 0; k < Q; ++k) {
397
397
  const D = [];
398
- for (let _ = 0; _ < C[E].length; ++_) D.push(C[E][_][k]);
399
- const v = Xa(D);
400
- if (!v) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + E + " morphAttribute."), null;
401
- x.morphAttributes[E].push(v);
398
+ for (let _ = 0; _ < C[m].length; ++_) D.push(C[m][_][k]);
399
+ const F = Xa(D);
400
+ if (!F) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + m + " morphAttribute."), null;
401
+ x.morphAttributes[m].push(F);
402
402
  }
403
403
  }
404
404
  return x;
405
405
  }(d, !0);
406
406
  }(c);
407
- return r = new m.InstancedMesh(b, n, t), r.baseMatrix = new m.Matrix4().identity(), r;
407
+ return r = new E.InstancedMesh(b, n, t), r.baseMatrix = new E.Matrix4().identity(), r;
408
408
  });
409
409
  }
410
410
  }
411
- var Aa, VA = new Uint8Array(16);
412
- function YA() {
413
- if (!Aa && !(Aa = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto < "u" && typeof msCrypto.getRandomValues == "function" && msCrypto.getRandomValues.bind(msCrypto))) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
414
- return Aa(VA);
411
+ var ia, zA = new Uint8Array(16);
412
+ function VA() {
413
+ if (!ia && !(ia = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto < "u" && typeof msCrypto.getRandomValues == "function" && msCrypto.getRandomValues.bind(msCrypto))) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
414
+ return ia(zA);
415
415
  }
416
- const WA = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
417
- for (var T = [], ia = 0; ia < 256; ++ia) T.push((ia + 256).toString(16).substr(1));
418
- function XA(o) {
416
+ const YA = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
417
+ for (var T = [], sa = 0; sa < 256; ++sa) T.push((sa + 256).toString(16).substr(1));
418
+ function WA(o) {
419
419
  var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, a = (T[o[e + 0]] + T[o[e + 1]] + T[o[e + 2]] + T[o[e + 3]] + "-" + T[o[e + 4]] + T[o[e + 5]] + "-" + T[o[e + 6]] + T[o[e + 7]] + "-" + T[o[e + 8]] + T[o[e + 9]] + "-" + T[o[e + 10]] + T[o[e + 11]] + T[o[e + 12]] + T[o[e + 13]] + T[o[e + 14]] + T[o[e + 15]]).toLowerCase();
420
420
  if (!function(t) {
421
- return typeof t == "string" && WA.test(t);
421
+ return typeof t == "string" && YA.test(t);
422
422
  }(a)) throw TypeError("Stringified UUID is invalid");
423
423
  return a;
424
424
  }
425
425
  function kt(o, e, a) {
426
- var t = (o = o || {}).random || (o.rng || YA)();
427
- return t[6] = 15 & t[6] | 64, t[8] = 63 & t[8] | 128, XA(t);
426
+ var t = (o = o || {}).random || (o.rng || VA)();
427
+ return t[6] = 15 & t[6] | 64, t[8] = 63 & t[8] | 128, WA(t);
428
428
  }
429
- class ZA {
429
+ class XA {
430
430
  constructor(e, a) {
431
431
  ge(this, "checkLoaderInitialized", async () => {
432
432
  const e = this;
@@ -456,15 +456,17 @@ class ZA {
456
456
  class Dt extends Fa {
457
457
  constructor(e) {
458
458
  super(e), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(a) {
459
+ return new ti(a);
460
+ }), this.register(function(a) {
459
461
  return new Ai(a);
460
462
  }), this.register(function(a) {
461
- return new ii(a);
463
+ return new li(a);
462
464
  }), this.register(function(a) {
463
465
  return new hi(a);
464
466
  }), this.register(function(a) {
465
467
  return new gi(a);
466
468
  }), this.register(function(a) {
467
- return new fi(a);
469
+ return new si(a);
468
470
  }), this.register(function(a) {
469
471
  return new ri(a);
470
472
  }), this.register(function(a) {
@@ -472,21 +474,19 @@ class Dt extends Fa {
472
474
  }), this.register(function(a) {
473
475
  return new oi(a);
474
476
  }), this.register(function(a) {
475
- return new ci(a);
476
- }), this.register(function(a) {
477
- return new ti(a);
477
+ return new ai(a);
478
478
  }), this.register(function(a) {
479
- return new di(a);
480
- }), this.register(function(a) {
481
- return new si(a);
479
+ return new ci(a);
482
480
  }), this.register(function(a) {
483
- return new li(a);
481
+ return new ii(a);
484
482
  }), this.register(function(a) {
485
483
  return new bi(a);
486
484
  }), this.register(function(a) {
487
- return new ei(a);
485
+ return new di(a);
486
+ }), this.register(function(a) {
487
+ return new $A(a);
488
488
  }), this.register(function(a) {
489
- return new Ii(a);
489
+ return new fi(a);
490
490
  }), this.register(function(a) {
491
491
  return new ui(a);
492
492
  });
@@ -496,13 +496,13 @@ class Dt extends Fa {
496
496
  let s;
497
497
  if (this.resourcePath !== "") s = this.resourcePath;
498
498
  else if (this.path !== "") {
499
- const n = Ne.extractUrlBase(e);
500
- s = Ne.resolveURL(n, this.path);
501
- } else s = Ne.extractUrlBase(e);
499
+ const n = Pe.extractUrlBase(e);
500
+ s = Pe.resolveURL(n, this.path);
501
+ } else s = Pe.extractUrlBase(e);
502
502
  this.manager.itemStart(e);
503
503
  const r = function(n) {
504
504
  A ? A(n) : console.error(n), i.manager.itemError(e), i.manager.itemEnd(e);
505
- }, c = new Ce(this.manager);
505
+ }, c = new Be(this.manager);
506
506
  c.setPath(this.path), c.setResponseType("arraybuffer"), c.setRequestHeader(this.requestHeader), c.setWithCredentials(this.withCredentials), c.load(e, function(n) {
507
507
  try {
508
508
  i.parse(n, s, function(b) {
@@ -535,7 +535,7 @@ class Dt extends Fa {
535
535
  else if (e instanceof ArrayBuffer)
536
536
  if (c.decode(new Uint8Array(e, 0, 4)) === jt) {
537
537
  try {
538
- s[j.KHR_BINARY_GLTF] = new Bi(e);
538
+ s[j.KHR_BINARY_GLTF] = new Ci(e);
539
539
  } catch (b) {
540
540
  return void (A && A(b));
541
541
  }
@@ -543,7 +543,7 @@ class Dt extends Fa {
543
543
  } else i = JSON.parse(c.decode(e));
544
544
  else i = e;
545
545
  if (i.asset === void 0 || i.asset.version[0] < 2) return void (A && A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));
546
- const n = new Fi(i, { path: a || this.resourcePath || "", crossOrigin: this.crossOrigin, requestHeader: this.requestHeader, manager: this.manager, ktx2Loader: this.ktx2Loader, meshoptDecoder: this.meshoptDecoder });
546
+ const n = new Si(i, { path: a || this.resourcePath || "", crossOrigin: this.crossOrigin, requestHeader: this.requestHeader, manager: this.manager, ktx2Loader: this.ktx2Loader, meshoptDecoder: this.meshoptDecoder });
547
547
  n.fileLoader.setRequestHeader(this.requestHeader);
548
548
  for (let b = 0; b < this.pluginCallbacks.length; b++) {
549
549
  const d = this.pluginCallbacks[b](n);
@@ -553,16 +553,16 @@ class Dt extends Fa {
553
553
  const d = i.extensionsUsed[b], l = i.extensionsRequired || [];
554
554
  switch (d) {
555
555
  case j.KHR_MATERIALS_UNLIT:
556
- s[d] = new ai();
556
+ s[d] = new ei();
557
557
  break;
558
558
  case j.KHR_DRACO_MESH_COMPRESSION:
559
- s[d] = new Ei(i, this.dracoLoader);
559
+ s[d] = new Bi(i, this.dracoLoader);
560
560
  break;
561
561
  case j.KHR_TEXTURE_TRANSFORM:
562
562
  s[d] = new mi();
563
563
  break;
564
564
  case j.KHR_MESH_QUANTIZATION:
565
- s[d] = new Qi();
565
+ s[d] = new Ei();
566
566
  break;
567
567
  default:
568
568
  l.indexOf(d) >= 0 && r[d] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + d + '".');
@@ -577,7 +577,7 @@ class Dt extends Fa {
577
577
  });
578
578
  }
579
579
  }
580
- function $A() {
580
+ function ZA() {
581
581
  let o = {};
582
582
  return { get: function(e) {
583
583
  return o[e];
@@ -590,7 +590,7 @@ function $A() {
590
590
  } };
591
591
  }
592
592
  const j = { 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" };
593
- class ei {
593
+ class $A {
594
594
  constructor(e) {
595
595
  this.parser = e, this.name = j.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
596
596
  }
@@ -635,12 +635,12 @@ class ei {
635
635
  });
636
636
  }
637
637
  }
638
- class ai {
638
+ class ei {
639
639
  constructor() {
640
640
  this.name = j.KHR_MATERIALS_UNLIT;
641
641
  }
642
642
  getMaterialType() {
643
- return Te;
643
+ return Le;
644
644
  }
645
645
  extendParams(e, a, t) {
646
646
  const A = [];
@@ -656,7 +656,7 @@ class ai {
656
656
  return Promise.all(A);
657
657
  }
658
658
  }
659
- class ti {
659
+ class ai {
660
660
  constructor(e) {
661
661
  this.parser = e, this.name = j.KHR_MATERIALS_EMISSIVE_STRENGTH;
662
662
  }
@@ -667,7 +667,7 @@ class ti {
667
667
  return A !== void 0 && (a.emissiveIntensity = A), Promise.resolve();
668
668
  }
669
669
  }
670
- class Ai {
670
+ class ti {
671
671
  constructor(e) {
672
672
  this.parser = e, this.name = j.KHR_MATERIALS_CLEARCOAT;
673
673
  }
@@ -686,7 +686,7 @@ class Ai {
686
686
  return Promise.all(i);
687
687
  }
688
688
  }
689
- class ii {
689
+ class Ai {
690
690
  constructor(e) {
691
691
  this.parser = e, this.name = j.KHR_MATERIALS_DISPERSION;
692
692
  }
@@ -701,7 +701,7 @@ class ii {
701
701
  return a.dispersion = A.dispersion !== void 0 ? A.dispersion : 0, Promise.resolve();
702
702
  }
703
703
  }
704
- class si {
704
+ class ii {
705
705
  constructor(e) {
706
706
  this.parser = e, this.name = j.KHR_MATERIALS_IRIDESCENCE;
707
707
  }
@@ -716,7 +716,7 @@ class si {
716
716
  return s.iridescenceFactor !== void 0 && (a.iridescence = s.iridescenceFactor), s.iridescenceTexture !== void 0 && i.push(t.assignTexture(a, "iridescenceMap", s.iridescenceTexture)), s.iridescenceIor !== void 0 && (a.iridescenceIOR = s.iridescenceIor), a.iridescenceThicknessRange === void 0 && (a.iridescenceThicknessRange = [100, 400]), s.iridescenceThicknessMinimum !== void 0 && (a.iridescenceThicknessRange[0] = s.iridescenceThicknessMinimum), s.iridescenceThicknessMaximum !== void 0 && (a.iridescenceThicknessRange[1] = s.iridescenceThicknessMaximum), s.iridescenceThicknessTexture !== void 0 && i.push(t.assignTexture(a, "iridescenceThicknessMap", s.iridescenceThicknessTexture)), Promise.all(i);
717
717
  }
718
718
  }
719
- class ri {
719
+ class si {
720
720
  constructor(e) {
721
721
  this.parser = e, this.name = j.KHR_MATERIALS_SHEEN;
722
722
  }
@@ -737,7 +737,7 @@ class ri {
737
737
  return s.sheenRoughnessFactor !== void 0 && (a.sheenRoughness = s.sheenRoughnessFactor), s.sheenColorTexture !== void 0 && i.push(t.assignTexture(a, "sheenColorMap", s.sheenColorTexture, re)), s.sheenRoughnessTexture !== void 0 && i.push(t.assignTexture(a, "sheenRoughnessMap", s.sheenRoughnessTexture)), Promise.all(i);
738
738
  }
739
739
  }
740
- class ni {
740
+ class ri {
741
741
  constructor(e) {
742
742
  this.parser = e, this.name = j.KHR_MATERIALS_TRANSMISSION;
743
743
  }
@@ -752,7 +752,7 @@ class ni {
752
752
  return s.transmissionFactor !== void 0 && (a.transmission = s.transmissionFactor), s.transmissionTexture !== void 0 && i.push(t.assignTexture(a, "transmissionMap", s.transmissionTexture)), Promise.all(i);
753
753
  }
754
754
  }
755
- class oi {
755
+ class ni {
756
756
  constructor(e) {
757
757
  this.parser = e, this.name = j.KHR_MATERIALS_VOLUME;
758
758
  }
@@ -769,7 +769,7 @@ class oi {
769
769
  return a.attenuationColor = new he().setRGB(r[0], r[1], r[2], K), Promise.all(i);
770
770
  }
771
771
  }
772
- class ci {
772
+ class oi {
773
773
  constructor(e) {
774
774
  this.parser = e, this.name = j.KHR_MATERIALS_IOR;
775
775
  }
@@ -784,7 +784,7 @@ class ci {
784
784
  return a.ior = A.ior !== void 0 ? A.ior : 1.5, Promise.resolve();
785
785
  }
786
786
  }
787
- class di {
787
+ class ci {
788
788
  constructor(e) {
789
789
  this.parser = e, this.name = j.KHR_MATERIALS_SPECULAR;
790
790
  }
@@ -801,7 +801,7 @@ class di {
801
801
  return a.specularColor = new he().setRGB(r[0], r[1], r[2], K), s.specularColorTexture !== void 0 && i.push(t.assignTexture(a, "specularColorMap", s.specularColorTexture, re)), Promise.all(i);
802
802
  }
803
803
  }
804
- class bi {
804
+ class di {
805
805
  constructor(e) {
806
806
  this.parser = e, this.name = j.EXT_MATERIALS_BUMP;
807
807
  }
@@ -816,7 +816,7 @@ class bi {
816
816
  return a.bumpScale = s.bumpFactor !== void 0 ? s.bumpFactor : 1, s.bumpTexture !== void 0 && i.push(t.assignTexture(a, "bumpMap", s.bumpTexture)), Promise.all(i);
817
817
  }
818
818
  }
819
- class li {
819
+ class bi {
820
820
  constructor(e) {
821
821
  this.parser = e, this.name = j.KHR_MATERIALS_ANISOTROPY;
822
822
  }
@@ -831,7 +831,7 @@ class li {
831
831
  return s.anisotropyStrength !== void 0 && (a.anisotropy = s.anisotropyStrength), s.anisotropyRotation !== void 0 && (a.anisotropyRotation = s.anisotropyRotation), s.anisotropyTexture !== void 0 && i.push(t.assignTexture(a, "anisotropyMap", s.anisotropyTexture)), Promise.all(i);
832
832
  }
833
833
  }
834
- class hi {
834
+ class li {
835
835
  constructor(e) {
836
836
  this.parser = e, this.name = j.KHR_TEXTURE_BASISU;
837
837
  }
@@ -846,7 +846,7 @@ class hi {
846
846
  return a.loadTextureImage(e, i.source, s);
847
847
  }
848
848
  }
849
- class gi {
849
+ class hi {
850
850
  constructor(e) {
851
851
  this.parser = e, this.name = j.EXT_TEXTURE_WEBP, this.isSupported = null;
852
852
  }
@@ -874,7 +874,7 @@ class gi {
874
874
  })), this.isSupported;
875
875
  }
876
876
  }
877
- class fi {
877
+ class gi {
878
878
  constructor(e) {
879
879
  this.parser = e, this.name = j.EXT_TEXTURE_AVIF, this.isSupported = null;
880
880
  }
@@ -902,7 +902,7 @@ class fi {
902
902
  })), this.isSupported;
903
903
  }
904
904
  }
905
- class Ii {
905
+ class fi {
906
906
  constructor(e) {
907
907
  this.name = j.EXT_MESHOPT_COMPRESSION, this.parser = e;
908
908
  }
@@ -941,11 +941,11 @@ class ui {
941
941
  return s.length < 1 ? null : (s.push(this.parser.createNodeMesh(e)), Promise.all(s).then((c) => {
942
942
  const n = c.pop(), b = n.isGroup ? n.children : [n], d = c[0].count, l = [];
943
943
  for (const g of b) {
944
- const h = new De(), f = new S(), u = new Ct(), I = new S(1, 1, 1), p = new AA(g.geometry, g.material, d);
945
- for (let B = 0; B < d; B++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, B), r.ROTATION && u.fromBufferAttribute(r.ROTATION, B), r.SCALE && I.fromBufferAttribute(r.SCALE, B), p.setMatrixAt(B, h.compose(f, u, I));
944
+ const h = new je(), f = new S(), I = new Ct(), u = new S(1, 1, 1), p = new AA(g.geometry, g.material, d);
945
+ for (let B = 0; B < d; B++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, B), r.ROTATION && I.fromBufferAttribute(r.ROTATION, B), r.SCALE && u.fromBufferAttribute(r.SCALE, B), p.setMatrixAt(B, h.compose(f, I, u));
946
946
  for (const B in r) if (B === "_COLOR_0") {
947
947
  const C = r[B];
948
- p.instanceColor = new Qa(C.array, C.itemSize, C.normalized);
948
+ p.instanceColor = new ya(C.array, C.itemSize, C.normalized);
949
949
  } else B !== "TRANSLATION" && B !== "ROTATION" && B !== "SCALE" && g.geometry.setAttribute(B, r[B]);
950
950
  Bt.prototype.copy.call(p, g), this.parser.assignFinalMaterial(p), l.push(p);
951
951
  }
@@ -953,8 +953,8 @@ class ui {
953
953
  }));
954
954
  }
955
955
  }
956
- const jt = "glTF", pi = 1313821514, Ci = 5130562;
957
- class Bi {
956
+ const jt = "glTF", Ii = 1313821514, pi = 5130562;
957
+ class Ci {
958
958
  constructor(e) {
959
959
  this.name = j.KHR_BINARY_GLTF, this.content = null, this.body = null;
960
960
  const a = new DataView(e, 0, 12), t = new TextDecoder();
@@ -966,10 +966,10 @@ class Bi {
966
966
  const r = i.getUint32(s, !0);
967
967
  s += 4;
968
968
  const c = i.getUint32(s, !0);
969
- if (s += 4, c === pi) {
969
+ if (s += 4, c === Ii) {
970
970
  const n = new Uint8Array(e, 12 + s, r);
971
971
  this.content = t.decode(n);
972
- } else if (c === Ci) {
972
+ } else if (c === pi) {
973
973
  const n = 12 + s;
974
974
  this.body = e.slice(n, n + r);
975
975
  }
@@ -978,7 +978,7 @@ class Bi {
978
978
  if (this.content === null) throw new Error("THREE.GLTFLoader: JSON content not found.");
979
979
  }
980
980
  }
981
- class Ei {
981
+ class Bi {
982
982
  constructor(e, a) {
983
983
  if (!a) throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
984
984
  this.name = j.KHR_DRACO_MESH_COMPRESSION, this.json = e, this.dracoLoader = a, this.dracoLoader.preload();
@@ -986,13 +986,13 @@ class Ei {
986
986
  decodePrimitive(e, a) {
987
987
  const t = this.json, A = this.dracoLoader, i = e.extensions[this.name].bufferView, s = e.extensions[this.name].attributes, r = {}, c = {}, n = {};
988
988
  for (const b in s) {
989
- const d = ka[b] || b.toLowerCase();
989
+ const d = Da[b] || b.toLowerCase();
990
990
  r[d] = s[b];
991
991
  }
992
992
  for (const b in e.attributes) {
993
- const d = ka[b] || b.toLowerCase();
993
+ const d = Da[b] || b.toLowerCase();
994
994
  if (s[b] !== void 0) {
995
- const l = t.accessors[e.attributes[b]], g = xe[l.componentType];
995
+ const l = t.accessors[e.attributes[b]], g = ke[l.componentType];
996
996
  n[d] = g.name, c[d] = l.normalized === !0;
997
997
  }
998
998
  }
@@ -1000,8 +1000,8 @@ class Ei {
1000
1000
  return new Promise(function(d, l) {
1001
1001
  A.decodeDracoFile(b, function(g) {
1002
1002
  for (const h in g.attributes) {
1003
- const f = g.attributes[h], u = c[h];
1004
- u !== void 0 && (f.normalized = u);
1003
+ const f = g.attributes[h], I = c[h];
1004
+ I !== void 0 && (f.normalized = I);
1005
1005
  }
1006
1006
  d(g);
1007
1007
  }, r, n, K, l);
@@ -1017,7 +1017,7 @@ class mi {
1017
1017
  return (a.texCoord !== void 0 && a.texCoord !== e.channel || a.offset !== void 0 || a.rotation !== void 0 || a.scale !== void 0) && (e = e.clone(), a.texCoord !== void 0 && (e.channel = a.texCoord), a.offset !== void 0 && e.offset.fromArray(a.offset), a.rotation !== void 0 && (e.rotation = a.rotation), a.scale !== void 0 && e.repeat.fromArray(a.scale), e.needsUpdate = !0), e;
1018
1018
  }
1019
1019
  }
1020
- class Qi {
1020
+ class Ei {
1021
1021
  constructor() {
1022
1022
  this.name = j.KHR_MESH_QUANTIZATION;
1023
1023
  }
@@ -1032,29 +1032,29 @@ class Mt extends jA {
1032
1032
  return a;
1033
1033
  }
1034
1034
  interpolate_(e, a, t, A) {
1035
- const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, c = 2 * r, n = 3 * r, b = A - a, d = (t - a) / b, l = d * d, g = l * d, h = e * n, f = h - n, u = -2 * g + 3 * l, I = g - l, p = 1 - u, B = I - l + d;
1035
+ const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, c = 2 * r, n = 3 * r, b = A - a, d = (t - a) / b, l = d * d, g = l * d, h = e * n, f = h - n, I = -2 * g + 3 * l, u = g - l, p = 1 - I, B = u - l + d;
1036
1036
  for (let C = 0; C !== r; C++) {
1037
- const w = s[f + C + r], x = s[f + C + c] * b, y = s[h + C + r], E = s[h + C] * b;
1038
- i[C] = p * w + B * x + u * y + I * E;
1037
+ const w = s[f + C + r], x = s[f + C + c] * b, y = s[h + C + r], m = s[h + C] * b;
1038
+ i[C] = p * w + B * x + I * y + u * m;
1039
1039
  }
1040
1040
  return i;
1041
1041
  }
1042
1042
  }
1043
- const yi = new Ct();
1044
- class wi extends Mt {
1043
+ const Qi = new Ct();
1044
+ class yi extends Mt {
1045
1045
  interpolate_(e, a, t, A) {
1046
1046
  const i = super.interpolate_(e, a, t, A);
1047
- return yi.fromArray(i).normalize().toArray(i), i;
1047
+ return Qi.fromArray(i).normalize().toArray(i), i;
1048
1048
  }
1049
1049
  }
1050
- const H = { 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 }, xe = { 5120: Int8Array, 5121: Uint8Array, 5122: Int16Array, 5123: Uint16Array, 5125: Uint32Array, 5126: Float32Array }, $a = { 9728: M, 9729: He, 9984: mA, 9985: QA, 9986: yA, 9987: va }, et = { 33071: wA, 33648: xA, 10497: ya }, sa = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 }, ka = { 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" }, oe = { scale: "scale", translation: "position", rotation: "quaternion", weights: "morphTargetInfluences" }, xi = { CUBICSPLINE: void 0, LINEAR: mt, STEP: kA }, ki = "OPAQUE", Di = "MASK", ji = "BLEND";
1050
+ const H = { 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 }, ke = { 5120: Int8Array, 5121: Uint8Array, 5122: Int16Array, 5123: Uint16Array, 5125: Uint32Array, 5126: Float32Array }, $a = { 9728: M, 9729: Ce, 9984: EA, 9985: QA, 9986: yA, 9987: $e }, et = { 33071: wA, 33648: xA, 10497: wa }, ra = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 }, Da = { 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" }, oe = { scale: "scale", translation: "position", rotation: "quaternion", weights: "morphTargetInfluences" }, wi = { CUBICSPLINE: void 0, LINEAR: Et, STEP: kA }, xi = "OPAQUE", ki = "MASK", Di = "BLEND";
1051
1051
  function fe(o, e, a) {
1052
1052
  for (const t in a.extensions) o[t] === void 0 && (e.userData.gltfExtensions = e.userData.gltfExtensions || {}, e.userData.gltfExtensions[t] = a.extensions[t]);
1053
1053
  }
1054
1054
  function ie(o, e) {
1055
1055
  e.extras !== void 0 && (typeof e.extras == "object" ? Object.assign(o.userData, e.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + e.extras));
1056
1056
  }
1057
- function Mi(o, e) {
1057
+ function ji(o, e) {
1058
1058
  if (o.updateMorphTargets(), e.weights !== void 0) for (let a = 0, t = e.weights.length; a < t; a++) o.morphTargetInfluences[a] = e.weights[a];
1059
1059
  if (e.extras && Array.isArray(e.extras.targetNames)) {
1060
1060
  const a = e.extras.targetNames;
@@ -1064,19 +1064,19 @@ function Mi(o, e) {
1064
1064
  } else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
1065
1065
  }
1066
1066
  }
1067
- function Ri(o) {
1067
+ function Mi(o) {
1068
1068
  let e;
1069
1069
  const a = o.extensions && o.extensions[j.KHR_DRACO_MESH_COMPRESSION];
1070
- if (e = a ? "draco:" + a.bufferView + ":" + a.indices + ":" + ra(a.attributes) : o.indices + ":" + ra(o.attributes) + ":" + o.mode, o.targets !== void 0) for (let t = 0, A = o.targets.length; t < A; t++) e += ":" + ra(o.targets[t]);
1070
+ if (e = a ? "draco:" + a.bufferView + ":" + a.indices + ":" + na(a.attributes) : o.indices + ":" + na(o.attributes) + ":" + o.mode, o.targets !== void 0) for (let t = 0, A = o.targets.length; t < A; t++) e += ":" + na(o.targets[t]);
1071
1071
  return e;
1072
1072
  }
1073
- function ra(o) {
1073
+ function na(o) {
1074
1074
  let e = "";
1075
1075
  const a = Object.keys(o).sort();
1076
1076
  for (let t = 0, A = a.length; t < A; t++) e += a[t] + ":" + o[a[t]] + ";";
1077
1077
  return e;
1078
1078
  }
1079
- function Da(o) {
1079
+ function ja(o) {
1080
1080
  switch (o) {
1081
1081
  case Int8Array:
1082
1082
  return 1 / 127;
@@ -1090,10 +1090,10 @@ function Da(o) {
1090
1090
  throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
1091
1091
  }
1092
1092
  }
1093
- const Si = new De();
1094
- class Fi {
1093
+ const Ri = new je();
1094
+ class Si {
1095
1095
  constructor(e = {}, a = {}) {
1096
- this.json = e, this.extensions = {}, this.plugins = {}, this.options = a, this.cache = new $A(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
1096
+ this.json = e, this.extensions = {}, this.plugins = {}, this.options = a, this.cache = new ZA(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
1097
1097
  let t = !1, A = -1, i = !1, s = -1;
1098
1098
  if (typeof navigator < "u") {
1099
1099
  const r = navigator.userAgent;
@@ -1101,7 +1101,7 @@ class Fi {
1101
1101
  const c = r.match(/Version\/(\d+)/);
1102
1102
  A = t && c ? parseInt(c[1], 10) : -1, i = r.indexOf("Firefox") > -1, s = i ? r.match(/Firefox\/([0-9]+)\./)[1] : -1;
1103
1103
  }
1104
- typeof createImageBitmap > "u" || t && A < 17 || i && s < 98 ? this.textureLoader = new iA(this.options.manager) : this.textureLoader = new sA(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new Ce(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
1104
+ typeof createImageBitmap > "u" || t && A < 17 || i && s < 98 ? this.textureLoader = new iA(this.options.manager) : this.textureLoader = new sA(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new Be(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
1105
1105
  }
1106
1106
  setExtensions(e) {
1107
1107
  this.extensions = e;
@@ -1244,7 +1244,7 @@ class Fi {
1244
1244
  if (a.uri === void 0 && e === 0) return Promise.resolve(this.extensions[j.KHR_BINARY_GLTF].body);
1245
1245
  const A = this.options;
1246
1246
  return new Promise(function(i, s) {
1247
- t.load(Ne.resolveURL(a.uri, A.path), i, void 0, function() {
1247
+ t.load(Pe.resolveURL(a.uri, A.path), i, void 0, function() {
1248
1248
  s(new Error('THREE.GLTFLoader: Failed to load buffer "' + a.uri + '".'));
1249
1249
  });
1250
1250
  });
@@ -1259,28 +1259,28 @@ class Fi {
1259
1259
  loadAccessor(e) {
1260
1260
  const a = this, t = this.json, A = this.json.accessors[e];
1261
1261
  if (A.bufferView === void 0 && A.sparse === void 0) {
1262
- const s = sa[A.type], r = xe[A.componentType], c = A.normalized === !0, n = new r(A.count * s);
1262
+ const s = ra[A.type], r = ke[A.componentType], c = A.normalized === !0, n = new r(A.count * s);
1263
1263
  return Promise.resolve(new le(n, s, c));
1264
1264
  }
1265
1265
  const i = [];
1266
1266
  return A.bufferView !== void 0 ? i.push(this.getDependency("bufferView", A.bufferView)) : i.push(null), A.sparse !== void 0 && (i.push(this.getDependency("bufferView", A.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", A.sparse.values.bufferView))), Promise.all(i).then(function(s) {
1267
- const r = s[0], c = sa[A.type], n = xe[A.componentType], b = n.BYTES_PER_ELEMENT, d = b * c, l = A.byteOffset || 0, g = A.bufferView !== void 0 ? t.bufferViews[A.bufferView].byteStride : void 0, h = A.normalized === !0;
1268
- let f, u;
1267
+ const r = s[0], c = ra[A.type], n = ke[A.componentType], b = n.BYTES_PER_ELEMENT, d = b * c, l = A.byteOffset || 0, g = A.bufferView !== void 0 ? t.bufferViews[A.bufferView].byteStride : void 0, h = A.normalized === !0;
1268
+ let f, I;
1269
1269
  if (g && g !== d) {
1270
- const I = Math.floor(l / g), p = "InterleavedBuffer:" + A.bufferView + ":" + A.componentType + ":" + I + ":" + A.count;
1270
+ const u = Math.floor(l / g), p = "InterleavedBuffer:" + A.bufferView + ":" + A.componentType + ":" + u + ":" + A.count;
1271
1271
  let B = a.cache.get(p);
1272
- B || (f = new n(r, I * g, A.count * g / b), B = new rA(f, g / b), a.cache.add(p, B)), u = new nA(B, c, l % g / b, h);
1273
- } else f = r === null ? new n(A.count * c) : new n(r, l, A.count * c), u = new le(f, c, h);
1272
+ B || (f = new n(r, u * g, A.count * g / b), B = new rA(f, g / b), a.cache.add(p, B)), I = new nA(B, c, l % g / b, h);
1273
+ } else f = r === null ? new n(A.count * c) : new n(r, l, A.count * c), I = new le(f, c, h);
1274
1274
  if (A.sparse !== void 0) {
1275
- const I = sa.SCALAR, p = xe[A.sparse.indices.componentType], B = A.sparse.indices.byteOffset || 0, C = A.sparse.values.byteOffset || 0, w = new p(s[1], B, A.sparse.count * I), x = new n(s[2], C, A.sparse.count * c);
1276
- r !== null && (u = new le(u.array.slice(), u.itemSize, u.normalized)), u.normalized = !1;
1277
- for (let y = 0, E = w.length; y < E; y++) {
1275
+ const u = ra.SCALAR, p = ke[A.sparse.indices.componentType], B = A.sparse.indices.byteOffset || 0, C = A.sparse.values.byteOffset || 0, w = new p(s[1], B, A.sparse.count * u), x = new n(s[2], C, A.sparse.count * c);
1276
+ r !== null && (I = new le(I.array.slice(), I.itemSize, I.normalized)), I.normalized = !1;
1277
+ for (let y = 0, m = w.length; y < m; y++) {
1278
1278
  const Q = w[y];
1279
- if (u.setX(Q, x[y * c]), c >= 2 && u.setY(Q, x[y * c + 1]), c >= 3 && u.setZ(Q, x[y * c + 2]), c >= 4 && u.setW(Q, x[y * c + 3]), c >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
1279
+ if (I.setX(Q, x[y * c]), c >= 2 && I.setY(Q, x[y * c + 1]), c >= 3 && I.setZ(Q, x[y * c + 2]), c >= 4 && I.setW(Q, x[y * c + 3]), c >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
1280
1280
  }
1281
- u.normalized = h;
1281
+ I.normalized = h;
1282
1282
  }
1283
- return u;
1283
+ return I;
1284
1284
  });
1285
1285
  }
1286
1286
  loadTexture(e) {
@@ -1298,7 +1298,7 @@ class Fi {
1298
1298
  const n = this.loadImageSource(a, t).then(function(b) {
1299
1299
  b.flipY = !1, b.name = s.name || r.name || "", b.name === "" && typeof r.uri == "string" && r.uri.startsWith("data:image/") === !1 && (b.name = r.uri);
1300
1300
  const d = (i.samplers || {})[s.sampler] || {};
1301
- return b.magFilter = $a[d.magFilter] || He, b.minFilter = $a[d.minFilter] || va, b.wrapS = et[d.wrapS] || ya, b.wrapT = et[d.wrapT] || ya, b.generateMipmaps = !b.isCompressedTexture && b.minFilter !== M && b.minFilter !== He, A.associations.set(b, { textures: e }), b;
1301
+ return b.magFilter = $a[d.magFilter] || Ce, b.minFilter = $a[d.minFilter] || $e, b.wrapS = et[d.wrapS] || wa, b.wrapT = et[d.wrapT] || wa, b.generateMipmaps = !b.isCompressedTexture && b.minFilter !== M && b.minFilter !== Ce, A.associations.set(b, { textures: e }), b;
1302
1302
  }).catch(function() {
1303
1303
  return null;
1304
1304
  });
@@ -1319,9 +1319,9 @@ class Fi {
1319
1319
  return new Promise(function(l, g) {
1320
1320
  let h = l;
1321
1321
  a.isImageBitmapLoader === !0 && (h = function(f) {
1322
- const u = new Na(f);
1323
- u.needsUpdate = !0, l(u);
1324
- }), a.load(Ne.resolveURL(d, i.path), h, void 0, g);
1322
+ const I = new Na(f);
1323
+ I.needsUpdate = !0, l(I);
1324
+ }), a.load(Pe.resolveURL(d, i.path), h, void 0, g);
1325
1325
  });
1326
1326
  }).then(function(d) {
1327
1327
  var l;
@@ -1352,11 +1352,11 @@ class Fi {
1352
1352
  if (e.isPoints) {
1353
1353
  const r = "PointsMaterial:" + t.uuid;
1354
1354
  let c = this.cache.get(r);
1355
- c || (c = new oA(), ea.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, c.sizeAttenuation = !1, this.cache.add(r, c)), t = c;
1355
+ c || (c = new oA(), aa.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, c.sizeAttenuation = !1, this.cache.add(r, c)), t = c;
1356
1356
  } else if (e.isLine) {
1357
1357
  const r = "LineBasicMaterial:" + t.uuid;
1358
1358
  let c = this.cache.get(r);
1359
- c || (c = new cA(), ea.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, this.cache.add(r, c)), t = c;
1359
+ c || (c = new cA(), aa.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, this.cache.add(r, c)), t = c;
1360
1360
  }
1361
1361
  if (A || i || s) {
1362
1362
  let r = "ClonedMaterial:" + t.uuid + ":";
@@ -1389,16 +1389,16 @@ class Fi {
1389
1389
  })));
1390
1390
  }
1391
1391
  i.doubleSided === !0 && (r.side = dA);
1392
- const n = i.alphaMode || ki;
1393
- if (n === ji ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, n === Di && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && s !== Te && (c.push(a.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new pt(1, 1), i.normalTexture.scale !== void 0)) {
1392
+ const n = i.alphaMode || xi;
1393
+ if (n === Di ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, n === ki && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && s !== Le && (c.push(a.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new pt(1, 1), i.normalTexture.scale !== void 0)) {
1394
1394
  const b = i.normalTexture.scale;
1395
1395
  r.normalScale.set(b, b);
1396
1396
  }
1397
- if (i.occlusionTexture !== void 0 && s !== Te && (c.push(a.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && s !== Te) {
1397
+ if (i.occlusionTexture !== void 0 && s !== Le && (c.push(a.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && s !== Le) {
1398
1398
  const b = i.emissiveFactor;
1399
1399
  r.emissive = new he().setRGB(b[0], b[1], b[2], K);
1400
1400
  }
1401
- return i.emissiveTexture !== void 0 && s !== Te && c.push(a.assignTexture(r, "emissiveMap", i.emissiveTexture, re)), Promise.all(c).then(function() {
1401
+ return i.emissiveTexture !== void 0 && s !== Le && c.push(a.assignTexture(r, "emissiveMap", i.emissiveTexture, re)), Promise.all(c).then(function() {
1402
1402
  const b = new s(r);
1403
1403
  return i.name && (b.name = i.name), ie(b, i), a.associations.set(b, { materials: e }), i.extensions && fe(A, b, i), b;
1404
1404
  });
@@ -1416,11 +1416,11 @@ class Fi {
1416
1416
  }
1417
1417
  const s = [];
1418
1418
  for (let r = 0, c = e.length; r < c; r++) {
1419
- const n = e[r], b = Ri(n), d = A[b];
1419
+ const n = e[r], b = Mi(n), d = A[b];
1420
1420
  if (d) s.push(d.promise);
1421
1421
  else {
1422
1422
  let l;
1423
- l = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new Sa(), n, a), A[b] = { primitive: n, promise: l }, s.push(l);
1423
+ l = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new va(), n, a), A[b] = { primitive: n, promise: l }, s.push(l);
1424
1424
  }
1425
1425
  }
1426
1426
  return Promise.all(s);
@@ -1435,22 +1435,22 @@ class Fi {
1435
1435
  return r.push(a.loadGeometries(s)), Promise.all(r).then(function(n) {
1436
1436
  const b = n.slice(0, n.length - 1), d = n[n.length - 1], l = [];
1437
1437
  for (let h = 0, f = d.length; h < f; h++) {
1438
- const u = d[h], I = s[h];
1438
+ const I = d[h], u = s[h];
1439
1439
  let p;
1440
1440
  const B = b[h];
1441
- if (I.mode === H.TRIANGLES || I.mode === H.TRIANGLE_STRIP || I.mode === H.TRIANGLE_FAN || I.mode === void 0) p = i.isSkinnedMesh === !0 ? new lA(u, B) : new wa(u, B), p.isSkinnedMesh === !0 && p.normalizeSkinWeights(), I.mode === H.TRIANGLE_STRIP ? p.geometry = Za(p.geometry, ut) : I.mode === H.TRIANGLE_FAN && (p.geometry = Za(p.geometry, ma));
1442
- else if (I.mode === H.LINES) p = new hA(u, B);
1443
- else if (I.mode === H.LINE_STRIP) p = new gA(u, B);
1444
- else if (I.mode === H.LINE_LOOP) p = new fA(u, B);
1441
+ if (u.mode === H.TRIANGLES || u.mode === H.TRIANGLE_STRIP || u.mode === H.TRIANGLE_FAN || u.mode === void 0) p = i.isSkinnedMesh === !0 ? new lA(I, B) : new xa(I, B), p.isSkinnedMesh === !0 && p.normalizeSkinWeights(), u.mode === H.TRIANGLE_STRIP ? p.geometry = Za(p.geometry, It) : u.mode === H.TRIANGLE_FAN && (p.geometry = Za(p.geometry, Qa));
1442
+ else if (u.mode === H.LINES) p = new hA(I, B);
1443
+ else if (u.mode === H.LINE_STRIP) p = new gA(I, B);
1444
+ else if (u.mode === H.LINE_LOOP) p = new fA(I, B);
1445
1445
  else {
1446
- if (I.mode !== H.POINTS) throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + I.mode);
1447
- p = new IA(u, B);
1446
+ if (u.mode !== H.POINTS) throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + u.mode);
1447
+ p = new uA(I, B);
1448
1448
  }
1449
- Object.keys(p.geometry.morphAttributes).length > 0 && Mi(p, i), p.name = a.createUniqueName(i.name || "mesh_" + e), ie(p, i), I.extensions && fe(A, p, I), a.assignFinalMaterial(p), l.push(p);
1449
+ Object.keys(p.geometry.morphAttributes).length > 0 && ji(p, i), p.name = a.createUniqueName(i.name || "mesh_" + e), ie(p, i), u.extensions && fe(A, p, u), a.assignFinalMaterial(p), l.push(p);
1450
1450
  }
1451
1451
  for (let h = 0, f = l.length; h < f; h++) a.associations.set(l[h], { meshes: e, primitives: h });
1452
1452
  if (l.length === 1) return i.extensions && fe(A, l[0], i), l[0];
1453
- const g = new aa();
1453
+ const g = new ta();
1454
1454
  i.extensions && fe(A, g, i), a.associations.set(g, { meshes: e });
1455
1455
  for (let h = 0, f = l.length; h < f; h++) g.add(l[h]);
1456
1456
  return g;
@@ -1459,7 +1459,7 @@ class Fi {
1459
1459
  loadCamera(e) {
1460
1460
  let a;
1461
1461
  const t = this.json.cameras[e], A = t[t.type];
1462
- if (A) return t.type === "perspective" ? a = new uA(pA.radToDeg(A.yfov), A.aspectRatio || 1, A.znear || 1, A.zfar || 2e6) : t.type === "orthographic" && (a = new Et(-A.xmag, A.xmag, A.ymag, -A.ymag, A.znear, A.zfar)), t.name && (a.name = this.createUniqueName(t.name)), ie(a, t), Promise.resolve(a);
1462
+ if (A) return t.type === "perspective" ? a = new IA(pA.radToDeg(A.yfov), A.aspectRatio || 1, A.znear || 1, A.zfar || 2e6) : t.type === "orthographic" && (a = new mt(-A.xmag, A.xmag, A.ymag, -A.ymag, A.znear, A.zfar)), t.name && (a.name = this.createUniqueName(t.name)), ie(a, t), Promise.resolve(a);
1463
1463
  console.warn("THREE.GLTFLoader: Missing camera parameters.");
1464
1464
  }
1465
1465
  loadSkin(e) {
@@ -1471,7 +1471,7 @@ class Fi {
1471
1471
  const d = s[n];
1472
1472
  if (d) {
1473
1473
  r.push(d);
1474
- const l = new De();
1474
+ const l = new je();
1475
1475
  i !== null && l.fromArray(i.array, 16 * n), c.push(l);
1476
1476
  } else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', a.joints[n]);
1477
1477
  }
@@ -1481,19 +1481,19 @@ class Fi {
1481
1481
  loadAnimation(e) {
1482
1482
  const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], c = [], n = [], b = [];
1483
1483
  for (let d = 0, l = A.channels.length; d < l; d++) {
1484
- const g = A.channels[d], h = A.samplers[g.sampler], f = g.target, u = f.node, I = A.parameters !== void 0 ? A.parameters[h.input] : h.input, p = A.parameters !== void 0 ? A.parameters[h.output] : h.output;
1485
- f.node !== void 0 && (s.push(this.getDependency("node", u)), r.push(this.getDependency("accessor", I)), c.push(this.getDependency("accessor", p)), n.push(h), b.push(f));
1484
+ const g = A.channels[d], h = A.samplers[g.sampler], f = g.target, I = f.node, u = A.parameters !== void 0 ? A.parameters[h.input] : h.input, p = A.parameters !== void 0 ? A.parameters[h.output] : h.output;
1485
+ f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", u)), c.push(this.getDependency("accessor", p)), n.push(h), b.push(f));
1486
1486
  }
1487
1487
  return Promise.all([Promise.all(s), Promise.all(r), Promise.all(c), Promise.all(n), Promise.all(b)]).then(function(d) {
1488
- const l = d[0], g = d[1], h = d[2], f = d[3], u = d[4], I = [];
1488
+ const l = d[0], g = d[1], h = d[2], f = d[3], I = d[4], u = [];
1489
1489
  for (let p = 0, B = l.length; p < B; p++) {
1490
- const C = l[p], w = g[p], x = h[p], y = f[p], E = u[p];
1490
+ const C = l[p], w = g[p], x = h[p], y = f[p], m = I[p];
1491
1491
  if (C === void 0) continue;
1492
1492
  C.updateMatrix && C.updateMatrix();
1493
- const Q = t._createAnimationTracks(C, w, x, y, E);
1494
- if (Q) for (let k = 0; k < Q.length; k++) I.push(Q[k]);
1493
+ const Q = t._createAnimationTracks(C, w, x, y, m);
1494
+ if (Q) for (let k = 0; k < Q.length; k++) u.push(Q[k]);
1495
1495
  }
1496
- return new BA(i, void 0, I);
1496
+ return new BA(i, void 0, u);
1497
1497
  });
1498
1498
  }
1499
1499
  createNodeMesh(e) {
@@ -1512,7 +1512,7 @@ class Fi {
1512
1512
  return Promise.all([A, Promise.all(i), r]).then(function(c) {
1513
1513
  const n = c[0], b = c[1], d = c[2];
1514
1514
  d !== null && n.traverse(function(l) {
1515
- l.isSkinnedMesh && l.bind(d, Si);
1515
+ l.isSkinnedMesh && l.bind(d, Ri);
1516
1516
  });
1517
1517
  for (let l = 0, g = b.length; l < g; l++) n.add(b[l]);
1518
1518
  return n;
@@ -1532,16 +1532,16 @@ class Fi {
1532
1532
  r.push(n);
1533
1533
  }), this.nodeCache[e] = Promise.all(r).then(function(n) {
1534
1534
  let b;
1535
- if (b = i.isBone === !0 ? new EA() : n.length > 1 ? new aa() : n.length === 1 ? n[0] : new Bt(), b !== n[0]) for (let d = 0, l = n.length; d < l; d++) b.add(n[d]);
1535
+ if (b = i.isBone === !0 ? new mA() : n.length > 1 ? new ta() : n.length === 1 ? n[0] : new Bt(), b !== n[0]) for (let d = 0, l = n.length; d < l; d++) b.add(n[d]);
1536
1536
  if (i.name && (b.userData.name = i.name, b.name = s), ie(b, i), i.extensions && fe(t, b, i), i.matrix !== void 0) {
1537
- const d = new De();
1537
+ const d = new je();
1538
1538
  d.fromArray(i.matrix), b.applyMatrix4(d);
1539
1539
  } else i.translation !== void 0 && b.position.fromArray(i.translation), i.rotation !== void 0 && b.quaternion.fromArray(i.rotation), i.scale !== void 0 && b.scale.fromArray(i.scale);
1540
1540
  return A.associations.has(b) || A.associations.set(b, {}), A.associations.get(b).nodes = e, b;
1541
1541
  }), this.nodeCache[e];
1542
1542
  }
1543
1543
  loadScene(e) {
1544
- const a = this.extensions, t = this.json.scenes[e], A = this, i = new aa();
1544
+ const a = this.extensions, t = this.json.scenes[e], A = this, i = new ta();
1545
1545
  t.name && (i.name = A.createUniqueName(t.name)), ie(i, t), t.extensions && fe(a, i, t);
1546
1546
  const s = t.nodes || [], r = [];
1547
1547
  for (let c = 0, n = s.length; c < n; c++) r.push(A.getDependency("node", s[c]));
@@ -1549,7 +1549,7 @@ class Fi {
1549
1549
  for (let n = 0, b = c.length; n < b; n++) i.add(c[n]);
1550
1550
  return A.associations = ((n) => {
1551
1551
  const b = /* @__PURE__ */ new Map();
1552
- for (const [d, l] of A.associations) (d instanceof ea || d instanceof Na) && b.set(d, l);
1552
+ for (const [d, l] of A.associations) (d instanceof aa || d instanceof Na) && b.set(d, l);
1553
1553
  return n.traverse((d) => {
1554
1554
  const l = A.associations.get(d);
1555
1555
  l != null && b.set(d, l);
@@ -1576,7 +1576,7 @@ class Fi {
1576
1576
  default:
1577
1577
  t.itemSize === 1 ? n = _a : n = Pa;
1578
1578
  }
1579
- const b = A.interpolation !== void 0 ? xi[A.interpolation] : mt, d = this._getArrayFromAccessor(t);
1579
+ const b = A.interpolation !== void 0 ? wi[A.interpolation] : Et, d = this._getArrayFromAccessor(t);
1580
1580
  for (let l = 0, g = c.length; l < g; l++) {
1581
1581
  const h = new n(c[l] + "." + oe[i.path], a.array, d, b);
1582
1582
  A.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(h), s.push(h);
@@ -1586,7 +1586,7 @@ class Fi {
1586
1586
  _getArrayFromAccessor(e) {
1587
1587
  let a = e.array;
1588
1588
  if (e.normalized) {
1589
- const t = Da(a.constructor), A = new Float32Array(a.length);
1589
+ const t = ja(a.constructor), A = new Float32Array(a.length);
1590
1590
  for (let i = 0, s = a.length; i < s; i++) A[i] = a[i] * t;
1591
1591
  a = A;
1592
1592
  }
@@ -1594,7 +1594,7 @@ class Fi {
1594
1594
  }
1595
1595
  _createCubicSplineTrackInterpolant(e) {
1596
1596
  e.createInterpolant = function(a) {
1597
- return new (this instanceof Ha ? wi : Mt)(this.times, this.values, this.getValueSize() / 3, a);
1597
+ return new (this instanceof Ha ? yi : Mt)(this.times, this.values, this.getValueSize() / 3, a);
1598
1598
  }, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
1599
1599
  }
1600
1600
  }
@@ -1606,7 +1606,7 @@ function at(o, e, a) {
1606
1606
  });
1607
1607
  }
1608
1608
  for (const s in t) {
1609
- const r = ka[s] || s.toLowerCase();
1609
+ const r = Da[s] || s.toLowerCase();
1610
1610
  r in o.attributes || A.push(i(t[s], r));
1611
1611
  }
1612
1612
  if (e.indices !== void 0 && !o.index) {
@@ -1615,27 +1615,27 @@ function at(o, e, a) {
1615
1615
  });
1616
1616
  A.push(s);
1617
1617
  }
1618
- return xa.workingColorSpace !== K && "COLOR_0" in t && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${xa.workingColorSpace}" not supported.`), ie(o, e), function(s, r, c) {
1619
- const n = r.attributes, b = new Ra();
1618
+ return ka.workingColorSpace !== K && "COLOR_0" in t && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ka.workingColorSpace}" not supported.`), ie(o, e), function(s, r, c) {
1619
+ const n = r.attributes, b = new Sa();
1620
1620
  if (n.POSITION === void 0) return;
1621
1621
  {
1622
1622
  const g = c.json.accessors[n.POSITION], h = g.min, f = g.max;
1623
1623
  if (h === void 0 || f === void 0) return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
1624
1624
  if (b.set(new S(h[0], h[1], h[2]), new S(f[0], f[1], f[2])), g.normalized) {
1625
- const u = Da(xe[g.componentType]);
1626
- b.min.multiplyScalar(u), b.max.multiplyScalar(u);
1625
+ const I = ja(ke[g.componentType]);
1626
+ b.min.multiplyScalar(I), b.max.multiplyScalar(I);
1627
1627
  }
1628
1628
  }
1629
1629
  const d = r.targets;
1630
1630
  if (d !== void 0) {
1631
1631
  const g = new S(), h = new S();
1632
- for (let f = 0, u = d.length; f < u; f++) {
1633
- const I = d[f];
1634
- if (I.POSITION !== void 0) {
1635
- const p = c.json.accessors[I.POSITION], B = p.min, C = p.max;
1632
+ for (let f = 0, I = d.length; f < I; f++) {
1633
+ const u = d[f];
1634
+ if (u.POSITION !== void 0) {
1635
+ const p = c.json.accessors[u.POSITION], B = p.min, C = p.max;
1636
1636
  if (B !== void 0 && C !== void 0) {
1637
1637
  if (h.setX(Math.max(Math.abs(B[0]), Math.abs(C[0]))), h.setY(Math.max(Math.abs(B[1]), Math.abs(C[1]))), h.setZ(Math.max(Math.abs(B[2]), Math.abs(C[2]))), p.normalized) {
1638
- const w = Da(xe[p.componentType]);
1638
+ const w = ja(ke[p.componentType]);
1639
1639
  h.multiplyScalar(w);
1640
1640
  }
1641
1641
  g.max(h);
@@ -1650,35 +1650,35 @@ function at(o, e, a) {
1650
1650
  }(o, e, a), Promise.all(A).then(function() {
1651
1651
  return e.targets !== void 0 ? function(s, r, c) {
1652
1652
  let n = !1, b = !1, d = !1;
1653
- for (let f = 0, u = r.length; f < u; f++) {
1654
- const I = r[f];
1655
- if (I.POSITION !== void 0 && (n = !0), I.NORMAL !== void 0 && (b = !0), I.COLOR_0 !== void 0 && (d = !0), n && b && d) break;
1653
+ for (let f = 0, I = r.length; f < I; f++) {
1654
+ const u = r[f];
1655
+ if (u.POSITION !== void 0 && (n = !0), u.NORMAL !== void 0 && (b = !0), u.COLOR_0 !== void 0 && (d = !0), n && b && d) break;
1656
1656
  }
1657
1657
  if (!n && !b && !d) return Promise.resolve(s);
1658
1658
  const l = [], g = [], h = [];
1659
- for (let f = 0, u = r.length; f < u; f++) {
1660
- const I = r[f];
1659
+ for (let f = 0, I = r.length; f < I; f++) {
1660
+ const u = r[f];
1661
1661
  if (n) {
1662
- const p = I.POSITION !== void 0 ? c.getDependency("accessor", I.POSITION) : s.attributes.position;
1662
+ const p = u.POSITION !== void 0 ? c.getDependency("accessor", u.POSITION) : s.attributes.position;
1663
1663
  l.push(p);
1664
1664
  }
1665
1665
  if (b) {
1666
- const p = I.NORMAL !== void 0 ? c.getDependency("accessor", I.NORMAL) : s.attributes.normal;
1666
+ const p = u.NORMAL !== void 0 ? c.getDependency("accessor", u.NORMAL) : s.attributes.normal;
1667
1667
  g.push(p);
1668
1668
  }
1669
1669
  if (d) {
1670
- const p = I.COLOR_0 !== void 0 ? c.getDependency("accessor", I.COLOR_0) : s.attributes.color;
1670
+ const p = u.COLOR_0 !== void 0 ? c.getDependency("accessor", u.COLOR_0) : s.attributes.color;
1671
1671
  h.push(p);
1672
1672
  }
1673
1673
  }
1674
1674
  return Promise.all([Promise.all(l), Promise.all(g), Promise.all(h)]).then(function(f) {
1675
- const u = f[0], I = f[1], p = f[2];
1676
- return n && (s.morphAttributes.position = u), b && (s.morphAttributes.normal = I), d && (s.morphAttributes.color = p), s.morphTargetsRelative = !0, s;
1675
+ const I = f[0], u = f[1], p = f[2];
1676
+ return n && (s.morphAttributes.position = I), b && (s.morphAttributes.normal = u), d && (s.morphAttributes.color = p), s.morphTargetsRelative = !0, s;
1677
1677
  });
1678
1678
  }(o, e.targets, a) : o;
1679
1679
  });
1680
1680
  }
1681
- const na = /* @__PURE__ */ new WeakMap();
1681
+ const oa = /* @__PURE__ */ new WeakMap();
1682
1682
  class Rt extends Fa {
1683
1683
  constructor(e) {
1684
1684
  super(e), 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" };
@@ -1693,7 +1693,7 @@ class Rt extends Fa {
1693
1693
  return this.workerLimit = e, this;
1694
1694
  }
1695
1695
  load(e, a, t, A) {
1696
- const i = new Ce(this.manager);
1696
+ const i = new Be(this.manager);
1697
1697
  i.setPath(this.path), i.setResponseType("arraybuffer"), i.setRequestHeader(this.requestHeader), i.setWithCredentials(this.withCredentials), i.load(e, (s) => {
1698
1698
  this.parse(s, a, A);
1699
1699
  }, t, A);
@@ -1709,8 +1709,8 @@ class Rt extends Fa {
1709
1709
  }
1710
1710
  decodeGeometry(e, a) {
1711
1711
  const t = JSON.stringify(a);
1712
- if (na.has(e)) {
1713
- const c = na.get(e);
1712
+ if (oa.has(e)) {
1713
+ const c = oa.get(e);
1714
1714
  if (c.key === t) return c.promise;
1715
1715
  if (e.byteLength === 0) throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.");
1716
1716
  }
@@ -1720,10 +1720,10 @@ class Rt extends Fa {
1720
1720
  }))).then((c) => this._createGeometry(c.geometry));
1721
1721
  return r.catch(() => !0).then(() => {
1722
1722
  A && i && this._releaseTask(A, i);
1723
- }), na.set(e, { key: t, promise: r }), r;
1723
+ }), oa.set(e, { key: t, promise: r }), r;
1724
1724
  }
1725
1725
  _createGeometry(e) {
1726
- const a = new Sa();
1726
+ const a = new va();
1727
1727
  e.index && a.setIndex(new le(e.index.array, 1));
1728
1728
  for (let t = 0; t < e.attributes.length; t++) {
1729
1729
  const A = e.attributes[t], i = A.name, s = A.array, r = A.itemSize, c = new le(s, r);
@@ -1734,10 +1734,10 @@ class Rt extends Fa {
1734
1734
  _assignVertexColorSpace(e, a) {
1735
1735
  if (a !== re) return;
1736
1736
  const t = new he();
1737
- for (let A = 0, i = e.count; A < i; A++) t.fromBufferAttribute(e, A), xa.toWorkingColorSpace(t, re), e.setXYZ(A, t.r, t.g, t.b);
1737
+ for (let A = 0, i = e.count; A < i; A++) t.fromBufferAttribute(e, A), ka.toWorkingColorSpace(t, re), e.setXYZ(A, t.r, t.g, t.b);
1738
1738
  }
1739
1739
  _loadLibrary(e, a) {
1740
- const t = new Ce(this.manager);
1740
+ const t = new Be(this.manager);
1741
1741
  return t.setPath(this.decoderPath), t.setResponseType(a), t.setWithCredentials(this.withCredentials), new Promise((A, i) => {
1742
1742
  t.load(e, A, void 0, i);
1743
1743
  });
@@ -1794,8 +1794,8 @@ class Rt extends Fa {
1794
1794
  function vi() {
1795
1795
  let o, e;
1796
1796
  function a(t, A, i, s, r, c) {
1797
- const n = c.num_components(), b = i.num_points() * n, d = b * r.BYTES_PER_ELEMENT, l = function(f, u) {
1798
- switch (u) {
1797
+ const n = c.num_components(), b = i.num_points() * n, d = b * r.BYTES_PER_ELEMENT, l = function(f, I) {
1798
+ switch (I) {
1799
1799
  case Float32Array:
1800
1800
  return f.DT_FLOAT32;
1801
1801
  case Int8Array:
@@ -1832,7 +1832,7 @@ function vi() {
1832
1832
  const c = r.draco, n = new c.Decoder();
1833
1833
  try {
1834
1834
  const b = function(l, g, h, f) {
1835
- const u = f.attributeIDs, I = f.attributeTypes;
1835
+ const I = f.attributeIDs, u = f.attributeTypes;
1836
1836
  let p, B;
1837
1837
  const C = g.GetEncodedGeometryType(h);
1838
1838
  if (C === l.TRIANGULAR_MESH) p = new l.Mesh(), B = g.DecodeArrayToMesh(h, h.byteLength, p);
@@ -1842,22 +1842,22 @@ function vi() {
1842
1842
  }
1843
1843
  if (!B.ok() || p.ptr === 0) throw new Error("THREE.DRACOLoader: Decoding failed: " + B.error_msg());
1844
1844
  const w = { index: null, attributes: [] };
1845
- for (const x in u) {
1846
- const y = self[I[x]];
1847
- let E, Q;
1848
- if (f.useUniqueIDs) Q = u[x], E = g.GetAttributeByUniqueId(p, Q);
1845
+ for (const x in I) {
1846
+ const y = self[u[x]];
1847
+ let m, Q;
1848
+ if (f.useUniqueIDs) Q = I[x], m = g.GetAttributeByUniqueId(p, Q);
1849
1849
  else {
1850
- if (Q = g.GetAttributeId(p, l[u[x]]), Q === -1) continue;
1851
- E = g.GetAttribute(p, Q);
1850
+ if (Q = g.GetAttributeId(p, l[I[x]]), Q === -1) continue;
1851
+ m = g.GetAttribute(p, Q);
1852
1852
  }
1853
- const k = a(l, g, p, x, y, E);
1853
+ const k = a(l, g, p, x, y, m);
1854
1854
  x === "color" && (k.vertexColorSpace = f.vertexColorSpace), w.attributes.push(k);
1855
1855
  }
1856
- return C === l.TRIANGULAR_MESH && (w.index = function(x, y, E) {
1857
- const Q = E.num_faces(), k = 3 * Q, D = 4 * k, v = x._malloc(D);
1858
- y.GetTrianglesUInt32Array(E, D, v);
1859
- const _ = new Uint32Array(x.HEAPF32.buffer, v, k).slice();
1860
- return x._free(v), { array: _, itemSize: 1 };
1856
+ return C === l.TRIANGULAR_MESH && (w.index = function(x, y, m) {
1857
+ const Q = m.num_faces(), k = 3 * Q, D = 4 * k, F = x._malloc(D);
1858
+ y.GetTrianglesUInt32Array(m, D, F);
1859
+ const _ = new Uint32Array(x.HEAPF32.buffer, F, k).slice();
1860
+ return x._free(F), { array: _, itemSize: 1 };
1861
1861
  }(l, g, p)), l.destroy(p), w;
1862
1862
  }(c, n, new Int8Array(i), s), d = b.attributes.map((l) => l.array.buffer);
1863
1863
  b.index && d.push(b.index.array.buffer), self.postMessage({ type: "decode", id: A.id, geometry: b }, d);
@@ -1870,7 +1870,7 @@ function vi() {
1870
1870
  }
1871
1871
  };
1872
1872
  }
1873
- class Ti {
1873
+ class Fi {
1874
1874
  constructor(e = 4) {
1875
1875
  this.pool = e, this.queue = [], this.workers = [], this.workersResolve = [], this.workerStatus = 0;
1876
1876
  }
@@ -1907,8 +1907,8 @@ class Ti {
1907
1907
  this.workers.forEach((e) => e.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
1908
1908
  }
1909
1909
  }
1910
- const St = 9, Ft = 15, vt = 16, Tt = 22, Lt = 37, Gt = 43, Ut = 76, Nt = 83, Pt = 97, _t = 100, Ht = 103, qt = 109, Ot = 165, Jt = 166, Ta = 1000066e3;
1911
- class Li {
1910
+ const St = 9, vt = 15, Ft = 16, Tt = 22, Lt = 37, Gt = 43, Ut = 76, Nt = 83, Pt = 97, _t = 100, Ht = 103, qt = 109, Ot = 165, Jt = 166, Ta = 1000066e3;
1911
+ class Ti {
1912
1912
  constructor() {
1913
1913
  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;
1914
1914
  }
@@ -1956,30 +1956,30 @@ const U = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
1956
1956
  function tt(o) {
1957
1957
  return new TextDecoder().decode(o);
1958
1958
  }
1959
- let oa, Ae, ja;
1960
- const ca = { env: { emscripten_notify_memory_growth: function(o) {
1961
- ja = new Uint8Array(Ae.exports.memory.buffer);
1959
+ let ca, Ae, Ma;
1960
+ const da = { env: { emscripten_notify_memory_growth: function(o) {
1961
+ Ma = new Uint8Array(Ae.exports.memory.buffer);
1962
1962
  } } };
1963
- class Gi {
1963
+ class Li {
1964
1964
  init() {
1965
- return oa || (oa = typeof fetch < "u" ? fetch("data:application/wasm;base64," + At).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, ca)).then(this._init) : WebAssembly.instantiate(Buffer.from(At, "base64"), ca).then(this._init), oa);
1965
+ return ca || (ca = typeof fetch < "u" ? fetch("data:application/wasm;base64," + At).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, da)).then(this._init) : WebAssembly.instantiate(Buffer.from(At, "base64"), da).then(this._init), ca);
1966
1966
  }
1967
1967
  _init(e) {
1968
- Ae = e.instance, ca.env.emscripten_notify_memory_growth(0);
1968
+ Ae = e.instance, da.env.emscripten_notify_memory_growth(0);
1969
1969
  }
1970
1970
  decode(e, a = 0) {
1971
1971
  if (!Ae) throw new Error("ZSTDDecoder: Await .init() before decoding.");
1972
1972
  const t = e.byteLength, A = Ae.exports.malloc(t);
1973
- ja.set(e, A), a = a || Number(Ae.exports.ZSTD_findDecompressedSize(A, t));
1974
- const i = Ae.exports.malloc(a), s = Ae.exports.ZSTD_decompress(i, a, A, t), r = ja.slice(i, i + s);
1973
+ Ma.set(e, A), a = a || Number(Ae.exports.ZSTD_findDecompressedSize(A, t));
1974
+ const i = Ae.exports.malloc(a), s = Ae.exports.ZSTD_decompress(i, a, A, t), r = Ma.slice(i, i + s);
1975
1975
  return Ae.exports.free(A), Ae.exports.free(i), r;
1976
1976
  }
1977
1977
  }
1978
- const At = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+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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", da = /* @__PURE__ */ new WeakMap();
1979
- let ba, la = 0;
1978
+ const At = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+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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", ba = /* @__PURE__ */ new WeakMap();
1979
+ let la, ha = 0;
1980
1980
  class P extends Fa {
1981
1981
  constructor(e) {
1982
- super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new Ti(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.');
1982
+ super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new Fi(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.');
1983
1983
  }
1984
1984
  setTranscoderPath(e) {
1985
1985
  return this.transcoderPath = e, this;
@@ -1995,9 +1995,9 @@ class P extends Fa {
1995
1995
  }
1996
1996
  init() {
1997
1997
  if (!this.transcoderPending) {
1998
- const e = new Ce(this.manager);
1998
+ const e = new Be(this.manager);
1999
1999
  e.setPath(this.transcoderPath), e.setWithCredentials(this.withCredentials);
2000
- const a = e.loadAsync("basis_transcoder.js"), t = new Ce(this.manager);
2000
+ const a = e.loadAsync("basis_transcoder.js"), t = new Be(this.manager);
2001
2001
  t.setPath(this.transcoderPath), t.setResponseType("arraybuffer"), t.setWithCredentials(this.withCredentials);
2002
2002
  const A = t.loadAsync("basis_transcoder.wasm");
2003
2003
  this.transcoderPending = Promise.all([a, A]).then(([i, s]) => {
@@ -2007,21 +2007,21 @@ class P extends Fa {
2007
2007
  const n = new Worker(this.workerSourceURL), b = this.transcoderBinary.slice(0);
2008
2008
  return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: b }, [b]), n;
2009
2009
  });
2010
- }), la > 0 && console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."), la++;
2010
+ }), ha > 0 && console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."), ha++;
2011
2011
  }
2012
2012
  return this.transcoderPending;
2013
2013
  }
2014
2014
  load(e, a, t, A) {
2015
2015
  if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
2016
- const i = new Ce(this.manager);
2016
+ const i = new Be(this.manager);
2017
2017
  i.setResponseType("arraybuffer"), i.setWithCredentials(this.withCredentials), i.load(e, (s) => {
2018
2018
  this.parse(s, a, A);
2019
2019
  }, t, A);
2020
2020
  }
2021
2021
  parse(e, a, t) {
2022
2022
  if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
2023
- if (da.has(e))
2024
- return da.get(e).promise.then(a).catch(t);
2023
+ if (ba.has(e))
2024
+ return ba.get(e).promise.then(a).catch(t);
2025
2025
  this._createTexture(e).then((A) => a ? a(A) : null).catch(t);
2026
2026
  }
2027
2027
  _createTextureFrom(e, a) {
@@ -2033,17 +2033,17 @@ class P extends Fa {
2033
2033
  const l = i[0].mipmaps;
2034
2034
  d = a.layerCount > 1 ? new RA(l, s, r, a.layerCount, c, n) : new qa(l, s, r, c, n);
2035
2035
  }
2036
- return d.minFilter = i[0].mipmaps.length === 1 ? He : va, d.magFilter = He, d.generateMipmaps = !1, d.needsUpdate = !0, d.colorSpace = it(a), d.premultiplyAlpha = !!(1 & b), d;
2036
+ return d.minFilter = i[0].mipmaps.length === 1 ? Ce : $e, d.magFilter = Ce, d.generateMipmaps = !1, d.needsUpdate = !0, d.colorSpace = it(a), d.premultiplyAlpha = !!(1 & b), d;
2037
2037
  }
2038
2038
  async _createTexture(e, a = {}) {
2039
2039
  const t = function(r) {
2040
2040
  const c = new Uint8Array(r.buffer, r.byteOffset, U.length);
2041
2041
  if (c[0] !== U[0] || c[1] !== U[1] || c[2] !== U[2] || c[3] !== U[3] || c[4] !== U[4] || c[5] !== U[5] || c[6] !== U[6] || c[7] !== U[7] || c[8] !== U[8] || c[9] !== U[9] || c[10] !== U[10] || c[11] !== U[11]) throw new Error("Missing KTX 2.0 identifier.");
2042
- const n = new Li(), b = 17 * Uint32Array.BYTES_PER_ELEMENT, d = new Fe(r, U.length, b, !0);
2042
+ const n = new Ti(), b = 17 * Uint32Array.BYTES_PER_ELEMENT, d = new Fe(r, U.length, b, !0);
2043
2043
  n.vkFormat = d._nextUint32(), n.typeSize = d._nextUint32(), n.pixelWidth = d._nextUint32(), n.pixelHeight = d._nextUint32(), n.pixelDepth = d._nextUint32(), n.layerCount = d._nextUint32(), n.faceCount = d._nextUint32();
2044
2044
  const l = d._nextUint32();
2045
2045
  n.supercompressionScheme = d._nextUint32();
2046
- const g = d._nextUint32(), h = d._nextUint32(), f = d._nextUint32(), u = d._nextUint32(), I = d._nextUint64(), p = d._nextUint64(), B = new Fe(r, U.length + b, 3 * l * 8, !0);
2046
+ const g = d._nextUint32(), h = d._nextUint32(), f = d._nextUint32(), I = d._nextUint32(), u = d._nextUint64(), p = d._nextUint64(), B = new Fe(r, U.length + b, 3 * l * 8, !0);
2047
2047
  for (let R = 0; R < l; R++) n.levels.push({ levelData: new Uint8Array(r.buffer, r.byteOffset + B._nextUint64(), B._nextUint64()), uncompressedByteLength: B._nextUint64() });
2048
2048
  const C = new Fe(r, g, h, !0), w = { vendorId: C._skip(4)._nextUint16(), descriptorType: C._nextUint16(), versionNumber: C._nextUint16(), descriptorBlockSize: C._nextUint16(), colorModel: C._nextUint8(), colorPrimaries: C._nextUint8(), transferFunction: C._nextUint8(), flags: C._nextUint8(), texelBlockDimension: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], bytesPlane: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], samples: [] }, x = (w.descriptorBlockSize / 4 - 6) / 4;
2049
2049
  for (let R = 0; R < x; R++) {
@@ -2051,8 +2051,8 @@ class P extends Fa {
2051
2051
  64 & L.channelType ? (L.sampleLower = C._nextInt32(), L.sampleUpper = C._nextInt32()) : (L.sampleLower = C._nextUint32(), L.sampleUpper = C._nextUint32()), w.samples[R] = L;
2052
2052
  }
2053
2053
  n.dataFormatDescriptor.length = 0, n.dataFormatDescriptor.push(w);
2054
- const y = new Fe(r, f, u, !0);
2055
- for (; y._offset < u; ) {
2054
+ const y = new Fe(r, f, I, !0);
2055
+ for (; y._offset < I; ) {
2056
2056
  const R = y._nextUint32(), L = y._scan(R), q = tt(L);
2057
2057
  if (n.keyValue[q] = y._nextUint8Array(R - L.byteLength - 1), q.match(/^ktx/i)) {
2058
2058
  const V = tt(n.keyValue[q]);
@@ -2061,46 +2061,46 @@ class P extends Fa {
2061
2061
  y._skip(R % 4 ? 4 - R % 4 : 0);
2062
2062
  }
2063
2063
  if (p <= 0) return n;
2064
- const E = new Fe(r, I, p, !0), Q = E._nextUint16(), k = E._nextUint16(), D = E._nextUint32(), v = E._nextUint32(), _ = E._nextUint32(), $e = E._nextUint32(), je = [];
2065
- for (let R = 0; R < l; R++) je.push({ imageFlags: E._nextUint32(), rgbSliceByteOffset: E._nextUint32(), rgbSliceByteLength: E._nextUint32(), alphaSliceByteOffset: E._nextUint32(), alphaSliceByteLength: E._nextUint32() });
2066
- const qe = I + E._offset, Me = qe + D, Re = Me + v, Se = Re + _, Oe = new Uint8Array(r.buffer, r.byteOffset + qe, D), Je = new Uint8Array(r.buffer, r.byteOffset + Me, v), z = new Uint8Array(r.buffer, r.byteOffset + Re, _), Be = new Uint8Array(r.buffer, r.byteOffset + Se, $e);
2067
- return n.globalData = { endpointCount: Q, selectorCount: k, imageDescs: je, endpointsData: Oe, selectorsData: Je, tablesData: z, extendedData: Be }, n;
2064
+ const m = new Fe(r, u, p, !0), Q = m._nextUint16(), k = m._nextUint16(), D = m._nextUint32(), F = m._nextUint32(), _ = m._nextUint32(), ea = m._nextUint32(), Me = [];
2065
+ for (let R = 0; R < l; R++) Me.push({ imageFlags: m._nextUint32(), rgbSliceByteOffset: m._nextUint32(), rgbSliceByteLength: m._nextUint32(), alphaSliceByteOffset: m._nextUint32(), alphaSliceByteLength: m._nextUint32() });
2066
+ const qe = u + m._offset, Re = qe + D, Se = Re + F, ve = Se + _, Oe = new Uint8Array(r.buffer, r.byteOffset + qe, D), Je = new Uint8Array(r.buffer, r.byteOffset + Re, F), z = new Uint8Array(r.buffer, r.byteOffset + Se, _), me = new Uint8Array(r.buffer, r.byteOffset + ve, ea);
2067
+ return n.globalData = { endpointCount: Q, selectorCount: k, imageDescs: Me, endpointsData: Oe, selectorsData: Je, tablesData: z, extendedData: me }, n;
2068
2068
  }(new Uint8Array(e)), A = t.vkFormat === Ta && t.dataFormatDescriptor[0].colorModel === 167;
2069
2069
  if (!(t.vkFormat === 0 || A && !this.workerConfig.astcHDRSupported)) return async function(r) {
2070
2070
  const { vkFormat: c } = r;
2071
- if (ha[c] === void 0) throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
2071
+ if (ga[c] === void 0) throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
2072
2072
  let n;
2073
- r.supercompressionScheme === 2 && (ba || (ba = new Promise(async (l) => {
2074
- const g = new Gi();
2073
+ r.supercompressionScheme === 2 && (la || (la = new Promise(async (l) => {
2074
+ const g = new Li();
2075
2075
  await g.init(), l(g);
2076
- })), n = await ba);
2076
+ })), n = await la);
2077
2077
  const b = [];
2078
2078
  for (let l = 0; l < r.levels.length; l++) {
2079
- const g = Math.max(1, r.pixelWidth >> l), h = Math.max(1, r.pixelHeight >> l), f = r.pixelDepth ? Math.max(1, r.pixelDepth >> l) : 0, u = r.levels[l];
2080
- let I, p;
2081
- if (r.supercompressionScheme === 0) I = u.levelData;
2079
+ const g = Math.max(1, r.pixelWidth >> l), h = Math.max(1, r.pixelHeight >> l), f = r.pixelDepth ? Math.max(1, r.pixelDepth >> l) : 0, I = r.levels[l];
2080
+ let u, p;
2081
+ if (r.supercompressionScheme === 0) u = I.levelData;
2082
2082
  else {
2083
2083
  if (r.supercompressionScheme !== 2) throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
2084
- I = n.decode(u.levelData, u.uncompressedByteLength);
2084
+ u = n.decode(I.levelData, I.uncompressedByteLength);
2085
2085
  }
2086
- p = ga[c] === F ? new Float32Array(I.buffer, I.byteOffset, I.byteLength / Float32Array.BYTES_PER_ELEMENT) : ga[c] === we ? new Uint16Array(I.buffer, I.byteOffset, I.byteLength / Uint16Array.BYTES_PER_ELEMENT) : I, b.push({ data: p, width: g, height: h, depth: f });
2086
+ p = fa[c] === v ? new Float32Array(u.buffer, u.byteOffset, u.byteLength / Float32Array.BYTES_PER_ELEMENT) : fa[c] === xe ? new Uint16Array(u.buffer, u.byteOffset, u.byteLength / Uint16Array.BYTES_PER_ELEMENT) : u, b.push({ data: p, width: g, height: h, depth: f });
2087
2087
  }
2088
2088
  let d;
2089
- if (Ui.has(ha[c])) d = r.pixelDepth === 0 ? new Le(b[0].data, r.pixelWidth, r.pixelHeight) : new _A(b[0].data, r.pixelWidth, r.pixelHeight, r.pixelDepth);
2089
+ if (Gi.has(ga[c])) d = r.pixelDepth === 0 ? new Ge(b[0].data, r.pixelWidth, r.pixelHeight) : new _A(b[0].data, r.pixelWidth, r.pixelHeight, r.pixelDepth);
2090
2090
  else {
2091
2091
  if (r.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
2092
- d = new qa(b, r.pixelWidth, r.pixelHeight);
2092
+ d = new qa(b, r.pixelWidth, r.pixelHeight), d.minFilter = b.length === 1 ? Ce : $e, d.magFilter = Ce;
2093
2093
  }
2094
- return d.mipmaps = b, d.type = ga[c], d.format = ha[c], d.colorSpace = it(r), d.needsUpdate = !0, Promise.resolve(d);
2094
+ return d.mipmaps = b, d.type = fa[c], d.format = ga[c], d.colorSpace = it(r), d.needsUpdate = !0, Promise.resolve(d);
2095
2095
  }(t);
2096
2096
  const i = a, s = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: i }, [e])).then((r) => this._createTextureFrom(r.data, t));
2097
- return da.set(e, { promise: s }), s;
2097
+ return ba.set(e, { promise: s }), s;
2098
2098
  }
2099
2099
  dispose() {
2100
- return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), la--, this;
2100
+ return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), ha--, this;
2101
2101
  }
2102
2102
  }
2103
- P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.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, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, P.EngineFormat = { RGBAFormat: $, RGBA_ASTC_4x4_Format: Qt, RGB_BPTC_UNSIGNED_Format: SA, RGBA_BPTC_Format: FA, RGBA_ETC2_EAC_Format: vA, RGBA_PVRTC_4BPPV1_Format: TA, RGBA_S3TC_DXT5_Format: LA, RGB_ETC1_Format: GA, RGB_ETC2_Format: UA, RGB_PVRTC_4BPPV1_Format: NA, RGBA_S3TC_DXT1_Format: PA }, P.EngineType = { UnsignedByteType: X, HalfFloatType: we, FloatType: F }, P.BasisWorker = function() {
2103
+ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.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, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, P.EngineFormat = { RGBAFormat: $, RGBA_ASTC_4x4_Format: Qt, RGB_BPTC_UNSIGNED_Format: SA, RGBA_BPTC_Format: vA, RGBA_ETC2_EAC_Format: FA, RGBA_PVRTC_4BPPV1_Format: TA, RGBA_S3TC_DXT5_Format: LA, RGB_ETC1_Format: GA, RGB_ETC2_Format: UA, RGB_PVRTC_4BPPV1_Format: NA, RGBA_S3TC_DXT1_Format: PA }, P.EngineType = { UnsignedByteType: X, HalfFloatType: xe, FloatType: v }, P.BasisWorker = function() {
2104
2104
  let o, e, a;
2105
2105
  const t = _EngineFormat, A = _EngineType, i = _TranscoderFormat, s = _BasisFormat;
2106
2106
  self.addEventListener("message", function(d) {
@@ -2116,12 +2116,12 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
2116
2116
  case "transcode":
2117
2117
  e.then(() => {
2118
2118
  try {
2119
- const { faces: h, buffers: f, width: u, height: I, hasAlpha: p, format: B, type: C, dfdFlags: w } = function(x) {
2119
+ const { faces: h, buffers: f, width: I, height: u, hasAlpha: p, format: B, type: C, dfdFlags: w } = function(x) {
2120
2120
  const y = new a.KTX2File(new Uint8Array(x));
2121
- function E() {
2121
+ function m() {
2122
2122
  y.close(), y.delete();
2123
2123
  }
2124
- if (!y.isValid()) throw E(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
2124
+ if (!y.isValid()) throw m(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
2125
2125
  let Q;
2126
2126
  if (y.isUASTC()) Q = s.UASTC;
2127
2127
  else if (y.isETC1S()) Q = s.ETC1S;
@@ -2129,39 +2129,39 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
2129
2129
  if (!y.isHDR()) throw new Error("THREE.KTX2Loader: Unknown Basis encoding");
2130
2130
  Q = s.UASTC_HDR;
2131
2131
  }
2132
- const k = y.getWidth(), D = y.getHeight(), v = y.getLayers() || 1, _ = y.getLevels(), $e = y.getFaces(), je = y.getHasAlpha(), qe = y.getDFDFlags(), { transcoderFormat: Me, engineFormat: Re, engineType: Se } = function(z, Be, R, L) {
2132
+ const k = y.getWidth(), D = y.getHeight(), F = y.getLayers() || 1, _ = y.getLevels(), ea = y.getFaces(), Me = y.getHasAlpha(), qe = y.getDFDFlags(), { transcoderFormat: Re, engineFormat: Se, engineType: ve } = function(z, me, R, L) {
2133
2133
  const q = c[z];
2134
2134
  for (let V = 0; V < q.length; V++) {
2135
2135
  const O = q[V];
2136
- if (!(O.if && !o[O.if]) && O.basisFormat.includes(z) && !(L && O.transcoderFormat.length < 2) && !(O.needsPowerOfTwo && (!n(Be) || !n(R))))
2136
+ if (!(O.if && !o[O.if]) && O.basisFormat.includes(z) && !(L && O.transcoderFormat.length < 2) && !(O.needsPowerOfTwo && (!n(me) || !n(R))))
2137
2137
  return { transcoderFormat: O.transcoderFormat[L ? 1 : 0], engineFormat: O.engineFormat[L ? 1 : 0], engineType: O.engineType[0] };
2138
2138
  }
2139
2139
  throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.");
2140
- }(Q, k, D, je);
2141
- if (!k || !D || !_) throw E(), new Error("THREE.KTX2Loader: Invalid texture");
2142
- if (!y.startTranscoding()) throw E(), new Error("THREE.KTX2Loader: .startTranscoding failed");
2140
+ }(Q, k, D, Me);
2141
+ if (!k || !D || !_) throw m(), new Error("THREE.KTX2Loader: Invalid texture");
2142
+ if (!y.startTranscoding()) throw m(), new Error("THREE.KTX2Loader: .startTranscoding failed");
2143
2143
  const Oe = [], Je = [];
2144
- for (let z = 0; z < $e; z++) {
2145
- const Be = [];
2144
+ for (let z = 0; z < ea; z++) {
2145
+ const me = [];
2146
2146
  for (let R = 0; R < _; R++) {
2147
2147
  const L = [];
2148
2148
  let q, V;
2149
- for (let Ee = 0; Ee < v; Ee++) {
2150
- const me = y.getImageLevelInfo(R, Ee, z);
2151
- z !== 0 || R !== 0 || Ee !== 0 || me.origWidth % 4 == 0 && me.origHeight % 4 == 0 || console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), _ > 1 ? (q = me.origWidth, V = me.origHeight) : (q = me.width, V = me.height);
2152
- let Qe = new Uint8Array(y.getImageTranscodedSizeInBytes(R, Ee, 0, Me));
2153
- const Yt = y.transcodeImage(Qe, R, Ee, z, Me, 0, -1, -1);
2154
- if (Se === A.HalfFloatType && (Qe = new Uint16Array(Qe.buffer, Qe.byteOffset, Qe.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !Yt) throw E(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
2155
- L.push(Qe);
2149
+ for (let Ee = 0; Ee < F; Ee++) {
2150
+ const Qe = y.getImageLevelInfo(R, Ee, z);
2151
+ z !== 0 || R !== 0 || Ee !== 0 || Qe.origWidth % 4 == 0 && Qe.origHeight % 4 == 0 || console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), _ > 1 ? (q = Qe.origWidth, V = Qe.origHeight) : (q = Qe.width, V = Qe.height);
2152
+ let ye = new Uint8Array(y.getImageTranscodedSizeInBytes(R, Ee, 0, Re));
2153
+ const Yt = y.transcodeImage(ye, R, Ee, z, Re, 0, -1, -1);
2154
+ if (ve === A.HalfFloatType && (ye = new Uint16Array(ye.buffer, ye.byteOffset, ye.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !Yt) throw m(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
2155
+ L.push(ye);
2156
2156
  }
2157
2157
  const O = b(L);
2158
- Be.push({ data: O, width: q, height: V }), Je.push(O.buffer);
2158
+ me.push({ data: O, width: q, height: V }), Je.push(O.buffer);
2159
2159
  }
2160
- Oe.push({ mipmaps: Be, width: k, height: D, format: Re, type: Se });
2160
+ Oe.push({ mipmaps: me, width: k, height: D, format: Se, type: ve });
2161
2161
  }
2162
- return E(), { faces: Oe, buffers: Je, width: k, height: D, hasAlpha: je, dfdFlags: qe, format: Re, type: Se };
2162
+ return m(), { faces: Oe, buffers: Je, width: k, height: D, hasAlpha: Me, dfdFlags: qe, format: Se, type: ve };
2163
2163
  }(l.buffer);
2164
- self.postMessage({ type: "transcode", id: l.id, data: { faces: h, width: u, height: I, hasAlpha: p, format: B, type: C, dfdFlags: w } }, f);
2164
+ self.postMessage({ type: "transcode", id: l.id, data: { faces: h, width: I, height: u, hasAlpha: p, format: B, type: C, dfdFlags: w } }, f);
2165
2165
  } catch (h) {
2166
2166
  console.error(h), self.postMessage({ type: "error", id: l.id, error: h.message });
2167
2167
  }
@@ -2181,13 +2181,13 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
2181
2181
  const g = new Uint8Array(l);
2182
2182
  let h = 0;
2183
2183
  for (let f = 0; f < d.length; f++) {
2184
- const u = d[f];
2185
- g.set(u, h), h += u.byteLength;
2184
+ const I = d[f];
2185
+ g.set(I, h), h += I.byteLength;
2186
2186
  }
2187
2187
  return g;
2188
2188
  }
2189
2189
  };
2190
- const Ui = /* @__PURE__ */ new Set([$, Ge, Ue]), ha = { [qt]: $, [Pt]: $, [Lt]: $, [Gt]: $, [Ht]: Ge, [Nt]: Ge, [vt]: Ge, [Tt]: Ge, [_t]: Ue, [Ut]: Ue, [Ft]: Ue, [St]: Ue, [Ta]: Qt, [Jt]: Oa, [Ot]: Oa }, ga = { [qt]: F, [Pt]: we, [Lt]: X, [Gt]: X, [Ht]: F, [Nt]: we, [vt]: X, [Tt]: X, [_t]: F, [Ut]: we, [Ft]: X, [St]: X, [Ta]: we, [Jt]: X, [Ot]: X };
2190
+ const Gi = /* @__PURE__ */ new Set([$, Ue, Ne]), ga = { [qt]: $, [Pt]: $, [Lt]: $, [Gt]: $, [Ht]: Ue, [Nt]: Ue, [Ft]: Ue, [Tt]: Ue, [_t]: Ne, [Ut]: Ne, [vt]: Ne, [St]: Ne, [Ta]: Qt, [Jt]: Oa, [Ot]: Oa }, fa = { [qt]: v, [Pt]: xe, [Lt]: X, [Gt]: X, [Ht]: v, [Nt]: xe, [Ft]: X, [Tt]: X, [_t]: v, [Ut]: xe, [vt]: X, [St]: X, [Ta]: xe, [Jt]: X, [Ot]: X };
2191
2191
  function it(o) {
2192
2192
  const e = o.dataFormatDescriptor[0];
2193
2193
  return e.colorPrimaries === 1 ? e.transferFunction === 2 ? re : K : e.colorPrimaries === 10 ? e.transferFunction === 2 ? "display-p3" : "display-p3-linear" : (e.colorPrimaries === 0 || console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), HA);
@@ -2203,48 +2203,48 @@ async function st(o) {
2203
2203
  return async function(t, A) {
2204
2204
  const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), c = 24, n = c + Number(s), b = n + (8 - n % 8) % 8, d = b + Number(r), l = t.slice(c, n), g = new TextDecoder().decode(l).trim(), h = JSON.parse(g);
2205
2205
  if (!h.buffers) throw new Error("subtree has no buffers");
2206
- const f = h.buffers.map(async (I) => {
2207
- if (I.uri) {
2208
- const p = new URL(I.uri, A).href, B = await fetch(p);
2206
+ const f = h.buffers.map(async (u) => {
2207
+ if (u.uri) {
2208
+ const p = new URL(u.uri, A).href, B = await fetch(p);
2209
2209
  if (!B.ok) throw new Error(`Failed to fetch binary file ${p}: ${B.statusText}`);
2210
2210
  return new Uint8Array(await B.arrayBuffer());
2211
2211
  }
2212
2212
  return new Uint8Array(t.slice(b, d));
2213
- }), u = await Promise.all(f);
2214
- return /* @__PURE__ */ function(I, p) {
2215
- function B(E, Q) {
2216
- if (!E) throw new Error("incomplete json subtree");
2217
- if (E.constant) {
2218
- if (E.constant == 0) return !1;
2219
- if (E.constant == 1) return !0;
2213
+ }), I = await Promise.all(f);
2214
+ return /* @__PURE__ */ function(u, p) {
2215
+ function B(m, Q) {
2216
+ if (!m) throw new Error("incomplete json subtree");
2217
+ if (m.constant) {
2218
+ if (m.constant == 0) return !1;
2219
+ if (m.constant == 1) return !0;
2220
2220
  }
2221
- if (E.bitstream == null) throw new Error('json subtree "tileAvailability" does not specify a bitstream');
2222
- if (!I.bufferViews || !I.bufferViews[E.bitstream]) throw new Error('json subtree "bufferViews" does not specify a bitstream');
2223
- const k = I.bufferViews[E.bitstream];
2221
+ if (m.bitstream == null) throw new Error('json subtree "tileAvailability" does not specify a bitstream');
2222
+ if (!u.bufferViews || !u.bufferViews[m.bitstream]) throw new Error('json subtree "bufferViews" does not specify a bitstream');
2223
+ const k = u.bufferViews[m.bitstream];
2224
2224
  return C(p[k.buffer], k.byteOffset, Q);
2225
2225
  }
2226
- function C(E, Q, k) {
2226
+ function C(m, Q, k) {
2227
2227
  const D = k % 8;
2228
- return E[Q + Math.floor(k / 8)] >> D & !0;
2228
+ return m[Q + Math.floor(k / 8)] >> D & !0;
2229
2229
  }
2230
- function w(E) {
2230
+ function w(m) {
2231
2231
  let Q = 0;
2232
- return Q = E.z == null ? fa(E.x, E.y, E.level) : ua(E.x, E.y, E.z, E.level), B(I.tileAvailability, Q);
2232
+ return Q = m.z == null ? ua(m.x, m.y, m.level) : pa(m.x, m.y, m.z, m.level), B(u.tileAvailability, Q);
2233
2233
  }
2234
- function x(E) {
2234
+ function x(m) {
2235
2235
  let Q = 0;
2236
- Q = E.z == null ? fa(E.x, E.y, E.level) : ua(E.x, E.y, E.z, E.level);
2236
+ Q = m.z == null ? ua(m.x, m.y, m.level) : pa(m.x, m.y, m.z, m.level);
2237
2237
  const k = [];
2238
- return I.contentAvailability.forEach((D) => {
2238
+ return u.contentAvailability.forEach((D) => {
2239
2239
  k.push(B(D, Q));
2240
2240
  }), k;
2241
2241
  }
2242
- function y(E) {
2242
+ function y(m) {
2243
2243
  let Q = 0;
2244
- return Q = E.z == null ? fa(E.x, E.y) : ua(E.x, E.y, E.z), B(I.childSubtreeAvailability, Q);
2244
+ return Q = m.z == null ? ua(m.x, m.y) : pa(m.x, m.y, m.z), B(u.childSubtreeAvailability, Q);
2245
2245
  }
2246
2246
  return { isTileAvailable: w, isContentAvailable: x, isChildSubtreeAvailable: y };
2247
- }(h, u);
2247
+ }(h, I);
2248
2248
  }(await a.arrayBuffer(), rt(o));
2249
2249
  throw new Error(`Unsupported file extension: ${e}`);
2250
2250
  }
@@ -2255,18 +2255,18 @@ function rt(o) {
2255
2255
  function nt(o) {
2256
2256
  return o = 1431655765 & ((o = 858993459 & ((o = 252645135 & ((o = 16711935 & ((o &= 65535) ^ o << 8)) ^ o << 4)) ^ o << 2)) ^ o << 1);
2257
2257
  }
2258
- function fa(o, e, a) {
2258
+ function ua(o, e, a) {
2259
2259
  let t = 0;
2260
2260
  return a && (t = (Math.pow(4, a) - 1) / 3), t + (nt(o) | nt(e) << 1);
2261
2261
  }
2262
2262
  function Ia(o) {
2263
2263
  return o = 153391689 & ((o = 51130563 & ((o = 50393103 & ((o = 4278190335 & ((o &= 1023) ^ o << 16)) ^ o << 8)) ^ o << 4)) ^ o << 2);
2264
2264
  }
2265
- function ua(o, e, a, t) {
2265
+ function pa(o, e, a, t) {
2266
2266
  let A = 0;
2267
2267
  return t && (A = (Math.pow(8, t) - 1) / 7), A + (Ia(o) | Ia(e) << 1 | Ia(a) << 2);
2268
2268
  }
2269
- const ve = /* @__PURE__ */ new Map();
2269
+ const Te = /* @__PURE__ */ new Map();
2270
2270
  async function La(o, e) {
2271
2271
  if (!o.root || !o.root.implicitTiling) return o;
2272
2272
  if (!o.root.content && !o.root.contents) throw new Error("implicit tiling requires a Template URI");
@@ -2285,8 +2285,8 @@ async function La(o, e) {
2285
2285
  let s;
2286
2286
  a && (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0)), a || (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0).replace("{z}", 0));
2287
2287
  const r = { level: 0, x: 0, y: 0 }, c = { level: 0, x: 0, y: 0 };
2288
- a || (r.z = 0, c.z = 0), ve.set(s, await st(i + s));
2289
- const n = ve.get(s), b = [];
2288
+ a || (r.z = 0, c.z = 0), Te.set(s, await st(i + s));
2289
+ const n = Te.get(s), b = [];
2290
2290
  n.isContentAvailable(c) && A.forEach((g) => {
2291
2291
  let h;
2292
2292
  a && (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y)), a || (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y).replace("{z}", r.z)), b.push({ uri: h });
@@ -2297,33 +2297,33 @@ async function La(o, e) {
2297
2297
  const h = [];
2298
2298
  if (g.localAddress.level == o.root.implicitTiling.availableLevels - 1) return h;
2299
2299
  if ((g.localAddress.level + 1) % o.root.implicitTiling.subtreeLevels == 0) {
2300
- const f = ze(g.localAddress), u = ze(g.globalAddress), I = ot(a, o.root.boundingVolume, u);
2300
+ const f = ze(g.localAddress), I = ze(g.globalAddress), u = ot(a, o.root.boundingVolume, I);
2301
2301
  for (let p = 0; p < f.length; p++) {
2302
- const B = f[p], C = u[p];
2303
- g.subtree.isChildSubtreeAvailable(B) && (a && t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y), a || t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), ve.has(s) || ve.set(s, await st(i + s));
2304
- const w = ve.get(s), x = { level: 0, x: 0, y: 0 };
2302
+ const B = f[p], C = I[p];
2303
+ g.subtree.isChildSubtreeAvailable(B) && (a && t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y), a || t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), Te.has(s) || Te.set(s, await st(i + s));
2304
+ const w = Te.get(s), x = { level: 0, x: 0, y: 0 };
2305
2305
  a || (x.z = 0);
2306
2306
  const y = [];
2307
2307
  w.isContentAvailable(x) && A.forEach((Q) => {
2308
2308
  let k;
2309
2309
  a && (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y)), a || (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), y.push({ uri: k });
2310
2310
  });
2311
- const E = { geometricError: g.geometricError / 2, boundingVolume: I[p], refine: o.root.refine, globalAddress: C, localAddress: x, subtree: w, contents: y, getChildren: async () => l(E) };
2312
- h.push(E);
2311
+ const m = { geometricError: g.geometricError / 2, boundingVolume: u[p], refine: o.root.refine, globalAddress: C, localAddress: x, subtree: w, contents: y, getChildren: async () => l(m) };
2312
+ h.push(m);
2313
2313
  }
2314
2314
  } else {
2315
- const f = ze(g.localAddress), u = ze(g.globalAddress), I = ot(a, o.root.boundingVolume, u);
2315
+ const f = ze(g.localAddress), I = ze(g.globalAddress), u = ot(a, o.root.boundingVolume, I);
2316
2316
  for (let p = 0; p < f.length; p++) {
2317
- const B = f[p], C = u[p];
2317
+ const B = f[p], C = I[p];
2318
2318
  if (!g.subtree.isTileAvailable(B)) continue;
2319
2319
  const w = [], x = g.subtree.isContentAvailable(B);
2320
- for (let E = 0; E < A.length; E++) {
2321
- if (!x[E]) continue;
2322
- const Q = A[E];
2320
+ for (let m = 0; m < A.length; m++) {
2321
+ if (!x[m]) continue;
2322
+ const Q = A[m];
2323
2323
  let k;
2324
2324
  a && (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y)), a || (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), w.push({ uri: k });
2325
2325
  }
2326
- const y = { geometricError: g.geometricError / 2, boundingVolume: I[p], refine: o.root.refine, globalAddress: C, localAddress: B, subtree: g.subtree, contents: w, getChildren: async () => l(y) };
2326
+ const y = { geometricError: g.geometricError / 2, boundingVolume: u[p], refine: o.root.refine, globalAddress: C, localAddress: B, subtree: g.subtree, contents: w, getChildren: async () => l(y) };
2327
2327
  h.push(y);
2328
2328
  }
2329
2329
  }
@@ -2337,13 +2337,13 @@ function ze(o) {
2337
2337
  }
2338
2338
  function ot(o, e, a) {
2339
2339
  const t = [];
2340
- for (let A = 0; A < a.length; A++) t.push(Ni(o, e, a[A]));
2340
+ for (let A = 0; A < a.length; A++) t.push(Ui(o, e, a[A]));
2341
2341
  return t;
2342
2342
  }
2343
- function Ni(o, e, a) {
2343
+ function Ui(o, e, a) {
2344
2344
  if (e.region) return function(t, A, i) {
2345
- const [s, r, c, n, b, d] = A, l = (c - s) / 2 ** i.level, g = (n - r) / 2 ** i.level, h = t ? 0 : (d - b) / 2 ** i.level, f = s + l * i.x, u = r + g * i.y, I = f + l, p = u + g, B = t ? b : b + h * i.z, C = t ? d : B + h;
2346
- return { region: [f, u, I, p, B, C] };
2345
+ const [s, r, c, n, b, d] = A, l = (c - s) / 2 ** i.level, g = (n - r) / 2 ** i.level, h = t ? 0 : (d - b) / 2 ** i.level, f = s + l * i.x, I = r + g * i.y, u = f + l, p = I + g, B = t ? b : b + h * i.z, C = t ? d : B + h;
2346
+ return { region: [f, I, u, p, B, C] };
2347
2347
  }(o, e.region, a);
2348
2348
  if (e.box) return function(t, A, i) {
2349
2349
  const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], c = 1 / Math.pow(2, i.level), n = [c, c, t ? 1 : c], b = r.map((g, h) => g.map((f) => f * n[h])), d = [s[0] - r[0][0] - r[1][0] - r[2][0], s[1] - r[0][1] - r[1][1] - r[2][1], s[2] - r[0][2] - r[1][2] - r[2][2]];
@@ -2372,10 +2372,10 @@ function Ni(o, e, a) {
2372
2372
  return new Uint8Array(n.buffer, n.byteOffset, n.byteLength);
2373
2373
  }
2374
2374
  function i(n, b, d, l, g) {
2375
- var h = o.exports.sbrk, f = h(b), u = h(l * g), I = new Uint8Array(o.exports.memory.buffer);
2376
- I.set(A(d), u);
2377
- var p = n(f, b, u, l, g), B = new Uint8Array(p);
2378
- return B.set(I.subarray(f, f + p)), h(f - h(0)), B;
2375
+ var h = o.exports.sbrk, f = h(b), I = h(l * g), u = new Uint8Array(o.exports.memory.buffer);
2376
+ u.set(A(d), I);
2377
+ var p = n(f, b, I, l, g), B = new Uint8Array(p);
2378
+ return B.set(u.subarray(f, f + p)), h(f - h(0)), B;
2379
2379
  }
2380
2380
  function s(n) {
2381
2381
  for (var b = 0, d = 0; d < n.length; ++d)
@@ -2388,10 +2388,10 @@ function Ni(o, e, a) {
2388
2388
  return new Uint32Array(d);
2389
2389
  }
2390
2390
  function c(n, b, d, l, g, h, f) {
2391
- var u = o.exports.sbrk, I = u(d * l), p = u(d * h), B = new Uint8Array(o.exports.memory.buffer);
2392
- B.set(A(b), p), n(I, d, l, g, p, f);
2391
+ var I = o.exports.sbrk, u = I(d * l), p = I(d * h), B = new Uint8Array(o.exports.memory.buffer);
2392
+ B.set(A(b), p), n(u, d, l, g, p, f);
2393
2393
  var C = new Uint8Array(d * l);
2394
- return C.set(B.subarray(I, I + d * l)), u(I - u(0)), C;
2394
+ return C.set(B.subarray(u, u + d * l)), I(u - I(0)), C;
2395
2395
  }
2396
2396
  })();
2397
2397
  var Kt = function() {
@@ -2402,25 +2402,25 @@ var Kt = function() {
2402
2402
  });
2403
2403
  function i(g) {
2404
2404
  for (var h = new Uint8Array(g.length), f = 0; f < g.length; ++f) {
2405
- var u = g.charCodeAt(f);
2406
- h[f] = u > 96 ? u - 97 : u > 64 ? u - 39 : u + 4;
2405
+ var I = g.charCodeAt(f);
2406
+ h[f] = I > 96 ? I - 97 : I > 64 ? I - 39 : I + 4;
2407
2407
  }
2408
- var I = 0;
2409
- for (f = 0; f < g.length; ++f) h[I++] = h[f] < 60 ? e[h[f]] : 64 * (h[f] - 60) + h[++f];
2410
- return h.buffer.slice(0, I);
2408
+ var u = 0;
2409
+ for (f = 0; f < g.length; ++f) h[u++] = h[f] < 60 ? e[h[f]] : 64 * (h[f] - 60) + h[++f];
2410
+ return h.buffer.slice(0, u);
2411
2411
  }
2412
- function s(g, h, f, u, I, p, B) {
2413
- var C = g.exports.sbrk, w = u + 3 & -4, x = C(w * I), y = C(p.length), E = new Uint8Array(g.exports.memory.buffer);
2414
- E.set(p, y);
2415
- var Q = h(x, u, I, y, p.length);
2416
- if (Q == 0 && B && B(x, w, I), f.set(E.subarray(x, x + u * I)), C(x - C(0)), Q != 0) throw new Error("Malformed buffer data: " + Q);
2412
+ function s(g, h, f, I, u, p, B) {
2413
+ var C = g.exports.sbrk, w = I + 3 & -4, x = C(w * u), y = C(p.length), m = new Uint8Array(g.exports.memory.buffer);
2414
+ m.set(p, y);
2415
+ var Q = h(x, I, u, y, p.length);
2416
+ if (Q == 0 && B && B(x, w, u), f.set(m.subarray(x, x + I * u)), C(x - C(0)), Q != 0) throw new Error("Malformed buffer data: " + Q);
2417
2417
  }
2418
2418
  var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, c = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [], b = 0;
2419
2419
  function d(g) {
2420
2420
  var h = { object: new Worker(g), pending: 0, requests: {} };
2421
2421
  return h.object.onmessage = function(f) {
2422
- var u = f.data;
2423
- h.pending -= u.count, h.requests[u.id][u.action](u.value), delete h.requests[u.id];
2422
+ var I = f.data;
2423
+ h.pending -= I.count, h.requests[I.id][I.action](I.value), delete h.requests[I.id];
2424
2424
  }, h;
2425
2425
  }
2426
2426
  function l(g) {
@@ -2428,37 +2428,37 @@ var Kt = function() {
2428
2428
  if (!h.id) return self.close();
2429
2429
  self.ready.then(function(f) {
2430
2430
  try {
2431
- var u = new Uint8Array(h.count * h.size);
2432
- s(f, f.exports[h.mode], u, h.count, h.size, h.source, f.exports[h.filter]), self.postMessage({ id: h.id, count: h.count, action: "resolve", value: u }, [u.buffer]);
2433
- } catch (I) {
2434
- self.postMessage({ id: h.id, count: h.count, action: "reject", value: I });
2431
+ var I = new Uint8Array(h.count * h.size);
2432
+ s(f, f.exports[h.mode], I, h.count, h.size, h.source, f.exports[h.filter]), self.postMessage({ id: h.id, count: h.count, action: "resolve", value: I }, [I.buffer]);
2433
+ } catch (u) {
2434
+ self.postMessage({ id: h.id, count: h.count, action: "reject", value: u });
2435
2435
  }
2436
2436
  });
2437
2437
  }
2438
2438
  return { ready: A, supported: !0, useWorkers: function(g) {
2439
2439
  (function(h) {
2440
- for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(i(t)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + l.name + ";" + s.toString() + l.toString(), u = new Blob([f], { type: "text/javascript" }), I = URL.createObjectURL(u), p = n.length; p < h; ++p) n[p] = d(I);
2440
+ for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(i(t)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + l.name + ";" + s.toString() + l.toString(), I = new Blob([f], { type: "text/javascript" }), u = URL.createObjectURL(I), p = n.length; p < h; ++p) n[p] = d(u);
2441
2441
  for (p = h; p < n.length; ++p) n[p].object.postMessage({});
2442
- n.length = h, URL.revokeObjectURL(I);
2442
+ n.length = h, URL.revokeObjectURL(u);
2443
2443
  })(g);
2444
- }, decodeVertexBuffer: function(g, h, f, u, I) {
2445
- s(a, a.exports.meshopt_decodeVertexBuffer, g, h, f, u, a.exports[r[I]]);
2446
- }, decodeIndexBuffer: function(g, h, f, u) {
2447
- s(a, a.exports.meshopt_decodeIndexBuffer, g, h, f, u);
2448
- }, decodeIndexSequence: function(g, h, f, u) {
2449
- s(a, a.exports.meshopt_decodeIndexSequence, g, h, f, u);
2450
- }, decodeGltfBuffer: function(g, h, f, u, I, p) {
2451
- s(a, a.exports[c[I]], g, h, f, u, a.exports[r[p]]);
2452
- }, decodeGltfBufferAsync: function(g, h, f, u, I) {
2444
+ }, decodeVertexBuffer: function(g, h, f, I, u) {
2445
+ s(a, a.exports.meshopt_decodeVertexBuffer, g, h, f, I, a.exports[r[u]]);
2446
+ }, decodeIndexBuffer: function(g, h, f, I) {
2447
+ s(a, a.exports.meshopt_decodeIndexBuffer, g, h, f, I);
2448
+ }, decodeIndexSequence: function(g, h, f, I) {
2449
+ s(a, a.exports.meshopt_decodeIndexSequence, g, h, f, I);
2450
+ }, decodeGltfBuffer: function(g, h, f, I, u, p) {
2451
+ s(a, a.exports[c[u]], g, h, f, I, a.exports[r[p]]);
2452
+ }, decodeGltfBufferAsync: function(g, h, f, I, u) {
2453
2453
  return n.length > 0 ? function(p, B, C, w, x) {
2454
- for (var y = n[0], E = 1; E < n.length; ++E) n[E].pending < y.pending && (y = n[E]);
2454
+ for (var y = n[0], m = 1; m < n.length; ++m) n[m].pending < y.pending && (y = n[m]);
2455
2455
  return new Promise(function(Q, k) {
2456
- var D = new Uint8Array(C), v = ++b;
2457
- y.pending += p, y.requests[v] = { resolve: Q, reject: k }, y.object.postMessage({ id: v, count: p, size: B, source: D, mode: w, filter: x }, [D.buffer]);
2456
+ var D = new Uint8Array(C), F = ++b;
2457
+ y.pending += p, y.requests[F] = { resolve: Q, reject: k }, y.object.postMessage({ id: F, count: p, size: B, source: D, mode: w, filter: x }, [D.buffer]);
2458
2458
  });
2459
- }(g, h, f, c[u], r[I]) : A.then(function() {
2459
+ }(g, h, f, c[I], r[u]) : A.then(function() {
2460
2460
  var p = new Uint8Array(g * h);
2461
- return s(a, a.exports[c[u]], p, g, h, f, a.exports[r[I]]), p;
2461
+ return s(a, a.exports[c[I]], p, g, h, f, a.exports[r[u]]), p;
2462
2462
  });
2463
2463
  } };
2464
2464
  }();
@@ -2483,19 +2483,19 @@ var Kt = function() {
2483
2483
  return new Uint8Array(r.buffer, r.byteOffset, r.byteLength);
2484
2484
  }
2485
2485
  function i(r, c, n, b, d, l, g, h) {
2486
- var f = o.exports.sbrk, u = f(4 * h), I = f(n * b), p = f(n * l), B = new Uint8Array(o.exports.memory.buffer);
2487
- B.set(A(c), I), d && B.set(A(d), p);
2488
- var C = r(u, I, n, b, p, l, g, h);
2486
+ var f = o.exports.sbrk, I = f(4 * h), u = f(n * b), p = f(n * l), B = new Uint8Array(o.exports.memory.buffer);
2487
+ B.set(A(c), u), d && B.set(A(d), p);
2488
+ var C = r(I, u, n, b, p, l, g, h);
2489
2489
  new Uint8Array(o.exports.memory.buffer);
2490
2490
  var w = new Uint32Array(C);
2491
- return A(w).set(B.subarray(u, u + 4 * C)), f(u - f(0)), w;
2491
+ return A(w).set(B.subarray(I, I + 4 * C)), f(I - f(0)), w;
2492
2492
  }
2493
2493
  var s = { LockBorder: 1 };
2494
2494
  })();
2495
2495
  let ae = 0;
2496
- class Pi {
2496
+ class Ni {
2497
2497
  constructor(e) {
2498
- if (this.renderer = e.renderer, this.zUpToYUpMatrix = new m.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new Dt(), e && e.dracoLoader) this.gltfLoader.setDRACOLoader(e.dracoLoader), this.hasDracoLoader = !0;
2498
+ if (this.renderer = e.renderer, this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new Dt(), e && e.dracoLoader) this.gltfLoader.setDRACOLoader(e.dracoLoader), this.hasDracoLoader = !0;
2499
2499
  else {
2500
2500
  const a = new Rt();
2501
2501
  a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"), this.gltfLoader.setDRACOLoader(a), this.gltfLoader.hasDracoLoader = !0;
@@ -2505,7 +2505,7 @@ class Pi {
2505
2505
  const a = new P();
2506
2506
  a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer), this.gltfLoader.setKTX2Loader(a), this.gltfLoader.hasKTX2Loader = !0;
2507
2507
  }
2508
- this.gltfLoader.setMeshoptDecoder(Kt), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new xt(this.gltfLoader), this.splatsDecoder = new ZA(this.gltfLoader, this.renderer), this.cache = new yt(), this.register = {}, this.ready = [], this.downloads = [], this.nextReady = [], this.nextDownloads = [];
2508
+ this.gltfLoader.setMeshoptDecoder(Kt), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new xt(this.gltfLoader), this.splatsDecoder = new XA(this.gltfLoader, this.renderer), this.cache = new yt(), this.register = {}, this.ready = [], this.downloads = [], this.nextReady = [], this.nextDownloads = [];
2509
2509
  }
2510
2510
  update() {
2511
2511
  const e = this;
@@ -2575,59 +2575,59 @@ class Pi {
2575
2575
  else if (Object.keys(l.register[g]).length == 1) {
2576
2576
  let f;
2577
2577
  t.includes(".b3dm") ? f = () => {
2578
- var u;
2579
- u = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, u().then((I) => {
2580
- if (!I.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${I.status} : ${I.statusText}`);
2581
- return I.arrayBuffer();
2582
- }).then((I) => this.b3dmDecoder.parseB3DM(I, (p) => {
2578
+ var I;
2579
+ I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
2580
+ if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
2581
+ return u.arrayBuffer();
2582
+ }).then((u) => this.b3dmDecoder.parseB3DM(u, (p) => {
2583
2583
  l.meshCallback(p, b);
2584
- }, c, n)).then((I) => {
2585
- l.cache.put(g, I), l._checkSize(), this._meshReceived(l.cache, l.register, g, i, s, r, a);
2586
- }).catch((I) => {
2584
+ }, c, n)).then((u) => {
2585
+ l.cache.put(g, u), l._checkSize(), this._meshReceived(l.cache, l.register, g, i, s, r, a);
2586
+ }).catch((u) => {
2587
2587
  }).finally(() => {
2588
2588
  ae--;
2589
2589
  });
2590
2590
  } : t.includes(".glb") || t.includes(".gltf") ? f = d ? () => {
2591
- var u;
2592
- u = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, u().then((I) => {
2593
- if (!I.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${I.status} : ${I.statusText}`);
2594
- return I.arrayBuffer();
2595
- }).then((I) => this.splatsDecoder.parseSplats(I, c, n, d)).then((I) => {
2596
- l.cache.put(g, I), l._checkSize(), l._meshReceived(l.cache, l.register, g, i, s, r, a);
2597
- }).catch((I) => {
2591
+ var I;
2592
+ I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
2593
+ if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
2594
+ return u.arrayBuffer();
2595
+ }).then((u) => this.splatsDecoder.parseSplats(u, c, n, d)).then((u) => {
2596
+ l.cache.put(g, u), l._checkSize(), l._meshReceived(l.cache, l.register, g, i, s, r, a);
2597
+ }).catch((u) => {
2598
2598
  }).finally(() => {
2599
2599
  ae--;
2600
2600
  });
2601
2601
  } : () => {
2602
- var u;
2603
- u = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, u().then((I) => {
2604
- if (!I.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${I.status} : ${I.statusText}`);
2605
- return I.arrayBuffer();
2606
- }).then(async (I) => {
2602
+ var I;
2603
+ I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
2604
+ if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
2605
+ return u.arrayBuffer();
2606
+ }).then(async (u) => {
2607
2607
  await async function(p) {
2608
2608
  return new Promise((B) => {
2609
2609
  const C = setInterval(() => {
2610
2610
  p.hasDracoLoader && !p.dracoLoader || p.hasKTX2Loader && !p.ktx2Loader || (clearInterval(C), B());
2611
2611
  }, 10);
2612
2612
  });
2613
- }(this.gltfLoader), this.gltfLoader.parse(I, null, (p) => {
2613
+ }(this.gltfLoader), this.gltfLoader.parse(u, null, (p) => {
2614
2614
  p.scene.asset = p.asset, c && p.scene.applyMatrix4(this.zUpToYUpMatrix), p.scene.traverse((B) => {
2615
2615
  B.isMesh && (n && B.applyMatrix4(this.zUpToYUpMatrix), l.meshCallback && l.meshCallback(B, b)), B.isPoints && l.pointsCallback && l.pointsCallback(B, b);
2616
2616
  }), l.cache.put(g, p.scene), l._checkSize(), l._meshReceived(l.cache, l.register, g, i, s, r, a);
2617
2617
  });
2618
- }).catch((I) => {
2619
- I !== "user abort" && I.code;
2618
+ }).catch((u) => {
2619
+ u !== "user abort" && u.code;
2620
2620
  }).finally(() => {
2621
2621
  ae--;
2622
2622
  });
2623
2623
  } : t.includes(".json") && (f = () => {
2624
- var u;
2625
- u = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, u().then((I) => {
2626
- if (!I.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${I.status} : ${I.statusText}`);
2627
- return I.json();
2628
- }).then((I) => La(I, t)).then((I) => {
2629
- l.cache.put(g, I), l._checkSize(), l._meshReceived(l.cache, l.register, g);
2630
- }).catch((I) => {
2624
+ var I;
2625
+ I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
2626
+ if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
2627
+ return u.json();
2628
+ }).then((u) => La(u, t)).then((u) => {
2629
+ l.cache.put(g, u), l._checkSize(), l._meshReceived(l.cache, l.register, g);
2630
+ }).catch((u) => {
2631
2631
  }).finally(() => {
2632
2632
  ae--;
2633
2633
  });
@@ -2697,7 +2697,7 @@ function dt(o, e) {
2697
2697
  }
2698
2698
  return t;
2699
2699
  }
2700
- var ke = { resolve: function() {
2700
+ var De = { resolve: function() {
2701
2701
  for (var o, e = "", a = !1, t = arguments.length - 1; t >= -1 && !a; t--) {
2702
2702
  var A;
2703
2703
  t >= 0 ? A = arguments[t] : (o === void 0 && (o = process.cwd()), A = o), Y(A), A.length !== 0 && (e = A + "/" + e, a = A.charCodeAt(0) === 47);
@@ -2715,9 +2715,9 @@ var ke = { resolve: function() {
2715
2715
  var a = arguments[e];
2716
2716
  Y(a), a.length > 0 && (o === void 0 ? o = a : o += "/" + a);
2717
2717
  }
2718
- return o === void 0 ? "." : ke.normalize(o);
2718
+ return o === void 0 ? "." : De.normalize(o);
2719
2719
  }, relative: function(o, e) {
2720
- if (Y(o), Y(e), o === e || (o = ke.resolve(o)) === (e = ke.resolve(e))) return "";
2720
+ if (Y(o), Y(e), o === e || (o = De.resolve(o)) === (e = De.resolve(e))) return "";
2721
2721
  for (var a = 1; a < o.length && o.charCodeAt(a) === 47; ++a) ;
2722
2722
  for (var t = o.length, A = t - a, i = 1; i < e.length && e.charCodeAt(i) === 47; ++i) ;
2723
2723
  for (var s = e.length - i, r = A < s ? A : s, c = -1, n = 0; n <= r; ++n) {
@@ -2801,9 +2801,9 @@ var ke = { resolve: function() {
2801
2801
  }
2802
2802
  return i === -1 || r === -1 || b === 0 || b === 1 && i === r - 1 && i === s + 1 ? r !== -1 && (e.base = e.name = s === 0 && A ? o.slice(1, r) : o.slice(s, r)) : (s === 0 && A ? (e.name = o.slice(1, i), e.base = o.slice(1, r)) : (e.name = o.slice(s, i), e.base = o.slice(s, r)), e.ext = o.slice(i, r)), s > 0 ? e.dir = o.slice(0, s - 1) : A && (e.dir = "/"), e;
2803
2803
  }, sep: "/", delimiter: ":", win32: null, posix: null };
2804
- ke.posix = ke;
2805
- var bt, be = ke;
2806
- class _i {
2804
+ De.posix = De;
2805
+ var bt, be = De;
2806
+ class Pi {
2807
2807
  constructor(e) {
2808
2808
  ge(this, "_toElementFn");
2809
2809
  if (e) {
@@ -2861,7 +2861,7 @@ class _i {
2861
2861
  * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
2862
2862
  * @license MIT License
2863
2863
  */
2864
- class pe extends _i {
2864
+ class pe extends Pi {
2865
2865
  constructor(a = [], t) {
2866
2866
  super(t);
2867
2867
  ge(this, "_elements", []);
@@ -2983,67 +2983,205 @@ class pe extends _i {
2983
2983
  (function(o) {
2984
2984
  o[o.VISIT = 0] = "VISIT", o[o.PROCESS = 1] = "PROCESS";
2985
2985
  })(bt || (bt = {}));
2986
- class Pe extends pe {
2986
+ class _e extends pe {
2987
2987
  constructor(e = [], a) {
2988
2988
  super(e, a);
2989
2989
  }
2990
2990
  clone() {
2991
- return new Pe(this, { comparator: this.comparator, toElementFn: this.toElementFn });
2991
+ return new _e(this, { comparator: this.comparator, toElementFn: this.toElementFn });
2992
2992
  }
2993
2993
  filter(e, a) {
2994
- const t = new Pe([], { toElementFn: this.toElementFn, comparator: this.comparator });
2994
+ const t = new _e([], { toElementFn: this.toElementFn, comparator: this.comparator });
2995
2995
  let A = 0;
2996
2996
  for (const i of this) e.call(a, i, A, this) && t.add(i), A++;
2997
2997
  return t;
2998
2998
  }
2999
2999
  map(e, a, t, A) {
3000
- const i = new Pe([], { comparator: a, toElementFn: t });
3000
+ const i = new _e([], { comparator: a, toElementFn: t });
3001
3001
  let s = 0;
3002
3002
  for (const r of this) i.add(e.call(A, r, s, this)), s++;
3003
3003
  return i;
3004
3004
  }
3005
3005
  }
3006
- class _e extends Pe {
3006
+ class He extends _e {
3007
3007
  constructor(e = [], a) {
3008
3008
  super(e, a);
3009
3009
  }
3010
3010
  clone() {
3011
- return new _e(this, { comparator: this.comparator, toElementFn: this.toElementFn });
3011
+ return new He(this, { comparator: this.comparator, toElementFn: this.toElementFn });
3012
3012
  }
3013
3013
  filter(e, a) {
3014
- const t = new _e([], { toElementFn: this.toElementFn, comparator: this.comparator });
3014
+ const t = new He([], { toElementFn: this.toElementFn, comparator: this.comparator });
3015
3015
  let A = 0;
3016
3016
  for (const i of this) e.call(a, i, A, this) && t.add(i), A++;
3017
3017
  return t;
3018
3018
  }
3019
3019
  map(e, a, t, A) {
3020
- const i = new _e([], { comparator: a, toElementFn: t });
3020
+ const i = new He([], { comparator: a, toElementFn: t });
3021
3021
  let s = 0;
3022
3022
  for (const r of this) i.add(e.call(A, r, s, this)), s++;
3023
3023
  return i;
3024
3024
  }
3025
3025
  }
3026
- new Ra(), new S(), new S(), new S(), new S();
3027
- const Ve = new S(), Hi = new S(), zt = new Ma();
3026
+ new Sa(), new S(), new S(), new S(), new S();
3027
+ const Ve = new S(), _i = new S(), zt = new Ra();
3028
3028
  zt.set(1, 0, 0, 0, 0, 1, 0, -1, 0);
3029
- class qi extends wa {
3029
+ class Hi extends xa {
3030
3030
  constructor(e, a) {
3031
3031
  const A = Math.min(Math.ceil(8) * 512, Math.pow(512, 2));
3032
3032
  let i = 1 * Math.pow(512, 2);
3033
3033
  i = Math.floor(i / A) * A;
3034
3034
  const s = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
3035
3035
  e.initRenderTarget(s);
3036
- const r = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
3037
- r.texture.type = F, e.initRenderTarget(r);
3038
- const c = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
3039
- c.texture.type = F, e.initRenderTarget(c);
3040
- const n = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
3041
- n.texture.type = F, e.initRenderTarget(n);
3042
- const b = new ta({ uniforms: { textureSize: { value: 512 }, numSlices: { value: 1 }, cov1Texture: { value: c.texture }, cov2Texture: { value: n.texture }, colorTexture: { value: s.texture }, positionTexture: { value: r.texture }, zUpToYUpMatrix3x3: { value: zt }, sizeMultiplier: { value: 1 }, cropRadius: { value: Number.MAX_VALUE } }, vertexShader: `
3036
+ const r = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
3037
+ r.texture.type = v, e.initRenderTarget(r);
3038
+ const c = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
3039
+ c.texture.type = v, e.initRenderTarget(c);
3040
+ const n = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
3041
+ n.texture.type = v, e.initRenderTarget(n);
3042
+ const b = new Aa({ uniforms: { textureSize: { value: 512 }, numSlices: { value: 1 }, cov1Texture: { value: c.texture }, cov2Texture: { value: n.texture }, colorTexture: { value: s.texture }, positionTexture: { value: r.texture }, zUpToYUpMatrix3x3: { value: zt }, sizeMultiplier: { value: 1 }, cropRadius: { value: Number.MAX_VALUE }, cameraNear: { value: 0.01 }, cameraFar: { value: 10 }, computeLinearDepth: { value: !0 } }, vertexShader: qi(), fragmentShader: a || Oi(), transparent: !0, side: Ze, depthTest: !1, depthWrite: !1 }), d = new Ja(), l = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]);
3043
+ d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new le(l, 3));
3044
+ const g = new Uint32Array(i), h = new ya(g, 1, !1);
3045
+ h.needsUpdate = !0, h.setUsage(Ka), d.setAttribute("order", h), d.instanceCount = 0, super(d, b), this.orderAttribute = h, this.textureSize = 512, this.numTextures = 1, this.batchSize = A, this.maxSplats = i, this.colorRenderTarget = s, this.positionRenderTarget = r, this.cov1RenderTarget = c, this.cov2RenderTarget = n, this.renderer = e, this.sortID = 0, this.freeAddresses = new He();
3046
+ for (let u = 0; u < this.maxSplats; u += A) this.freeAddresses.add(u);
3047
+ this.worker = new Worker(new URL("" + new URL("assets/PointsManager.worker-5fpGpVvf.js", import.meta.url).href, import.meta.url), { type: "module" }), this.sortListeners = [], this.worker.onmessage = (u) => {
3048
+ const p = new Uint32Array(u.data.order);
3049
+ if (p.length > this.orderAttribute.count) {
3050
+ const B = new Ja(), C = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), w = [0, 2, 1, 2, 3, 1];
3051
+ B.setIndex(w), B.setAttribute("position", new le(C, 3));
3052
+ const x = new Uint32Array(this.maxSplats), y = new ya(x, 1, !1);
3053
+ y.needsUpdate = !0, y.setUsage(Ka), B.setAttribute("order", y), B.instanceCount = 0, this.geometry.dispose(), this.geometry = B, this.orderAttribute = y;
3054
+ }
3055
+ this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(p), this.orderAttribute.addUpdateRange(0, p.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = u.data.count, this.geometry.needsUpdate = !0;
3056
+ for (let B = this.sortListeners.length - 1; B >= 0; B--)
3057
+ this.sortListeners[B](u.data.id) && this.sortListeners.splice(B, 1);
3058
+ }, this.cameraPosition = new S(0, 0, 0), this.rotateOnAxis(new S(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new Aa({ uniforms: { sourceTexture: {} }, vertexShader: lt(), fragmentShader: `
3059
+ precision highp float;
3060
+
3061
+ uniform sampler2D sourceTexture;
3062
+
3063
+ in vec2 vUv;
3064
+
3065
+ void main() {
3066
+ gl_FragColor = texture( sourceTexture, vUv );
3067
+ }`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new Aa({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: lt(), fragmentShader: `
3068
+ precision highp float;
3069
+
3070
+ uniform sampler3D sourceTexture;
3071
+ uniform float w;
3072
+
3073
+ in vec2 vUv;
3074
+
3075
+ void main() {
3076
+ gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
3077
+ }`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new mt(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new qA();
3078
+ const f = new OA(1, 1);
3079
+ this.copyQuad = new xa(f, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
3080
+ const I = this;
3081
+ document.addEventListener("keyup", function(u) {
3082
+ u.key === "a" && (I.growTextures(), console.log(I.positionRenderTarget.depth));
3083
+ });
3084
+ }
3085
+ dispose() {
3086
+ this.material.dispose(), this.copyMaterial2D.dispose(), this.copyMaterial3D.dispose(), this.cov1RenderTarget.dispose(), this.cov2RenderTarget.dispose(), this.positionRenderTarget.dispose(), this.colorRenderTarget.dispose(), this.worker.terminate(), this.worker = null, this.geometry.dispose();
3087
+ }
3088
+ copyTex2D(e, a, t, A) {
3089
+ this.copyMaterial2D.uniforms.sourceTexture.value = e;
3090
+ const i = this.renderer.autoClear, s = this.renderer.getRenderTarget();
3091
+ this.renderer.autoClear = !1;
3092
+ const r = t[2] - t[0], c = t[3] - t[1];
3093
+ a.viewport.set(t[0], t[1], r, c), this.renderer.setRenderTarget(a, A), this.renderer.render(this.copyScene, this.copyCamera), this.renderer.setRenderTarget(s), this.renderer.autoClear = i;
3094
+ }
3095
+ copyTex3D(e, a, t) {
3096
+ this.copyMaterial3D.uniforms.sourceTexture.value = e;
3097
+ const A = this.renderer.autoClear, i = this.renderer.getRenderTarget();
3098
+ this.renderer.autoClear = !1, this.copyQuad.material = this.copyMaterial3D;
3099
+ for (let s = 0; s < t; s++) this.renderer.setRenderTarget(a, s), this.copyMaterial3D.uniforms.w.value = (s + 0.5) / t, this.renderer.render(this.copyScene, this.copyCamera);
3100
+ this.copyQuad.material = this.copyMaterial2D, this.renderer.setRenderTarget(i), this.renderer.autoClear = A;
3101
+ }
3102
+ setSplatsSizeMultiplier(e) {
3103
+ this.material.uniforms.sizeMultiplier.value = e;
3104
+ }
3105
+ setSplatsCropRadius(e) {
3106
+ this.material.uniforms.cropRadius.value = e;
3107
+ }
3108
+ sort(e) {
3109
+ !e && this.cameraPosition ? this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }) : this.cameraPosition && e.equals(this.cameraPosition) || (this.cameraPosition.copy(e), this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }));
3110
+ }
3111
+ raycast(e, a) {
3112
+ }
3113
+ addSplatsTile(e, a, t, A) {
3114
+ const i = this;
3115
+ e.count;
3116
+ const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, c = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), b = [], d = [];
3117
+ let l = () => {
3118
+ };
3119
+ const g = new Float32Array(s.length / r * 3);
3120
+ for (let f = 0; f < s.length / 3; f++) g[3 * f] = s[f * r + c], g[3 * f + 1] = s[f * r + c + 1], g[3 * f + 2] = s[f * r + c + 2];
3121
+ l = (f, I, u) => {
3122
+ const p = u * u;
3123
+ for (let B = 0; B < g.length; B += 3) {
3124
+ Ve.set(g[B], -g[B + 2], g[B + 1]);
3125
+ const C = _i.copy(Ve).sub(f.origin).dot(f.direction);
3126
+ C > 0 && f.distanceSqToPoint(Ve) < p && I.push({ distance: C, point: Ve.clone(), type: "splat" });
3127
+ }
3128
+ }, n > this.freeAddresses.size && this.growTextures();
3129
+ for (let f = 0; f < n; f++) {
3130
+ const I = this.freeAddresses.poll();
3131
+ isNaN(I) && console.log("insuficient texture size to store splats info"), b.push(I), d.push(3 * I);
3132
+ const u = f * this.batchSize;
3133
+ this.addSplatsBatch(u, I, e, a, t, A);
3134
+ }
3135
+ i.worker.postMessage({ method: "addBatches", insertionIndexes: d, positions: s.buffer, offset: c, stride: r, batchSize: i.batchSize }, [s.buffer]);
3136
+ let h = !1;
3137
+ return { hide: () => {
3138
+ h == 1 && (h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
3139
+ }, show: (f) => {
3140
+ h == 0 && (h = !0);
3141
+ const I = i.sortID;
3142
+ i.sortListeners.push((u) => u >= I && (f(), !0)), i.worker.postMessage({ method: "showBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
3143
+ }, remove: () => {
3144
+ l = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), b.forEach((f) => i.freeAddresses.add(f));
3145
+ }, sort: this.sort, raycast: l, isSplatsBatch: !0 };
3146
+ }
3147
+ addSplatsBatch(e, a, t, A, i, s) {
3148
+ const r = new Float32Array(4 * this.batchSize), c = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), b = new Float32Array(4 * this.batchSize);
3149
+ for (let p = a; p < a + this.batchSize; p++) {
3150
+ const B = p - a, C = 4 * B, w = e + B;
3151
+ if (w >= t.count) break;
3152
+ r[C] = t.getX(w), r[C + 1] = t.getY(w), r[C + 2] = t.getZ(w), Math.floor(255 * A.getX(w)), Math.floor(255 * A.getY(w)), Math.floor(255 * A.getZ(w)), Math.floor(255 * A.getW(w)), c[C] = Math.floor(255 * A.getX(w)), c[C + 1] = Math.floor(255 * A.getY(w)), c[C + 2] = Math.floor(255 * A.getZ(w)), c[C + 3] = Math.floor(255 * A.getW(w)), n[C] = i.getX(w), n[C + 1] = i.getY(w), n[C + 2] = i.getZ(w), b[C] = s.getX(w), b[C + 1] = s.getY(w), b[C + 2] = s.getZ(w);
3153
+ }
3154
+ const d = Math.floor(a / Math.pow(this.textureSize, 2)), l = Math.ceil(this.batchSize / this.textureSize), g = [0, a / this.textureSize - d * this.textureSize, this.textureSize];
3155
+ g.push(g[1] + l);
3156
+ const h = new Ge(r, this.textureSize, l, $, v);
3157
+ h.generateMipmaps = !1, h.magFilter = M, h.minFilter = M, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, g, d), h.dispose();
3158
+ const f = new Ge(c, this.textureSize, l, $, X);
3159
+ f.generateMipmaps = !1, f.magFilter = M, f.minFilter = M, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, g, d), f.dispose();
3160
+ const I = new Ge(n, this.textureSize, l, $, v);
3161
+ I.generateMipmaps = !1, I.magFilter = M, I.minFilter = M, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov1RenderTarget, g, d), I.dispose();
3162
+ const u = new Ge(b, this.textureSize, l, $, v);
3163
+ u.generateMipmaps = !1, u.magFilter = M, u.minFilter = M, u.anisotropy = 0, u.needsUpdate = !0, this.renderer.initTexture(u), this.copyTex2D(u, this.cov2RenderTarget, g, d), u.dispose();
3164
+ }
3165
+ growTextures() {
3166
+ for (let s = this.maxSplats; s < this.maxSplats + this.textureSize * this.textureSize; s += this.batchSize) this.freeAddresses.add(s);
3167
+ this.maxSplats += this.textureSize * this.textureSize;
3168
+ const e = this.numTextures + 1, a = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
3169
+ this.renderer.initRenderTarget(a), this.copyTex3D(this.colorRenderTarget.texture, a, this.numTextures), this.colorRenderTarget.dispose(), this.colorRenderTarget = a, this.material.uniforms.colorTexture.value = this.colorRenderTarget.texture;
3170
+ const t = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
3171
+ t.texture.type = v, this.renderer.initRenderTarget(t), this.copyTex3D(this.positionRenderTarget.texture, t, this.numTextures), this.positionRenderTarget.dispose(), this.positionRenderTarget = t, this.material.uniforms.positionTexture.value = this.positionRenderTarget.texture;
3172
+ const A = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
3173
+ A.texture.type = v, this.renderer.initRenderTarget(A), this.copyTex3D(this.cov1RenderTarget.texture, A, this.numTextures), this.cov1RenderTarget.dispose(), this.cov1RenderTarget = A, this.material.uniforms.cov1Texture.value = this.cov1RenderTarget.texture;
3174
+ const i = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
3175
+ i.texture.type = v, this.renderer.initRenderTarget(i), this.copyTex3D(this.cov2RenderTarget.texture, i, this.numTextures), this.cov2RenderTarget.dispose(), this.cov2RenderTarget = i, this.material.uniforms.cov2Texture.value = this.cov2RenderTarget.texture, this.numTextures = e, this.material.uniforms.numSlices.value = this.numTextures;
3176
+ }
3177
+ }
3178
+ function qi() {
3179
+ return `
3043
3180
  precision highp float;
3044
3181
  precision highp int;
3045
3182
 
3046
3183
  #include <common>
3184
+ #include <packing>
3047
3185
 
3048
3186
  uniform float textureSize;
3049
3187
  uniform float numSlices;
@@ -3053,6 +3191,7 @@ out vec4 color;
3053
3191
  out vec2 vUv;
3054
3192
  out vec3 splatPositionWorld;
3055
3193
  out float splatDepth;
3194
+ //out float orthographicDepth;
3056
3195
  out float splatCrop;
3057
3196
  uniform sampler3D colorTexture;
3058
3197
  uniform sampler3D positionTexture;
@@ -3060,6 +3199,9 @@ uniform sampler3D cov1Texture;
3060
3199
  uniform sampler3D cov2Texture;
3061
3200
  uniform mat3 zUpToYUpMatrix3x3;
3062
3201
  uniform float logDepthBufFC;
3202
+ //uniform float cameraNear;
3203
+ //uniform float cameraFar;
3204
+ //uniform bool computeLinearDepth;
3063
3205
 
3064
3206
 
3065
3207
  void getVertexData(out vec3 position, out mat3 covariance) {
@@ -3175,25 +3317,32 @@ void main() {
3175
3317
  vec3 outPosition = vec3(position)*sizeMultiplier;
3176
3318
  modelTransform(splatPositionWorld, covariance, outPosition);
3177
3319
 
3178
-
3179
3320
  gl_Position = projectionMatrix * viewMatrix * vec4(outPosition, 1.0);
3321
+ /* if(computeLinearDepth){
3322
+ orthographicDepth = viewZToOrthographicDepth( -gl_Position.w, cameraNear, cameraFar );
3323
+ } */
3180
3324
 
3181
- #ifdef USE_LOGDEPTHBUF
3182
- float d = 1.0 + gl_Position.w;
3325
+ vec4 centerP = projectionMatrix * viewMatrix * vec4(splatPositionWorld, 1.0);
3326
+ #if defined( USE_LOGDEPTHBUF )
3183
3327
  float isPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
3184
- splatDepth = isPerspective == 0.0 ? gl_Position.z : log2( 1.0 + gl_Position.w ) * logDepthBufFC * 0.5;
3328
+ splatDepth = isPerspective == 0.0 ? centerP.z : log2( 1.0 + centerP.w ) * logDepthBufFC * 0.5;
3185
3329
  #else
3186
- splatDepth = (gl_Position.z / gl_Position.w)* 0.5 + 0.5;
3330
+ splatDepth = (centerP.z / centerP.w)* 0.5 + 0.5;
3187
3331
  #endif
3332
+
3188
3333
 
3189
3334
  }
3190
- `, fragmentShader: a || `
3335
+ `;
3336
+ }
3337
+ function Oi() {
3338
+ return `
3191
3339
  precision highp float;
3192
3340
 
3193
3341
  in vec4 color;
3194
3342
  in vec2 vUv;
3195
3343
  in vec3 splatPositionWorld;
3196
3344
  in float splatDepth;
3345
+ //in float orthographicDepth;
3197
3346
  in float splatCrop;
3198
3347
  uniform float textureSize;
3199
3348
  uniform float cropRadius;
@@ -3203,150 +3352,17 @@ void main() {
3203
3352
  float l = length(vUv);
3204
3353
 
3205
3354
  // Early discard for pixels outside the radius
3206
- if (l > splatCrop) {
3355
+ if (l > 0.5) {
3207
3356
  discard;
3208
3357
  };
3209
3358
  vec2 p = vUv * 4.0;
3210
3359
  float alpha = exp(-dot(p, p));
3211
3360
 
3212
3361
  gl_FragColor = vec4(pow(color.xyz,vec3(1.0/2.2)), color.w * pow(alpha, 1.8));
3213
- gl_FragColor = vec4(splatDepth, splatDepth,splatDepth,1.0);
3362
+ //gl_FragColor = vec4(splatDepth,0.0,0.0,1.0);
3363
+ //gl_FragDepth = splatDepth;
3214
3364
 
3215
- }`, transparent: !1, side: Ze, depthTest: !0, depthWrite: !0, depthFunc: qA }), d = new Ja(), l = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]);
3216
- d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new le(l, 3));
3217
- const g = new Uint32Array(i), h = new Qa(g, 1, !1);
3218
- h.needsUpdate = !0, h.setUsage(Ka), d.setAttribute("order", h), d.instanceCount = 0, super(d, b), this.orderAttribute = h, this.textureSize = 512, this.numTextures = 1, this.batchSize = A, this.maxSplats = i, this.colorRenderTarget = s, this.positionRenderTarget = r, this.cov1RenderTarget = c, this.cov2RenderTarget = n, this.renderer = e, this.sortID = 0, this.freeAddresses = new _e();
3219
- for (let I = 0; I < this.maxSplats; I += A) this.freeAddresses.add(I);
3220
- this.worker = new Worker(new URL("" + new URL("assets/PointsManager.worker-5fpGpVvf.js", import.meta.url).href, import.meta.url), { type: "module" }), this.sortListeners = [], this.worker.onmessage = (I) => {
3221
- const p = new Uint32Array(I.data.order);
3222
- if (p.length > this.orderAttribute.count) {
3223
- const B = new Ja(), C = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), w = [0, 2, 1, 2, 3, 1];
3224
- B.setIndex(w), B.setAttribute("position", new le(C, 3));
3225
- const x = new Uint32Array(this.maxSplats), y = new Qa(x, 1, !1);
3226
- y.needsUpdate = !0, y.setUsage(Ka), B.setAttribute("order", y), B.instanceCount = 0, this.geometry.dispose(), this.geometry = B, this.orderAttribute = y;
3227
- }
3228
- this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(p), this.orderAttribute.addUpdateRange(0, p.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = I.data.count, this.geometry.needsUpdate = !0;
3229
- for (let B = this.sortListeners.length - 1; B >= 0; B--)
3230
- this.sortListeners[B](I.data.id) && this.sortListeners.splice(B, 1);
3231
- }, this.cameraPosition = new S(0, 0, 0), this.rotateOnAxis(new S(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new ta({ uniforms: { sourceTexture: {} }, vertexShader: lt(), fragmentShader: `
3232
- precision highp float;
3233
-
3234
- uniform sampler2D sourceTexture;
3235
-
3236
- in vec2 vUv;
3237
-
3238
- void main() {
3239
- gl_FragColor = texture( sourceTexture, vUv );
3240
- }`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new ta({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: lt(), fragmentShader: `
3241
- precision highp float;
3242
-
3243
- uniform sampler3D sourceTexture;
3244
- uniform float w;
3245
-
3246
- in vec2 vUv;
3247
-
3248
- void main() {
3249
- gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
3250
- }`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new Et(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new OA();
3251
- const f = new JA(1, 1);
3252
- this.copyQuad = new wa(f, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
3253
- const u = this;
3254
- document.addEventListener("keyup", function(I) {
3255
- I.key === "a" && (u.growTextures(), console.log(u.positionRenderTarget.depth));
3256
- });
3257
- }
3258
- dispose() {
3259
- this.material.dispose(), this.copyMaterial2D.dispose(), this.copyMaterial3D.dispose(), this.cov1RenderTarget.dispose(), this.cov2RenderTarget.dispose(), this.positionRenderTarget.dispose(), this.colorRenderTarget.dispose(), this.worker.terminate(), this.worker = null, this.geometry.dispose();
3260
- }
3261
- copyTex2D(e, a, t, A) {
3262
- this.copyMaterial2D.uniforms.sourceTexture.value = e;
3263
- const i = this.renderer.autoClear, s = this.renderer.getRenderTarget();
3264
- this.renderer.autoClear = !1;
3265
- const r = t[2] - t[0], c = t[3] - t[1];
3266
- a.viewport.set(t[0], t[1], r, c), this.renderer.setRenderTarget(a, A), this.renderer.render(this.copyScene, this.copyCamera), this.renderer.setRenderTarget(s), this.renderer.autoClear = i;
3267
- }
3268
- copyTex3D(e, a, t) {
3269
- this.copyMaterial3D.uniforms.sourceTexture.value = e;
3270
- const A = this.renderer.autoClear, i = this.renderer.getRenderTarget();
3271
- this.renderer.autoClear = !1, this.copyQuad.material = this.copyMaterial3D;
3272
- for (let s = 0; s < t; s++) this.renderer.setRenderTarget(a, s), this.copyMaterial3D.uniforms.w.value = (s + 0.5) / t, this.renderer.render(this.copyScene, this.copyCamera);
3273
- this.copyQuad.material = this.copyMaterial2D, this.renderer.setRenderTarget(i), this.renderer.autoClear = A;
3274
- }
3275
- setSplatsSizeMultiplier(e) {
3276
- this.material.uniforms.sizeMultiplier.value = e;
3277
- }
3278
- setSplatsCropRadius(e) {
3279
- this.material.uniforms.cropRadius.value = e;
3280
- }
3281
- sort(e) {
3282
- !e && this.cameraPosition ? this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }) : this.cameraPosition && e.equals(this.cameraPosition) || (this.cameraPosition.copy(e), this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }));
3283
- }
3284
- raycast(e, a) {
3285
- }
3286
- addSplatsTile(e, a, t, A) {
3287
- const i = this;
3288
- e.count;
3289
- const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, c = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), b = [], d = [];
3290
- let l = () => {
3291
- };
3292
- const g = new Float32Array(s.length / r * 3);
3293
- for (let f = 0; f < s.length / 3; f++) g[3 * f] = s[f * r + c], g[3 * f + 1] = s[f * r + c + 1], g[3 * f + 2] = s[f * r + c + 2];
3294
- l = (f, u, I) => {
3295
- const p = I * I;
3296
- for (let B = 0; B < g.length; B += 3) {
3297
- Ve.set(g[B], -g[B + 2], g[B + 1]);
3298
- const C = Hi.copy(Ve).sub(f.origin).dot(f.direction);
3299
- C > 0 && f.distanceSqToPoint(Ve) < p && u.push({ distance: C, point: Ve.clone(), type: "splat" });
3300
- }
3301
- }, n > this.freeAddresses.size && this.growTextures();
3302
- for (let f = 0; f < n; f++) {
3303
- const u = this.freeAddresses.poll();
3304
- isNaN(u) && console.log("insuficient texture size to store splats info"), b.push(u), d.push(3 * u);
3305
- const I = f * this.batchSize;
3306
- this.addSplatsBatch(I, u, e, a, t, A);
3307
- }
3308
- i.worker.postMessage({ method: "addBatches", insertionIndexes: d, positions: s.buffer, offset: c, stride: r, batchSize: i.batchSize }, [s.buffer]);
3309
- let h = !1;
3310
- return { hide: () => {
3311
- h == 1 && (h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
3312
- }, show: (f) => {
3313
- h == 0 && (h = !0);
3314
- const u = i.sortID;
3315
- i.sortListeners.push((I) => I >= u && (f(), !0)), i.worker.postMessage({ method: "showBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
3316
- }, remove: () => {
3317
- l = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), b.forEach((f) => i.freeAddresses.add(f));
3318
- }, sort: this.sort, raycast: l, isSplatsBatch: !0 };
3319
- }
3320
- addSplatsBatch(e, a, t, A, i, s) {
3321
- const r = new Float32Array(4 * this.batchSize), c = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), b = new Float32Array(4 * this.batchSize);
3322
- for (let p = a; p < a + this.batchSize; p++) {
3323
- const B = p - a, C = 4 * B, w = e + B;
3324
- if (w >= t.count) break;
3325
- r[C] = t.getX(w), r[C + 1] = t.getY(w), r[C + 2] = t.getZ(w), Math.floor(255 * A.getX(w)), Math.floor(255 * A.getY(w)), Math.floor(255 * A.getZ(w)), Math.floor(255 * A.getW(w)), c[C] = Math.floor(255 * A.getX(w)), c[C + 1] = Math.floor(255 * A.getY(w)), c[C + 2] = Math.floor(255 * A.getZ(w)), c[C + 3] = Math.floor(255 * A.getW(w)), n[C] = i.getX(w), n[C + 1] = i.getY(w), n[C + 2] = i.getZ(w), b[C] = s.getX(w), b[C + 1] = s.getY(w), b[C + 2] = s.getZ(w);
3326
- }
3327
- const d = Math.floor(a / Math.pow(this.textureSize, 2)), l = Math.ceil(this.batchSize / this.textureSize), g = [0, a / this.textureSize - d * this.textureSize, this.textureSize];
3328
- g.push(g[1] + l);
3329
- const h = new Le(r, this.textureSize, l, $, F);
3330
- h.generateMipmaps = !1, h.magFilter = M, h.minFilter = M, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, g, d), h.dispose();
3331
- const f = new Le(c, this.textureSize, l, $, X);
3332
- f.generateMipmaps = !1, f.magFilter = M, f.minFilter = M, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, g, d), f.dispose();
3333
- const u = new Le(n, this.textureSize, l, $, F);
3334
- u.generateMipmaps = !1, u.magFilter = M, u.minFilter = M, u.anisotropy = 0, u.needsUpdate = !0, this.renderer.initTexture(u), this.copyTex2D(u, this.cov1RenderTarget, g, d), u.dispose();
3335
- const I = new Le(b, this.textureSize, l, $, F);
3336
- I.generateMipmaps = !1, I.magFilter = M, I.minFilter = M, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov2RenderTarget, g, d), I.dispose();
3337
- }
3338
- growTextures() {
3339
- for (let s = this.maxSplats; s < this.maxSplats + this.textureSize * this.textureSize; s += this.batchSize) this.freeAddresses.add(s);
3340
- this.maxSplats += this.textureSize * this.textureSize;
3341
- const e = this.numTextures + 1, a = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
3342
- this.renderer.initRenderTarget(a), this.copyTex3D(this.colorRenderTarget.texture, a, this.numTextures), this.colorRenderTarget.dispose(), this.colorRenderTarget = a, this.material.uniforms.colorTexture.value = this.colorRenderTarget.texture;
3343
- const t = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
3344
- t.texture.type = F, this.renderer.initRenderTarget(t), this.copyTex3D(this.positionRenderTarget.texture, t, this.numTextures), this.positionRenderTarget.dispose(), this.positionRenderTarget = t, this.material.uniforms.positionTexture.value = this.positionRenderTarget.texture;
3345
- const A = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
3346
- A.texture.type = F, this.renderer.initRenderTarget(A), this.copyTex3D(this.cov1RenderTarget.texture, A, this.numTextures), this.cov1RenderTarget.dispose(), this.cov1RenderTarget = A, this.material.uniforms.cov1Texture.value = this.cov1RenderTarget.texture;
3347
- const i = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
3348
- i.texture.type = F, this.renderer.initRenderTarget(i), this.copyTex3D(this.cov2RenderTarget.texture, i, this.numTextures), this.cov2RenderTarget.dispose(), this.cov2RenderTarget = i, this.material.uniforms.cov2Texture.value = this.cov2RenderTarget.texture, this.numTextures = e, this.material.uniforms.numSlices.value = this.numTextures;
3349
- }
3365
+ }`;
3350
3366
  }
3351
3367
  function lt() {
3352
3368
  return `
@@ -3359,32 +3375,32 @@ void main() {
3359
3375
  }`;
3360
3376
  }
3361
3377
  var W;
3362
- const te = new m.Sphere(new m.Vector3(0, 0, 0), 1), Ie = new se([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]);
3363
- new m.Box3();
3364
- const ce = new m.Vector3(0, 0, 0), ye = new m.Vector3(0, 0, 0), Oi = new m.Vector3(0, 1, 0), Ye = new m.Ray(), We = new m.Matrix4();
3365
- new m.Matrix4(), new m.Frustum();
3366
- const pa = new m.Vector3(), Xe = [], ht = new m.Quaternion(), Z = {};
3367
- function Ji() {
3378
+ const te = new E.Sphere(new E.Vector3(0, 0, 0), 1), ue = new se([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]);
3379
+ new E.Box3();
3380
+ const ce = new E.Vector3(0, 0, 0), we = new E.Vector3(0, 0, 0), Ji = new E.Vector3(0, 1, 0), Ye = new E.Ray(), We = new E.Matrix4();
3381
+ new E.Matrix4(), new E.Frustum();
3382
+ const Ca = new E.Vector3(), Xe = [], ht = new E.Quaternion(), Z = {};
3383
+ function Ki() {
3368
3384
  var o = [];
3369
3385
  for (let e in Z) Z.hasOwnProperty(e) && Z[e] > 0 && o.push(e);
3370
3386
  return o;
3371
3387
  }
3372
- class Vt extends m.Object3D {
3388
+ class Vt extends E.Object3D {
3373
3389
  constructor(e) {
3374
3390
  super();
3375
3391
  const a = this;
3376
- if (a.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new m.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new m.Vector2(1e3, 1e3), this.loadingStrategy = e.loadingStrategy ? e.loadingStrategy.toUpperCase() : "INCREMENTAL", this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.proxy = e.proxy, this.drawBoundingVolume = !!e.drawBoundingVolume && e.drawBoundingVolume, this.displayErrors = e.displayErrors, this.displayCopyright = e.displayCopyright, e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid = kt(), e.tileLoader) this.tileLoader = e.tileLoader;
3392
+ if (a.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.loadingStrategy = e.loadingStrategy ? e.loadingStrategy.toUpperCase() : "INCREMENTAL", this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.proxy = e.proxy, this.drawBoundingVolume = !!e.drawBoundingVolume && e.drawBoundingVolume, this.displayErrors = e.displayErrors, this.displayCopyright = e.displayCopyright, e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid = kt(), e.tileLoader) this.tileLoader = e.tileLoader;
3377
3393
  else {
3378
3394
  const i = {};
3379
3395
  i.meshCallback = e.meshCallback ? e.meshCallback : (s, r) => {
3380
- s.material.wireframe = !1, s.material.side = m.DoubleSide;
3396
+ s.material.wireframe = !1, s.material.side = E.DoubleSide;
3381
3397
  }, i.pointsCallback = e.pointsCallback ? e.pointsCallback : (s, r) => {
3382
3398
  s.material.size = Math.pow(r, 0.33), s.material.sizeAttenuation = !0;
3383
- }, i.proxy = this.proxy, i.renderer = e.renderer, i.dracoLoader = e.dracoLoader, i.ktx2Loader = e.ktx2Loader, this.tileLoader = new Pi(i), this.update = (s) => {
3399
+ }, i.proxy = this.proxy, i.renderer = e.renderer, i.dracoLoader = e.dracoLoader, i.ktx2Loader = e.ktx2Loader, this.tileLoader = new Ni(i), this.update = (s) => {
3384
3400
  this.update(s), this.tileLoader.update();
3385
3401
  };
3386
3402
  }
3387
- if (this.displayCopyright = !!e.displayCopyright, this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.splatsCropRadius = Number.MAX_VALUE, this.splatsSizeMultiplier = 1, this.renderer = e.renderer, this.meshCallback = e.meshCallback, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.occlusionCullingService = e.occlusionCullingService, this.static = e.static, this.occlusionCullingService && (this.color = new m.Color(), this.color.setHex(16777215 * Math.random()), this.colorID = m.MathUtils.clamp(255 * a.color.r, 0, 255) << 16 ^ m.MathUtils.clamp(255 * a.color.g, 0, 255) << 8 ^ m.MathUtils.clamp(255 * a.color.b, 0, 255)), this.static && (this.matrixAutoUpdate = !1, this.matrixWorldAutoUpdate = !1), this.childrenTiles = [], this.meshContent = [], this.tileContent, this.refine, this.rootPath, this.geometricError, this.boundingVolume, this.json, this.materialVisibility = !1, this.level = e.level ? e.level : 0, this.hasMeshContent = 0, this.hasUnloadedJSONContent = 0, this.centerModel = e.centerModel, this.abortController = new AbortController(), this.onLoadCallback = e.onLoadCallback, e.json) a._setup(e);
3403
+ if (this.displayCopyright = !!e.displayCopyright, this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.splatsCropRadius = Number.MAX_VALUE, this.splatsSizeMultiplier = 1, this.renderer = e.renderer, this.meshCallback = e.meshCallback, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.occlusionCullingService = e.occlusionCullingService, this.static = e.static, this.occlusionCullingService && (this.color = new E.Color(), this.color.setHex(16777215 * Math.random()), this.colorID = E.MathUtils.clamp(255 * a.color.r, 0, 255) << 16 ^ E.MathUtils.clamp(255 * a.color.g, 0, 255) << 8 ^ E.MathUtils.clamp(255 * a.color.b, 0, 255)), this.static && (this.matrixAutoUpdate = !1, this.matrixWorldAutoUpdate = !1), this.childrenTiles = [], this.meshContent = [], this.tileContent, this.refine, this.rootPath, this.geometricError, this.boundingVolume, this.json, this.materialVisibility = !1, this.level = e.level ? e.level : 0, this.hasMeshContent = 0, this.hasUnloadedJSONContent = 0, this.centerModel = e.centerModel, this.abortController = new AbortController(), this.onLoadCallback = e.onLoadCallback, e.json) a._setup(e);
3388
3404
  else if (e.url) {
3389
3405
  var t = e.url;
3390
3406
  if (a.queryParams) {
@@ -3420,25 +3436,25 @@ class Vt extends m.Object3D {
3420
3436
  }
3421
3437
  async _setup(e) {
3422
3438
  const a = this;
3423
- if (e.json.extensionsRequired && e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") && (a.splatsMesh = new qi(a.tileLoader.renderer), this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius), this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier), a.add(a.splatsMesh)), e.json.root ? (a.json = e.json.root, a.json.refine || (a.json.refine = e.json.refine), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : a.json = e.json, a.json.children || (a.json.getChildren ? a.json.children = await a.json.getChildren() : a.json.children = []), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refine ? a.refine = a.json.refine : a.refine = e.parentRefine, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError, a.json.transform) {
3424
- let A = new m.Matrix4();
3439
+ if (e.json.extensionsRequired && e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") && (a.splatsMesh = new Hi(a.tileLoader.renderer), this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius), this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier), a.add(a.splatsMesh)), e.json.root ? (a.json = e.json.root, a.json.refine || (a.json.refine = e.json.refine), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : a.json = e.json, a.json.children || (a.json.getChildren ? a.json.children = await a.json.getChildren() : a.json.children = []), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refine ? a.refine = a.json.refine : a.refine = e.parentRefine, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError, a.json.transform) {
3440
+ let A = new E.Matrix4();
3425
3441
  A.elements = a.json.transform, a.applyMatrix4(A);
3426
3442
  }
3427
3443
  if (a.json.boundingVolume) if (a.json.boundingVolume.box) a.boundingVolume = new se(a.json.boundingVolume.box);
3428
3444
  else if (a.json.boundingVolume.region) {
3429
3445
  const A = a.json.boundingVolume.region;
3430
- a._transformWGS84ToCartesian(A[0], A[1], A[4], ce), a._transformWGS84ToCartesian(A[2], A[3], A[5], ye), ce.lerp(ye, 0.5), a.boundingVolume = new m.Sphere(new m.Vector3(ce.x, ce.y, ce.z), ce.distanceTo(ye));
3446
+ a._transformWGS84ToCartesian(A[0], A[1], A[4], ce), a._transformWGS84ToCartesian(A[2], A[3], A[5], we), ce.lerp(we, 0.5), a.boundingVolume = new E.Sphere(new E.Vector3(ce.x, ce.y, ce.z), ce.distanceTo(we));
3431
3447
  } else if (a.json.boundingVolume.sphere) {
3432
3448
  const A = a.json.boundingVolume.sphere;
3433
- a.boundingVolume = new m.Sphere(new m.Vector3(A[0], A[1], A[2]), A[3]);
3449
+ a.boundingVolume = new E.Sphere(new E.Vector3(A[0], A[1], A[2]), A[3]);
3434
3450
  } else a.boundingVolume = e.parentBoundingVolume;
3435
3451
  else a.boundingVolume = e.parentBoundingVolume;
3436
3452
  function t(A) {
3437
3453
  A.uri && A.uri.includes("json") || A.url && A.url.includes("json") ? a.hasUnloadedJSONContent++ : a.hasMeshContent++;
3438
3454
  }
3439
- if (a.json.content ? (t(a.json.content), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()) : a.json.contents && (a.json.contents.forEach((A) => t(A)), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()), a.centerModel && (ye.copy(a.boundingVolume.center), this.json.boundingVolume.region && (this._transformWGS84ToCartesian(0.5 * (this.json.boundingVolume.region[0] + this.json.boundingVolume.region[2]), 0.5 * (this.json.boundingVolume.region[1] + this.json.boundingVolume.region[3]), 0.5 * (this.json.boundingVolume.region[4] + this.json.boundingVolume.region[5]), ce), ht.setFromUnitVectors(ce.normalize(), Oi.normalize()), a.applyQuaternion(ht)), ye.applyMatrix4(a.matrix), a.position.sub(ye), a.updateMatrices()), e.onLoadCallback && a.onLoadCallback(a), a.isSetup = !0, a.level > 0 && a.drawBoundingVolume && (a.bbox && console.log("double setup"), this.boundingVolume.aabb)) {
3455
+ if (a.json.content ? (t(a.json.content), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()) : a.json.contents && (a.json.contents.forEach((A) => t(A)), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()), a.centerModel && (we.copy(a.boundingVolume.center), this.json.boundingVolume.region && (this._transformWGS84ToCartesian(0.5 * (this.json.boundingVolume.region[0] + this.json.boundingVolume.region[2]), 0.5 * (this.json.boundingVolume.region[1] + this.json.boundingVolume.region[3]), 0.5 * (this.json.boundingVolume.region[4] + this.json.boundingVolume.region[5]), ce), ht.setFromUnitVectors(ce.normalize(), Ji.normalize()), a.applyQuaternion(ht)), we.applyMatrix4(a.matrix), a.position.sub(we), a.updateMatrices()), e.onLoadCallback && a.onLoadCallback(a), a.isSetup = !0, a.level > 0 && a.drawBoundingVolume && (a.bbox && console.log("double setup"), this.boundingVolume.aabb)) {
3440
3456
  let A = this.boundingVolume.aabb.clone();
3441
- A.applyMatrix4(this.matrixWorld), a.bbox = new m.Box3Helper(A, new m.Color(Math.random(), Math.random(), Math.random())), a.add(a.bbox), a.bbox.material.visible = !1;
3457
+ A.applyMatrix4(this.matrixWorld), a.bbox = new E.Box3Helper(A, new E.Color(Math.random(), Math.random(), Math.random())), a.add(a.bbox), a.bbox.material.visible = !1;
3442
3458
  }
3443
3459
  }
3444
3460
  _assembleURL(e, a) {
@@ -3482,11 +3498,11 @@ class Vt extends m.Object3D {
3482
3498
  t.tileLoader.get(t.abortController, t.uuid, n, (l) => {
3483
3499
  t.deleted || (l.asset && l.asset.copyright && (l.asset.copyright.split(";").forEach((g) => {
3484
3500
  Z[g] ? Z[g]++ : Z[g] = 1;
3485
- }), t.displayCopyright && Ca()), t.meshContent.push(l), t.splatsMesh || (l.traverse((g) => {
3501
+ }), t.displayCopyright && Ba()), t.meshContent.push(l), t.splatsMesh || (l.traverse((g) => {
3486
3502
  if ((g.isMesh || g.isPoints) && g.layers.disable(0), g.isMesh && t.occlusionCullingService) {
3487
3503
  const h = g.geometry.attributes.position, f = [];
3488
- for (let u = 0; u < h.count; u++) f.push(t.color.r, t.color.g, t.color.b);
3489
- g.geometry.setAttribute("color", new m.Float32BufferAttribute(f, 3));
3504
+ for (let I = 0; I < h.count; I++) f.push(t.color.r, t.color.g, t.color.b);
3505
+ g.geometry.setAttribute("color", new E.Float32BufferAttribute(f, 3));
3490
3506
  }
3491
3507
  }), t.add(l), t.updateMatrices()));
3492
3508
  }, t.cameraOnLoad ? () => {
@@ -3506,7 +3522,7 @@ class Vt extends m.Object3D {
3506
3522
  e.meshContent.forEach((a) => {
3507
3523
  a && a.asset && a.asset.copyright && (a.asset.copyright.split(";").forEach((t) => {
3508
3524
  Z[t] && Z[t]--;
3509
- }), e.displayCopyright && Ca());
3525
+ }), e.displayCopyright && Ba());
3510
3526
  }), e.meshContent = [], e.bbox && e.bbox.dispose(), e.childrenTiles.forEach((a) => a.dispose()), e.deleted = !0, e.splatsMesh && (e.meshContent.forEach((a) => a.hide()), e.parentTile || e.splatsMesh.dispose()), e.contentURL && (e.contentURL.forEach((a) => {
3511
3527
  e.tileLoader.invalidate(a, e.uuid);
3512
3528
  }), e.contentURL = []), e.abortController && e.abortController.abort("tile not needed"), this.parent = null, this.dispatchEvent({ type: "removed" });
@@ -3519,7 +3535,7 @@ class Vt extends m.Object3D {
3519
3535
  const t = e.meshContent[a];
3520
3536
  t && t.asset && t.asset.copyright && (t.asset.copyright.split(";").forEach((A) => {
3521
3537
  Z[A] && Z[A]--;
3522
- }), e.displayCopyright && Ca()), e.remove(t);
3538
+ }), e.displayCopyright && Ba()), e.remove(t);
3523
3539
  }
3524
3540
  e.splatsMesh && e.meshContent.forEach((a) => a.hide()), e.meshContent = [], e.contentURL.forEach((a) => {
3525
3541
  e.tileLoader.invalidate(a, e.uuid);
@@ -3538,7 +3554,7 @@ class Vt extends m.Object3D {
3538
3554
  let t = !1;
3539
3555
  if (this.boundingVolume instanceof se) t = this.boundingVolume.intersectsRay(Ye);
3540
3556
  else {
3541
- if (!(this.boundingVolume instanceof m.Sphere)) return !1;
3557
+ if (!(this.boundingVolume instanceof E.Sphere)) return !1;
3542
3558
  t = ray.intersectsSphere(this.boundingVolume);
3543
3559
  }
3544
3560
  return t && this.materialVisibility && this.splatsReady && (Xe.length = 0, this.meshContent.forEach((A) => {
@@ -3550,10 +3566,10 @@ class Vt extends m.Object3D {
3550
3566
  return super.raycast(e, a);
3551
3567
  }
3552
3568
  update(e) {
3553
- const a = new m.Frustum();
3554
- a.setFromProjectionMatrix(new m.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse));
3569
+ const a = new E.Frustum();
3570
+ a.setFromProjectionMatrix(new E.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse));
3555
3571
  let t = [0], A = [0], i = [0], s = [0];
3556
- return this.refine == "REPLACE" ? this.loadingStrategy === "IMMEDIATE" ? (this._updateImmediate(e, a), this._statsImmediate(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)), t > 0 && (s[0] /= t[0]), this.splatsMesh && (pa.copy(e.position), We.copy(this.matrixWorld).invert(), pa.applyMatrix4(We), this.splatsMesh.sort(pa)), { numTilesLoaded: t[0], numTilesRendered: A[0], maxLOD: i[0], percentageLoaded: s[0] };
3572
+ return this.refine == "REPLACE" ? this.loadingStrategy === "IMMEDIATE" ? (this._updateImmediate(e, a), this._statsImmediate(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)), t > 0 && (s[0] /= t[0]), this.splatsMesh && (Ca.copy(e.position), We.copy(this.matrixWorld).invert(), Ca.applyMatrix4(We), this.splatsMesh.sort(Ca)), { numTilesLoaded: t[0], numTilesRendered: A[0], maxLOD: i[0], percentageLoaded: s[0] };
3557
3573
  }
3558
3574
  _updateImmediate(e, a) {
3559
3575
  this._computeMetricRecursive(e, a), this._updateNodeVisibilityImmediate(), this._expandTreeImmediate(e), this.shouldBeVisible = this.metric > 0 || !!this.loadOutsideView, this._shouldBeVisibleUpdateImmediate(), this._trimTreeImmediate(), this._loadMeshImmediate();
@@ -3727,10 +3743,10 @@ class Vt extends m.Object3D {
3727
3743
  _calculateUpdateMetric(e, a) {
3728
3744
  let t = 0;
3729
3745
  if (this.boundingVolume instanceof se) {
3730
- if (Ie.copy(this.boundingVolume), Ie.applyMatrix4(this.matrixWorld), !Ie.inFrustum(a)) return -1;
3731
- t = Math.max(0, Ie.distanceToPoint(e.position) - e.near);
3746
+ if (ue.copy(this.boundingVolume), ue.applyMatrix4(this.matrixWorld), !ue.inFrustum(a)) return -1;
3747
+ t = Math.max(0, ue.distanceToPoint(e.position) - e.near);
3732
3748
  } else {
3733
- if (!(this.boundingVolume instanceof m.Sphere)) return console.error("unsupported shape"), -1;
3749
+ if (!(this.boundingVolume instanceof E.Sphere)) return console.error("unsupported shape"), -1;
3734
3750
  if (te.copy(this.boundingVolume), te.applyMatrix4(this.matrixWorld), !a.intersectsSphere(te)) return -1;
3735
3751
  t = Math.max(0, e.position.distanceTo(te.center) - te.radius - e.near);
3736
3752
  }
@@ -3755,7 +3771,7 @@ class Vt extends m.Object3D {
3755
3771
  }), a;
3756
3772
  }
3757
3773
  _calculateDistanceToCamera(e) {
3758
- return this.boundingVolume instanceof se ? (Ie.copy(this.boundingVolume), Ie.applyMatrix4(this.matrixWorld), Math.max(0, Ie.distanceToPoint(e.position))) : this.boundingVolume instanceof m.Sphere ? (te.copy(this.boundingVolume), te.applyMatrix4(this.matrixWorld), Math.max(0, e.position.distanceTo(te.center) - te.radius)) : (console.error("unsupported shape"), -1);
3774
+ return this.boundingVolume instanceof se ? (ue.copy(this.boundingVolume), ue.applyMatrix4(this.matrixWorld), Math.max(0, ue.distanceToPoint(e.position))) : this.boundingVolume instanceof E.Sphere ? (te.copy(this.boundingVolume), te.applyMatrix4(this.matrixWorld), Math.max(0, e.position.distanceTo(te.center) - te.radius)) : (console.error("unsupported shape"), -1);
3759
3775
  }
3760
3776
  setGeometricErrorMultiplier(e) {
3761
3777
  this.geometricErrorMultiplier = e, this.splatsReady = !0, this.childrenTiles.forEach((a) => a.setGeometricErrorMultiplier(e));
@@ -3774,16 +3790,16 @@ function gt(o) {
3774
3790
  e.remove();
3775
3791
  }, 8e3);
3776
3792
  }
3777
- function Ca() {
3793
+ function Ba() {
3778
3794
  W || ((W = document.createElement("div")).style.position = "fixed", W.style.bottom = "20px", W.style.left = "20px", W.style.color = "white", W.style.textShadow = "2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000", W.style.padding = "10px", W.style.backgroundColor = "rgba(0, 0, 0, 0.1)", document.body.appendChild(W));
3779
- const o = Ji();
3795
+ const o = Ki();
3780
3796
  let e = "";
3781
3797
  o.forEach((a) => {
3782
3798
  e += a + ", ";
3783
3799
  }), e = e.slice(0, -2), W.textContent = e;
3784
3800
  }
3785
- const N = new m.Sphere(new m.Vector3(0, 0, 0), 1), de = new m.Vector3(0, 0, 0), Ba = new m.Vector3(0, 0, 0), Ki = new m.Vector3(0, 1, 0), Ea = new m.Vector2(), ft = new m.Quaternion(), It = new m.Matrix4();
3786
- class Ga extends m.Object3D {
3801
+ const N = new E.Sphere(new E.Vector3(0, 0, 0), 1), de = new E.Vector3(0, 0, 0), ma = new E.Vector3(0, 0, 0), zi = new E.Vector3(0, 1, 0), Ea = new E.Vector2(), ft = new E.Quaternion(), ut = new E.Matrix4();
3802
+ class Ga extends E.Object3D {
3787
3803
  constructor(e) {
3788
3804
  super();
3789
3805
  const a = this;
@@ -3805,22 +3821,22 @@ class Ga extends m.Object3D {
3805
3821
  async setup(e) {
3806
3822
  const a = this;
3807
3823
  e.json.root ? (a.json = e.json.root, !a.json.children && a.json.getChildren && (a.json.children = await a.json.getChildren()), a.jsonChildren = a.json.children, a.json.refinement || (a.json.refinement = e.json.refinement), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : (a.json = e.json, !a.json.children && a.json.getChildren && (a.json.children = await a.json.getChildren(), a.jsonChildren = a.json.children)), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refinement ? a.refinement = a.json.refinement : a.refinement = e.parentRefinement, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError;
3808
- let t = new m.Matrix4();
3824
+ let t = new E.Matrix4();
3809
3825
  if (a.json.transform && !a.centerModel && (t.elements = a.json.transform), a.applyMatrix4(t), a.parentTile && a.parentTile.matrix && (a.matrix.premultiply(a.parentTile.matrix), a.matrix.decompose(a.position, a.quaternion, a.scale)), a.matrixWorldNeedsUpdate = !0, a.updateWorldMatrix(!0, !0), a.json.boundingVolume) if (a.json.boundingVolume.box) a.boundingVolume = new se(a.json.boundingVolume.box);
3810
3826
  else if (a.json.boundingVolume.region) {
3811
3827
  const i = a.json.boundingVolume.region;
3812
- a.transformWGS84ToCartesian(i[0], i[1], i[4], de), a.transformWGS84ToCartesian(i[2], i[3], i[5], Ba), de.lerp(Ba, 0.5), a.boundingVolume = new m.Sphere(new m.Vector3(de.x, de.y, de.z), de.distanceTo(Ba));
3828
+ a.transformWGS84ToCartesian(i[0], i[1], i[4], de), a.transformWGS84ToCartesian(i[2], i[3], i[5], ma), de.lerp(ma, 0.5), a.boundingVolume = new E.Sphere(new E.Vector3(de.x, de.y, de.z), de.distanceTo(ma));
3813
3829
  } else if (a.json.boundingVolume.sphere) {
3814
3830
  const i = a.json.boundingVolume.sphere;
3815
- a.boundingVolume = new m.Sphere(new m.Vector3(i[0], i[1], i[2]), i[3]);
3831
+ a.boundingVolume = new E.Sphere(new E.Vector3(i[0], i[1], i[2]), i[3]);
3816
3832
  } else a.boundingVolume = e.parentBoundingVolume;
3817
3833
  else a.boundingVolume = e.parentBoundingVolume;
3818
3834
  function A(i) {
3819
3835
  i.uri && i.uri.includes("json") || i.url && i.url.includes("json") ? a.hasUnloadedJSONContent++ : a.hasMeshContent++;
3820
3836
  }
3821
3837
  if (a.json.content ? (A(a.json.content), a.load()) : a.json.contents && (a.json.contents.forEach((i) => A(i)), a.load()), a.centerModel) {
3822
- const i = new m.Sphere();
3823
- a.boundingVolume instanceof se ? i.copy(a.boundingVolume.sphere) : a.boundingVolume instanceof m.Sphere && i.copy(a.boundingVolume), this.json.boundingVolume.region && (a.transformWGS84ToCartesian(0.5 * (a.json.boundingVolume.region[0] + a.json.boundingVolume.region[2]), 0.5 * (a.json.boundingVolume.region[1] + a.json.boundingVolume.region[3]), 0.5 * (a.json.boundingVolume.region[4] + a.json.boundingVolume.region[5]), de), ft.setFromUnitVectors(de.normalize(), Ki.normalize()), a.master.applyQuaternion(ft), a.master.updateWorldMatrix(!1, !1)), It.makeTranslation(-i.center.x * a.scale.x, -i.center.y * a.scale.y, -i.center.z * a.scale.z), a.master.matrix.multiply(It), a.master.matrix.decompose(a.master.position, a.master.quaternion, a.master.scale);
3838
+ const i = new E.Sphere();
3839
+ a.boundingVolume instanceof se ? i.copy(a.boundingVolume.sphere) : a.boundingVolume instanceof E.Sphere && i.copy(a.boundingVolume), this.json.boundingVolume.region && (a.transformWGS84ToCartesian(0.5 * (a.json.boundingVolume.region[0] + a.json.boundingVolume.region[2]), 0.5 * (a.json.boundingVolume.region[1] + a.json.boundingVolume.region[3]), 0.5 * (a.json.boundingVolume.region[4] + a.json.boundingVolume.region[5]), de), ft.setFromUnitVectors(de.normalize(), zi.normalize()), a.master.applyQuaternion(ft), a.master.updateWorldMatrix(!1, !1)), ut.makeTranslation(-i.center.x * a.scale.x, -i.center.y * a.scale.y, -i.center.z * a.scale.z), a.master.matrix.multiply(ut), a.master.matrix.decompose(a.master.position, a.master.quaternion, a.master.scale);
3824
3840
  }
3825
3841
  a.isSetup = !0, e.onLoadCallback && e.onLoadCallback(a);
3826
3842
  }
@@ -3930,7 +3946,7 @@ class Ga extends m.Object3D {
3930
3946
  if (this.boundingVolume instanceof se) {
3931
3947
  if (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld), !a.intersectsSphere(N)) return -1;
3932
3948
  } else {
3933
- if (!(this.boundingVolume instanceof m.Sphere)) return console.error("unsupported shape"), -1;
3949
+ if (!(this.boundingVolume instanceof E.Sphere)) return console.error("unsupported shape"), -1;
3934
3950
  if (N.copy(this.boundingVolume), N.applyMatrix4(this.matrixWorld), !a.intersectsSphere(N)) return -1;
3935
3951
  }
3936
3952
  let t = Math.max(0, e.position.distanceTo(N.center) - N.radius);
@@ -3955,7 +3971,7 @@ class Ga extends m.Object3D {
3955
3971
  }), a;
3956
3972
  }
3957
3973
  calculateDistanceToCamera(e) {
3958
- return this.boundingVolume instanceof se ? (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld)) : this.boundingVolume instanceof m.Sphere ? (N.copy(this.boundingVolume), N.applyMatrix4(this.matrixWorld)) : console.error("unsupported shape"), Math.max(0, e.position.distanceTo(N.center) - N.radius);
3974
+ return this.boundingVolume instanceof se ? (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld)) : this.boundingVolume instanceof E.Sphere ? (N.copy(this.boundingVolume), N.applyMatrix4(this.matrixWorld)) : console.error("unsupported shape"), Math.max(0, e.position.distanceTo(N.center) - N.radius);
3959
3975
  }
3960
3976
  getWorldMatrix() {
3961
3977
  return this.matrixWorld;
@@ -3965,9 +3981,9 @@ class Ga extends m.Object3D {
3965
3981
  A.set(b, d, l);
3966
3982
  }
3967
3983
  }
3968
- class $i extends m.Object3D {
3984
+ class es extends E.Object3D {
3969
3985
  constructor(e) {
3970
- super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new m.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new m.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new Ga(e), e.static && (this.matrixAutoUpdate = !1), this.tileLoader = e.tileLoader;
3986
+ super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new Ga(e), e.static && (this.matrixAutoUpdate = !1), this.tileLoader = e.tileLoader;
3971
3987
  }
3972
3988
  _renderSize(e) {
3973
3989
  this.renderer ? this.renderer.getDrawingBufferSize(e) : e.copy(this.rendererSize);
@@ -3978,18 +3994,18 @@ class $i extends m.Object3D {
3978
3994
  update(e, a) {
3979
3995
  if (a) this.tileset._update(e, a);
3980
3996
  else {
3981
- const t = new m.Frustum();
3982
- t.setFromProjectionMatrix(new m.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse)), this.tileset._update(e, t);
3997
+ const t = new E.Frustum();
3998
+ t.setFromProjectionMatrix(new E.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse)), this.tileset._update(e, t);
3983
3999
  }
3984
4000
  }
3985
4001
  setGeometricErrorMultiplier(e) {
3986
4002
  this.geometricErrorMultiplier = e || 1;
3987
4003
  }
3988
4004
  }
3989
- class zi {
4005
+ class Vi {
3990
4006
  constructor(e) {
3991
4007
  const a = this;
3992
- a.scene = e, a.instancedTiles = [], a.instancedMesh, a.reuseableMatrix = new m.Matrix4();
4008
+ a.scene = e, a.instancedTiles = [], a.instancedMesh, a.reuseableMatrix = new E.Matrix4();
3993
4009
  }
3994
4010
  addInstance(e) {
3995
4011
  const a = this;
@@ -3997,7 +4013,7 @@ class zi {
3997
4013
  }
3998
4014
  addToScene() {
3999
4015
  const e = this;
4000
- e.instancedMesh.setMatrixAt(0, new m.Matrix4()), e.instancedMesh.instanceMatrix.needsUpdate = !0, e.instancedMesh.count = 1, e.scene.add(e.instancedMesh), e.instancedMesh.onAfterRender = () => {
4016
+ e.instancedMesh.setMatrixAt(0, new E.Matrix4()), e.instancedMesh.instanceMatrix.needsUpdate = !0, e.instancedMesh.count = 1, e.scene.add(e.instancedMesh), e.instancedMesh.onAfterRender = () => {
4001
4017
  delete e.instancedMesh.onAfterRender, e.instancedMesh.displayedOnce = !0;
4002
4018
  };
4003
4019
  }
@@ -4027,7 +4043,7 @@ class zi {
4027
4043
  }), e.instancedMesh.dispose(), !0);
4028
4044
  }
4029
4045
  }
4030
- class Vi {
4046
+ class Yi {
4031
4047
  constructor() {
4032
4048
  const e = this;
4033
4049
  e.count = 0, e.json, e.instancedTiles = [];
@@ -4051,10 +4067,10 @@ class Vi {
4051
4067
  return !(!this.json || this.instancedTiles.length != 0);
4052
4068
  }
4053
4069
  }
4054
- let ue = 0;
4055
- class es {
4070
+ let Ie = 0;
4071
+ class as {
4056
4072
  constructor(e, a) {
4057
- if (this.zUpToYUpMatrix = new m.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.maxInstances = 1, this.proxy = a.proxy, a && (this.meshCallback = a.meshCallback, this.pointsCallback = a.pointsCallback, a.maxCachedItems && (this.maxCachedItems = a.maxCachedItems), a.maxInstances && (this.maxInstances = a.maxInstances)), this.gltfLoader = new Dt(), a && a.dracoLoader) this.gltfLoader.setDRACOLoader(a.dracoLoader), this.hasDracoLoader = !0;
4073
+ if (this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.maxInstances = 1, this.proxy = a.proxy, a && (this.meshCallback = a.meshCallback, this.pointsCallback = a.pointsCallback, a.maxCachedItems && (this.maxCachedItems = a.maxCachedItems), a.maxInstances && (this.maxInstances = a.maxInstances)), this.gltfLoader = new Dt(), a && a.dracoLoader) this.gltfLoader.setDRACOLoader(a.dracoLoader), this.hasDracoLoader = !0;
4058
4074
  else {
4059
4075
  const t = new Rt();
4060
4076
  t.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"), this.gltfLoader.setDRACOLoader(t), this.gltfLoader.hasDracoLoader = !0;
@@ -4070,14 +4086,14 @@ class es {
4070
4086
  const e = this;
4071
4087
  e._checkSize(), e.cache._data.forEach((a) => {
4072
4088
  a.update();
4073
- }), ue < 8 && e._download(), e._loadBatch();
4089
+ }), Ie < 8 && e._download(), e._loadBatch();
4074
4090
  }
4075
4091
  _download() {
4076
4092
  const e = this;
4077
4093
  if (e.nextDownloads.length != 0 || (e._getNextDownloads(), e.nextDownloads.length != 0)) for (; e.nextDownloads.length > 0; ) {
4078
4094
  const t = e.nextDownloads.shift();
4079
4095
  if (t) {
4080
- if (t.path.includes(".b3dm") && (a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), ue++, a().then((A) => {
4096
+ if (t.path.includes(".b3dm") && (a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
4081
4097
  if (!A.ok) throw console.error("could not load tile with path : " + t.path), new Error(`couldn't load "${t.path}". Request failed with status ${A.status} : ${A.statusText}`);
4082
4098
  return A.arrayBuffer();
4083
4099
  }).then((A) => this.b3dmDecoder.parseB3DMInstanced(A, (i) => {
@@ -4085,17 +4101,17 @@ class es {
4085
4101
  }, e.maxInstances, t.sceneZupToYup, t.meshZupToYup)).then((A) => {
4086
4102
  A.frustumCulled = !1, t.tile.setObject(A), e.ready.unshift(t);
4087
4103
  }).catch((A) => console.error(A)).finally(() => {
4088
- ue--;
4089
- })), t.path.includes(".glb") || t.path.includes(".gltf")) a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), ue++, a().then((A) => {
4104
+ Ie--;
4105
+ })), t.path.includes(".glb") || t.path.includes(".gltf")) a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
4090
4106
  if (!A.ok) throw new Error("missing content");
4091
4107
  return A.arrayBuffer();
4092
4108
  }).then(async (A) => {
4093
- await Yi(this.gltfLoader), this.gltfLoader.parse(A, null, (i) => {
4109
+ await Wi(this.gltfLoader), this.gltfLoader.parse(A, null, (i) => {
4094
4110
  let s;
4095
4111
  i.scene.asset = i.asset, t.sceneZupToYup && i.scene.applyMatrix4(this.zUpToYUpMatrix), i.scene.traverse((r) => {
4096
4112
  r.geometricError = t.geometricError, r.isMesh && (t.meshZupToYup && r.applyMatrix4(this.zUpToYUpMatrix), e.meshCallback && e.meshCallback(r, r.geometricError)), r.isPoints && console.error("instanced point cloud is not supported");
4097
4113
  }), i.scene.updateWorldMatrix(!1, !0), i.scene.traverse((r) => {
4098
- r.isMesh && (s = new m.InstancedMesh(r.geometry, r.material, e.maxInstances), s.baseMatrix = r.matrixWorld);
4114
+ r.isMesh && (s = new E.InstancedMesh(r.geometry, r.material, e.maxInstances), s.baseMatrix = r.matrixWorld);
4099
4115
  }), e.ready.unshift(t), s ? (s.frustumCulled = !1, t.tile.setObject(s)) : i.scene.traverse((r) => {
4100
4116
  r.dispose && r.dispose(), r.material && r.material.dispose();
4101
4117
  });
@@ -4103,17 +4119,17 @@ class es {
4103
4119
  }, (A) => {
4104
4120
  console.error("could not load tile : " + t.path);
4105
4121
  }).finally(() => {
4106
- ue--;
4122
+ Ie--;
4107
4123
  });
4108
4124
  else if (t.path.includes(".json")) {
4109
4125
  var a;
4110
- a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), ue++, a().then((A) => {
4126
+ a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
4111
4127
  if (!A.ok) throw console.error("could not load tile with path : " + t.path), new Error(`couldn't load "${t.path}". Request failed with status ${A.status} : ${A.statusText}`);
4112
4128
  return A.json();
4113
4129
  }).then((A) => La(A, t.path)).then((A) => {
4114
4130
  t.tile.setObject(A, t.path), e.ready.unshift(t);
4115
4131
  }).catch((A) => console.error(A)).finally(() => {
4116
- ue--;
4132
+ Ie--;
4117
4133
  });
4118
4134
  }
4119
4135
  }
@@ -4140,27 +4156,27 @@ class es {
4140
4156
  }
4141
4157
  get(e, a, t, A, i, s, r, c, n, b) {
4142
4158
  const d = this, l = function(h) {
4143
- for (var f = h.split("/"), u = [], I = 0, p = 0; p < f.length; p++) {
4159
+ for (var f = h.split("/"), I = [], u = 0, p = 0; p < f.length; p++) {
4144
4160
  var B = f[p];
4145
- B !== "." && B !== "" && B !== ".." ? u[I++] = B : B === ".." && I > 0 && I--;
4161
+ B !== "." && B !== "" && B !== ".." ? I[u++] = B : B === ".." && u > 0 && u--;
4146
4162
  }
4147
- if (I === 0) return "/";
4163
+ if (u === 0) return "/";
4148
4164
  var C = "";
4149
- for (p = 0; p < I; p++) C += "/" + u[p];
4165
+ for (p = 0; p < u; p++) C += "/" + I[p];
4150
4166
  return C;
4151
4167
  }(a);
4152
4168
  if (!(a.includes(".b3dm") || a.includes(".json") || a.includes(".glb") || a.includes(".gltf"))) return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");
4153
4169
  const g = d.cache.get(l);
4154
4170
  if (g) g.addInstance(A);
4155
4171
  else if (a.includes(".b3dm") || a.includes(".glb") || a.includes(".gltf")) {
4156
- const h = new zi(d.scene);
4172
+ const h = new Vi(d.scene);
4157
4173
  h.addInstance(A), d.cache.put(l, h);
4158
4174
  const f = new AbortController();
4159
4175
  e.signal.addEventListener("abort", () => {
4160
4176
  h.getCount() == 0 && f.abort();
4161
4177
  }), this.downloads.push({ abortController: f, tile: h, key: l, path: a, distanceFunction: i, getSiblings: s, level: r, uuid: t, sceneZupToYup: c, meshZupToYup: n, geometricError: b, shouldDoDownload: () => !0 });
4162
4178
  } else if (a.includes(".json")) {
4163
- const h = new Vi();
4179
+ const h = new Yi();
4164
4180
  h.addInstance(A), d.cache.put(l, h);
4165
4181
  const f = new AbortController();
4166
4182
  e.signal.addEventListener("abort", () => {
@@ -4197,7 +4213,7 @@ class es {
4197
4213
  }
4198
4214
  }
4199
4215
  }
4200
- async function Yi(o) {
4216
+ async function Wi(o) {
4201
4217
  return new Promise((e) => {
4202
4218
  const a = setInterval(() => {
4203
4219
  o.hasDracoLoader && !o.dracoLoader || o.hasKTX2Loader && !o.ktx2Loader || (clearInterval(a), e());
@@ -4205,11 +4221,13 @@ async function Yi(o) {
4205
4221
  });
4206
4222
  }
4207
4223
  export {
4208
- $i as InstancedOGC3DTile,
4209
- es as InstancedTileLoader,
4224
+ es as InstancedOGC3DTile,
4225
+ as as InstancedTileLoader,
4210
4226
  Vt as OGC3DTile,
4211
- Zi as OcclusionCullingService,
4212
- Pi as TileLoader,
4213
- Ji as getOGC3DTilesCopyrightInfo
4227
+ $i as OcclusionCullingService,
4228
+ Ni as TileLoader,
4229
+ Ki as getOGC3DTilesCopyrightInfo,
4230
+ Oi as splatsFragmentShader,
4231
+ qi as splatsVertexShader
4214
4232
  };
4215
4233
  //# sourceMappingURL=threedtiles.es.js.map