@jdultra/threedtiles 13.0.26 → 13.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/threedtiles.es.js
CHANGED
|
@@ -2,7 +2,7 @@ var Zt = Object.defineProperty;
|
|
|
2
2
|
var $t = (c, e, a) => e in c ? Zt(c, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : c[e] = a;
|
|
3
3
|
var ge = (c, e, a) => $t(c, typeof e != "symbol" ? e + "" : e, a);
|
|
4
4
|
import * as E from "three";
|
|
5
|
-
import { Matrix3 as Sa, Vector3 as M, Box3 as va, Matrix4 as je, Ray as eA, BufferGeometry as ea, LineBasicMaterial as It, LineSegments as pt, BufferAttribute as
|
|
5
|
+
import { Matrix3 as Sa, Vector3 as M, Box3 as va, Matrix4 as je, Ray as eA, BufferGeometry as ea, LineBasicMaterial as It, LineSegments as pt, BufferAttribute as be, TrianglesDrawMode as aA, TriangleFanDrawMode as ya, TriangleStripDrawMode as Ct, Loader as Fa, LoaderUtils as Pe, FileLoader as Be, Color as he, LinearSRGBColorSpace as K, SpotLight as tA, PointLight as AA, DirectionalLight as iA, MeshBasicMaterial as Le, SRGBColorSpace as re, MeshPhysicalMaterial as ae, Vector2 as Bt, Quaternion as mt, InstancedMesh as sA, InstancedBufferAttribute as wa, Object3D as Et, TextureLoader as rA, ImageBitmapLoader as nA, InterleavedBuffer as oA, InterleavedBufferAttribute as cA, LinearFilter as Ce, LinearMipmapLinearFilter as $e, RepeatWrapping as xa, NearestFilter as R, PointsMaterial as dA, Material as ta, MeshStandardMaterial as Ua, DoubleSide as lA, PropertyBinding as bA, SkinnedMesh as hA, Mesh as ka, Line as gA, LineLoop as fA, Points as uA, Group as Aa, PerspectiveCamera as IA, MathUtils as pA, OrthographicCamera as Qt, Skeleton as CA, AnimationClip as BA, Bone as mA, InterpolateLinear as yt, ColorManagement as Da, 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 ee, RGBA_ASTC_4x4_Format as wt, 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 ia, InstancedBufferGeometry as Ja, DynamicDrawUsage as Ka, Scene as qA, PlaneGeometry as OA } from "three";
|
|
6
6
|
class es {
|
|
7
7
|
constructor() {
|
|
8
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);
|
|
@@ -191,9 +191,9 @@ class kt {
|
|
|
191
191
|
if (s instanceof Object) {
|
|
192
192
|
if (Array.isArray(s)) return s;
|
|
193
193
|
{
|
|
194
|
-
const { buffer: r, binOffset: o, binLength: n } = this,
|
|
194
|
+
const { buffer: r, binOffset: o, binLength: n } = this, l = s.byteOffset || 0, d = s.type || A, g = s.componentType || t;
|
|
195
195
|
if ("type" in s && A && s.type !== A) throw new Error("FeatureTable: Specified type does not match expected type.");
|
|
196
|
-
let h,
|
|
196
|
+
let h, b;
|
|
197
197
|
switch (d) {
|
|
198
198
|
case "SCALAR":
|
|
199
199
|
h = 1;
|
|
@@ -210,37 +210,37 @@ class kt {
|
|
|
210
210
|
default:
|
|
211
211
|
throw new Error(`FeatureTable : Feature type not provided for "${e}".`);
|
|
212
212
|
}
|
|
213
|
-
const f = o +
|
|
213
|
+
const f = o + l, I = a * h;
|
|
214
214
|
switch (g) {
|
|
215
215
|
case "BYTE":
|
|
216
|
-
|
|
216
|
+
b = new Int8Array(r, f, I);
|
|
217
217
|
break;
|
|
218
218
|
case "UNSIGNED_BYTE":
|
|
219
|
-
|
|
219
|
+
b = new Uint8Array(r, f, I);
|
|
220
220
|
break;
|
|
221
221
|
case "SHORT":
|
|
222
|
-
|
|
222
|
+
b = new Int16Array(r, f, I);
|
|
223
223
|
break;
|
|
224
224
|
case "UNSIGNED_SHORT":
|
|
225
|
-
|
|
225
|
+
b = new Uint16Array(r, f, I);
|
|
226
226
|
break;
|
|
227
227
|
case "INT":
|
|
228
|
-
|
|
228
|
+
b = new Int32Array(r, f, I);
|
|
229
229
|
break;
|
|
230
230
|
case "UNSIGNED_INT":
|
|
231
|
-
|
|
231
|
+
b = new Uint32Array(r, f, I);
|
|
232
232
|
break;
|
|
233
233
|
case "FLOAT":
|
|
234
|
-
|
|
234
|
+
b = new Float32Array(r, f, I);
|
|
235
235
|
break;
|
|
236
236
|
case "DOUBLE":
|
|
237
|
-
|
|
237
|
+
b = new Float64Array(r, f, I);
|
|
238
238
|
break;
|
|
239
239
|
default:
|
|
240
240
|
throw new Error(`FeatureTable : Feature component type not provided for "${e}".`);
|
|
241
241
|
}
|
|
242
|
-
if (f + I *
|
|
243
|
-
return
|
|
242
|
+
if (f + I * b.BYTES_PER_ELEMENT > o + n) throw new Error("FeatureTable: Feature data read outside binary body length.");
|
|
243
|
+
return b;
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
return s;
|
|
@@ -257,25 +257,25 @@ class KA extends kt {
|
|
|
257
257
|
function Xa(c) {
|
|
258
258
|
let e, a, t, A = -1, i = 0;
|
|
259
259
|
for (let n = 0; n < c.length; ++n) {
|
|
260
|
-
const
|
|
261
|
-
if (e === void 0 && (e =
|
|
262
|
-
if (a === void 0 && (a =
|
|
263
|
-
if (t === void 0 && (t =
|
|
264
|
-
if (A === -1 && (A =
|
|
265
|
-
i +=
|
|
266
|
-
}
|
|
267
|
-
const s = new e(i), r = new
|
|
260
|
+
const l = c[n];
|
|
261
|
+
if (e === void 0 && (e = l.array.constructor), e !== l.array.constructor) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."), null;
|
|
262
|
+
if (a === void 0 && (a = l.itemSize), a !== l.itemSize) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."), null;
|
|
263
|
+
if (t === void 0 && (t = l.normalized), t !== l.normalized) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."), null;
|
|
264
|
+
if (A === -1 && (A = l.gpuType), A !== l.gpuType) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."), null;
|
|
265
|
+
i += l.count * a;
|
|
266
|
+
}
|
|
267
|
+
const s = new e(i), r = new be(s, a, t);
|
|
268
268
|
let o = 0;
|
|
269
269
|
for (let n = 0; n < c.length; ++n) {
|
|
270
|
-
const
|
|
271
|
-
if (
|
|
270
|
+
const l = c[n];
|
|
271
|
+
if (l.isInterleavedBufferAttribute) {
|
|
272
272
|
const d = o / a;
|
|
273
|
-
for (let g = 0, h =
|
|
274
|
-
const f =
|
|
275
|
-
r.setComponent(g + d,
|
|
273
|
+
for (let g = 0, h = l.count; g < h; g++) for (let b = 0; b < a; b++) {
|
|
274
|
+
const f = l.getComponent(g, b);
|
|
275
|
+
r.setComponent(g + d, b, f);
|
|
276
276
|
}
|
|
277
|
-
} else s.set(
|
|
278
|
-
o +=
|
|
277
|
+
} else s.set(l.array, o);
|
|
278
|
+
o += l.count * a;
|
|
279
279
|
}
|
|
280
280
|
return A !== void 0 && (r.gpuType = A), r;
|
|
281
281
|
}
|
|
@@ -312,9 +312,9 @@ class Dt {
|
|
|
312
312
|
console.assert(r === "b3dm");
|
|
313
313
|
const o = s.getUint32(8, !0);
|
|
314
314
|
console.assert(o === e.byteLength);
|
|
315
|
-
const n = s.getUint32(12, !0),
|
|
316
|
-
new KA(e, h.getData("BATCH_LENGTH"),
|
|
317
|
-
const f =
|
|
315
|
+
const n = s.getUint32(12, !0), l = s.getUint32(16, !0), d = s.getUint32(20, !0), g = s.getUint32(24, !0), h = new kt(e, 28, n, l), b = 28 + n + l;
|
|
316
|
+
new KA(e, h.getData("BATCH_LENGTH"), b, d, g);
|
|
317
|
+
const f = b + d + g, I = new Uint8Array(e, f, o - f).slice().buffer;
|
|
318
318
|
return new Promise(async (p, u) => {
|
|
319
319
|
await this.checkLoaderInitialized(), this.gltfLoader.parse(I, null, (B) => {
|
|
320
320
|
const C = h.getData("RTC_CENTER");
|
|
@@ -332,13 +332,13 @@ class Dt {
|
|
|
332
332
|
s.updateWorldMatrix(!1, !0), s.traverse((d) => {
|
|
333
333
|
d.isMesh && (d.geometry.applyMatrix4(d.matrixWorld), o.push(d.geometry), n.push(d.material));
|
|
334
334
|
});
|
|
335
|
-
let
|
|
335
|
+
let l = function(d) {
|
|
336
336
|
let g = /* @__PURE__ */ new Set();
|
|
337
|
-
return d.forEach((
|
|
338
|
-
for (let f in
|
|
339
|
-
}), d.forEach((
|
|
337
|
+
return d.forEach((b) => {
|
|
338
|
+
for (let f in b.attributes) g.add(f);
|
|
339
|
+
}), d.forEach((b) => {
|
|
340
340
|
g.forEach((f) => {
|
|
341
|
-
if (!
|
|
341
|
+
if (!b.attributes[f]) {
|
|
342
342
|
const I = function(u) {
|
|
343
343
|
switch (u) {
|
|
344
344
|
case "position":
|
|
@@ -351,15 +351,15 @@ class Dt {
|
|
|
351
351
|
default:
|
|
352
352
|
throw new Error(`Unknown attribute ${u}`);
|
|
353
353
|
}
|
|
354
|
-
}(f), p = new Float32Array(I *
|
|
355
|
-
|
|
354
|
+
}(f), p = new Float32Array(I * b.getAttribute("position").count).fill(0);
|
|
355
|
+
b.setAttribute(f, new E.BufferAttribute(p, I));
|
|
356
356
|
}
|
|
357
357
|
});
|
|
358
|
-
}), function(
|
|
359
|
-
const I =
|
|
358
|
+
}), function(b, f = !1) {
|
|
359
|
+
const I = b[0].index !== null, p = new Set(Object.keys(b[0].attributes)), u = new Set(Object.keys(b[0].morphAttributes)), B = {}, C = {}, w = b[0].morphTargetsRelative, x = new ea();
|
|
360
360
|
let y = 0;
|
|
361
|
-
for (let m = 0; m <
|
|
362
|
-
const Q =
|
|
361
|
+
for (let m = 0; m < b.length; ++m) {
|
|
362
|
+
const Q = b[m];
|
|
363
363
|
let k = 0;
|
|
364
364
|
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;
|
|
365
365
|
for (const D in Q.attributes) {
|
|
@@ -385,10 +385,10 @@ class Dt {
|
|
|
385
385
|
if (I) {
|
|
386
386
|
let m = 0;
|
|
387
387
|
const Q = [];
|
|
388
|
-
for (let k = 0; k <
|
|
389
|
-
const D =
|
|
388
|
+
for (let k = 0; k < b.length; ++k) {
|
|
389
|
+
const D = b[k].index;
|
|
390
390
|
for (let F = 0; F < D.count; ++F) Q.push(D.getX(F) + m);
|
|
391
|
-
m +=
|
|
391
|
+
m += b[k].attributes.position.count;
|
|
392
392
|
}
|
|
393
393
|
x.setIndex(Q);
|
|
394
394
|
}
|
|
@@ -412,7 +412,7 @@ class Dt {
|
|
|
412
412
|
return x;
|
|
413
413
|
}(d, !0);
|
|
414
414
|
}(o);
|
|
415
|
-
return r = new E.InstancedMesh(
|
|
415
|
+
return r = new E.InstancedMesh(l, n, t), r.baseMatrix = new E.Matrix4().identity(), r;
|
|
416
416
|
});
|
|
417
417
|
}
|
|
418
418
|
}
|
|
@@ -451,10 +451,10 @@ class XA {
|
|
|
451
451
|
return new Promise(async (s, r) => {
|
|
452
452
|
await i.checkLoaderInitialized(), i.gltfLoader.parse(e, null, (o) => {
|
|
453
453
|
o.scene;
|
|
454
|
-
const n = o.scene.children[0],
|
|
454
|
+
const n = o.scene.children[0], l = n.geometry.attributes.position, d = n.geometry.attributes.color, g = n.geometry.attributes.cov_0, h = n.geometry.attributes.cov_1, b = A.addSplatsTile(l, d, g, h);
|
|
455
455
|
o.scene.traverse((f) => {
|
|
456
456
|
f.dispose && f.dispose();
|
|
457
|
-
}), s(
|
|
457
|
+
}), s(b);
|
|
458
458
|
}, (o) => {
|
|
459
459
|
console.error(o);
|
|
460
460
|
});
|
|
@@ -468,7 +468,7 @@ class Mt extends Fa {
|
|
|
468
468
|
}), this.register(function(a) {
|
|
469
469
|
return new Ai(a);
|
|
470
470
|
}), this.register(function(a) {
|
|
471
|
-
return new
|
|
471
|
+
return new bi(a);
|
|
472
472
|
}), this.register(function(a) {
|
|
473
473
|
return new hi(a);
|
|
474
474
|
}), this.register(function(a) {
|
|
@@ -488,7 +488,7 @@ class Mt extends Fa {
|
|
|
488
488
|
}), this.register(function(a) {
|
|
489
489
|
return new ii(a);
|
|
490
490
|
}), this.register(function(a) {
|
|
491
|
-
return new
|
|
491
|
+
return new li(a);
|
|
492
492
|
}), this.register(function(a) {
|
|
493
493
|
return new di(a);
|
|
494
494
|
}), this.register(function(a) {
|
|
@@ -513,11 +513,11 @@ class Mt extends Fa {
|
|
|
513
513
|
}, o = new Be(this.manager);
|
|
514
514
|
o.setPath(this.path), o.setResponseType("arraybuffer"), o.setRequestHeader(this.requestHeader), o.setWithCredentials(this.withCredentials), o.load(e, function(n) {
|
|
515
515
|
try {
|
|
516
|
-
i.parse(n, s, function(
|
|
517
|
-
a(
|
|
516
|
+
i.parse(n, s, function(l) {
|
|
517
|
+
a(l), i.manager.itemEnd(e);
|
|
518
518
|
}, r);
|
|
519
|
-
} catch (
|
|
520
|
-
r(
|
|
519
|
+
} catch (l) {
|
|
520
|
+
r(l);
|
|
521
521
|
}
|
|
522
522
|
}, t, r);
|
|
523
523
|
}
|
|
@@ -544,8 +544,8 @@ class Mt extends Fa {
|
|
|
544
544
|
if (o.decode(new Uint8Array(e, 0, 4)) === Rt) {
|
|
545
545
|
try {
|
|
546
546
|
s[j.KHR_BINARY_GLTF] = new Ci(e);
|
|
547
|
-
} catch (
|
|
548
|
-
return void (A && A(
|
|
547
|
+
} catch (l) {
|
|
548
|
+
return void (A && A(l));
|
|
549
549
|
}
|
|
550
550
|
i = JSON.parse(s[j.KHR_BINARY_GLTF].content);
|
|
551
551
|
} else i = JSON.parse(o.decode(e));
|
|
@@ -553,12 +553,12 @@ class Mt extends Fa {
|
|
|
553
553
|
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.")));
|
|
554
554
|
const n = new Si(i, { path: a || this.resourcePath || "", crossOrigin: this.crossOrigin, requestHeader: this.requestHeader, manager: this.manager, ktx2Loader: this.ktx2Loader, meshoptDecoder: this.meshoptDecoder });
|
|
555
555
|
n.fileLoader.setRequestHeader(this.requestHeader);
|
|
556
|
-
for (let
|
|
557
|
-
const d = this.pluginCallbacks[
|
|
556
|
+
for (let l = 0; l < this.pluginCallbacks.length; l++) {
|
|
557
|
+
const d = this.pluginCallbacks[l](n);
|
|
558
558
|
d.name || console.error("THREE.GLTFLoader: Invalid plugin found: missing name"), r[d.name] = d, s[d.name] = !0;
|
|
559
559
|
}
|
|
560
|
-
if (i.extensionsUsed) for (let
|
|
561
|
-
const d = i.extensionsUsed[
|
|
560
|
+
if (i.extensionsUsed) for (let l = 0; l < i.extensionsUsed.length; ++l) {
|
|
561
|
+
const d = i.extensionsUsed[l], g = i.extensionsRequired || [];
|
|
562
562
|
switch (d) {
|
|
563
563
|
case j.KHR_MATERIALS_UNLIT:
|
|
564
564
|
s[d] = new ei();
|
|
@@ -824,7 +824,7 @@ class di {
|
|
|
824
824
|
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);
|
|
825
825
|
}
|
|
826
826
|
}
|
|
827
|
-
class
|
|
827
|
+
class li {
|
|
828
828
|
constructor(e) {
|
|
829
829
|
this.parser = e, this.name = j.KHR_MATERIALS_ANISOTROPY;
|
|
830
830
|
}
|
|
@@ -839,7 +839,7 @@ class bi {
|
|
|
839
839
|
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);
|
|
840
840
|
}
|
|
841
841
|
}
|
|
842
|
-
class
|
|
842
|
+
class bi {
|
|
843
843
|
constructor(e) {
|
|
844
844
|
this.parser = e, this.name = j.KHR_TEXTURE_BASISU;
|
|
845
845
|
}
|
|
@@ -923,12 +923,12 @@ class fi {
|
|
|
923
923
|
return null;
|
|
924
924
|
}
|
|
925
925
|
return i.then(function(r) {
|
|
926
|
-
const o = A.byteOffset || 0, n = A.byteLength || 0,
|
|
927
|
-
return s.decodeGltfBufferAsync ? s.decodeGltfBufferAsync(
|
|
926
|
+
const o = A.byteOffset || 0, n = A.byteLength || 0, l = A.count, d = A.byteStride, g = new Uint8Array(r, o, n);
|
|
927
|
+
return s.decodeGltfBufferAsync ? s.decodeGltfBufferAsync(l, d, g, A.mode, A.filter).then(function(h) {
|
|
928
928
|
return h.buffer;
|
|
929
929
|
}) : s.ready.then(function() {
|
|
930
|
-
const h = new ArrayBuffer(
|
|
931
|
-
return s.decodeGltfBuffer(new Uint8Array(h),
|
|
930
|
+
const h = new ArrayBuffer(l * d);
|
|
931
|
+
return s.decodeGltfBuffer(new Uint8Array(h), l, d, g, A.mode, A.filter), h;
|
|
932
932
|
});
|
|
933
933
|
});
|
|
934
934
|
}
|
|
@@ -947,10 +947,10 @@ class ui {
|
|
|
947
947
|
const i = t.extensions[this.name].attributes, s = [], r = {};
|
|
948
948
|
for (const o in i) s.push(this.parser.getDependency("accessor", i[o]).then((n) => (r[o] = n, r[o])));
|
|
949
949
|
return s.length < 1 ? null : (s.push(this.parser.createNodeMesh(e)), Promise.all(s).then((o) => {
|
|
950
|
-
const n = o.pop(),
|
|
951
|
-
for (const h of
|
|
952
|
-
const
|
|
953
|
-
for (let B = 0; B < d; B++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, B), r.ROTATION && I.fromBufferAttribute(r.ROTATION, B), r.SCALE && p.fromBufferAttribute(r.SCALE, B), u.setMatrixAt(B,
|
|
950
|
+
const n = o.pop(), l = n.isGroup ? n.children : [n], d = o[0].count, g = [];
|
|
951
|
+
for (const h of l) {
|
|
952
|
+
const b = new je(), f = new M(), I = new mt(), p = new M(1, 1, 1), u = new sA(h.geometry, h.material, d);
|
|
953
|
+
for (let B = 0; B < d; B++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, B), r.ROTATION && I.fromBufferAttribute(r.ROTATION, B), r.SCALE && p.fromBufferAttribute(r.SCALE, B), u.setMatrixAt(B, b.compose(f, I, p));
|
|
954
954
|
for (const B in r) if (B === "_COLOR_0") {
|
|
955
955
|
const C = r[B];
|
|
956
956
|
u.instanceColor = new wa(C.array, C.itemSize, C.normalized);
|
|
@@ -993,22 +993,22 @@ class Bi {
|
|
|
993
993
|
}
|
|
994
994
|
decodePrimitive(e, a) {
|
|
995
995
|
const t = this.json, A = this.dracoLoader, i = e.extensions[this.name].bufferView, s = e.extensions[this.name].attributes, r = {}, o = {}, n = {};
|
|
996
|
-
for (const
|
|
997
|
-
const d = ja[
|
|
998
|
-
r[d] = s[
|
|
996
|
+
for (const l in s) {
|
|
997
|
+
const d = ja[l] || l.toLowerCase();
|
|
998
|
+
r[d] = s[l];
|
|
999
999
|
}
|
|
1000
|
-
for (const
|
|
1001
|
-
const d = ja[
|
|
1002
|
-
if (s[
|
|
1003
|
-
const g = t.accessors[e.attributes[
|
|
1000
|
+
for (const l in e.attributes) {
|
|
1001
|
+
const d = ja[l] || l.toLowerCase();
|
|
1002
|
+
if (s[l] !== void 0) {
|
|
1003
|
+
const g = t.accessors[e.attributes[l]], h = ke[g.componentType];
|
|
1004
1004
|
n[d] = h.name, o[d] = g.normalized === !0;
|
|
1005
1005
|
}
|
|
1006
1006
|
}
|
|
1007
|
-
return a.getDependency("bufferView", i).then(function(
|
|
1007
|
+
return a.getDependency("bufferView", i).then(function(l) {
|
|
1008
1008
|
return new Promise(function(d, g) {
|
|
1009
|
-
A.decodeDracoFile(
|
|
1010
|
-
for (const
|
|
1011
|
-
const f = h.attributes[
|
|
1009
|
+
A.decodeDracoFile(l, function(h) {
|
|
1010
|
+
for (const b in h.attributes) {
|
|
1011
|
+
const f = h.attributes[b], I = o[b];
|
|
1012
1012
|
I !== void 0 && (f.normalized = I);
|
|
1013
1013
|
}
|
|
1014
1014
|
d(h);
|
|
@@ -1040,9 +1040,9 @@ class St extends jA {
|
|
|
1040
1040
|
return a;
|
|
1041
1041
|
}
|
|
1042
1042
|
interpolate_(e, a, t, A) {
|
|
1043
|
-
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, o = 2 * r, n = 3 * r,
|
|
1043
|
+
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, o = 2 * r, n = 3 * r, l = A - a, d = (t - a) / l, g = d * d, h = g * d, b = e * n, f = b - n, I = -2 * h + 3 * g, p = h - g, u = 1 - I, B = p - g + d;
|
|
1044
1044
|
for (let C = 0; C !== r; C++) {
|
|
1045
|
-
const w = s[f + C + r], x = s[f + C + o] *
|
|
1045
|
+
const w = s[f + C + r], x = s[f + C + o] * l, y = s[b + C + r], m = s[b + C] * l;
|
|
1046
1046
|
i[C] = u * w + B * x + I * y + p * m;
|
|
1047
1047
|
}
|
|
1048
1048
|
return i;
|
|
@@ -1154,7 +1154,7 @@ class Si {
|
|
|
1154
1154
|
const A = t.clone(), i = (s, r) => {
|
|
1155
1155
|
const o = this.associations.get(s);
|
|
1156
1156
|
o != null && this.associations.set(r, o);
|
|
1157
|
-
for (const [n,
|
|
1157
|
+
for (const [n, l] of s.children.entries()) i(l, r.children[n]);
|
|
1158
1158
|
};
|
|
1159
1159
|
return i(t, A), A.name += "_instance_" + e.uses[a]++, A;
|
|
1160
1160
|
}
|
|
@@ -1268,25 +1268,25 @@ class Si {
|
|
|
1268
1268
|
const a = this, t = this.json, A = this.json.accessors[e];
|
|
1269
1269
|
if (A.bufferView === void 0 && A.sparse === void 0) {
|
|
1270
1270
|
const s = na[A.type], r = ke[A.componentType], o = A.normalized === !0, n = new r(A.count * s);
|
|
1271
|
-
return Promise.resolve(new
|
|
1271
|
+
return Promise.resolve(new be(n, s, o));
|
|
1272
1272
|
}
|
|
1273
1273
|
const i = [];
|
|
1274
1274
|
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) {
|
|
1275
|
-
const r = s[0], o = na[A.type], n = ke[A.componentType],
|
|
1275
|
+
const r = s[0], o = na[A.type], n = ke[A.componentType], l = n.BYTES_PER_ELEMENT, d = l * o, g = A.byteOffset || 0, h = A.bufferView !== void 0 ? t.bufferViews[A.bufferView].byteStride : void 0, b = A.normalized === !0;
|
|
1276
1276
|
let f, I;
|
|
1277
1277
|
if (h && h !== d) {
|
|
1278
1278
|
const p = Math.floor(g / h), u = "InterleavedBuffer:" + A.bufferView + ":" + A.componentType + ":" + p + ":" + A.count;
|
|
1279
1279
|
let B = a.cache.get(u);
|
|
1280
|
-
B || (f = new n(r, p * h, A.count * h /
|
|
1281
|
-
} else f = r === null ? new n(A.count * o) : new n(r, g, A.count * o), I = new
|
|
1280
|
+
B || (f = new n(r, p * h, A.count * h / l), B = new oA(f, h / l), a.cache.add(u, B)), I = new cA(B, o, g % h / l, b);
|
|
1281
|
+
} else f = r === null ? new n(A.count * o) : new n(r, g, A.count * o), I = new be(f, o, b);
|
|
1282
1282
|
if (A.sparse !== void 0) {
|
|
1283
1283
|
const p = na.SCALAR, u = ke[A.sparse.indices.componentType], B = A.sparse.indices.byteOffset || 0, C = A.sparse.values.byteOffset || 0, w = new u(s[1], B, A.sparse.count * p), x = new n(s[2], C, A.sparse.count * o);
|
|
1284
|
-
r !== null && (I = new
|
|
1284
|
+
r !== null && (I = new be(I.array.slice(), I.itemSize, I.normalized)), I.normalized = !1;
|
|
1285
1285
|
for (let y = 0, m = w.length; y < m; y++) {
|
|
1286
1286
|
const Q = w[y];
|
|
1287
1287
|
if (I.setX(Q, x[y * o]), o >= 2 && I.setY(Q, x[y * o + 1]), o >= 3 && I.setZ(Q, x[y * o + 2]), o >= 4 && I.setW(Q, x[y * o + 3]), o >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
|
|
1288
1288
|
}
|
|
1289
|
-
I.normalized =
|
|
1289
|
+
I.normalized = b;
|
|
1290
1290
|
}
|
|
1291
1291
|
return I;
|
|
1292
1292
|
});
|
|
@@ -1303,10 +1303,10 @@ class Si {
|
|
|
1303
1303
|
loadTextureImage(e, a, t) {
|
|
1304
1304
|
const A = this, i = this.json, s = i.textures[e], r = i.images[a], o = (r.uri || r.bufferView) + ":" + s.sampler;
|
|
1305
1305
|
if (this.textureCache[o]) return this.textureCache[o];
|
|
1306
|
-
const n = this.loadImageSource(a, t).then(function(
|
|
1307
|
-
|
|
1306
|
+
const n = this.loadImageSource(a, t).then(function(l) {
|
|
1307
|
+
l.flipY = !1, l.name = s.name || r.name || "", l.name === "" && typeof r.uri == "string" && r.uri.startsWith("data:image/") === !1 && (l.name = r.uri);
|
|
1308
1308
|
const d = (i.samplers || {})[s.sampler] || {};
|
|
1309
|
-
return
|
|
1309
|
+
return l.magFilter = $a[d.magFilter] || Ce, l.minFilter = $a[d.minFilter] || $e, l.wrapS = et[d.wrapS] || xa, l.wrapT = et[d.wrapT] || xa, l.generateMipmaps = !l.isCompressedTexture && l.minFilter !== R && l.minFilter !== Ce, A.associations.set(l, { textures: e }), l;
|
|
1310
1310
|
}).catch(function() {
|
|
1311
1311
|
return null;
|
|
1312
1312
|
});
|
|
@@ -1323,13 +1323,13 @@ class Si {
|
|
|
1323
1323
|
return o = r.createObjectURL(g), o;
|
|
1324
1324
|
});
|
|
1325
1325
|
else if (s.uri === void 0) throw new Error("THREE.GLTFLoader: Image " + e + " is missing URI and bufferView");
|
|
1326
|
-
const
|
|
1326
|
+
const l = Promise.resolve(o).then(function(d) {
|
|
1327
1327
|
return new Promise(function(g, h) {
|
|
1328
|
-
let
|
|
1329
|
-
a.isImageBitmapLoader === !0 && (
|
|
1328
|
+
let b = g;
|
|
1329
|
+
a.isImageBitmapLoader === !0 && (b = function(f) {
|
|
1330
1330
|
const I = new Na(f);
|
|
1331
1331
|
I.needsUpdate = !0, g(I);
|
|
1332
|
-
}), a.load(Pe.resolveURL(d, i.path),
|
|
1332
|
+
}), a.load(Pe.resolveURL(d, i.path), b, void 0, h);
|
|
1333
1333
|
});
|
|
1334
1334
|
}).then(function(d) {
|
|
1335
1335
|
var g;
|
|
@@ -1337,7 +1337,7 @@ class Si {
|
|
|
1337
1337
|
}).catch(function(d) {
|
|
1338
1338
|
throw console.error("THREE.GLTFLoader: Couldn't load texture", o), d;
|
|
1339
1339
|
});
|
|
1340
|
-
return this.sourceCache[e] =
|
|
1340
|
+
return this.sourceCache[e] = l, l;
|
|
1341
1341
|
}
|
|
1342
1342
|
assignTexture(e, a, t, A) {
|
|
1343
1343
|
const i = this;
|
|
@@ -1382,37 +1382,37 @@ class Si {
|
|
|
1382
1382
|
let s;
|
|
1383
1383
|
const r = {}, o = [];
|
|
1384
1384
|
if ((i.extensions || {})[j.KHR_MATERIALS_UNLIT]) {
|
|
1385
|
-
const
|
|
1386
|
-
s =
|
|
1385
|
+
const l = A[j.KHR_MATERIALS_UNLIT];
|
|
1386
|
+
s = l.getMaterialType(), o.push(l.extendParams(r, i, a));
|
|
1387
1387
|
} else {
|
|
1388
|
-
const
|
|
1389
|
-
if (r.color = new he(1, 1, 1), r.opacity = 1, Array.isArray(
|
|
1390
|
-
const d =
|
|
1388
|
+
const l = i.pbrMetallicRoughness || {};
|
|
1389
|
+
if (r.color = new he(1, 1, 1), r.opacity = 1, Array.isArray(l.baseColorFactor)) {
|
|
1390
|
+
const d = l.baseColorFactor;
|
|
1391
1391
|
r.color.setRGB(d[0], d[1], d[2], K), r.opacity = d[3];
|
|
1392
1392
|
}
|
|
1393
|
-
|
|
1393
|
+
l.baseColorTexture !== void 0 && o.push(a.assignTexture(r, "map", l.baseColorTexture, re)), r.metalness = l.metallicFactor !== void 0 ? l.metallicFactor : 1, r.roughness = l.roughnessFactor !== void 0 ? l.roughnessFactor : 1, l.metallicRoughnessTexture !== void 0 && (o.push(a.assignTexture(r, "metalnessMap", l.metallicRoughnessTexture)), o.push(a.assignTexture(r, "roughnessMap", l.metallicRoughnessTexture))), s = this._invokeOne(function(d) {
|
|
1394
1394
|
return d.getMaterialType && d.getMaterialType(e);
|
|
1395
1395
|
}), o.push(Promise.all(this._invokeAll(function(d) {
|
|
1396
1396
|
return d.extendMaterialParams && d.extendMaterialParams(e, r);
|
|
1397
1397
|
})));
|
|
1398
1398
|
}
|
|
1399
|
-
i.doubleSided === !0 && (r.side =
|
|
1399
|
+
i.doubleSided === !0 && (r.side = lA);
|
|
1400
1400
|
const n = i.alphaMode || xi;
|
|
1401
1401
|
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 && (o.push(a.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new Bt(1, 1), i.normalTexture.scale !== void 0)) {
|
|
1402
|
-
const
|
|
1403
|
-
r.normalScale.set(
|
|
1402
|
+
const l = i.normalTexture.scale;
|
|
1403
|
+
r.normalScale.set(l, l);
|
|
1404
1404
|
}
|
|
1405
1405
|
if (i.occlusionTexture !== void 0 && s !== Le && (o.push(a.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && s !== Le) {
|
|
1406
|
-
const
|
|
1407
|
-
r.emissive = new he().setRGB(
|
|
1406
|
+
const l = i.emissiveFactor;
|
|
1407
|
+
r.emissive = new he().setRGB(l[0], l[1], l[2], K);
|
|
1408
1408
|
}
|
|
1409
1409
|
return i.emissiveTexture !== void 0 && s !== Le && o.push(a.assignTexture(r, "emissiveMap", i.emissiveTexture, re)), Promise.all(o).then(function() {
|
|
1410
|
-
const
|
|
1411
|
-
return i.name && (
|
|
1410
|
+
const l = new s(r);
|
|
1411
|
+
return i.name && (l.name = i.name), se(l, i), a.associations.set(l, { materials: e }), i.extensions && fe(A, l, i), l;
|
|
1412
1412
|
});
|
|
1413
1413
|
}
|
|
1414
1414
|
createUniqueName(e) {
|
|
1415
|
-
const a =
|
|
1415
|
+
const a = bA.sanitizeNodeName(e || "");
|
|
1416
1416
|
return a in this.nodeNamesUsed ? a + "_" + ++this.nodeNamesUsed[a] : (this.nodeNamesUsed[a] = 0, a);
|
|
1417
1417
|
}
|
|
1418
1418
|
loadGeometries(e) {
|
|
@@ -1424,28 +1424,28 @@ class Si {
|
|
|
1424
1424
|
}
|
|
1425
1425
|
const s = [];
|
|
1426
1426
|
for (let r = 0, o = e.length; r < o; r++) {
|
|
1427
|
-
const n = e[r],
|
|
1427
|
+
const n = e[r], l = Mi(n), d = A[l];
|
|
1428
1428
|
if (d) s.push(d.promise);
|
|
1429
1429
|
else {
|
|
1430
1430
|
let g;
|
|
1431
|
-
g = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new ea(), n, a), A[
|
|
1431
|
+
g = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new ea(), n, a), A[l] = { primitive: n, promise: g }, s.push(g);
|
|
1432
1432
|
}
|
|
1433
1433
|
}
|
|
1434
1434
|
return Promise.all(s);
|
|
1435
1435
|
}
|
|
1436
1436
|
loadMesh(e) {
|
|
1437
1437
|
const a = this, t = this.json, A = this.extensions, i = t.meshes[e], s = i.primitives, r = [];
|
|
1438
|
-
for (let n = 0,
|
|
1438
|
+
for (let n = 0, l = s.length; n < l; n++) {
|
|
1439
1439
|
const d = s[n].material === void 0 ? ((o = this.cache).DefaultMaterial === void 0 && (o.DefaultMaterial = new Ua({ color: 16777215, emissive: 0, metalness: 1, roughness: 1, transparent: !1, depthTest: !0, side: Ze })), o.DefaultMaterial) : this.getDependency("material", s[n].material);
|
|
1440
1440
|
r.push(d);
|
|
1441
1441
|
}
|
|
1442
1442
|
var o;
|
|
1443
1443
|
return r.push(a.loadGeometries(s)), Promise.all(r).then(function(n) {
|
|
1444
|
-
const
|
|
1445
|
-
for (let
|
|
1446
|
-
const I = d[
|
|
1444
|
+
const l = n.slice(0, n.length - 1), d = n[n.length - 1], g = [];
|
|
1445
|
+
for (let b = 0, f = d.length; b < f; b++) {
|
|
1446
|
+
const I = d[b], p = s[b];
|
|
1447
1447
|
let u;
|
|
1448
|
-
const B = b
|
|
1448
|
+
const B = l[b];
|
|
1449
1449
|
if (p.mode === H.TRIANGLES || p.mode === H.TRIANGLE_STRIP || p.mode === H.TRIANGLE_FAN || p.mode === void 0) u = i.isSkinnedMesh === !0 ? new hA(I, B) : new ka(I, B), u.isSkinnedMesh === !0 && u.normalizeSkinWeights(), p.mode === H.TRIANGLE_STRIP ? u.geometry = Za(u.geometry, Ct) : p.mode === H.TRIANGLE_FAN && (u.geometry = Za(u.geometry, ya));
|
|
1450
1450
|
else if (p.mode === H.LINES) u = new pt(I, B);
|
|
1451
1451
|
else if (p.mode === H.LINE_STRIP) u = new gA(I, B);
|
|
@@ -1456,11 +1456,11 @@ class Si {
|
|
|
1456
1456
|
}
|
|
1457
1457
|
Object.keys(u.geometry.morphAttributes).length > 0 && ji(u, i), u.name = a.createUniqueName(i.name || "mesh_" + e), se(u, i), p.extensions && fe(A, u, p), a.assignFinalMaterial(u), g.push(u);
|
|
1458
1458
|
}
|
|
1459
|
-
for (let
|
|
1459
|
+
for (let b = 0, f = g.length; b < f; b++) a.associations.set(g[b], { meshes: e, primitives: b });
|
|
1460
1460
|
if (g.length === 1) return i.extensions && fe(A, g[0], i), g[0];
|
|
1461
1461
|
const h = new Aa();
|
|
1462
1462
|
i.extensions && fe(A, h, i), a.associations.set(h, { meshes: e });
|
|
1463
|
-
for (let
|
|
1463
|
+
for (let b = 0, f = g.length; b < f; b++) h.add(g[b]);
|
|
1464
1464
|
return h;
|
|
1465
1465
|
});
|
|
1466
1466
|
}
|
|
@@ -1475,7 +1475,7 @@ class Si {
|
|
|
1475
1475
|
for (let A = 0, i = a.joints.length; A < i; A++) t.push(this._loadNodeShallow(a.joints[A]));
|
|
1476
1476
|
return a.inverseBindMatrices !== void 0 ? t.push(this.getDependency("accessor", a.inverseBindMatrices)) : t.push(null), Promise.all(t).then(function(A) {
|
|
1477
1477
|
const i = A.pop(), s = A, r = [], o = [];
|
|
1478
|
-
for (let n = 0,
|
|
1478
|
+
for (let n = 0, l = s.length; n < l; n++) {
|
|
1479
1479
|
const d = s[n];
|
|
1480
1480
|
if (d) {
|
|
1481
1481
|
r.push(d);
|
|
@@ -1487,15 +1487,15 @@ class Si {
|
|
|
1487
1487
|
});
|
|
1488
1488
|
}
|
|
1489
1489
|
loadAnimation(e) {
|
|
1490
|
-
const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], o = [], n = [],
|
|
1490
|
+
const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], o = [], n = [], l = [];
|
|
1491
1491
|
for (let d = 0, g = A.channels.length; d < g; d++) {
|
|
1492
|
-
const h = A.channels[d],
|
|
1493
|
-
f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", p)), o.push(this.getDependency("accessor", u)), n.push(
|
|
1492
|
+
const h = A.channels[d], b = A.samplers[h.sampler], f = h.target, I = f.node, p = A.parameters !== void 0 ? A.parameters[b.input] : b.input, u = A.parameters !== void 0 ? A.parameters[b.output] : b.output;
|
|
1493
|
+
f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", p)), o.push(this.getDependency("accessor", u)), n.push(b), l.push(f));
|
|
1494
1494
|
}
|
|
1495
|
-
return Promise.all([Promise.all(s), Promise.all(r), Promise.all(o), Promise.all(n), Promise.all(
|
|
1496
|
-
const g = d[0], h = d[1],
|
|
1495
|
+
return Promise.all([Promise.all(s), Promise.all(r), Promise.all(o), Promise.all(n), Promise.all(l)]).then(function(d) {
|
|
1496
|
+
const g = d[0], h = d[1], b = d[2], f = d[3], I = d[4], p = [];
|
|
1497
1497
|
for (let u = 0, B = g.length; u < B; u++) {
|
|
1498
|
-
const C = g[u], w = h[u], x =
|
|
1498
|
+
const C = g[u], w = h[u], x = b[u], y = f[u], m = I[u];
|
|
1499
1499
|
if (C === void 0) continue;
|
|
1500
1500
|
C.updateMatrix && C.updateMatrix();
|
|
1501
1501
|
const Q = t._createAnimationTracks(C, w, x, y, m);
|
|
@@ -1518,11 +1518,11 @@ class Si {
|
|
|
1518
1518
|
for (let o = 0, n = s.length; o < n; o++) i.push(a.getDependency("node", s[o]));
|
|
1519
1519
|
const r = t.skin === void 0 ? Promise.resolve(null) : a.getDependency("skin", t.skin);
|
|
1520
1520
|
return Promise.all([A, Promise.all(i), r]).then(function(o) {
|
|
1521
|
-
const n = o[0],
|
|
1521
|
+
const n = o[0], l = o[1], d = o[2];
|
|
1522
1522
|
d !== null && n.traverse(function(g) {
|
|
1523
1523
|
g.isSkinnedMesh && g.bind(d, Ri);
|
|
1524
1524
|
});
|
|
1525
|
-
for (let g = 0, h =
|
|
1525
|
+
for (let g = 0, h = l.length; g < h; g++) n.add(l[g]);
|
|
1526
1526
|
return n;
|
|
1527
1527
|
});
|
|
1528
1528
|
}
|
|
@@ -1539,13 +1539,13 @@ class Si {
|
|
|
1539
1539
|
}).forEach(function(n) {
|
|
1540
1540
|
r.push(n);
|
|
1541
1541
|
}), this.nodeCache[e] = Promise.all(r).then(function(n) {
|
|
1542
|
-
let
|
|
1543
|
-
if (
|
|
1544
|
-
if (i.name && (
|
|
1542
|
+
let l;
|
|
1543
|
+
if (l = i.isBone === !0 ? new mA() : n.length > 1 ? new Aa() : n.length === 1 ? n[0] : new Et(), l !== n[0]) for (let d = 0, g = n.length; d < g; d++) l.add(n[d]);
|
|
1544
|
+
if (i.name && (l.userData.name = i.name, l.name = s), se(l, i), i.extensions && fe(t, l, i), i.matrix !== void 0) {
|
|
1545
1545
|
const d = new je();
|
|
1546
|
-
d.fromArray(i.matrix),
|
|
1547
|
-
} else i.translation !== void 0 &&
|
|
1548
|
-
return A.associations.has(
|
|
1546
|
+
d.fromArray(i.matrix), l.applyMatrix4(d);
|
|
1547
|
+
} else i.translation !== void 0 && l.position.fromArray(i.translation), i.rotation !== void 0 && l.quaternion.fromArray(i.rotation), i.scale !== void 0 && l.scale.fromArray(i.scale);
|
|
1548
|
+
return A.associations.has(l) || A.associations.set(l, {}), A.associations.get(l).nodes = e, l;
|
|
1549
1549
|
}), this.nodeCache[e];
|
|
1550
1550
|
}
|
|
1551
1551
|
loadScene(e) {
|
|
@@ -1554,14 +1554,14 @@ class Si {
|
|
|
1554
1554
|
const s = t.nodes || [], r = [];
|
|
1555
1555
|
for (let o = 0, n = s.length; o < n; o++) r.push(A.getDependency("node", s[o]));
|
|
1556
1556
|
return Promise.all(r).then(function(o) {
|
|
1557
|
-
for (let n = 0,
|
|
1557
|
+
for (let n = 0, l = o.length; n < l; n++) i.add(o[n]);
|
|
1558
1558
|
return A.associations = ((n) => {
|
|
1559
|
-
const
|
|
1560
|
-
for (const [d, g] of A.associations) (d instanceof ta || d instanceof Na) &&
|
|
1559
|
+
const l = /* @__PURE__ */ new Map();
|
|
1560
|
+
for (const [d, g] of A.associations) (d instanceof ta || d instanceof Na) && l.set(d, g);
|
|
1561
1561
|
return n.traverse((d) => {
|
|
1562
1562
|
const g = A.associations.get(d);
|
|
1563
|
-
g != null &&
|
|
1564
|
-
}),
|
|
1563
|
+
g != null && l.set(d, g);
|
|
1564
|
+
}), l;
|
|
1565
1565
|
})(i), i;
|
|
1566
1566
|
});
|
|
1567
1567
|
}
|
|
@@ -1584,10 +1584,10 @@ class Si {
|
|
|
1584
1584
|
default:
|
|
1585
1585
|
t.itemSize === 1 ? n = _a : n = Pa;
|
|
1586
1586
|
}
|
|
1587
|
-
const
|
|
1587
|
+
const l = A.interpolation !== void 0 ? wi[A.interpolation] : yt, d = this._getArrayFromAccessor(t);
|
|
1588
1588
|
for (let g = 0, h = o.length; g < h; g++) {
|
|
1589
|
-
const
|
|
1590
|
-
A.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(
|
|
1589
|
+
const b = new n(o[g] + "." + oe[i.path], a.array, d, l);
|
|
1590
|
+
A.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(b), s.push(b);
|
|
1591
1591
|
}
|
|
1592
1592
|
return s;
|
|
1593
1593
|
}
|
|
@@ -1624,64 +1624,64 @@ function at(c, e, a) {
|
|
|
1624
1624
|
A.push(s);
|
|
1625
1625
|
}
|
|
1626
1626
|
return Da.workingColorSpace !== K && "COLOR_0" in t && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Da.workingColorSpace}" not supported.`), se(c, e), function(s, r, o) {
|
|
1627
|
-
const n = r.attributes,
|
|
1627
|
+
const n = r.attributes, l = new va();
|
|
1628
1628
|
if (n.POSITION === void 0) return;
|
|
1629
1629
|
{
|
|
1630
|
-
const h = o.json.accessors[n.POSITION],
|
|
1631
|
-
if (
|
|
1632
|
-
if (
|
|
1630
|
+
const h = o.json.accessors[n.POSITION], b = h.min, f = h.max;
|
|
1631
|
+
if (b === void 0 || f === void 0) return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1632
|
+
if (l.set(new M(b[0], b[1], b[2]), new M(f[0], f[1], f[2])), h.normalized) {
|
|
1633
1633
|
const I = Ma(ke[h.componentType]);
|
|
1634
|
-
|
|
1634
|
+
l.min.multiplyScalar(I), l.max.multiplyScalar(I);
|
|
1635
1635
|
}
|
|
1636
1636
|
}
|
|
1637
1637
|
const d = r.targets;
|
|
1638
1638
|
if (d !== void 0) {
|
|
1639
|
-
const h = new M(),
|
|
1639
|
+
const h = new M(), b = new M();
|
|
1640
1640
|
for (let f = 0, I = d.length; f < I; f++) {
|
|
1641
1641
|
const p = d[f];
|
|
1642
1642
|
if (p.POSITION !== void 0) {
|
|
1643
1643
|
const u = o.json.accessors[p.POSITION], B = u.min, C = u.max;
|
|
1644
1644
|
if (B !== void 0 && C !== void 0) {
|
|
1645
|
-
if (
|
|
1645
|
+
if (b.setX(Math.max(Math.abs(B[0]), Math.abs(C[0]))), b.setY(Math.max(Math.abs(B[1]), Math.abs(C[1]))), b.setZ(Math.max(Math.abs(B[2]), Math.abs(C[2]))), u.normalized) {
|
|
1646
1646
|
const w = Ma(ke[u.componentType]);
|
|
1647
|
-
|
|
1647
|
+
b.multiplyScalar(w);
|
|
1648
1648
|
}
|
|
1649
|
-
h.max(
|
|
1649
|
+
h.max(b);
|
|
1650
1650
|
} else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1651
1651
|
}
|
|
1652
1652
|
}
|
|
1653
|
-
|
|
1653
|
+
l.expandByVector(h);
|
|
1654
1654
|
}
|
|
1655
|
-
s.boundingBox =
|
|
1655
|
+
s.boundingBox = l;
|
|
1656
1656
|
const g = new DA();
|
|
1657
|
-
|
|
1657
|
+
l.getCenter(g.center), g.radius = l.min.distanceTo(l.max) / 2, s.boundingSphere = g;
|
|
1658
1658
|
}(c, e, a), Promise.all(A).then(function() {
|
|
1659
1659
|
return e.targets !== void 0 ? function(s, r, o) {
|
|
1660
|
-
let n = !1,
|
|
1660
|
+
let n = !1, l = !1, d = !1;
|
|
1661
1661
|
for (let f = 0, I = r.length; f < I; f++) {
|
|
1662
1662
|
const p = r[f];
|
|
1663
|
-
if (p.POSITION !== void 0 && (n = !0), p.NORMAL !== void 0 && (
|
|
1663
|
+
if (p.POSITION !== void 0 && (n = !0), p.NORMAL !== void 0 && (l = !0), p.COLOR_0 !== void 0 && (d = !0), n && l && d) break;
|
|
1664
1664
|
}
|
|
1665
|
-
if (!n && !
|
|
1666
|
-
const g = [], h = [],
|
|
1665
|
+
if (!n && !l && !d) return Promise.resolve(s);
|
|
1666
|
+
const g = [], h = [], b = [];
|
|
1667
1667
|
for (let f = 0, I = r.length; f < I; f++) {
|
|
1668
1668
|
const p = r[f];
|
|
1669
1669
|
if (n) {
|
|
1670
1670
|
const u = p.POSITION !== void 0 ? o.getDependency("accessor", p.POSITION) : s.attributes.position;
|
|
1671
1671
|
g.push(u);
|
|
1672
1672
|
}
|
|
1673
|
-
if (
|
|
1673
|
+
if (l) {
|
|
1674
1674
|
const u = p.NORMAL !== void 0 ? o.getDependency("accessor", p.NORMAL) : s.attributes.normal;
|
|
1675
1675
|
h.push(u);
|
|
1676
1676
|
}
|
|
1677
1677
|
if (d) {
|
|
1678
1678
|
const u = p.COLOR_0 !== void 0 ? o.getDependency("accessor", p.COLOR_0) : s.attributes.color;
|
|
1679
|
-
|
|
1679
|
+
b.push(u);
|
|
1680
1680
|
}
|
|
1681
1681
|
}
|
|
1682
|
-
return Promise.all([Promise.all(g), Promise.all(h), Promise.all(
|
|
1682
|
+
return Promise.all([Promise.all(g), Promise.all(h), Promise.all(b)]).then(function(f) {
|
|
1683
1683
|
const I = f[0], p = f[1], u = f[2];
|
|
1684
|
-
return n && (s.morphAttributes.position = I),
|
|
1684
|
+
return n && (s.morphAttributes.position = I), l && (s.morphAttributes.normal = p), d && (s.morphAttributes.color = u), s.morphTargetsRelative = !0, s;
|
|
1685
1685
|
});
|
|
1686
1686
|
}(c, e.targets, a) : c;
|
|
1687
1687
|
});
|
|
@@ -1723,8 +1723,8 @@ class vt extends Fa {
|
|
|
1723
1723
|
if (e.byteLength === 0) throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.");
|
|
1724
1724
|
}
|
|
1725
1725
|
let A;
|
|
1726
|
-
const i = this.workerNextTaskID++, s = e.byteLength, r = this._getWorker(i, s).then((o) => (A = o, new Promise((n,
|
|
1727
|
-
A._callbacks[i] = { resolve: n, reject:
|
|
1726
|
+
const i = this.workerNextTaskID++, s = e.byteLength, r = this._getWorker(i, s).then((o) => (A = o, new Promise((n, l) => {
|
|
1727
|
+
A._callbacks[i] = { resolve: n, reject: l }, A.postMessage({ type: "decode", id: i, taskConfig: a, buffer: e }, [e]);
|
|
1728
1728
|
}))).then((o) => this._createGeometry(o.geometry));
|
|
1729
1729
|
return r.catch(() => !0).then(() => {
|
|
1730
1730
|
A && i && this._releaseTask(A, i);
|
|
@@ -1732,9 +1732,9 @@ class vt extends Fa {
|
|
|
1732
1732
|
}
|
|
1733
1733
|
_createGeometry(e) {
|
|
1734
1734
|
const a = new ea();
|
|
1735
|
-
e.index && a.setIndex(new
|
|
1735
|
+
e.index && a.setIndex(new be(e.index.array, 1));
|
|
1736
1736
|
for (let t = 0; t < e.attributes.length; t++) {
|
|
1737
|
-
const A = e.attributes[t], i = A.name, s = A.array, r = A.itemSize, o = new
|
|
1737
|
+
const A = e.attributes[t], i = A.name, s = A.array, r = A.itemSize, o = new be(s, r);
|
|
1738
1738
|
i === "color" && (this._assignVertexColorSpace(o, A.vertexColorSpace), o.normalized = !(s instanceof Float32Array)), a.setAttribute(i, o);
|
|
1739
1739
|
}
|
|
1740
1740
|
return a;
|
|
@@ -1802,7 +1802,7 @@ class vt extends Fa {
|
|
|
1802
1802
|
function vi() {
|
|
1803
1803
|
let c, e;
|
|
1804
1804
|
function a(t, A, i, s, r, o) {
|
|
1805
|
-
const n = o.num_components(),
|
|
1805
|
+
const n = o.num_components(), l = i.num_points() * n, d = l * r.BYTES_PER_ELEMENT, g = function(f, I) {
|
|
1806
1806
|
switch (I) {
|
|
1807
1807
|
case Float32Array:
|
|
1808
1808
|
return f.DT_FLOAT32;
|
|
@@ -1821,8 +1821,8 @@ function vi() {
|
|
|
1821
1821
|
}
|
|
1822
1822
|
}(t, r), h = t._malloc(d);
|
|
1823
1823
|
A.GetAttributeDataArrayForAllPoints(i, o, g, d, h);
|
|
1824
|
-
const
|
|
1825
|
-
return t._free(h), { name: s, array:
|
|
1824
|
+
const b = new r(t.HEAPF32.buffer, h, l).slice();
|
|
1825
|
+
return t._free(h), { name: s, array: b, itemSize: n };
|
|
1826
1826
|
}
|
|
1827
1827
|
onmessage = function(t) {
|
|
1828
1828
|
const A = t.data;
|
|
@@ -1839,14 +1839,14 @@ function vi() {
|
|
|
1839
1839
|
e.then((r) => {
|
|
1840
1840
|
const o = r.draco, n = new o.Decoder();
|
|
1841
1841
|
try {
|
|
1842
|
-
const
|
|
1842
|
+
const l = function(g, h, b, f) {
|
|
1843
1843
|
const I = f.attributeIDs, p = f.attributeTypes;
|
|
1844
1844
|
let u, B;
|
|
1845
|
-
const C = h.GetEncodedGeometryType(
|
|
1846
|
-
if (C === g.TRIANGULAR_MESH) u = new g.Mesh(), B = h.DecodeArrayToMesh(
|
|
1845
|
+
const C = h.GetEncodedGeometryType(b);
|
|
1846
|
+
if (C === g.TRIANGULAR_MESH) u = new g.Mesh(), B = h.DecodeArrayToMesh(b, b.byteLength, u);
|
|
1847
1847
|
else {
|
|
1848
1848
|
if (C !== g.POINT_CLOUD) throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
|
|
1849
|
-
u = new g.PointCloud(), B = h.DecodeArrayToPointCloud(
|
|
1849
|
+
u = new g.PointCloud(), B = h.DecodeArrayToPointCloud(b, b.byteLength, u);
|
|
1850
1850
|
}
|
|
1851
1851
|
if (!B.ok() || u.ptr === 0) throw new Error("THREE.DRACOLoader: Decoding failed: " + B.error_msg());
|
|
1852
1852
|
const w = { index: null, attributes: [] };
|
|
@@ -1867,10 +1867,10 @@ function vi() {
|
|
|
1867
1867
|
const _ = new Uint32Array(x.HEAPF32.buffer, F, k).slice();
|
|
1868
1868
|
return x._free(F), { array: _, itemSize: 1 };
|
|
1869
1869
|
}(g, h, u)), g.destroy(u), w;
|
|
1870
|
-
}(o, n, new Int8Array(i), s), d =
|
|
1871
|
-
|
|
1872
|
-
} catch (
|
|
1873
|
-
console.error(
|
|
1870
|
+
}(o, n, new Int8Array(i), s), d = l.attributes.map((g) => g.array.buffer);
|
|
1871
|
+
l.index && d.push(l.index.array.buffer), self.postMessage({ type: "decode", id: A.id, geometry: l }, d);
|
|
1872
|
+
} catch (l) {
|
|
1873
|
+
console.error(l), self.postMessage({ type: "error", id: A.id, error: l.message });
|
|
1874
1874
|
} finally {
|
|
1875
1875
|
o.destroy(n);
|
|
1876
1876
|
}
|
|
@@ -1965,15 +1965,15 @@ function tt(c) {
|
|
|
1965
1965
|
return new TextDecoder().decode(c);
|
|
1966
1966
|
}
|
|
1967
1967
|
let da, ie, Ra;
|
|
1968
|
-
const
|
|
1968
|
+
const la = { env: { emscripten_notify_memory_growth: function(c) {
|
|
1969
1969
|
Ra = new Uint8Array(ie.exports.memory.buffer);
|
|
1970
1970
|
} } };
|
|
1971
1971
|
class Li {
|
|
1972
1972
|
init() {
|
|
1973
|
-
return da || (da = typeof fetch < "u" ? fetch("data:application/wasm;base64," + At).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e,
|
|
1973
|
+
return da || (da = typeof fetch < "u" ? fetch("data:application/wasm;base64," + At).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, la)).then(this._init) : WebAssembly.instantiate(Buffer.from(At, "base64"), la).then(this._init), da);
|
|
1974
1974
|
}
|
|
1975
1975
|
_init(e) {
|
|
1976
|
-
ie = e.instance,
|
|
1976
|
+
ie = e.instance, la.env.emscripten_notify_memory_growth(0);
|
|
1977
1977
|
}
|
|
1978
1978
|
decode(e, a = 0) {
|
|
1979
1979
|
if (!ie) throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
@@ -1983,7 +1983,7 @@ class Li {
|
|
|
1983
1983
|
return ie.exports.free(A), ie.exports.free(i), r;
|
|
1984
1984
|
}
|
|
1985
1985
|
}
|
|
1986
|
-
const At = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", la = /* @__PURE__ */ new WeakMap();
|
|
1986
|
+
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();
|
|
1987
1987
|
let ha, ga = 0;
|
|
1988
1988
|
class P extends Fa {
|
|
1989
1989
|
constructor(e) {
|
|
@@ -2012,8 +2012,8 @@ class P extends Fa {
|
|
|
2012
2012
|
const r = P.BasisWorker.toString(), o = ["/* constants */", "let _EngineFormat = " + JSON.stringify(P.EngineFormat), "let _EngineType = " + JSON.stringify(P.EngineType), "let _TranscoderFormat = " + JSON.stringify(P.TranscoderFormat), "let _BasisFormat = " + JSON.stringify(P.BasisFormat), "/* basis_transcoder.js */", i, "/* worker */", r.substring(r.indexOf("{") + 1, r.lastIndexOf("}"))].join(`
|
|
2013
2013
|
`);
|
|
2014
2014
|
this.workerSourceURL = URL.createObjectURL(new Blob([o])), this.transcoderBinary = s, this.workerPool.setWorkerCreator(() => {
|
|
2015
|
-
const n = new Worker(this.workerSourceURL),
|
|
2016
|
-
return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary:
|
|
2015
|
+
const n = new Worker(this.workerSourceURL), l = this.transcoderBinary.slice(0);
|
|
2016
|
+
return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: l }, [l]), n;
|
|
2017
2017
|
});
|
|
2018
2018
|
}), ga > 0 && console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."), ga++;
|
|
2019
2019
|
}
|
|
@@ -2028,12 +2028,12 @@ class P extends Fa {
|
|
|
2028
2028
|
}
|
|
2029
2029
|
parse(e, a, t) {
|
|
2030
2030
|
if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2031
|
-
if (
|
|
2032
|
-
return
|
|
2031
|
+
if (ba.has(e))
|
|
2032
|
+
return ba.get(e).promise.then(a).catch(t);
|
|
2033
2033
|
this._createTexture(e).then((A) => a ? a(A) : null).catch(t);
|
|
2034
2034
|
}
|
|
2035
2035
|
_createTextureFrom(e, a) {
|
|
2036
|
-
const { type: t, error: A, data: { faces: i, width: s, height: r, format: o, type: n, dfdFlags:
|
|
2036
|
+
const { type: t, error: A, data: { faces: i, width: s, height: r, format: o, type: n, dfdFlags: l } } = e;
|
|
2037
2037
|
if (t === "error") return Promise.reject(A);
|
|
2038
2038
|
let d;
|
|
2039
2039
|
if (a.faceCount === 6) d = new MA(i, o, n);
|
|
@@ -2041,19 +2041,19 @@ class P extends Fa {
|
|
|
2041
2041
|
const g = i[0].mipmaps;
|
|
2042
2042
|
d = a.layerCount > 1 ? new RA(g, s, r, a.layerCount, o, n) : new qa(g, s, r, o, n);
|
|
2043
2043
|
}
|
|
2044
|
-
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 &
|
|
2044
|
+
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 & l), d;
|
|
2045
2045
|
}
|
|
2046
2046
|
async _createTexture(e, a = {}) {
|
|
2047
2047
|
const t = function(r) {
|
|
2048
2048
|
const o = new Uint8Array(r.buffer, r.byteOffset, U.length);
|
|
2049
2049
|
if (o[0] !== U[0] || o[1] !== U[1] || o[2] !== U[2] || o[3] !== U[3] || o[4] !== U[4] || o[5] !== U[5] || o[6] !== U[6] || o[7] !== U[7] || o[8] !== U[8] || o[9] !== U[9] || o[10] !== U[10] || o[11] !== U[11]) throw new Error("Missing KTX 2.0 identifier.");
|
|
2050
|
-
const n = new Ti(),
|
|
2050
|
+
const n = new Ti(), l = 17 * Uint32Array.BYTES_PER_ELEMENT, d = new Fe(r, U.length, l, !0);
|
|
2051
2051
|
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();
|
|
2052
2052
|
const g = d._nextUint32();
|
|
2053
2053
|
n.supercompressionScheme = d._nextUint32();
|
|
2054
|
-
const h = d._nextUint32(),
|
|
2054
|
+
const h = d._nextUint32(), b = d._nextUint32(), f = d._nextUint32(), I = d._nextUint32(), p = d._nextUint64(), u = d._nextUint64(), B = new Fe(r, U.length + l, 3 * g * 8, !0);
|
|
2055
2055
|
for (let S = 0; S < g; S++) n.levels.push({ levelData: new Uint8Array(r.buffer, r.byteOffset + B._nextUint64(), B._nextUint64()), uncompressedByteLength: B._nextUint64() });
|
|
2056
|
-
const C = new Fe(r, h,
|
|
2056
|
+
const C = new Fe(r, h, b, !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;
|
|
2057
2057
|
for (let S = 0; S < x; S++) {
|
|
2058
2058
|
const L = { bitOffset: C._nextUint16(), bitLength: C._nextUint8(), channelType: C._nextUint8(), samplePosition: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
|
|
2059
2059
|
64 & L.channelType ? (L.sampleLower = C._nextInt32(), L.sampleUpper = C._nextInt32()) : (L.sampleLower = C._nextUint32(), L.sampleUpper = C._nextUint32()), w.samples[S] = L;
|
|
@@ -2082,27 +2082,27 @@ class P extends Fa {
|
|
|
2082
2082
|
const h = new Li();
|
|
2083
2083
|
await h.init(), g(h);
|
|
2084
2084
|
})), n = await ha);
|
|
2085
|
-
const
|
|
2085
|
+
const l = [];
|
|
2086
2086
|
for (let g = 0; g < r.levels.length; g++) {
|
|
2087
|
-
const h = Math.max(1, r.pixelWidth >> g),
|
|
2087
|
+
const h = Math.max(1, r.pixelWidth >> g), b = Math.max(1, r.pixelHeight >> g), f = r.pixelDepth ? Math.max(1, r.pixelDepth >> g) : 0, I = r.levels[g];
|
|
2088
2088
|
let p, u;
|
|
2089
2089
|
if (r.supercompressionScheme === 0) p = I.levelData;
|
|
2090
2090
|
else {
|
|
2091
2091
|
if (r.supercompressionScheme !== 2) throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
2092
2092
|
p = n.decode(I.levelData, I.uncompressedByteLength);
|
|
2093
2093
|
}
|
|
2094
|
-
u = ua[o] === v ? new Float32Array(p.buffer, p.byteOffset, p.byteLength / Float32Array.BYTES_PER_ELEMENT) : ua[o] === xe ? new Uint16Array(p.buffer, p.byteOffset, p.byteLength / Uint16Array.BYTES_PER_ELEMENT) : p,
|
|
2094
|
+
u = ua[o] === v ? new Float32Array(p.buffer, p.byteOffset, p.byteLength / Float32Array.BYTES_PER_ELEMENT) : ua[o] === xe ? new Uint16Array(p.buffer, p.byteOffset, p.byteLength / Uint16Array.BYTES_PER_ELEMENT) : p, l.push({ data: u, width: h, height: b, depth: f });
|
|
2095
2095
|
}
|
|
2096
2096
|
let d;
|
|
2097
|
-
if (Gi.has(fa[o])) d = r.pixelDepth === 0 ? new Ge(
|
|
2097
|
+
if (Gi.has(fa[o])) d = r.pixelDepth === 0 ? new Ge(l[0].data, r.pixelWidth, r.pixelHeight) : new _A(l[0].data, r.pixelWidth, r.pixelHeight, r.pixelDepth);
|
|
2098
2098
|
else {
|
|
2099
2099
|
if (r.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
2100
|
-
d = new qa(
|
|
2100
|
+
d = new qa(l, r.pixelWidth, r.pixelHeight), d.minFilter = l.length === 1 ? Ce : $e, d.magFilter = Ce;
|
|
2101
2101
|
}
|
|
2102
|
-
return d.mipmaps =
|
|
2102
|
+
return d.mipmaps = l, d.type = ua[o], d.format = fa[o], d.colorSpace = it(r), d.needsUpdate = !0, Promise.resolve(d);
|
|
2103
2103
|
}(t);
|
|
2104
2104
|
const i = a, s = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: i }, [e])).then((r) => this._createTextureFrom(r.data, t));
|
|
2105
|
-
return
|
|
2105
|
+
return ba.set(e, { promise: s }), s;
|
|
2106
2106
|
}
|
|
2107
2107
|
dispose() {
|
|
2108
2108
|
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), ga--, this;
|
|
@@ -2115,8 +2115,8 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2115
2115
|
const g = d.data;
|
|
2116
2116
|
switch (g.type) {
|
|
2117
2117
|
case "init":
|
|
2118
|
-
c = g.config, h = g.transcoderBinary, e = new Promise((
|
|
2119
|
-
a = { wasmBinary: h, onRuntimeInitialized:
|
|
2118
|
+
c = g.config, h = g.transcoderBinary, e = new Promise((b) => {
|
|
2119
|
+
a = { wasmBinary: h, onRuntimeInitialized: b }, BASIS(a);
|
|
2120
2120
|
}).then(() => {
|
|
2121
2121
|
a.initializeBasis(), a.KTX2File === void 0 && console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.");
|
|
2122
2122
|
});
|
|
@@ -2124,7 +2124,7 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2124
2124
|
case "transcode":
|
|
2125
2125
|
e.then(() => {
|
|
2126
2126
|
try {
|
|
2127
|
-
const { faces:
|
|
2127
|
+
const { faces: b, buffers: f, width: I, height: p, hasAlpha: u, format: B, type: C, dfdFlags: w } = function(x) {
|
|
2128
2128
|
const y = new a.KTX2File(new Uint8Array(x));
|
|
2129
2129
|
function m() {
|
|
2130
2130
|
y.close(), y.delete();
|
|
@@ -2162,16 +2162,16 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2162
2162
|
if (ve === A.HalfFloatType && (ye = new Uint16Array(ye.buffer, ye.byteOffset, ye.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !Xt) throw m(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
2163
2163
|
L.push(ye);
|
|
2164
2164
|
}
|
|
2165
|
-
const O =
|
|
2165
|
+
const O = l(L);
|
|
2166
2166
|
me.push({ data: O, width: q, height: V }), Je.push(O.buffer);
|
|
2167
2167
|
}
|
|
2168
2168
|
Oe.push({ mipmaps: me, width: k, height: D, format: Se, type: ve });
|
|
2169
2169
|
}
|
|
2170
2170
|
return m(), { faces: Oe, buffers: Je, width: k, height: D, hasAlpha: Me, dfdFlags: qe, format: Se, type: ve };
|
|
2171
2171
|
}(g.buffer);
|
|
2172
|
-
self.postMessage({ type: "transcode", id: g.id, data: { faces:
|
|
2173
|
-
} catch (
|
|
2174
|
-
console.error(
|
|
2172
|
+
self.postMessage({ type: "transcode", id: g.id, data: { faces: b, width: I, height: p, hasAlpha: u, format: B, type: C, dfdFlags: w } }, f);
|
|
2173
|
+
} catch (b) {
|
|
2174
|
+
console.error(b), self.postMessage({ type: "error", id: g.id, error: b.message });
|
|
2175
2175
|
}
|
|
2176
2176
|
});
|
|
2177
2177
|
}
|
|
@@ -2181,16 +2181,16 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2181
2181
|
function n(d) {
|
|
2182
2182
|
return d <= 2 || !(d & d - 1) && d !== 0;
|
|
2183
2183
|
}
|
|
2184
|
-
function
|
|
2184
|
+
function l(d) {
|
|
2185
2185
|
if (d.length === 1) return d[0];
|
|
2186
2186
|
let g = 0;
|
|
2187
2187
|
for (let f = 0; f < d.length; f++)
|
|
2188
2188
|
g += d[f].byteLength;
|
|
2189
2189
|
const h = new Uint8Array(g);
|
|
2190
|
-
let
|
|
2190
|
+
let b = 0;
|
|
2191
2191
|
for (let f = 0; f < d.length; f++) {
|
|
2192
2192
|
const I = d[f];
|
|
2193
|
-
h.set(I,
|
|
2193
|
+
h.set(I, b), b += I.byteLength;
|
|
2194
2194
|
}
|
|
2195
2195
|
return h;
|
|
2196
2196
|
}
|
|
@@ -2209,15 +2209,15 @@ async function st(c) {
|
|
|
2209
2209
|
}
|
|
2210
2210
|
if (e === "subtree")
|
|
2211
2211
|
return async function(t, A) {
|
|
2212
|
-
const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), o = 24, n = o + Number(s),
|
|
2213
|
-
if (!
|
|
2214
|
-
const f =
|
|
2212
|
+
const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), o = 24, n = o + Number(s), l = n + (8 - n % 8) % 8, d = l + Number(r), g = t.slice(o, n), h = new TextDecoder().decode(g).trim(), b = JSON.parse(h);
|
|
2213
|
+
if (!b.buffers) throw new Error("subtree has no buffers");
|
|
2214
|
+
const f = b.buffers.map(async (p) => {
|
|
2215
2215
|
if (p.uri) {
|
|
2216
2216
|
const u = new URL(p.uri, A).href, B = await fetch(u);
|
|
2217
2217
|
if (!B.ok) throw new Error(`Failed to fetch binary file ${u}: ${B.statusText}`);
|
|
2218
2218
|
return new Uint8Array(await B.arrayBuffer());
|
|
2219
2219
|
}
|
|
2220
|
-
return new Uint8Array(t.slice(
|
|
2220
|
+
return new Uint8Array(t.slice(l, d));
|
|
2221
2221
|
}), I = await Promise.all(f);
|
|
2222
2222
|
return /* @__PURE__ */ function(p, u) {
|
|
2223
2223
|
function B(m, Q) {
|
|
@@ -2252,7 +2252,7 @@ async function st(c) {
|
|
|
2252
2252
|
return Q = m.z == null ? Ia(m.x, m.y) : Ca(m.x, m.y, m.z), B(p.childSubtreeAvailability, Q);
|
|
2253
2253
|
}
|
|
2254
2254
|
return { isTileAvailable: w, isContentAvailable: x, isChildSubtreeAvailable: y };
|
|
2255
|
-
}(
|
|
2255
|
+
}(b, I);
|
|
2256
2256
|
}(await a.arrayBuffer(), rt(c));
|
|
2257
2257
|
throw new Error(`Unsupported file extension: ${e}`);
|
|
2258
2258
|
}
|
|
@@ -2287,23 +2287,23 @@ async function La(c, e) {
|
|
|
2287
2287
|
h.uri ? A.push(h.uri) : h.url && A.push(h.url);
|
|
2288
2288
|
});
|
|
2289
2289
|
const i = function(h) {
|
|
2290
|
-
const
|
|
2291
|
-
return
|
|
2290
|
+
const b = h.split("?")[0];
|
|
2291
|
+
return b.substring(0, b.lastIndexOf("/") + 1);
|
|
2292
2292
|
}(e);
|
|
2293
2293
|
let s;
|
|
2294
2294
|
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));
|
|
2295
2295
|
const r = { level: 0, x: 0, y: 0 }, o = { level: 0, x: 0, y: 0 };
|
|
2296
2296
|
a || (r.z = 0, o.z = 0), Te.set(s, await st(i + s));
|
|
2297
|
-
const n = Te.get(s),
|
|
2297
|
+
const n = Te.get(s), l = [];
|
|
2298
2298
|
n.isContentAvailable(o) && A.forEach((h) => {
|
|
2299
|
-
let
|
|
2300
|
-
a && (
|
|
2299
|
+
let b;
|
|
2300
|
+
a && (b = h.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y)), a || (b = h.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y).replace("{z}", r.z)), l.push({ uri: b });
|
|
2301
2301
|
});
|
|
2302
|
-
const d = { geometricError: c.root.geometricError, boundingVolume: c.root.boundingVolume, refine: c.root.refine, globalAddress: r, localAddress: o, subtree: n, contents:
|
|
2302
|
+
const d = { geometricError: c.root.geometricError, boundingVolume: c.root.boundingVolume, refine: c.root.refine, globalAddress: r, localAddress: o, subtree: n, contents: l, getChildren: async () => g(d) };
|
|
2303
2303
|
return { root: d };
|
|
2304
2304
|
async function g(h) {
|
|
2305
|
-
const
|
|
2306
|
-
if (h.localAddress.level == c.root.implicitTiling.availableLevels - 1) return
|
|
2305
|
+
const b = [];
|
|
2306
|
+
if (h.localAddress.level == c.root.implicitTiling.availableLevels - 1) return b;
|
|
2307
2307
|
if ((h.localAddress.level + 1) % c.root.implicitTiling.subtreeLevels == 0) {
|
|
2308
2308
|
const f = ze(h.localAddress), I = ze(h.globalAddress), p = ot(a, c.root.boundingVolume, I);
|
|
2309
2309
|
for (let u = 0; u < f.length; u++) {
|
|
@@ -2317,7 +2317,7 @@ async function La(c, e) {
|
|
|
2317
2317
|
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 });
|
|
2318
2318
|
});
|
|
2319
2319
|
const m = { geometricError: h.geometricError / 2, boundingVolume: p[u], refine: c.root.refine, globalAddress: C, localAddress: x, subtree: w, contents: y, getChildren: async () => g(m) };
|
|
2320
|
-
|
|
2320
|
+
b.push(m);
|
|
2321
2321
|
}
|
|
2322
2322
|
} else {
|
|
2323
2323
|
const f = ze(h.localAddress), I = ze(h.globalAddress), p = ot(a, c.root.boundingVolume, I);
|
|
@@ -2332,10 +2332,10 @@ async function La(c, e) {
|
|
|
2332
2332
|
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 });
|
|
2333
2333
|
}
|
|
2334
2334
|
const y = { geometricError: h.geometricError / 2, boundingVolume: p[u], refine: c.root.refine, globalAddress: C, localAddress: B, subtree: h.subtree, contents: w, getChildren: async () => g(y) };
|
|
2335
|
-
|
|
2335
|
+
b.push(y);
|
|
2336
2336
|
}
|
|
2337
2337
|
}
|
|
2338
|
-
return
|
|
2338
|
+
return b.length > 0 ? b : void 0;
|
|
2339
2339
|
}
|
|
2340
2340
|
}
|
|
2341
2341
|
function ze(c) {
|
|
@@ -2350,12 +2350,12 @@ function ot(c, e, a) {
|
|
|
2350
2350
|
}
|
|
2351
2351
|
function Ui(c, e, a) {
|
|
2352
2352
|
if (e.region) return function(t, A, i) {
|
|
2353
|
-
const [s, r, o, n,
|
|
2353
|
+
const [s, r, o, n, l, d] = A, g = (o - s) / 2 ** i.level, h = (n - r) / 2 ** i.level, b = t ? 0 : (d - l) / 2 ** i.level, f = s + g * i.x, I = r + h * i.y, p = f + g, u = I + h, B = t ? l : l + b * i.z, C = t ? d : B + b;
|
|
2354
2354
|
return { region: [f, I, p, u, B, C] };
|
|
2355
2355
|
}(c, e.region, a);
|
|
2356
2356
|
if (e.box) return function(t, A, i) {
|
|
2357
|
-
const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], o = 1 / Math.pow(2, i.level), n = [o, o, t ? 1 : o],
|
|
2358
|
-
return { box: [d[0] + (2 * i.x + 1) * (
|
|
2357
|
+
const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], o = 1 / Math.pow(2, i.level), n = [o, o, t ? 1 : o], l = r.map((h, b) => h.map((f) => f * n[b])), 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]];
|
|
2358
|
+
return { box: [d[0] + (2 * i.x + 1) * (l[0][0] + l[1][0] + l[2][0]), d[1] + (2 * i.y + 1) * (l[0][1] + l[1][1] + l[2][1]), t ? s[2] : d[2] + (2 * i.z + 1) * (l[0][2] + l[1][2] + l[2][2])].concat(...l) };
|
|
2359
2359
|
}(c, e.box, a);
|
|
2360
2360
|
throw new Error("Unsupported bounding volume type");
|
|
2361
2361
|
}
|
|
@@ -2363,13 +2363,13 @@ function Ui(c, e, a) {
|
|
|
2363
2363
|
var c, e = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
|
|
2364
2364
|
if (typeof WebAssembly != "object") return { supported: !1 };
|
|
2365
2365
|
var a = WebAssembly.instantiate(function(n) {
|
|
2366
|
-
for (var
|
|
2366
|
+
for (var l = new Uint8Array(n.length), d = 0; d < n.length; ++d) {
|
|
2367
2367
|
var g = n.charCodeAt(d);
|
|
2368
|
-
|
|
2368
|
+
l[d] = g > 96 ? g - 97 : g > 64 ? g - 39 : g + 4;
|
|
2369
2369
|
}
|
|
2370
2370
|
var h = 0;
|
|
2371
|
-
for (d = 0; d < n.length; ++d)
|
|
2372
|
-
return
|
|
2371
|
+
for (d = 0; d < n.length; ++d) l[h++] = l[d] < 60 ? e[l[d]] : 64 * (l[d] - 60) + l[++d];
|
|
2372
|
+
return l.buffer.slice(0, h);
|
|
2373
2373
|
}("b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb"), {}).then(function(n) {
|
|
2374
2374
|
(c = n.instance).exports.__wasm_call_ctors(), c.exports.meshopt_encodeVertexVersion(0), c.exports.meshopt_encodeIndexVersion(1);
|
|
2375
2375
|
});
|
|
@@ -2379,25 +2379,25 @@ function Ui(c, e, a) {
|
|
|
2379
2379
|
function A(n) {
|
|
2380
2380
|
return new Uint8Array(n.buffer, n.byteOffset, n.byteLength);
|
|
2381
2381
|
}
|
|
2382
|
-
function i(n,
|
|
2383
|
-
var
|
|
2382
|
+
function i(n, l, d, g, h) {
|
|
2383
|
+
var b = c.exports.sbrk, f = b(l), I = b(g * h), p = new Uint8Array(c.exports.memory.buffer);
|
|
2384
2384
|
p.set(A(d), I);
|
|
2385
|
-
var u = n(f,
|
|
2386
|
-
return B.set(p.subarray(f, f + u)),
|
|
2385
|
+
var u = n(f, l, I, g, h), B = new Uint8Array(u);
|
|
2386
|
+
return B.set(p.subarray(f, f + u)), b(f - b(0)), B;
|
|
2387
2387
|
}
|
|
2388
2388
|
function s(n) {
|
|
2389
|
-
for (var
|
|
2389
|
+
for (var l = 0, d = 0; d < n.length; ++d)
|
|
2390
2390
|
var g = n[d];
|
|
2391
|
-
return
|
|
2391
|
+
return l;
|
|
2392
2392
|
}
|
|
2393
|
-
function r(n,
|
|
2394
|
-
if (t(
|
|
2393
|
+
function r(n, l) {
|
|
2394
|
+
if (t(l == 2 || l == 4), l == 4) return new Uint32Array(n.buffer, n.byteOffset, n.byteLength / 4);
|
|
2395
2395
|
var d = new Uint16Array(n.buffer, n.byteOffset, n.byteLength / 2);
|
|
2396
2396
|
return new Uint32Array(d);
|
|
2397
2397
|
}
|
|
2398
|
-
function o(n,
|
|
2399
|
-
var I = c.exports.sbrk, p = I(d * g), u = I(d *
|
|
2400
|
-
B.set(A(
|
|
2398
|
+
function o(n, l, d, g, h, b, f) {
|
|
2399
|
+
var I = c.exports.sbrk, p = I(d * g), u = I(d * b), B = new Uint8Array(c.exports.memory.buffer);
|
|
2400
|
+
B.set(A(l), u), n(p, d, g, h, u, f);
|
|
2401
2401
|
var C = new Uint8Array(d * g);
|
|
2402
2402
|
return C.set(B.subarray(p, p + d * g)), I(p - I(0)), C;
|
|
2403
2403
|
}
|
|
@@ -2409,64 +2409,64 @@ var Vt = function() {
|
|
|
2409
2409
|
(a = h.instance).exports.__wasm_call_ctors();
|
|
2410
2410
|
});
|
|
2411
2411
|
function i(h) {
|
|
2412
|
-
for (var
|
|
2412
|
+
for (var b = new Uint8Array(h.length), f = 0; f < h.length; ++f) {
|
|
2413
2413
|
var I = h.charCodeAt(f);
|
|
2414
|
-
|
|
2414
|
+
b[f] = I > 96 ? I - 97 : I > 64 ? I - 39 : I + 4;
|
|
2415
2415
|
}
|
|
2416
2416
|
var p = 0;
|
|
2417
|
-
for (f = 0; f < h.length; ++f)
|
|
2418
|
-
return
|
|
2417
|
+
for (f = 0; f < h.length; ++f) b[p++] = b[f] < 60 ? e[b[f]] : 64 * (b[f] - 60) + b[++f];
|
|
2418
|
+
return b.buffer.slice(0, p);
|
|
2419
2419
|
}
|
|
2420
|
-
function s(h,
|
|
2420
|
+
function s(h, b, f, I, p, u, B) {
|
|
2421
2421
|
var C = h.exports.sbrk, w = I + 3 & -4, x = C(w * p), y = C(u.length), m = new Uint8Array(h.exports.memory.buffer);
|
|
2422
2422
|
m.set(u, y);
|
|
2423
|
-
var Q =
|
|
2423
|
+
var Q = b(x, I, p, y, u.length);
|
|
2424
2424
|
if (Q == 0 && B && B(x, w, p), f.set(m.subarray(x, x + I * p)), C(x - C(0)), Q != 0) throw new Error("Malformed buffer data: " + Q);
|
|
2425
2425
|
}
|
|
2426
|
-
var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, o = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [],
|
|
2426
|
+
var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, o = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [], l = 0;
|
|
2427
2427
|
function d(h) {
|
|
2428
|
-
var
|
|
2429
|
-
return
|
|
2428
|
+
var b = { object: new Worker(h), pending: 0, requests: {} };
|
|
2429
|
+
return b.object.onmessage = function(f) {
|
|
2430
2430
|
var I = f.data;
|
|
2431
|
-
|
|
2432
|
-
},
|
|
2431
|
+
b.pending -= I.count, b.requests[I.id][I.action](I.value), delete b.requests[I.id];
|
|
2432
|
+
}, b;
|
|
2433
2433
|
}
|
|
2434
2434
|
function g(h) {
|
|
2435
|
-
var
|
|
2436
|
-
if (!
|
|
2435
|
+
var b = h.data;
|
|
2436
|
+
if (!b.id) return self.close();
|
|
2437
2437
|
self.ready.then(function(f) {
|
|
2438
2438
|
try {
|
|
2439
|
-
var I = new Uint8Array(
|
|
2440
|
-
s(f, f.exports[
|
|
2439
|
+
var I = new Uint8Array(b.count * b.size);
|
|
2440
|
+
s(f, f.exports[b.mode], I, b.count, b.size, b.source, f.exports[b.filter]), self.postMessage({ id: b.id, count: b.count, action: "resolve", value: I }, [I.buffer]);
|
|
2441
2441
|
} catch (p) {
|
|
2442
|
-
self.postMessage({ id:
|
|
2442
|
+
self.postMessage({ id: b.id, count: b.count, action: "reject", value: p });
|
|
2443
2443
|
}
|
|
2444
2444
|
});
|
|
2445
2445
|
}
|
|
2446
2446
|
return { ready: A, supported: !0, useWorkers: function(h) {
|
|
2447
|
-
(function(
|
|
2448
|
-
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 = " + g.name + ";" + s.toString() + g.toString(), I = new Blob([f], { type: "text/javascript" }), p = URL.createObjectURL(I), u = n.length; u <
|
|
2449
|
-
for (u =
|
|
2450
|
-
n.length =
|
|
2447
|
+
(function(b) {
|
|
2448
|
+
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 = " + g.name + ";" + s.toString() + g.toString(), I = new Blob([f], { type: "text/javascript" }), p = URL.createObjectURL(I), u = n.length; u < b; ++u) n[u] = d(p);
|
|
2449
|
+
for (u = b; u < n.length; ++u) n[u].object.postMessage({});
|
|
2450
|
+
n.length = b, URL.revokeObjectURL(p);
|
|
2451
2451
|
})(h);
|
|
2452
|
-
}, decodeVertexBuffer: function(h,
|
|
2453
|
-
s(a, a.exports.meshopt_decodeVertexBuffer, h,
|
|
2454
|
-
}, decodeIndexBuffer: function(h,
|
|
2455
|
-
s(a, a.exports.meshopt_decodeIndexBuffer, h,
|
|
2456
|
-
}, decodeIndexSequence: function(h,
|
|
2457
|
-
s(a, a.exports.meshopt_decodeIndexSequence, h,
|
|
2458
|
-
}, decodeGltfBuffer: function(h,
|
|
2459
|
-
s(a, a.exports[o[p]], h,
|
|
2460
|
-
}, decodeGltfBufferAsync: function(h,
|
|
2452
|
+
}, decodeVertexBuffer: function(h, b, f, I, p) {
|
|
2453
|
+
s(a, a.exports.meshopt_decodeVertexBuffer, h, b, f, I, a.exports[r[p]]);
|
|
2454
|
+
}, decodeIndexBuffer: function(h, b, f, I) {
|
|
2455
|
+
s(a, a.exports.meshopt_decodeIndexBuffer, h, b, f, I);
|
|
2456
|
+
}, decodeIndexSequence: function(h, b, f, I) {
|
|
2457
|
+
s(a, a.exports.meshopt_decodeIndexSequence, h, b, f, I);
|
|
2458
|
+
}, decodeGltfBuffer: function(h, b, f, I, p, u) {
|
|
2459
|
+
s(a, a.exports[o[p]], h, b, f, I, a.exports[r[u]]);
|
|
2460
|
+
}, decodeGltfBufferAsync: function(h, b, f, I, p) {
|
|
2461
2461
|
return n.length > 0 ? function(u, B, C, w, x) {
|
|
2462
2462
|
for (var y = n[0], m = 1; m < n.length; ++m) n[m].pending < y.pending && (y = n[m]);
|
|
2463
2463
|
return new Promise(function(Q, k) {
|
|
2464
|
-
var D = new Uint8Array(C), F = ++
|
|
2464
|
+
var D = new Uint8Array(C), F = ++l;
|
|
2465
2465
|
y.pending += u, y.requests[F] = { resolve: Q, reject: k }, y.object.postMessage({ id: F, count: u, size: B, source: D, mode: w, filter: x }, [D.buffer]);
|
|
2466
2466
|
});
|
|
2467
|
-
}(h,
|
|
2468
|
-
var u = new Uint8Array(h *
|
|
2469
|
-
return s(a, a.exports[o[I]], u, h,
|
|
2467
|
+
}(h, b, f, o[I], r[p]) : A.then(function() {
|
|
2468
|
+
var u = new Uint8Array(h * b);
|
|
2469
|
+
return s(a, a.exports[o[I]], u, h, b, f, a.exports[r[p]]), u;
|
|
2470
2470
|
});
|
|
2471
2471
|
} };
|
|
2472
2472
|
}();
|
|
@@ -2475,8 +2475,8 @@ var Vt = function() {
|
|
|
2475
2475
|
if (typeof WebAssembly != "object") return { supported: !1 };
|
|
2476
2476
|
var a = WebAssembly.instantiate(function(r) {
|
|
2477
2477
|
for (var o = new Uint8Array(r.length), n = 0; n < r.length; ++n) {
|
|
2478
|
-
var
|
|
2479
|
-
o[n] =
|
|
2478
|
+
var l = r.charCodeAt(n);
|
|
2479
|
+
o[n] = l > 96 ? l - 97 : l > 64 ? l - 39 : l + 4;
|
|
2480
2480
|
}
|
|
2481
2481
|
var d = 0;
|
|
2482
2482
|
for (n = 0; n < r.length; ++n) o[d++] = o[n] < 60 ? e[o[n]] : 64 * (o[n] - 60) + o[++n];
|
|
@@ -2490,10 +2490,10 @@ var Vt = function() {
|
|
|
2490
2490
|
function A(r) {
|
|
2491
2491
|
return new Uint8Array(r.buffer, r.byteOffset, r.byteLength);
|
|
2492
2492
|
}
|
|
2493
|
-
function i(r, o, n,
|
|
2494
|
-
var f = c.exports.sbrk, I = f(4 *
|
|
2493
|
+
function i(r, o, n, l, d, g, h, b) {
|
|
2494
|
+
var f = c.exports.sbrk, I = f(4 * b), p = f(n * l), u = f(n * g), B = new Uint8Array(c.exports.memory.buffer);
|
|
2495
2495
|
B.set(A(o), p), d && B.set(A(d), u);
|
|
2496
|
-
var C = r(I, p, n,
|
|
2496
|
+
var C = r(I, p, n, l, u, g, h, b);
|
|
2497
2497
|
new Uint8Array(c.exports.memory.buffer);
|
|
2498
2498
|
var w = new Uint32Array(C);
|
|
2499
2499
|
return A(w).set(B.subarray(I, I + 4 * C)), f(I - f(0)), w;
|
|
@@ -2573,13 +2573,13 @@ class Ni {
|
|
|
2573
2573
|
}
|
|
2574
2574
|
}
|
|
2575
2575
|
}
|
|
2576
|
-
get(e, a, t, A, i, s, r, o, n,
|
|
2577
|
-
const h = this,
|
|
2576
|
+
get(e, a, t, A, i, s, r, o, n, l, d, g) {
|
|
2577
|
+
const h = this, b = ct(t), f = new AbortController();
|
|
2578
2578
|
if (e.signal.addEventListener("abort", () => {
|
|
2579
|
-
h.register[
|
|
2579
|
+
h.register[b] && Object.keys(h.register[b]).length != 0 || f.abort("user abort");
|
|
2580
2580
|
}), !(t.includes(".b3dm") || t.includes(".json") || t.includes(".gltf") || t.includes(".glb"))) return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");
|
|
2581
|
-
if (h.register[
|
|
2582
|
-
else if (Object.keys(h.register[
|
|
2581
|
+
if (h.register[b] || (h.register[b] = {}), h.register[b][a] && console.error(" a tile should only be loaded once"), h.register[b][a] = A, h.cache.get(b)) this._meshReceived(h.cache, h.register, b, i, s, r, a);
|
|
2582
|
+
else if (Object.keys(h.register[b]).length == 1) {
|
|
2583
2583
|
let I;
|
|
2584
2584
|
t.includes(".b3dm") ? I = () => {
|
|
2585
2585
|
var p;
|
|
@@ -2588,8 +2588,8 @@ class Ni {
|
|
|
2588
2588
|
return u.arrayBuffer();
|
|
2589
2589
|
}).then((u) => this.b3dmDecoder.parseB3DM(u, (B) => {
|
|
2590
2590
|
h.meshCallback(B, d);
|
|
2591
|
-
}, n,
|
|
2592
|
-
h.cache.put(
|
|
2591
|
+
}, n, l)).then((u) => {
|
|
2592
|
+
h.cache.put(b, u), h._checkSize(), this._meshReceived(h.cache, h.register, b, i, s, r, a);
|
|
2593
2593
|
}).catch((u) => {
|
|
2594
2594
|
}).finally(() => {
|
|
2595
2595
|
te--;
|
|
@@ -2599,8 +2599,8 @@ class Ni {
|
|
|
2599
2599
|
p = h.proxy ? () => fetch(h.proxy, { method: "POST", body: t, signal: f.signal }) : () => fetch(t, { signal: f.signal }), te++, p().then((u) => {
|
|
2600
2600
|
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}`);
|
|
2601
2601
|
return u.arrayBuffer();
|
|
2602
|
-
}).then((u) => this.splatsDecoder.parseSplats(u, n,
|
|
2603
|
-
h.cache.put(
|
|
2602
|
+
}).then((u) => this.splatsDecoder.parseSplats(u, n, l, g)).then((u) => {
|
|
2603
|
+
h.cache.put(b, u), h._checkSize(), h._meshReceived(h.cache, h.register, b, i, s, r, a);
|
|
2604
2604
|
}).catch((u) => {
|
|
2605
2605
|
}).finally(() => {
|
|
2606
2606
|
te--;
|
|
@@ -2619,8 +2619,8 @@ class Ni {
|
|
|
2619
2619
|
});
|
|
2620
2620
|
}(this.gltfLoader), this.gltfLoader.parse(u, null, (B) => {
|
|
2621
2621
|
B.scene.asset = B.asset, n && B.scene.applyMatrix4(this.zUpToYUpMatrix), B.scene.traverse((C) => {
|
|
2622
|
-
C.isMesh && (
|
|
2623
|
-
}), h.cache.put(
|
|
2622
|
+
C.isMesh && (l && C.applyMatrix4(this.zUpToYUpMatrix), h.meshCallback && h.meshCallback(C, d)), C.isPoints && h.pointsCallback && h.pointsCallback(C, d);
|
|
2623
|
+
}), h.cache.put(b, B.scene), h._checkSize(), h._meshReceived(h.cache, h.register, b, i, s, r, a);
|
|
2624
2624
|
});
|
|
2625
2625
|
}).catch((u) => {
|
|
2626
2626
|
u !== "user abort" && u.code;
|
|
@@ -2633,7 +2633,7 @@ class Ni {
|
|
|
2633
2633
|
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}`);
|
|
2634
2634
|
return u.json();
|
|
2635
2635
|
}).then((u) => La(u, t)).then((u) => {
|
|
2636
|
-
h.cache.put(
|
|
2636
|
+
h.cache.put(b, u), h._checkSize(), h._meshReceived(h.cache, h.register, b);
|
|
2637
2637
|
}).catch((u) => {
|
|
2638
2638
|
console.error(u);
|
|
2639
2639
|
}).finally(() => {
|
|
@@ -2744,9 +2744,9 @@ var De = { resolve: function() {
|
|
|
2744
2744
|
} else A > r && (c.charCodeAt(a + n) === 47 ? o = n : n === 0 && (o = 0));
|
|
2745
2745
|
break;
|
|
2746
2746
|
}
|
|
2747
|
-
var
|
|
2748
|
-
if (
|
|
2749
|
-
|
|
2747
|
+
var l = c.charCodeAt(a + n);
|
|
2748
|
+
if (l !== e.charCodeAt(i + n)) break;
|
|
2749
|
+
l === 47 && (o = n);
|
|
2750
2750
|
}
|
|
2751
2751
|
var d = "";
|
|
2752
2752
|
for (n = a + o + 1; n <= t; ++n) n !== t && c.charCodeAt(n) !== 47 || (d.length === 0 ? d += ".." : d += "/..");
|
|
@@ -2810,15 +2810,15 @@ var De = { resolve: function() {
|
|
|
2810
2810
|
if (c.length === 0) return e;
|
|
2811
2811
|
var a, t = c.charCodeAt(0), A = t === 47;
|
|
2812
2812
|
A ? (e.root = "/", a = 1) : a = 0;
|
|
2813
|
-
for (var i = -1, s = 0, r = -1, o = !0, n = c.length - 1,
|
|
2813
|
+
for (var i = -1, s = 0, r = -1, o = !0, n = c.length - 1, l = 0; n >= a; --n) if ((t = c.charCodeAt(n)) !== 47) r === -1 && (o = !1, r = n + 1), t === 46 ? i === -1 ? i = n : l !== 1 && (l = 1) : i !== -1 && (l = -1);
|
|
2814
2814
|
else if (!o) {
|
|
2815
2815
|
s = n + 1;
|
|
2816
2816
|
break;
|
|
2817
2817
|
}
|
|
2818
|
-
return i === -1 || r === -1 ||
|
|
2818
|
+
return i === -1 || r === -1 || l === 0 || l === 1 && i === r - 1 && i === s + 1 ? r !== -1 && (e.base = e.name = s === 0 && A ? c.slice(1, r) : c.slice(s, r)) : (s === 0 && A ? (e.name = c.slice(1, i), e.base = c.slice(1, r)) : (e.name = c.slice(s, i), e.base = c.slice(s, r)), e.ext = c.slice(i, r)), s > 0 ? e.dir = c.slice(0, s - 1) : A && (e.dir = "/"), e;
|
|
2819
2819
|
}, sep: "/", delimiter: ":", win32: null, posix: null };
|
|
2820
2820
|
De.posix = De;
|
|
2821
|
-
var
|
|
2821
|
+
var lt, le = De;
|
|
2822
2822
|
class Pi {
|
|
2823
2823
|
constructor(e) {
|
|
2824
2824
|
ge(this, "_toElementFn");
|
|
@@ -2998,7 +2998,7 @@ class pe extends Pi {
|
|
|
2998
2998
|
}
|
|
2999
2999
|
(function(c) {
|
|
3000
3000
|
c[c.VISIT = 0] = "VISIT", c[c.PROCESS = 1] = "PROCESS";
|
|
3001
|
-
})(
|
|
3001
|
+
})(lt || (lt = {}));
|
|
3002
3002
|
class _e extends pe {
|
|
3003
3003
|
constructor(e = [], a) {
|
|
3004
3004
|
super(e, a);
|
|
@@ -3058,23 +3058,23 @@ class qi extends ka {
|
|
|
3058
3058
|
o.texture.type = v, e.initRenderTarget(o);
|
|
3059
3059
|
const n = new ne(512, 512, 1, { magFilter: R, minFilter: R, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3060
3060
|
n.texture.type = v, e.initRenderTarget(n);
|
|
3061
|
-
const
|
|
3062
|
-
d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new
|
|
3063
|
-
const h = new Uint32Array(i),
|
|
3064
|
-
|
|
3061
|
+
const l = new ia({ uniforms: { textureSize: { value: 512 }, numSlices: { value: 1 }, cov1Texture: { value: o.texture }, cov2Texture: { value: n.texture }, colorTexture: { value: s.texture }, positionTexture: { value: r.texture }, zUpToYUpMatrix3x3: { value: Yt }, sizeMultiplier: { value: 1 }, cropRadius: { value: Number.MAX_VALUE }, cameraNear: { value: 0.01 }, cameraFar: { value: 10 }, computeLinearDepth: { value: !0 } }, vertexShader: Oi(), fragmentShader: a || Ji(), transparent: !0, side: Ze, depthTest: !1, depthWrite: !1 }), d = new Ja(), g = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]);
|
|
3062
|
+
d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new be(g, 3));
|
|
3063
|
+
const h = new Uint32Array(i), b = new wa(h, 1, !1);
|
|
3064
|
+
b.needsUpdate = !0, b.setUsage(Ka), d.setAttribute("order", b), d.instanceCount = 0, super(d, l), this.orderAttribute = b, this.textureSize = 512, this.numTextures = 1, this.batchSize = A, this.maxSplats = i, this.colorRenderTarget = s, this.positionRenderTarget = r, this.cov1RenderTarget = o, this.cov2RenderTarget = n, this.renderer = e, this.sortID = 0, this.freeAddresses = new He();
|
|
3065
3065
|
for (let p = 0; p < this.maxSplats; p += A) this.freeAddresses.add(p);
|
|
3066
3066
|
this.worker = new _i({ type: "module" }), this.sortListeners = [], this.worker.onmessage = (p) => {
|
|
3067
3067
|
const u = new Uint32Array(p.data.order);
|
|
3068
3068
|
if (u.length > this.orderAttribute.count) {
|
|
3069
3069
|
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];
|
|
3070
|
-
B.setIndex(w), B.setAttribute("position", new
|
|
3070
|
+
B.setIndex(w), B.setAttribute("position", new be(C, 3));
|
|
3071
3071
|
const x = new Uint32Array(this.maxSplats), y = new wa(x, 1, !1);
|
|
3072
3072
|
y.needsUpdate = !0, y.setUsage(Ka), B.setAttribute("order", y), B.instanceCount = 0, this.geometry.dispose(), this.geometry = B, this.orderAttribute = y;
|
|
3073
3073
|
}
|
|
3074
3074
|
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(u), this.orderAttribute.addUpdateRange(0, u.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = p.data.count, this.geometry.needsUpdate = !0;
|
|
3075
3075
|
for (let B = this.sortListeners.length - 1; B >= 0; B--)
|
|
3076
3076
|
this.sortListeners[B](p.data.id) && this.sortListeners.splice(B, 1);
|
|
3077
|
-
}, this.cameraPosition = new M(0, 0, 0), this.rotateOnAxis(new M(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new ia({ uniforms: { sourceTexture: {} }, vertexShader:
|
|
3077
|
+
}, this.cameraPosition = new M(0, 0, 0), this.rotateOnAxis(new M(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new ia({ uniforms: { sourceTexture: {} }, vertexShader: bt(), fragmentShader: `
|
|
3078
3078
|
precision highp float;
|
|
3079
3079
|
|
|
3080
3080
|
uniform sampler2D sourceTexture;
|
|
@@ -3083,7 +3083,7 @@ in vec2 vUv;
|
|
|
3083
3083
|
|
|
3084
3084
|
void main() {
|
|
3085
3085
|
gl_FragColor = texture( sourceTexture, vUv );
|
|
3086
|
-
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new ia({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader:
|
|
3086
|
+
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new ia({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: bt(), fragmentShader: `
|
|
3087
3087
|
precision highp float;
|
|
3088
3088
|
|
|
3089
3089
|
uniform sampler3D sourceTexture;
|
|
@@ -3132,7 +3132,7 @@ void main() {
|
|
|
3132
3132
|
addSplatsTile(e, a, t, A) {
|
|
3133
3133
|
const i = this;
|
|
3134
3134
|
e.count;
|
|
3135
|
-
const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, o = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)),
|
|
3135
|
+
const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, o = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), l = [], d = [];
|
|
3136
3136
|
let g = () => {
|
|
3137
3137
|
};
|
|
3138
3138
|
const h = new Float32Array(s.length / r * 3);
|
|
@@ -3147,38 +3147,38 @@ void main() {
|
|
|
3147
3147
|
}, n > this.freeAddresses.size && this.growTextures();
|
|
3148
3148
|
for (let f = 0; f < n; f++) {
|
|
3149
3149
|
const I = this.freeAddresses.poll();
|
|
3150
|
-
isNaN(I) && console.log("insuficient texture size to store splats info"),
|
|
3150
|
+
isNaN(I) && console.log("insuficient texture size to store splats info"), l.push(I), d.push(3 * I);
|
|
3151
3151
|
const p = f * this.batchSize;
|
|
3152
3152
|
this.addSplatsBatch(p, I, e, a, t, A);
|
|
3153
3153
|
}
|
|
3154
3154
|
i.worker.postMessage({ method: "addBatches", insertionIndexes: d, positions: s.buffer, offset: o, stride: r, batchSize: i.batchSize }, [s.buffer]);
|
|
3155
|
-
let
|
|
3155
|
+
let b = !1;
|
|
3156
3156
|
return { hide: () => {
|
|
3157
|
-
|
|
3157
|
+
b == 1 && (b = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
|
|
3158
3158
|
}, show: (f) => {
|
|
3159
|
-
|
|
3159
|
+
b == 0 && (b = !0);
|
|
3160
3160
|
const I = i.sortID;
|
|
3161
3161
|
i.sortListeners.push((p) => p >= I && (f(), !0)), i.worker.postMessage({ method: "showBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
|
|
3162
3162
|
}, remove: () => {
|
|
3163
|
-
g = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }),
|
|
3163
|
+
g = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), l.forEach((f) => i.freeAddresses.add(f));
|
|
3164
3164
|
}, sort: this.sort, raycast: g, isSplatsBatch: !0 };
|
|
3165
3165
|
}
|
|
3166
3166
|
addSplatsBatch(e, a, t, A, i, s) {
|
|
3167
|
-
const r = new Float32Array(4 * this.batchSize), o = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize),
|
|
3167
|
+
const r = new Float32Array(4 * this.batchSize), o = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), l = new Float32Array(4 * this.batchSize);
|
|
3168
3168
|
for (let u = a; u < a + this.batchSize; u++) {
|
|
3169
3169
|
const B = u - a, C = 4 * B, w = e + B;
|
|
3170
3170
|
if (w >= t.count) break;
|
|
3171
|
-
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)), o[C] = Math.floor(255 * A.getX(w)), o[C + 1] = Math.floor(255 * A.getY(w)), o[C + 2] = Math.floor(255 * A.getZ(w)), o[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),
|
|
3171
|
+
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)), o[C] = Math.floor(255 * A.getX(w)), o[C + 1] = Math.floor(255 * A.getY(w)), o[C + 2] = Math.floor(255 * A.getZ(w)), o[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), l[C] = s.getX(w), l[C + 1] = s.getY(w), l[C + 2] = s.getZ(w);
|
|
3172
3172
|
}
|
|
3173
3173
|
const d = Math.floor(a / Math.pow(this.textureSize, 2)), g = Math.ceil(this.batchSize / this.textureSize), h = [0, a / this.textureSize - d * this.textureSize, this.textureSize];
|
|
3174
3174
|
h.push(h[1] + g);
|
|
3175
|
-
const
|
|
3176
|
-
|
|
3175
|
+
const b = new Ge(r, this.textureSize, g, ee, v);
|
|
3176
|
+
b.generateMipmaps = !1, b.magFilter = R, b.minFilter = R, b.anisotropy = 0, b.needsUpdate = !0, this.renderer.initTexture(b), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(b, this.positionRenderTarget, h, d), b.dispose();
|
|
3177
3177
|
const f = new Ge(o, this.textureSize, g, ee, X);
|
|
3178
3178
|
f.generateMipmaps = !1, f.magFilter = R, f.minFilter = R, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, h, d), f.dispose();
|
|
3179
3179
|
const I = new Ge(n, this.textureSize, g, ee, v);
|
|
3180
3180
|
I.generateMipmaps = !1, I.magFilter = R, I.minFilter = R, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov1RenderTarget, h, d), I.dispose();
|
|
3181
|
-
const p = new Ge(
|
|
3181
|
+
const p = new Ge(l, this.textureSize, g, ee, v);
|
|
3182
3182
|
p.generateMipmaps = !1, p.magFilter = R, p.minFilter = R, p.anisotropy = 0, p.needsUpdate = !0, this.renderer.initTexture(p), this.copyTex2D(p, this.cov2RenderTarget, h, d), p.dispose();
|
|
3183
3183
|
}
|
|
3184
3184
|
growTextures() {
|
|
@@ -3209,6 +3209,7 @@ in uint order;
|
|
|
3209
3209
|
out vec4 color;
|
|
3210
3210
|
out vec2 vUv;
|
|
3211
3211
|
out vec3 splatPositionWorld;
|
|
3212
|
+
out vec3 splatPositionModel;
|
|
3212
3213
|
out float splatDepth;
|
|
3213
3214
|
//out float orthographicDepth;
|
|
3214
3215
|
out float splatCrop;
|
|
@@ -3326,11 +3327,11 @@ void modelTransform(in vec3 splatPosition, in mat3 covariance, inout vec3 vertex
|
|
|
3326
3327
|
void main() {
|
|
3327
3328
|
vUv = vec2(position);
|
|
3328
3329
|
|
|
3329
|
-
|
|
3330
|
+
splatPositionModel = vec3(0.0);
|
|
3330
3331
|
mat3 covariance = mat3(0.0);
|
|
3331
|
-
getVertexData(
|
|
3332
|
+
getVertexData(splatPositionModel, covariance);
|
|
3332
3333
|
splatCrop = 0.5*sqrt(color.w); // discard more pixels when opacity is low
|
|
3333
|
-
splatPositionWorld = (modelMatrix * vec4(
|
|
3334
|
+
splatPositionWorld = (modelMatrix * vec4(splatPositionModel, 1.0)).xyz;
|
|
3334
3335
|
|
|
3335
3336
|
|
|
3336
3337
|
vec3 outPosition = vec3(position)*sizeMultiplier;
|
|
@@ -3359,6 +3360,7 @@ precision highp float;
|
|
|
3359
3360
|
|
|
3360
3361
|
in vec4 color;
|
|
3361
3362
|
in vec2 vUv;
|
|
3363
|
+
in vec3 splatPositionModel;
|
|
3362
3364
|
in vec3 splatPositionWorld;
|
|
3363
3365
|
in float splatDepth;
|
|
3364
3366
|
//in float orthographicDepth;
|
|
@@ -3367,7 +3369,7 @@ uniform float textureSize;
|
|
|
3367
3369
|
uniform float cropRadius;
|
|
3368
3370
|
|
|
3369
3371
|
void main() {
|
|
3370
|
-
if(length(
|
|
3372
|
+
if(length(splatPositionModel)>cropRadius) discard;
|
|
3371
3373
|
float l = length(vUv);
|
|
3372
3374
|
|
|
3373
3375
|
// Early discard for pixels outside the radius
|
|
@@ -3383,7 +3385,7 @@ void main() {
|
|
|
3383
3385
|
|
|
3384
3386
|
}`;
|
|
3385
3387
|
}
|
|
3386
|
-
function
|
|
3388
|
+
function bt() {
|
|
3387
3389
|
return `
|
|
3388
3390
|
|
|
3389
3391
|
out vec2 vUv;
|
|
@@ -3430,7 +3432,7 @@ class Wt extends E.Object3D {
|
|
|
3430
3432
|
(a.proxy ? () => fetch(a.proxy, { method: "POST", body: t, signal: a.abortController.signal }) : () => fetch(t, { signal: a.abortController.signal }))().then((i) => {
|
|
3431
3433
|
if (!i.ok) throw new Error(`couldn't load "${e.url}". Request failed with status ${i.status} : ${i.statusText}`);
|
|
3432
3434
|
i.json().then((s) => La(s, t)).then((s) => {
|
|
3433
|
-
a._setup({ rootPath:
|
|
3435
|
+
a._setup({ rootPath: le.dirname(e.url), json: s });
|
|
3434
3436
|
});
|
|
3435
3437
|
}).catch((i) => {
|
|
3436
3438
|
a.displayErrors && gt(i);
|
|
@@ -3505,35 +3507,36 @@ class Wt extends E.Object3D {
|
|
|
3505
3507
|
async function A(i, s, r, o) {
|
|
3506
3508
|
let n;
|
|
3507
3509
|
i.uri ? n = i.uri : i.url && (n = i.url);
|
|
3508
|
-
const
|
|
3509
|
-
if (
|
|
3510
|
+
const l = /^(?:http|https|ftp|tcp|udp):\/\/\S+/;
|
|
3511
|
+
if (l.test(t.rootPath) ? l.test(n) || (n = t._assembleURL(t.rootPath, n)) : le.isAbsolute(t.rootPath) && (n = t.rootPath + le.sep + n), n = t._extractQueryParams(n, t.queryParams), t.queryParams) {
|
|
3510
3512
|
var d = "";
|
|
3511
3513
|
for (let g in t.queryParams) t.queryParams.hasOwnProperty(g) && (d += "&" + g + "=" + t.queryParams[g]);
|
|
3512
3514
|
n.includes("?") ? n += d : n += "?" + d.substring(1);
|
|
3513
3515
|
}
|
|
3514
3516
|
if (n) if (o && (n.includes(".b3dm") || n.includes(".glb") || n.includes(".gltf"))) {
|
|
3515
|
-
|
|
3517
|
+
console.log("get");
|
|
3516
3518
|
try {
|
|
3517
3519
|
t.tileLoader.get(t.abortController, t.uuid, n, (g) => {
|
|
3518
3520
|
t.deleted || (g.asset && g.asset.copyright && (g.asset.copyright.split(";").forEach((h) => {
|
|
3519
3521
|
Z[h] ? Z[h]++ : Z[h] = 1;
|
|
3520
3522
|
}), t.displayCopyright && ma()), t.meshContent.push(g), t.splatsMesh || (g.traverse((h) => {
|
|
3521
3523
|
if ((h.isMesh || h.isPoints) && h.layers.disable(0), h.isMesh && t.occlusionCullingService) {
|
|
3522
|
-
const
|
|
3523
|
-
for (let I = 0; I <
|
|
3524
|
+
const b = h.geometry.attributes.position, f = [];
|
|
3525
|
+
for (let I = 0; I < b.count; I++) f.push(t.color.r, t.color.g, t.color.b);
|
|
3524
3526
|
h.geometry.setAttribute("color", new E.Float32BufferAttribute(f, 3));
|
|
3525
3527
|
}
|
|
3526
3528
|
}), t.add(g), t.updateMatrices()));
|
|
3527
|
-
}, t.cameraOnLoad ? () => t.loadingStrategy == "IMMEDIATE" ? t._calculateDistanceToCamera(t.cameraOnLoad) : t.loadingStrategy == "INCREMENTAL" ? t.parentTile ? t.parentTile._calculateDistanceToCamera(t.cameraOnLoad) / t.parentTile.level : t._calculateDistanceToCamera(t.cameraOnLoad) / t.level : t.loadingStrategy == "PERLEVEL" ? t.parentTile ? t.level + t.parentTile._calculateDistanceToCamera(t.cameraOnLoad) : t.level + t._calculateDistanceToCamera(t.cameraOnLoad) : 0 : () => 0, () => t._getSiblings(), t.level, t.loadingStrategy, !t.json.boundingVolume.region, !!t.json.boundingVolume.region, t.geometricError, t.splatsMesh);
|
|
3529
|
+
}, t.cameraOnLoad ? () => t.loadingStrategy == "IMMEDIATE" ? t._calculateDistanceToCamera(t.cameraOnLoad) : t.loadingStrategy == "INCREMENTAL" ? t.parentTile ? t.parentTile._calculateDistanceToCamera(t.cameraOnLoad) / Math.max(1, t.parentTile.level) : t._calculateDistanceToCamera(t.cameraOnLoad) / Math.max(1, t.level) : t.loadingStrategy == "PERLEVEL" ? t.parentTile ? t.level + t.parentTile._calculateDistanceToCamera(t.cameraOnLoad) : t.level + t._calculateDistanceToCamera(t.cameraOnLoad) : 0 : () => 0, () => t._getSiblings(), t.level, t.loadingStrategy, !t.json.boundingVolume.region, !!t.json.boundingVolume.region, t.geometricError, t.splatsMesh);
|
|
3528
3530
|
} catch (g) {
|
|
3529
3531
|
t.displayErrors && gt(g);
|
|
3530
3532
|
}
|
|
3531
3533
|
} else r && n.includes(".json") && (t.jsonRequested = n, t.tileLoader.get(t.abortController, t.uuid, n, async (g) => {
|
|
3532
|
-
t.jsonReceived = !0, t.deleted || (g.rootPath =
|
|
3534
|
+
t.jsonReceived = !0, t.deleted || (g.rootPath = le.dirname(n), t.json.children.push(g), s == null ? delete t.json.content : t.json.contents.splice(s, 1), t.hasUnloadedJSONContent--);
|
|
3533
3535
|
}));
|
|
3534
3536
|
}
|
|
3535
3537
|
}
|
|
3536
3538
|
dispose() {
|
|
3539
|
+
console.log("dispose");
|
|
3537
3540
|
const e = this;
|
|
3538
3541
|
e.meshContent.forEach((a) => {
|
|
3539
3542
|
a && a.asset && a.asset.copyright && (a.asset.copyright.split(";").forEach((t) => {
|
|
@@ -3676,9 +3679,9 @@ class Wt extends E.Object3D {
|
|
|
3676
3679
|
if (!t.isSetup) return;
|
|
3677
3680
|
const A = t.materialVisibility;
|
|
3678
3681
|
t.boundingVolume && t.geometricError && (t.metric = t._calculateUpdateMetric(e, a)), t.childrenTiles.forEach((i) => i._update(e, a)), function(i) {
|
|
3679
|
-
if (t.
|
|
3680
|
-
|
|
3681
|
-
if (t.
|
|
3682
|
+
if (i < 0) return t.inFrustum = !1, void t._changeContentVisibility(!!t.loadOutsideView);
|
|
3683
|
+
if (t.inFrustum = !0, !!t.hasMeshContent && !(t.meshContent.length < t.hasMeshContent)) {
|
|
3684
|
+
if (t.childrenTiles.length == 0) return void t._changeContentVisibility(!0);
|
|
3682
3685
|
if (i >= t.geometricErrorMultiplier * t.geometricError) t._changeContentVisibility(!0);
|
|
3683
3686
|
else if (i < t.geometricErrorMultiplier * t.geometricError && t.refine == "REPLACE") {
|
|
3684
3687
|
let s = !0;
|
|
@@ -3686,7 +3689,7 @@ class Wt extends E.Object3D {
|
|
|
3686
3689
|
}
|
|
3687
3690
|
}
|
|
3688
3691
|
}(t.metric), function(i) {
|
|
3689
|
-
i < 0 && t.hasMeshContent || t.occlusionCullingService && t.hasMeshContent && !t.occlusionCullingService.hasID(t.colorID) || (!t.hasMeshContent || i <= t.geometricErrorMultiplier * t.geometricError && t.meshContent.length > 0) && t.json && t.json.children && t.childrenTiles.length != t.json.children.length && t._loadJsonChildren(e);
|
|
3692
|
+
i < 0 && t.hasMeshContent || t.occlusionCullingService && t.hasMeshContent && !t.occlusionCullingService.hasID(t.colorID) || (!t.hasMeshContent || i <= t.geometricErrorMultiplier * t.geometricError && (t.meshContent.length > 0 || t.splatsMesh)) && t.json && t.json.children && t.childrenTiles.length != t.json.children.length && t._loadJsonChildren(e);
|
|
3690
3693
|
}(t.metric), function(i, s) {
|
|
3691
3694
|
if (t.hasMeshContent) {
|
|
3692
3695
|
if (!t.inFrustum) return void t._disposeChildren();
|
|
@@ -3801,8 +3804,8 @@ class Wt extends E.Object3D {
|
|
|
3801
3804
|
this.distanceBias = e, this.childrenTiles.forEach((a) => a.setDistanceBias(e));
|
|
3802
3805
|
}
|
|
3803
3806
|
_transformWGS84ToCartesian(e, a, t, A) {
|
|
3804
|
-
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t,
|
|
3805
|
-
A.set(
|
|
3807
|
+
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t, l = n * s * r, d = n * s * Math.sin(e), g = (0.993305615557957 * i + t) * o;
|
|
3808
|
+
A.set(l, d, g);
|
|
3806
3809
|
}
|
|
3807
3810
|
}
|
|
3808
3811
|
function gt(c) {
|
|
@@ -3827,7 +3830,7 @@ class Ga extends E.Object3D {
|
|
|
3827
3830
|
if (e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid = jt(), e.tileLoader ? this.tileLoader = e.tileLoader : console.error("an instanced tileset must be provided an InstancedTilesetLoader"), this.master = e.master, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.childrenTiles = [], this.jsonChildren = [], this.meshContent = /* @__PURE__ */ new Set(), this.static = e.static, this.static && (this.matrixAutoUpdate = !1, this.matrixWorldAutoUpdate = !1), this.tileContent, this.refinement, this.rootPath, this.geometricError, this.boundingVolume, this.json, this.materialVisibility = !1, this.inFrustum = !0, this.level = e.level ? e.level : 0, this.hasMeshContent = 0, this.hasUnloadedJSONContent = 0, this.centerModel = e.centerModel, this.deleted = !1, this.abortController = new AbortController(), e.json) this.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, e.json.children && (this.jsonChildren = e.json.children), a.setup(e);
|
|
3828
3831
|
else if (e.url) {
|
|
3829
3832
|
this.loadJson = (i, s) => {
|
|
3830
|
-
const r =
|
|
3833
|
+
const r = le.dirname(s);
|
|
3831
3834
|
a.setup({ rootPath: r, json: i, onLoadCallback: e.onLoadCallback });
|
|
3832
3835
|
};
|
|
3833
3836
|
var t = e.url;
|
|
@@ -3888,7 +3891,7 @@ class Ga extends E.Object3D {
|
|
|
3888
3891
|
let A;
|
|
3889
3892
|
t.uri ? A = t.uri : t.url && (A = t.url);
|
|
3890
3893
|
const i = /^(?:http|https|ftp|tcp|udp):\/\/\S+/;
|
|
3891
|
-
if (i.test(e.rootPath) ? i.test(A) || (A = e.assembleURL(e.rootPath, A)) :
|
|
3894
|
+
if (i.test(e.rootPath) ? i.test(A) || (A = e.assembleURL(e.rootPath, A)) : le.isAbsolute(e.rootPath) && (A = e.rootPath + le.sep + A), A = e.extractQueryParams(A, e.queryParams), e.queryParams) {
|
|
3892
3895
|
var s = "";
|
|
3893
3896
|
for (let r in e.queryParams) e.queryParams.hasOwnProperty(r) && (s += "&" + r + "=" + e.queryParams[r]);
|
|
3894
3897
|
A.includes("?") ? A += s : A += "?" + s.substring(1);
|
|
@@ -3901,7 +3904,7 @@ class Ga extends E.Object3D {
|
|
|
3901
3904
|
this.deleted || this.meshContent.add(e);
|
|
3902
3905
|
}
|
|
3903
3906
|
loadJson(e, a) {
|
|
3904
|
-
this.deleted || (this.json.children && (this.jsonChildren = this.json.children), e.rootPath =
|
|
3907
|
+
this.deleted || (this.json.children && (this.jsonChildren = this.json.children), e.rootPath = le.dirname(a), this.jsonChildren.push(e), this.hasUnloadedJSONContent--);
|
|
3905
3908
|
}
|
|
3906
3909
|
dispose() {
|
|
3907
3910
|
const e = this;
|
|
@@ -3998,8 +4001,8 @@ class Ga extends E.Object3D {
|
|
|
3998
4001
|
return this.matrixWorld;
|
|
3999
4002
|
}
|
|
4000
4003
|
transformWGS84ToCartesian(e, a, t, A) {
|
|
4001
|
-
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t,
|
|
4002
|
-
A.set(
|
|
4004
|
+
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t, l = n * s * r, d = n * s * Math.sin(e), g = (0.993305615557957 * i + t) * o;
|
|
4005
|
+
A.set(l, d, g);
|
|
4003
4006
|
}
|
|
4004
4007
|
}
|
|
4005
4008
|
class as extends E.Object3D {
|
|
@@ -4175,9 +4178,9 @@ class ts {
|
|
|
4175
4178
|
}
|
|
4176
4179
|
}
|
|
4177
4180
|
}
|
|
4178
|
-
get(e, a, t, A, i, s, r, o, n,
|
|
4179
|
-
const d = this, g = function(
|
|
4180
|
-
for (var f =
|
|
4181
|
+
get(e, a, t, A, i, s, r, o, n, l) {
|
|
4182
|
+
const d = this, g = function(b) {
|
|
4183
|
+
for (var f = b.split("/"), I = [], p = 0, u = 0; u < f.length; u++) {
|
|
4181
4184
|
var B = f[u];
|
|
4182
4185
|
B !== "." && B !== "" && B !== ".." ? I[p++] = B : B === ".." && p > 0 && p--;
|
|
4183
4186
|
}
|
|
@@ -4190,19 +4193,19 @@ class ts {
|
|
|
4190
4193
|
const h = d.cache.get(g);
|
|
4191
4194
|
if (h) h.addInstance(A);
|
|
4192
4195
|
else if (a.includes(".b3dm") || a.includes(".glb") || a.includes(".gltf")) {
|
|
4193
|
-
const
|
|
4194
|
-
|
|
4196
|
+
const b = new Yi(d.scene);
|
|
4197
|
+
b.addInstance(A), d.cache.put(g, b);
|
|
4195
4198
|
const f = new AbortController();
|
|
4196
4199
|
e.signal.addEventListener("abort", () => {
|
|
4197
|
-
|
|
4198
|
-
}), this.downloads.push({ abortController: f, tile:
|
|
4200
|
+
b.getCount() == 0 && f.abort();
|
|
4201
|
+
}), this.downloads.push({ abortController: f, tile: b, key: g, path: a, distanceFunction: i, getSiblings: s, level: r, uuid: t, sceneZupToYup: o, meshZupToYup: n, geometricError: l, shouldDoDownload: () => !0 });
|
|
4199
4202
|
} else if (a.includes(".json")) {
|
|
4200
|
-
const
|
|
4201
|
-
|
|
4203
|
+
const b = new Wi();
|
|
4204
|
+
b.addInstance(A), d.cache.put(g, b);
|
|
4202
4205
|
const f = new AbortController();
|
|
4203
4206
|
e.signal.addEventListener("abort", () => {
|
|
4204
|
-
|
|
4205
|
-
}), this.downloads.push({ abortController: f, tile:
|
|
4207
|
+
b.getCount() == 0 && f.abort();
|
|
4208
|
+
}), this.downloads.push({ abortController: f, tile: b, key: g, path: a, distanceFunction: i, getSiblings: s, level: r, shouldDoDownload: () => !0 });
|
|
4206
4209
|
}
|
|
4207
4210
|
}
|
|
4208
4211
|
_getNextDownloads() {
|