@vctrl/hooks 0.7.8 → 0.8.0
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/README.md +3 -1
- package/index.cjs.js +1 -1
- package/index.es.js +2 -2
- package/{model-context-DLPGvQ8f.cjs → model-context-Du5WQddA.cjs} +1 -1
- package/{model-context-hgFMs-nK.js → model-context-fEKN9ymq.js} +573 -584
- package/package.json +6 -6
- package/use-load-model/model-context.d.ts +24 -20
- package/use-load-model/use-load-model.d.ts +12 -10
- package/use-load-model.cjs.js +1 -1
- package/use-load-model.es.js +1 -1
- package/use-optimize-model/use-optimize-model.d.ts +2 -1
- package/{use-optimize-model-CgEMWTEN.js → use-optimize-model-BXWR9d6e.js} +54 -48
- package/use-optimize-model-EEn8K4nu.cjs +1 -0
- package/use-optimize-model.cjs.js +1 -1
- package/use-optimize-model.es.js +1 -1
- package/use-optimize-model-BcDBGz71.cjs +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as Bt } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback as z, useRef as Ct, useReducer as bt, useEffect as lt, createContext as ft, useContext as Et } from "react";
|
|
3
|
-
import { TrianglesDrawMode as Qt, TriangleFanDrawMode as XA, TriangleStripDrawMode as Ge, Loader as TA, LoaderUtils as mA, FileLoader as aA, Color as rA, LinearSRGBColorSpace as Y, SpotLight as dt, PointLight as ht, DirectionalLight as pt, MeshBasicMaterial as hA, SRGBColorSpace as AA, MeshPhysicalMaterial as W, Vector2 as SA, Matrix4 as yA, Vector3 as CA, Quaternion as xe, InstancedMesh as ut, InstancedBufferAttribute as mt, Object3D as
|
|
3
|
+
import { TrianglesDrawMode as Qt, TriangleFanDrawMode as XA, TriangleStripDrawMode as Ge, Loader as TA, LoaderUtils as mA, FileLoader as aA, Color as rA, LinearSRGBColorSpace as Y, SpotLight as dt, PointLight as ht, DirectionalLight as pt, MeshBasicMaterial as hA, SRGBColorSpace as AA, MeshPhysicalMaterial as W, Vector2 as SA, Matrix4 as yA, Vector3 as CA, Quaternion as xe, InstancedMesh as ut, InstancedBufferAttribute as mt, Object3D as ie, TextureLoader as Te, ImageBitmapLoader as wt, BufferAttribute as X, InterleavedBuffer as Dt, InterleavedBufferAttribute as kt, LinearFilter as GA, LinearMipmapLinearFilter as se, RepeatWrapping as xA, PointsMaterial as Ft, Material as NA, LineBasicMaterial as Rt, MeshStandardMaterial as Le, DoubleSide as St, PropertyBinding as yt, BufferGeometry as ne, SkinnedMesh as Gt, Mesh as Me, LineSegments as xt, Line as Tt, LineLoop as Lt, Points as Mt, Group as kA, PerspectiveCamera as Nt, MathUtils as Ut, OrthographicCamera as _t, Skeleton as qt, AnimationClip as Ht, Bone as Ot, InterpolateLinear as Ne, ColorManagement as le, NearestFilter as vt, NearestMipmapNearestFilter as Jt, LinearMipmapNearestFilter as jt, NearestMipmapLinearFilter as Kt, ClampToEdgeWrapping as Ue, MirroredRepeatWrapping as _e, InterpolateDiscrete as Pt, FrontSide as Yt, Texture as fe, VectorKeyframeTrack as Ee, NumberKeyframeTrack as Qe, QuaternionKeyframeTrack as de, Box3 as Wt, Sphere as Vt, Interpolant as zt, CompressedCubeTexture as Xt, UnsignedByteType as K, CompressedArrayTexture as Zt, CompressedTexture as qe, RGBAFormat as bA, RGBA_ASTC_4x4_Format as $t, RGBA_BPTC_Format as Aa, RGBA_ETC2_EAC_Format as ea, RGBA_PVRTC_4BPPV1_Format as ta, RGBA_S3TC_DXT5_Format as aa, RGB_ETC1_Format as ia, RGB_ETC2_Format as sa, RGB_PVRTC_4BPPV1_Format as na, RGBA_S3TC_DXT1_Format as oa, FloatType as FA, HalfFloatType as RA, DataTexture as ra, Data3DTexture as ca, DisplayP3ColorSpace as ga, LinearDisplayP3ColorSpace as Ia, NoColorSpace as oA, RGFormat as pA, RedFormat as uA, RGBA_ASTC_6x6_Format as he, WebGLRenderer as Ba } from "three";
|
|
4
4
|
const BA = {}, V = {
|
|
5
5
|
emit(n, A) {
|
|
6
6
|
const e = BA[n];
|
|
@@ -55,8 +55,8 @@ async function pe(n) {
|
|
|
55
55
|
return new Promise((a, t) => {
|
|
56
56
|
e.onloadend = () => {
|
|
57
57
|
if (!(e != null && e.result)) return;
|
|
58
|
-
const
|
|
59
|
-
a(
|
|
58
|
+
const i = (e == null ? void 0 : e.result).split(",")[1];
|
|
59
|
+
a(i);
|
|
60
60
|
}, e.onerror = t, e.readAsDataURL(A);
|
|
61
61
|
});
|
|
62
62
|
}
|
|
@@ -76,24 +76,24 @@ function ue(n, A) {
|
|
|
76
76
|
if (A === XA || A === Ge) {
|
|
77
77
|
let e = n.getIndex();
|
|
78
78
|
if (e === null) {
|
|
79
|
-
const
|
|
79
|
+
const s = [], o = n.getAttribute("position");
|
|
80
80
|
if (o !== void 0) {
|
|
81
81
|
for (let r = 0; r < o.count; r++)
|
|
82
|
-
|
|
83
|
-
n.setIndex(
|
|
82
|
+
s.push(r);
|
|
83
|
+
n.setIndex(s), e = n.getIndex();
|
|
84
84
|
} else
|
|
85
85
|
return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."), n;
|
|
86
86
|
}
|
|
87
87
|
const a = e.count - 2, t = [];
|
|
88
88
|
if (A === XA)
|
|
89
|
-
for (let
|
|
90
|
-
t.push(e.getX(0)), t.push(e.getX(
|
|
89
|
+
for (let s = 1; s <= a; s++)
|
|
90
|
+
t.push(e.getX(0)), t.push(e.getX(s)), t.push(e.getX(s + 1));
|
|
91
91
|
else
|
|
92
|
-
for (let
|
|
93
|
-
|
|
92
|
+
for (let s = 0; s < a; s++)
|
|
93
|
+
s % 2 === 0 ? (t.push(e.getX(s)), t.push(e.getX(s + 1)), t.push(e.getX(s + 2))) : (t.push(e.getX(s + 2)), t.push(e.getX(s + 1)), t.push(e.getX(s)));
|
|
94
94
|
t.length / 3 !== a && console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");
|
|
95
|
-
const
|
|
96
|
-
return
|
|
95
|
+
const i = n.clone();
|
|
96
|
+
return i.setIndex(t), i.clearGroups(), i;
|
|
97
97
|
} else
|
|
98
98
|
return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", A), n;
|
|
99
99
|
}
|
|
@@ -136,23 +136,23 @@ class la extends TA {
|
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
138
|
load(A, e, a, t) {
|
|
139
|
-
const
|
|
140
|
-
let
|
|
139
|
+
const i = this;
|
|
140
|
+
let s;
|
|
141
141
|
if (this.resourcePath !== "")
|
|
142
|
-
|
|
142
|
+
s = this.resourcePath;
|
|
143
143
|
else if (this.path !== "") {
|
|
144
144
|
const c = mA.extractUrlBase(A);
|
|
145
|
-
|
|
145
|
+
s = mA.resolveURL(c, this.path);
|
|
146
146
|
} else
|
|
147
|
-
|
|
147
|
+
s = mA.extractUrlBase(A);
|
|
148
148
|
this.manager.itemStart(A);
|
|
149
149
|
const o = function(c) {
|
|
150
|
-
t ? t(c) : console.error(c),
|
|
150
|
+
t ? t(c) : console.error(c), i.manager.itemError(A), i.manager.itemEnd(A);
|
|
151
151
|
}, r = new aA(this.manager);
|
|
152
152
|
r.setPath(this.path), r.setResponseType("arraybuffer"), r.setRequestHeader(this.requestHeader), r.setWithCredentials(this.withCredentials), r.load(A, function(c) {
|
|
153
153
|
try {
|
|
154
|
-
|
|
155
|
-
e(I),
|
|
154
|
+
i.parse(c, s, function(I) {
|
|
155
|
+
e(I), i.manager.itemEnd(A);
|
|
156
156
|
}, o);
|
|
157
157
|
} catch (I) {
|
|
158
158
|
o(I);
|
|
@@ -180,28 +180,28 @@ class la extends TA {
|
|
|
180
180
|
return this.pluginCallbacks.indexOf(A) !== -1 && this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A), 1), this;
|
|
181
181
|
}
|
|
182
182
|
parse(A, e, a, t) {
|
|
183
|
-
let
|
|
184
|
-
const
|
|
183
|
+
let i;
|
|
184
|
+
const s = {}, o = {}, r = new TextDecoder();
|
|
185
185
|
if (typeof A == "string")
|
|
186
|
-
|
|
186
|
+
i = JSON.parse(A);
|
|
187
187
|
else if (A instanceof ArrayBuffer)
|
|
188
188
|
if (r.decode(new Uint8Array(A, 0, 4)) === Oe) {
|
|
189
189
|
try {
|
|
190
|
-
|
|
190
|
+
s[y.KHR_BINARY_GLTF] = new Ma(A);
|
|
191
191
|
} catch (g) {
|
|
192
192
|
t && t(g);
|
|
193
193
|
return;
|
|
194
194
|
}
|
|
195
|
-
|
|
195
|
+
i = JSON.parse(s[y.KHR_BINARY_GLTF].content);
|
|
196
196
|
} else
|
|
197
|
-
|
|
197
|
+
i = JSON.parse(r.decode(A));
|
|
198
198
|
else
|
|
199
|
-
|
|
200
|
-
if (
|
|
199
|
+
i = A;
|
|
200
|
+
if (i.asset === void 0 || i.asset.version[0] < 2) {
|
|
201
201
|
t && t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));
|
|
202
202
|
return;
|
|
203
203
|
}
|
|
204
|
-
const c = new Wa(
|
|
204
|
+
const c = new Wa(i, {
|
|
205
205
|
path: e || this.resourcePath || "",
|
|
206
206
|
crossOrigin: this.crossOrigin,
|
|
207
207
|
requestHeader: this.requestHeader,
|
|
@@ -212,34 +212,34 @@ class la extends TA {
|
|
|
212
212
|
c.fileLoader.setRequestHeader(this.requestHeader);
|
|
213
213
|
for (let I = 0; I < this.pluginCallbacks.length; I++) {
|
|
214
214
|
const g = this.pluginCallbacks[I](c);
|
|
215
|
-
g.name || console.error("THREE.GLTFLoader: Invalid plugin found: missing name"), o[g.name] = g,
|
|
215
|
+
g.name || console.error("THREE.GLTFLoader: Invalid plugin found: missing name"), o[g.name] = g, s[g.name] = !0;
|
|
216
216
|
}
|
|
217
|
-
if (
|
|
218
|
-
for (let I = 0; I <
|
|
219
|
-
const g =
|
|
217
|
+
if (i.extensionsUsed)
|
|
218
|
+
for (let I = 0; I < i.extensionsUsed.length; ++I) {
|
|
219
|
+
const g = i.extensionsUsed[I], B = i.extensionsRequired || [];
|
|
220
220
|
switch (g) {
|
|
221
221
|
case y.KHR_MATERIALS_UNLIT:
|
|
222
|
-
|
|
222
|
+
s[g] = new Qa();
|
|
223
223
|
break;
|
|
224
224
|
case y.KHR_DRACO_MESH_COMPRESSION:
|
|
225
|
-
|
|
225
|
+
s[g] = new Na(i, this.dracoLoader);
|
|
226
226
|
break;
|
|
227
227
|
case y.KHR_TEXTURE_TRANSFORM:
|
|
228
|
-
|
|
228
|
+
s[g] = new Ua();
|
|
229
229
|
break;
|
|
230
230
|
case y.KHR_MESH_QUANTIZATION:
|
|
231
|
-
|
|
231
|
+
s[g] = new _a();
|
|
232
232
|
break;
|
|
233
233
|
default:
|
|
234
234
|
B.indexOf(g) >= 0 && o[g] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + g + '".');
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
|
-
c.setExtensions(
|
|
237
|
+
c.setExtensions(s), c.setPlugins(o), c.parse(a, t);
|
|
238
238
|
}
|
|
239
239
|
parseAsync(A, e) {
|
|
240
240
|
const a = this;
|
|
241
|
-
return new Promise(function(t,
|
|
242
|
-
a.parse(A, e, t,
|
|
241
|
+
return new Promise(function(t, i) {
|
|
242
|
+
a.parse(A, e, t, i);
|
|
243
243
|
});
|
|
244
244
|
}
|
|
245
245
|
}
|
|
@@ -291,15 +291,15 @@ class Ea {
|
|
|
291
291
|
_markDefs() {
|
|
292
292
|
const A = this.parser, e = this.parser.json.nodes || [];
|
|
293
293
|
for (let a = 0, t = e.length; a < t; a++) {
|
|
294
|
-
const
|
|
295
|
-
|
|
294
|
+
const i = e[a];
|
|
295
|
+
i.extensions && i.extensions[this.name] && i.extensions[this.name].light !== void 0 && A._addNodeRef(this.cache, i.extensions[this.name].light);
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
_loadLight(A) {
|
|
299
299
|
const e = this.parser, a = "light:" + A;
|
|
300
300
|
let t = e.cache.get(a);
|
|
301
301
|
if (t) return t;
|
|
302
|
-
const
|
|
302
|
+
const i = e.json, r = ((i.extensions && i.extensions[this.name] || {}).lights || [])[A];
|
|
303
303
|
let c;
|
|
304
304
|
const I = new rA(16777215);
|
|
305
305
|
r.color !== void 0 && I.setRGB(r.color[0], r.color[1], r.color[2], Y);
|
|
@@ -324,7 +324,7 @@ class Ea {
|
|
|
324
324
|
return this._loadLight(e);
|
|
325
325
|
}
|
|
326
326
|
createNodeAttachment(A) {
|
|
327
|
-
const e = this, a = this.parser,
|
|
327
|
+
const e = this, a = this.parser, i = a.json.nodes[A], o = (i.extensions && i.extensions[this.name] || {}).light;
|
|
328
328
|
return o === void 0 ? null : this._loadLight(o).then(function(r) {
|
|
329
329
|
return a._getNodeRef(e.cache, o, r);
|
|
330
330
|
});
|
|
@@ -340,13 +340,13 @@ class Qa {
|
|
|
340
340
|
extendParams(A, e, a) {
|
|
341
341
|
const t = [];
|
|
342
342
|
A.color = new rA(1, 1, 1), A.opacity = 1;
|
|
343
|
-
const
|
|
344
|
-
if (
|
|
345
|
-
if (Array.isArray(
|
|
346
|
-
const
|
|
347
|
-
A.color.setRGB(
|
|
343
|
+
const i = e.pbrMetallicRoughness;
|
|
344
|
+
if (i) {
|
|
345
|
+
if (Array.isArray(i.baseColorFactor)) {
|
|
346
|
+
const s = i.baseColorFactor;
|
|
347
|
+
A.color.setRGB(s[0], s[1], s[2], Y), A.opacity = s[3];
|
|
348
348
|
}
|
|
349
|
-
|
|
349
|
+
i.baseColorTexture !== void 0 && t.push(a.assignTexture(A, "map", i.baseColorTexture, AA));
|
|
350
350
|
}
|
|
351
351
|
return Promise.all(t);
|
|
352
352
|
}
|
|
@@ -359,8 +359,8 @@ class da {
|
|
|
359
359
|
const t = this.parser.json.materials[A];
|
|
360
360
|
if (!t.extensions || !t.extensions[this.name])
|
|
361
361
|
return Promise.resolve();
|
|
362
|
-
const
|
|
363
|
-
return
|
|
362
|
+
const i = t.extensions[this.name].emissiveStrength;
|
|
363
|
+
return i !== void 0 && (e.emissiveIntensity = i), Promise.resolve();
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
366
|
class ha {
|
|
@@ -375,12 +375,12 @@ class ha {
|
|
|
375
375
|
const a = this.parser, t = a.json.materials[A];
|
|
376
376
|
if (!t.extensions || !t.extensions[this.name])
|
|
377
377
|
return Promise.resolve();
|
|
378
|
-
const
|
|
379
|
-
if (
|
|
380
|
-
const o =
|
|
378
|
+
const i = [], s = t.extensions[this.name];
|
|
379
|
+
if (s.clearcoatFactor !== void 0 && (e.clearcoat = s.clearcoatFactor), s.clearcoatTexture !== void 0 && i.push(a.assignTexture(e, "clearcoatMap", s.clearcoatTexture)), s.clearcoatRoughnessFactor !== void 0 && (e.clearcoatRoughness = s.clearcoatRoughnessFactor), s.clearcoatRoughnessTexture !== void 0 && i.push(a.assignTexture(e, "clearcoatRoughnessMap", s.clearcoatRoughnessTexture)), s.clearcoatNormalTexture !== void 0 && (i.push(a.assignTexture(e, "clearcoatNormalMap", s.clearcoatNormalTexture)), s.clearcoatNormalTexture.scale !== void 0)) {
|
|
380
|
+
const o = s.clearcoatNormalTexture.scale;
|
|
381
381
|
e.clearcoatNormalScale = new SA(o, o);
|
|
382
382
|
}
|
|
383
|
-
return Promise.all(
|
|
383
|
+
return Promise.all(i);
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
386
|
class pa {
|
|
@@ -395,8 +395,8 @@ class pa {
|
|
|
395
395
|
const t = this.parser.json.materials[A];
|
|
396
396
|
if (!t.extensions || !t.extensions[this.name])
|
|
397
397
|
return Promise.resolve();
|
|
398
|
-
const
|
|
399
|
-
return e.dispersion =
|
|
398
|
+
const i = t.extensions[this.name];
|
|
399
|
+
return e.dispersion = i.dispersion !== void 0 ? i.dispersion : 0, Promise.resolve();
|
|
400
400
|
}
|
|
401
401
|
}
|
|
402
402
|
class ua {
|
|
@@ -411,8 +411,8 @@ class ua {
|
|
|
411
411
|
const a = this.parser, t = a.json.materials[A];
|
|
412
412
|
if (!t.extensions || !t.extensions[this.name])
|
|
413
413
|
return Promise.resolve();
|
|
414
|
-
const
|
|
415
|
-
return
|
|
414
|
+
const i = [], s = t.extensions[this.name];
|
|
415
|
+
return s.iridescenceFactor !== void 0 && (e.iridescence = s.iridescenceFactor), s.iridescenceTexture !== void 0 && i.push(a.assignTexture(e, "iridescenceMap", s.iridescenceTexture)), s.iridescenceIor !== void 0 && (e.iridescenceIOR = s.iridescenceIor), e.iridescenceThicknessRange === void 0 && (e.iridescenceThicknessRange = [100, 400]), s.iridescenceThicknessMinimum !== void 0 && (e.iridescenceThicknessRange[0] = s.iridescenceThicknessMinimum), s.iridescenceThicknessMaximum !== void 0 && (e.iridescenceThicknessRange[1] = s.iridescenceThicknessMaximum), s.iridescenceThicknessTexture !== void 0 && i.push(a.assignTexture(e, "iridescenceThicknessMap", s.iridescenceThicknessTexture)), Promise.all(i);
|
|
416
416
|
}
|
|
417
417
|
}
|
|
418
418
|
class ma {
|
|
@@ -427,14 +427,14 @@ class ma {
|
|
|
427
427
|
const a = this.parser, t = a.json.materials[A];
|
|
428
428
|
if (!t.extensions || !t.extensions[this.name])
|
|
429
429
|
return Promise.resolve();
|
|
430
|
-
const
|
|
430
|
+
const i = [];
|
|
431
431
|
e.sheenColor = new rA(0, 0, 0), e.sheenRoughness = 0, e.sheen = 1;
|
|
432
|
-
const
|
|
433
|
-
if (
|
|
434
|
-
const o =
|
|
432
|
+
const s = t.extensions[this.name];
|
|
433
|
+
if (s.sheenColorFactor !== void 0) {
|
|
434
|
+
const o = s.sheenColorFactor;
|
|
435
435
|
e.sheenColor.setRGB(o[0], o[1], o[2], Y);
|
|
436
436
|
}
|
|
437
|
-
return
|
|
437
|
+
return s.sheenRoughnessFactor !== void 0 && (e.sheenRoughness = s.sheenRoughnessFactor), s.sheenColorTexture !== void 0 && i.push(a.assignTexture(e, "sheenColorMap", s.sheenColorTexture, AA)), s.sheenRoughnessTexture !== void 0 && i.push(a.assignTexture(e, "sheenRoughnessMap", s.sheenRoughnessTexture)), Promise.all(i);
|
|
438
438
|
}
|
|
439
439
|
}
|
|
440
440
|
class wa {
|
|
@@ -449,8 +449,8 @@ class wa {
|
|
|
449
449
|
const a = this.parser, t = a.json.materials[A];
|
|
450
450
|
if (!t.extensions || !t.extensions[this.name])
|
|
451
451
|
return Promise.resolve();
|
|
452
|
-
const
|
|
453
|
-
return
|
|
452
|
+
const i = [], s = t.extensions[this.name];
|
|
453
|
+
return s.transmissionFactor !== void 0 && (e.transmission = s.transmissionFactor), s.transmissionTexture !== void 0 && i.push(a.assignTexture(e, "transmissionMap", s.transmissionTexture)), Promise.all(i);
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
456
|
class Da {
|
|
@@ -465,10 +465,10 @@ class Da {
|
|
|
465
465
|
const a = this.parser, t = a.json.materials[A];
|
|
466
466
|
if (!t.extensions || !t.extensions[this.name])
|
|
467
467
|
return Promise.resolve();
|
|
468
|
-
const
|
|
469
|
-
e.thickness =
|
|
470
|
-
const o =
|
|
471
|
-
return e.attenuationColor = new rA().setRGB(o[0], o[1], o[2], Y), Promise.all(
|
|
468
|
+
const i = [], s = t.extensions[this.name];
|
|
469
|
+
e.thickness = s.thicknessFactor !== void 0 ? s.thicknessFactor : 0, s.thicknessTexture !== void 0 && i.push(a.assignTexture(e, "thicknessMap", s.thicknessTexture)), e.attenuationDistance = s.attenuationDistance || 1 / 0;
|
|
470
|
+
const o = s.attenuationColor || [1, 1, 1];
|
|
471
|
+
return e.attenuationColor = new rA().setRGB(o[0], o[1], o[2], Y), Promise.all(i);
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
474
|
class ka {
|
|
@@ -483,8 +483,8 @@ class ka {
|
|
|
483
483
|
const t = this.parser.json.materials[A];
|
|
484
484
|
if (!t.extensions || !t.extensions[this.name])
|
|
485
485
|
return Promise.resolve();
|
|
486
|
-
const
|
|
487
|
-
return e.ior =
|
|
486
|
+
const i = t.extensions[this.name];
|
|
487
|
+
return e.ior = i.ior !== void 0 ? i.ior : 1.5, Promise.resolve();
|
|
488
488
|
}
|
|
489
489
|
}
|
|
490
490
|
class Fa {
|
|
@@ -499,10 +499,10 @@ class Fa {
|
|
|
499
499
|
const a = this.parser, t = a.json.materials[A];
|
|
500
500
|
if (!t.extensions || !t.extensions[this.name])
|
|
501
501
|
return Promise.resolve();
|
|
502
|
-
const
|
|
503
|
-
e.specularIntensity =
|
|
504
|
-
const o =
|
|
505
|
-
return e.specularColor = new rA().setRGB(o[0], o[1], o[2], Y),
|
|
502
|
+
const i = [], s = t.extensions[this.name];
|
|
503
|
+
e.specularIntensity = s.specularFactor !== void 0 ? s.specularFactor : 1, s.specularTexture !== void 0 && i.push(a.assignTexture(e, "specularIntensityMap", s.specularTexture));
|
|
504
|
+
const o = s.specularColorFactor || [1, 1, 1];
|
|
505
|
+
return e.specularColor = new rA().setRGB(o[0], o[1], o[2], Y), s.specularColorTexture !== void 0 && i.push(a.assignTexture(e, "specularColorMap", s.specularColorTexture, AA)), Promise.all(i);
|
|
506
506
|
}
|
|
507
507
|
}
|
|
508
508
|
class Ra {
|
|
@@ -517,8 +517,8 @@ class Ra {
|
|
|
517
517
|
const a = this.parser, t = a.json.materials[A];
|
|
518
518
|
if (!t.extensions || !t.extensions[this.name])
|
|
519
519
|
return Promise.resolve();
|
|
520
|
-
const
|
|
521
|
-
return e.bumpScale =
|
|
520
|
+
const i = [], s = t.extensions[this.name];
|
|
521
|
+
return e.bumpScale = s.bumpFactor !== void 0 ? s.bumpFactor : 1, s.bumpTexture !== void 0 && i.push(a.assignTexture(e, "bumpMap", s.bumpTexture)), Promise.all(i);
|
|
522
522
|
}
|
|
523
523
|
}
|
|
524
524
|
class Sa {
|
|
@@ -533,8 +533,8 @@ class Sa {
|
|
|
533
533
|
const a = this.parser, t = a.json.materials[A];
|
|
534
534
|
if (!t.extensions || !t.extensions[this.name])
|
|
535
535
|
return Promise.resolve();
|
|
536
|
-
const
|
|
537
|
-
return
|
|
536
|
+
const i = [], s = t.extensions[this.name];
|
|
537
|
+
return s.anisotropyStrength !== void 0 && (e.anisotropy = s.anisotropyStrength), s.anisotropyRotation !== void 0 && (e.anisotropyRotation = s.anisotropyRotation), s.anisotropyTexture !== void 0 && i.push(a.assignTexture(e, "anisotropyMap", s.anisotropyTexture)), Promise.all(i);
|
|
538
538
|
}
|
|
539
539
|
}
|
|
540
540
|
class ya {
|
|
@@ -545,13 +545,13 @@ class ya {
|
|
|
545
545
|
const e = this.parser, a = e.json, t = a.textures[A];
|
|
546
546
|
if (!t.extensions || !t.extensions[this.name])
|
|
547
547
|
return null;
|
|
548
|
-
const
|
|
549
|
-
if (!
|
|
548
|
+
const i = t.extensions[this.name], s = e.options.ktx2Loader;
|
|
549
|
+
if (!s) {
|
|
550
550
|
if (a.extensionsRequired && a.extensionsRequired.indexOf(this.name) >= 0)
|
|
551
551
|
throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");
|
|
552
552
|
return null;
|
|
553
553
|
}
|
|
554
|
-
return e.loadTextureImage(A,
|
|
554
|
+
return e.loadTextureImage(A, i.source, s);
|
|
555
555
|
}
|
|
556
556
|
}
|
|
557
557
|
class Ga {
|
|
@@ -559,17 +559,17 @@ class Ga {
|
|
|
559
559
|
this.parser = A, this.name = y.EXT_TEXTURE_WEBP, this.isSupported = null;
|
|
560
560
|
}
|
|
561
561
|
loadTexture(A) {
|
|
562
|
-
const e = this.name, a = this.parser, t = a.json,
|
|
563
|
-
if (!
|
|
562
|
+
const e = this.name, a = this.parser, t = a.json, i = t.textures[A];
|
|
563
|
+
if (!i.extensions || !i.extensions[e])
|
|
564
564
|
return null;
|
|
565
|
-
const
|
|
565
|
+
const s = i.extensions[e], o = t.images[s.source];
|
|
566
566
|
let r = a.textureLoader;
|
|
567
567
|
if (o.uri) {
|
|
568
568
|
const c = a.options.manager.getHandler(o.uri);
|
|
569
569
|
c !== null && (r = c);
|
|
570
570
|
}
|
|
571
571
|
return this.detectSupport().then(function(c) {
|
|
572
|
-
if (c) return a.loadTextureImage(A,
|
|
572
|
+
if (c) return a.loadTextureImage(A, s.source, r);
|
|
573
573
|
if (t.extensionsRequired && t.extensionsRequired.indexOf(e) >= 0)
|
|
574
574
|
throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");
|
|
575
575
|
return a.loadTexture(A);
|
|
@@ -589,17 +589,17 @@ class xa {
|
|
|
589
589
|
this.parser = A, this.name = y.EXT_TEXTURE_AVIF, this.isSupported = null;
|
|
590
590
|
}
|
|
591
591
|
loadTexture(A) {
|
|
592
|
-
const e = this.name, a = this.parser, t = a.json,
|
|
593
|
-
if (!
|
|
592
|
+
const e = this.name, a = this.parser, t = a.json, i = t.textures[A];
|
|
593
|
+
if (!i.extensions || !i.extensions[e])
|
|
594
594
|
return null;
|
|
595
|
-
const
|
|
595
|
+
const s = i.extensions[e], o = t.images[s.source];
|
|
596
596
|
let r = a.textureLoader;
|
|
597
597
|
if (o.uri) {
|
|
598
598
|
const c = a.options.manager.getHandler(o.uri);
|
|
599
599
|
c !== null && (r = c);
|
|
600
600
|
}
|
|
601
601
|
return this.detectSupport().then(function(c) {
|
|
602
|
-
if (c) return a.loadTextureImage(A,
|
|
602
|
+
if (c) return a.loadTextureImage(A, s.source, r);
|
|
603
603
|
if (t.extensionsRequired && t.extensionsRequired.indexOf(e) >= 0)
|
|
604
604
|
throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");
|
|
605
605
|
return a.loadTexture(A);
|
|
@@ -621,19 +621,19 @@ class Ta {
|
|
|
621
621
|
loadBufferView(A) {
|
|
622
622
|
const e = this.parser.json, a = e.bufferViews[A];
|
|
623
623
|
if (a.extensions && a.extensions[this.name]) {
|
|
624
|
-
const t = a.extensions[this.name],
|
|
625
|
-
if (!
|
|
624
|
+
const t = a.extensions[this.name], i = this.parser.getDependency("buffer", t.buffer), s = this.parser.options.meshoptDecoder;
|
|
625
|
+
if (!s || !s.supported) {
|
|
626
626
|
if (e.extensionsRequired && e.extensionsRequired.indexOf(this.name) >= 0)
|
|
627
627
|
throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");
|
|
628
628
|
return null;
|
|
629
629
|
}
|
|
630
|
-
return
|
|
630
|
+
return i.then(function(o) {
|
|
631
631
|
const r = t.byteOffset || 0, c = t.byteLength || 0, I = t.count, g = t.byteStride, B = new Uint8Array(o, r, c);
|
|
632
|
-
return
|
|
632
|
+
return s.decodeGltfBufferAsync ? s.decodeGltfBufferAsync(I, g, B, t.mode, t.filter).then(function(C) {
|
|
633
633
|
return C.buffer;
|
|
634
|
-
}) :
|
|
634
|
+
}) : s.ready.then(function() {
|
|
635
635
|
const C = new ArrayBuffer(I * g);
|
|
636
|
-
return
|
|
636
|
+
return s.decodeGltfBuffer(new Uint8Array(C), I, g, B, t.mode, t.filter), C;
|
|
637
637
|
});
|
|
638
638
|
});
|
|
639
639
|
} else
|
|
@@ -652,9 +652,9 @@ class La {
|
|
|
652
652
|
for (const c of t.primitives)
|
|
653
653
|
if (c.mode !== O.TRIANGLES && c.mode !== O.TRIANGLE_STRIP && c.mode !== O.TRIANGLE_FAN && c.mode !== void 0)
|
|
654
654
|
return null;
|
|
655
|
-
const
|
|
656
|
-
for (const c in
|
|
657
|
-
o.push(this.parser.getDependency("accessor",
|
|
655
|
+
const s = a.extensions[this.name].attributes, o = [], r = {};
|
|
656
|
+
for (const c in s)
|
|
657
|
+
o.push(this.parser.getDependency("accessor", s[c]).then((I) => (r[c] = I, r[c])));
|
|
658
658
|
return o.length < 1 ? null : (o.push(this.parser.createNodeMesh(A)), Promise.all(o).then((c) => {
|
|
659
659
|
const I = c.pop(), g = I.isGroup ? I.children : [I], B = c[0].count, C = [];
|
|
660
660
|
for (const f of g) {
|
|
@@ -666,7 +666,7 @@ class La {
|
|
|
666
666
|
const k = r[u];
|
|
667
667
|
h.instanceColor = new mt(k.array, k.itemSize, k.normalized);
|
|
668
668
|
} else u !== "TRANSLATION" && u !== "ROTATION" && u !== "SCALE" && f.geometry.setAttribute(u, r[u]);
|
|
669
|
-
|
|
669
|
+
ie.prototype.copy.call(h, f), this.parser.assignFinalMaterial(h), C.push(h);
|
|
670
670
|
}
|
|
671
671
|
return I.isGroup ? (I.clear(), I.add(...C), I) : C[0];
|
|
672
672
|
}));
|
|
@@ -685,20 +685,20 @@ class Ma {
|
|
|
685
685
|
throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");
|
|
686
686
|
if (this.header.version < 2)
|
|
687
687
|
throw new Error("THREE.GLTFLoader: Legacy binary file detected.");
|
|
688
|
-
const t = this.header.length - QA,
|
|
689
|
-
let
|
|
690
|
-
for (;
|
|
691
|
-
const o =
|
|
692
|
-
|
|
693
|
-
const r =
|
|
694
|
-
if (
|
|
695
|
-
const c = new Uint8Array(A, QA +
|
|
688
|
+
const t = this.header.length - QA, i = new DataView(A, QA);
|
|
689
|
+
let s = 0;
|
|
690
|
+
for (; s < t; ) {
|
|
691
|
+
const o = i.getUint32(s, !0);
|
|
692
|
+
s += 4;
|
|
693
|
+
const r = i.getUint32(s, !0);
|
|
694
|
+
if (s += 4, r === me.JSON) {
|
|
695
|
+
const c = new Uint8Array(A, QA + s, o);
|
|
696
696
|
this.content = a.decode(c);
|
|
697
697
|
} else if (r === me.BIN) {
|
|
698
|
-
const c = QA +
|
|
698
|
+
const c = QA + s;
|
|
699
699
|
this.body = A.slice(c, c + o);
|
|
700
700
|
}
|
|
701
|
-
|
|
701
|
+
s += o;
|
|
702
702
|
}
|
|
703
703
|
if (this.content === null)
|
|
704
704
|
throw new Error("THREE.GLTFLoader: JSON content not found.");
|
|
@@ -711,19 +711,19 @@ class Na {
|
|
|
711
711
|
this.name = y.KHR_DRACO_MESH_COMPRESSION, this.json = A, this.dracoLoader = e, this.dracoLoader.preload();
|
|
712
712
|
}
|
|
713
713
|
decodePrimitive(A, e) {
|
|
714
|
-
const a = this.json, t = this.dracoLoader,
|
|
715
|
-
for (const I in
|
|
714
|
+
const a = this.json, t = this.dracoLoader, i = A.extensions[this.name].bufferView, s = A.extensions[this.name].attributes, o = {}, r = {}, c = {};
|
|
715
|
+
for (const I in s) {
|
|
716
716
|
const g = ZA[I] || I.toLowerCase();
|
|
717
|
-
o[g] =
|
|
717
|
+
o[g] = s[I];
|
|
718
718
|
}
|
|
719
719
|
for (const I in A.attributes) {
|
|
720
720
|
const g = ZA[I] || I.toLowerCase();
|
|
721
|
-
if (
|
|
721
|
+
if (s[I] !== void 0) {
|
|
722
722
|
const B = a.accessors[A.attributes[I]], C = fA[B.componentType];
|
|
723
723
|
c[g] = C.name, r[g] = B.normalized === !0;
|
|
724
724
|
}
|
|
725
725
|
}
|
|
726
|
-
return e.getDependency("bufferView",
|
|
726
|
+
return e.getDependency("bufferView", i).then(function(I) {
|
|
727
727
|
return new Promise(function(g, B) {
|
|
728
728
|
t.decodeDracoFile(I, function(C) {
|
|
729
729
|
for (const f in C.attributes) {
|
|
@@ -754,25 +754,25 @@ class ve extends zt {
|
|
|
754
754
|
super(A, e, a, t);
|
|
755
755
|
}
|
|
756
756
|
copySampleValue_(A) {
|
|
757
|
-
const e = this.resultBuffer, a = this.sampleValues, t = this.valueSize,
|
|
758
|
-
for (let
|
|
759
|
-
e[
|
|
757
|
+
const e = this.resultBuffer, a = this.sampleValues, t = this.valueSize, i = A * t * 3 + t;
|
|
758
|
+
for (let s = 0; s !== t; s++)
|
|
759
|
+
e[s] = a[i + s];
|
|
760
760
|
return e;
|
|
761
761
|
}
|
|
762
762
|
interpolate_(A, e, a, t) {
|
|
763
|
-
const
|
|
763
|
+
const i = this.resultBuffer, s = this.sampleValues, o = this.valueSize, r = o * 2, c = o * 3, I = t - e, g = (a - e) / I, B = g * g, C = B * g, f = A * c, d = f - c, p = -2 * C + 3 * B, E = C - B, l = 1 - p, h = E - B + g;
|
|
764
764
|
for (let u = 0; u !== o; u++) {
|
|
765
|
-
const k =
|
|
766
|
-
|
|
765
|
+
const k = s[d + u + o], R = s[d + u + r] * I, G = s[f + u + o], M = s[f + u] * I;
|
|
766
|
+
i[u] = l * k + h * R + p * G + E * M;
|
|
767
767
|
}
|
|
768
|
-
return
|
|
768
|
+
return i;
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
771
|
const qa = new xe();
|
|
772
772
|
class Ha extends ve {
|
|
773
773
|
interpolate_(A, e, a, t) {
|
|
774
|
-
const
|
|
775
|
-
return qa.fromArray(
|
|
774
|
+
const i = super.interpolate_(A, e, a, t);
|
|
775
|
+
return qa.fromArray(i).normalize().toArray(i), i;
|
|
776
776
|
}
|
|
777
777
|
}
|
|
778
778
|
const O = {
|
|
@@ -808,7 +808,7 @@ const O = {
|
|
|
808
808
|
9984: Jt,
|
|
809
809
|
9985: jt,
|
|
810
810
|
9986: Kt,
|
|
811
|
-
9987:
|
|
811
|
+
9987: se
|
|
812
812
|
}, De = {
|
|
813
813
|
33071: Ue,
|
|
814
814
|
33648: _e,
|
|
@@ -832,7 +832,7 @@ const O = {
|
|
|
832
832
|
COLOR_0: "color",
|
|
833
833
|
WEIGHTS_0: "skinWeight",
|
|
834
834
|
JOINTS_0: "skinIndex"
|
|
835
|
-
},
|
|
835
|
+
}, sA = {
|
|
836
836
|
scale: "scale",
|
|
837
837
|
translation: "position",
|
|
838
838
|
rotation: "quaternion",
|
|
@@ -867,35 +867,35 @@ function tA(n, A) {
|
|
|
867
867
|
A.extras !== void 0 && (typeof A.extras == "object" ? Object.assign(n.userData, A.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + A.extras));
|
|
868
868
|
}
|
|
869
869
|
function Ja(n, A, e) {
|
|
870
|
-
let a = !1, t = !1,
|
|
870
|
+
let a = !1, t = !1, i = !1;
|
|
871
871
|
for (let c = 0, I = A.length; c < I; c++) {
|
|
872
872
|
const g = A[c];
|
|
873
|
-
if (g.POSITION !== void 0 && (a = !0), g.NORMAL !== void 0 && (t = !0), g.COLOR_0 !== void 0 && (
|
|
873
|
+
if (g.POSITION !== void 0 && (a = !0), g.NORMAL !== void 0 && (t = !0), g.COLOR_0 !== void 0 && (i = !0), a && t && i) break;
|
|
874
874
|
}
|
|
875
|
-
if (!a && !t && !
|
|
876
|
-
const
|
|
875
|
+
if (!a && !t && !i) return Promise.resolve(n);
|
|
876
|
+
const s = [], o = [], r = [];
|
|
877
877
|
for (let c = 0, I = A.length; c < I; c++) {
|
|
878
878
|
const g = A[c];
|
|
879
879
|
if (a) {
|
|
880
880
|
const B = g.POSITION !== void 0 ? e.getDependency("accessor", g.POSITION) : n.attributes.position;
|
|
881
|
-
|
|
881
|
+
s.push(B);
|
|
882
882
|
}
|
|
883
883
|
if (t) {
|
|
884
884
|
const B = g.NORMAL !== void 0 ? e.getDependency("accessor", g.NORMAL) : n.attributes.normal;
|
|
885
885
|
o.push(B);
|
|
886
886
|
}
|
|
887
|
-
if (
|
|
887
|
+
if (i) {
|
|
888
888
|
const B = g.COLOR_0 !== void 0 ? e.getDependency("accessor", g.COLOR_0) : n.attributes.color;
|
|
889
889
|
r.push(B);
|
|
890
890
|
}
|
|
891
891
|
}
|
|
892
892
|
return Promise.all([
|
|
893
|
-
Promise.all(
|
|
893
|
+
Promise.all(s),
|
|
894
894
|
Promise.all(o),
|
|
895
895
|
Promise.all(r)
|
|
896
896
|
]).then(function(c) {
|
|
897
897
|
const I = c[0], g = c[1], B = c[2];
|
|
898
|
-
return a && (n.morphAttributes.position = I), t && (n.morphAttributes.normal = g),
|
|
898
|
+
return a && (n.morphAttributes.position = I), t && (n.morphAttributes.normal = g), i && (n.morphAttributes.color = B), n.morphTargetsRelative = !0, n;
|
|
899
899
|
});
|
|
900
900
|
}
|
|
901
901
|
function ja(n, A) {
|
|
@@ -948,14 +948,14 @@ const Ya = new yA();
|
|
|
948
948
|
class Wa {
|
|
949
949
|
constructor(A = {}, e = {}) {
|
|
950
950
|
this.json = A, this.extensions = {}, this.plugins = {}, this.options = e, this.cache = new fa(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
|
|
951
|
-
let a = !1, t = -1,
|
|
951
|
+
let a = !1, t = -1, i = !1, s = -1;
|
|
952
952
|
if (typeof navigator < "u") {
|
|
953
953
|
const o = navigator.userAgent;
|
|
954
954
|
a = /^((?!chrome|android).)*safari/i.test(o) === !0;
|
|
955
955
|
const r = o.match(/Version\/(\d+)/);
|
|
956
|
-
t = a && r ? parseInt(r[1], 10) : -1,
|
|
956
|
+
t = a && r ? parseInt(r[1], 10) : -1, i = o.indexOf("Firefox") > -1, s = i ? o.match(/Firefox\/([0-9]+)\./)[1] : -1;
|
|
957
957
|
}
|
|
958
|
-
typeof createImageBitmap > "u" || a && t < 17 ||
|
|
958
|
+
typeof createImageBitmap > "u" || a && t < 17 || i && s < 98 ? this.textureLoader = new Te(this.options.manager) : this.textureLoader = new wt(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new aA(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
|
|
959
959
|
}
|
|
960
960
|
setExtensions(A) {
|
|
961
961
|
this.extensions = A;
|
|
@@ -964,28 +964,28 @@ class Wa {
|
|
|
964
964
|
this.plugins = A;
|
|
965
965
|
}
|
|
966
966
|
parse(A, e) {
|
|
967
|
-
const a = this, t = this.json,
|
|
968
|
-
this.cache.removeAll(), this.nodeCache = {}, this._invokeAll(function(
|
|
969
|
-
return
|
|
970
|
-
}), Promise.all(this._invokeAll(function(
|
|
971
|
-
return
|
|
967
|
+
const a = this, t = this.json, i = this.extensions;
|
|
968
|
+
this.cache.removeAll(), this.nodeCache = {}, this._invokeAll(function(s) {
|
|
969
|
+
return s._markDefs && s._markDefs();
|
|
970
|
+
}), Promise.all(this._invokeAll(function(s) {
|
|
971
|
+
return s.beforeRoot && s.beforeRoot();
|
|
972
972
|
})).then(function() {
|
|
973
973
|
return Promise.all([
|
|
974
974
|
a.getDependencies("scene"),
|
|
975
975
|
a.getDependencies("animation"),
|
|
976
976
|
a.getDependencies("camera")
|
|
977
977
|
]);
|
|
978
|
-
}).then(function(
|
|
978
|
+
}).then(function(s) {
|
|
979
979
|
const o = {
|
|
980
|
-
scene:
|
|
981
|
-
scenes:
|
|
982
|
-
animations:
|
|
983
|
-
cameras:
|
|
980
|
+
scene: s[0][t.scene || 0],
|
|
981
|
+
scenes: s[0],
|
|
982
|
+
animations: s[1],
|
|
983
|
+
cameras: s[2],
|
|
984
984
|
asset: t.asset,
|
|
985
985
|
parser: a,
|
|
986
986
|
userData: {}
|
|
987
987
|
};
|
|
988
|
-
return gA(
|
|
988
|
+
return gA(i, o, t), tA(o, t), Promise.all(a._invokeAll(function(r) {
|
|
989
989
|
return r.afterRoot && r.afterRoot(o);
|
|
990
990
|
})).then(function() {
|
|
991
991
|
for (const r of o.scenes)
|
|
@@ -999,14 +999,14 @@ class Wa {
|
|
|
999
999
|
*/
|
|
1000
1000
|
_markDefs() {
|
|
1001
1001
|
const A = this.json.nodes || [], e = this.json.skins || [], a = this.json.meshes || [];
|
|
1002
|
-
for (let t = 0,
|
|
1003
|
-
const
|
|
1004
|
-
for (let o = 0, r =
|
|
1005
|
-
A[
|
|
1002
|
+
for (let t = 0, i = e.length; t < i; t++) {
|
|
1003
|
+
const s = e[t].joints;
|
|
1004
|
+
for (let o = 0, r = s.length; o < r; o++)
|
|
1005
|
+
A[s[o]].isBone = !0;
|
|
1006
1006
|
}
|
|
1007
|
-
for (let t = 0,
|
|
1008
|
-
const
|
|
1009
|
-
|
|
1007
|
+
for (let t = 0, i = A.length; t < i; t++) {
|
|
1008
|
+
const s = A[t];
|
|
1009
|
+
s.mesh !== void 0 && (this._addNodeRef(this.meshCache, s.mesh), s.skin !== void 0 && (a[s.mesh].isSkinnedMesh = !0)), s.camera !== void 0 && this._addNodeRef(this.cameraCache, s.camera);
|
|
1010
1010
|
}
|
|
1011
1011
|
}
|
|
1012
1012
|
/**
|
|
@@ -1024,13 +1024,13 @@ class Wa {
|
|
|
1024
1024
|
/** Returns a reference to a shared resource, cloning it if necessary. */
|
|
1025
1025
|
_getNodeRef(A, e, a) {
|
|
1026
1026
|
if (A.refs[e] <= 1) return a;
|
|
1027
|
-
const t = a.clone(),
|
|
1028
|
-
const r = this.associations.get(
|
|
1027
|
+
const t = a.clone(), i = (s, o) => {
|
|
1028
|
+
const r = this.associations.get(s);
|
|
1029
1029
|
r != null && this.associations.set(o, r);
|
|
1030
|
-
for (const [c, I] of
|
|
1031
|
-
|
|
1030
|
+
for (const [c, I] of s.children.entries())
|
|
1031
|
+
i(I, o.children[c]);
|
|
1032
1032
|
};
|
|
1033
|
-
return
|
|
1033
|
+
return i(a, t), t.name += "_instance_" + A.uses[e]++, t;
|
|
1034
1034
|
}
|
|
1035
1035
|
_invokeOne(A) {
|
|
1036
1036
|
const e = Object.values(this.plugins);
|
|
@@ -1046,8 +1046,8 @@ class Wa {
|
|
|
1046
1046
|
e.unshift(this);
|
|
1047
1047
|
const a = [];
|
|
1048
1048
|
for (let t = 0; t < e.length; t++) {
|
|
1049
|
-
const
|
|
1050
|
-
|
|
1049
|
+
const i = A(e[t]);
|
|
1050
|
+
i && a.push(i);
|
|
1051
1051
|
}
|
|
1052
1052
|
return a;
|
|
1053
1053
|
}
|
|
@@ -1066,50 +1066,50 @@ class Wa {
|
|
|
1066
1066
|
t = this.loadScene(e);
|
|
1067
1067
|
break;
|
|
1068
1068
|
case "node":
|
|
1069
|
-
t = this._invokeOne(function(
|
|
1070
|
-
return
|
|
1069
|
+
t = this._invokeOne(function(i) {
|
|
1070
|
+
return i.loadNode && i.loadNode(e);
|
|
1071
1071
|
});
|
|
1072
1072
|
break;
|
|
1073
1073
|
case "mesh":
|
|
1074
|
-
t = this._invokeOne(function(
|
|
1075
|
-
return
|
|
1074
|
+
t = this._invokeOne(function(i) {
|
|
1075
|
+
return i.loadMesh && i.loadMesh(e);
|
|
1076
1076
|
});
|
|
1077
1077
|
break;
|
|
1078
1078
|
case "accessor":
|
|
1079
1079
|
t = this.loadAccessor(e);
|
|
1080
1080
|
break;
|
|
1081
1081
|
case "bufferView":
|
|
1082
|
-
t = this._invokeOne(function(
|
|
1083
|
-
return
|
|
1082
|
+
t = this._invokeOne(function(i) {
|
|
1083
|
+
return i.loadBufferView && i.loadBufferView(e);
|
|
1084
1084
|
});
|
|
1085
1085
|
break;
|
|
1086
1086
|
case "buffer":
|
|
1087
1087
|
t = this.loadBuffer(e);
|
|
1088
1088
|
break;
|
|
1089
1089
|
case "material":
|
|
1090
|
-
t = this._invokeOne(function(
|
|
1091
|
-
return
|
|
1090
|
+
t = this._invokeOne(function(i) {
|
|
1091
|
+
return i.loadMaterial && i.loadMaterial(e);
|
|
1092
1092
|
});
|
|
1093
1093
|
break;
|
|
1094
1094
|
case "texture":
|
|
1095
|
-
t = this._invokeOne(function(
|
|
1096
|
-
return
|
|
1095
|
+
t = this._invokeOne(function(i) {
|
|
1096
|
+
return i.loadTexture && i.loadTexture(e);
|
|
1097
1097
|
});
|
|
1098
1098
|
break;
|
|
1099
1099
|
case "skin":
|
|
1100
1100
|
t = this.loadSkin(e);
|
|
1101
1101
|
break;
|
|
1102
1102
|
case "animation":
|
|
1103
|
-
t = this._invokeOne(function(
|
|
1104
|
-
return
|
|
1103
|
+
t = this._invokeOne(function(i) {
|
|
1104
|
+
return i.loadAnimation && i.loadAnimation(e);
|
|
1105
1105
|
});
|
|
1106
1106
|
break;
|
|
1107
1107
|
case "camera":
|
|
1108
1108
|
t = this.loadCamera(e);
|
|
1109
1109
|
break;
|
|
1110
1110
|
default:
|
|
1111
|
-
if (t = this._invokeOne(function(
|
|
1112
|
-
return
|
|
1111
|
+
if (t = this._invokeOne(function(i) {
|
|
1112
|
+
return i != this && i.getDependency && i.getDependency(A, e);
|
|
1113
1113
|
}), !t)
|
|
1114
1114
|
throw new Error("Unknown type: " + A);
|
|
1115
1115
|
break;
|
|
@@ -1127,8 +1127,8 @@ class Wa {
|
|
|
1127
1127
|
let e = this.cache.get(A);
|
|
1128
1128
|
if (!e) {
|
|
1129
1129
|
const a = this, t = this.json[A + (A === "mesh" ? "es" : "s")] || [];
|
|
1130
|
-
e = Promise.all(t.map(function(
|
|
1131
|
-
return a.getDependency(A,
|
|
1130
|
+
e = Promise.all(t.map(function(i, s) {
|
|
1131
|
+
return a.getDependency(A, s);
|
|
1132
1132
|
})), this.cache.add(A, e);
|
|
1133
1133
|
}
|
|
1134
1134
|
return e;
|
|
@@ -1145,9 +1145,9 @@ class Wa {
|
|
|
1145
1145
|
if (e.uri === void 0 && A === 0)
|
|
1146
1146
|
return Promise.resolve(this.extensions[y.KHR_BINARY_GLTF].body);
|
|
1147
1147
|
const t = this.options;
|
|
1148
|
-
return new Promise(function(
|
|
1149
|
-
a.load(mA.resolveURL(e.uri, t.path),
|
|
1150
|
-
|
|
1148
|
+
return new Promise(function(i, s) {
|
|
1149
|
+
a.load(mA.resolveURL(e.uri, t.path), i, void 0, function() {
|
|
1150
|
+
s(new Error('THREE.GLTFLoader: Failed to load buffer "' + e.uri + '".'));
|
|
1151
1151
|
});
|
|
1152
1152
|
});
|
|
1153
1153
|
}
|
|
@@ -1159,8 +1159,8 @@ class Wa {
|
|
|
1159
1159
|
loadBufferView(A) {
|
|
1160
1160
|
const e = this.json.bufferViews[A];
|
|
1161
1161
|
return this.getDependency("buffer", e.buffer).then(function(a) {
|
|
1162
|
-
const t = e.byteLength || 0,
|
|
1163
|
-
return a.slice(
|
|
1162
|
+
const t = e.byteLength || 0, i = e.byteOffset || 0;
|
|
1163
|
+
return a.slice(i, i + t);
|
|
1164
1164
|
});
|
|
1165
1165
|
}
|
|
1166
1166
|
/**
|
|
@@ -1171,12 +1171,12 @@ class Wa {
|
|
|
1171
1171
|
loadAccessor(A) {
|
|
1172
1172
|
const e = this, a = this.json, t = this.json.accessors[A];
|
|
1173
1173
|
if (t.bufferView === void 0 && t.sparse === void 0) {
|
|
1174
|
-
const
|
|
1175
|
-
return Promise.resolve(new X(c,
|
|
1174
|
+
const s = UA[t.type], o = fA[t.componentType], r = t.normalized === !0, c = new o(t.count * s);
|
|
1175
|
+
return Promise.resolve(new X(c, s, r));
|
|
1176
1176
|
}
|
|
1177
|
-
const
|
|
1178
|
-
return t.bufferView !== void 0 ?
|
|
1179
|
-
const o =
|
|
1177
|
+
const i = [];
|
|
1178
|
+
return t.bufferView !== void 0 ? i.push(this.getDependency("bufferView", t.bufferView)) : i.push(null), t.sparse !== void 0 && (i.push(this.getDependency("bufferView", t.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", t.sparse.values.bufferView))), Promise.all(i).then(function(s) {
|
|
1179
|
+
const o = s[0], r = UA[t.type], c = fA[t.componentType], I = c.BYTES_PER_ELEMENT, g = I * r, B = t.byteOffset || 0, C = t.bufferView !== void 0 ? a.bufferViews[t.bufferView].byteStride : void 0, f = t.normalized === !0;
|
|
1180
1180
|
let d, p;
|
|
1181
1181
|
if (C && C !== g) {
|
|
1182
1182
|
const E = Math.floor(B / C), l = "InterleavedBuffer:" + t.bufferView + ":" + t.componentType + ":" + E + ":" + t.count;
|
|
@@ -1185,7 +1185,7 @@ class Wa {
|
|
|
1185
1185
|
} else
|
|
1186
1186
|
o === null ? d = new c(t.count * r) : d = new c(o, B, t.count * r), p = new X(d, r, f);
|
|
1187
1187
|
if (t.sparse !== void 0) {
|
|
1188
|
-
const E = UA.SCALAR, l = fA[t.sparse.indices.componentType], h = t.sparse.indices.byteOffset || 0, u = t.sparse.values.byteOffset || 0, k = new l(
|
|
1188
|
+
const E = UA.SCALAR, l = fA[t.sparse.indices.componentType], h = t.sparse.indices.byteOffset || 0, u = t.sparse.values.byteOffset || 0, k = new l(s[1], h, t.sparse.count * E), R = new c(s[2], u, t.sparse.count * r);
|
|
1189
1189
|
o !== null && (p = new X(p.array.slice(), p.itemSize, p.normalized));
|
|
1190
1190
|
for (let G = 0, M = k.length; G < M; G++) {
|
|
1191
1191
|
const b = k[G];
|
|
@@ -1201,40 +1201,40 @@ class Wa {
|
|
|
1201
1201
|
* @return {Promise<THREE.Texture|null>}
|
|
1202
1202
|
*/
|
|
1203
1203
|
loadTexture(A) {
|
|
1204
|
-
const e = this.json, a = this.options,
|
|
1204
|
+
const e = this.json, a = this.options, i = e.textures[A].source, s = e.images[i];
|
|
1205
1205
|
let o = this.textureLoader;
|
|
1206
|
-
if (
|
|
1207
|
-
const r = a.manager.getHandler(
|
|
1206
|
+
if (s.uri) {
|
|
1207
|
+
const r = a.manager.getHandler(s.uri);
|
|
1208
1208
|
r !== null && (o = r);
|
|
1209
1209
|
}
|
|
1210
|
-
return this.loadTextureImage(A,
|
|
1210
|
+
return this.loadTextureImage(A, i, o);
|
|
1211
1211
|
}
|
|
1212
1212
|
loadTextureImage(A, e, a) {
|
|
1213
|
-
const t = this,
|
|
1213
|
+
const t = this, i = this.json, s = i.textures[A], o = i.images[e], r = (o.uri || o.bufferView) + ":" + s.sampler;
|
|
1214
1214
|
if (this.textureCache[r])
|
|
1215
1215
|
return this.textureCache[r];
|
|
1216
1216
|
const c = this.loadImageSource(e, a).then(function(I) {
|
|
1217
|
-
I.flipY = !1, I.name =
|
|
1218
|
-
const B = (
|
|
1219
|
-
return I.magFilter = we[B.magFilter] || GA, I.minFilter = we[B.minFilter] ||
|
|
1217
|
+
I.flipY = !1, I.name = s.name || o.name || "", I.name === "" && typeof o.uri == "string" && o.uri.startsWith("data:image/") === !1 && (I.name = o.uri);
|
|
1218
|
+
const B = (i.samplers || {})[s.sampler] || {};
|
|
1219
|
+
return I.magFilter = we[B.magFilter] || GA, I.minFilter = we[B.minFilter] || se, I.wrapS = De[B.wrapS] || xA, I.wrapT = De[B.wrapT] || xA, t.associations.set(I, { textures: A }), I;
|
|
1220
1220
|
}).catch(function() {
|
|
1221
1221
|
return null;
|
|
1222
1222
|
});
|
|
1223
1223
|
return this.textureCache[r] = c, c;
|
|
1224
1224
|
}
|
|
1225
1225
|
loadImageSource(A, e) {
|
|
1226
|
-
const a = this, t = this.json,
|
|
1226
|
+
const a = this, t = this.json, i = this.options;
|
|
1227
1227
|
if (this.sourceCache[A] !== void 0)
|
|
1228
1228
|
return this.sourceCache[A].then((g) => g.clone());
|
|
1229
|
-
const
|
|
1230
|
-
let r =
|
|
1231
|
-
if (
|
|
1232
|
-
r = a.getDependency("bufferView",
|
|
1229
|
+
const s = t.images[A], o = self.URL || self.webkitURL;
|
|
1230
|
+
let r = s.uri || "", c = !1;
|
|
1231
|
+
if (s.bufferView !== void 0)
|
|
1232
|
+
r = a.getDependency("bufferView", s.bufferView).then(function(g) {
|
|
1233
1233
|
c = !0;
|
|
1234
|
-
const B = new Blob([g], { type:
|
|
1234
|
+
const B = new Blob([g], { type: s.mimeType });
|
|
1235
1235
|
return r = o.createObjectURL(B), r;
|
|
1236
1236
|
});
|
|
1237
|
-
else if (
|
|
1237
|
+
else if (s.uri === void 0)
|
|
1238
1238
|
throw new Error("THREE.GLTFLoader: Image " + A + " is missing URI and bufferView");
|
|
1239
1239
|
const I = Promise.resolve(r).then(function(g) {
|
|
1240
1240
|
return new Promise(function(B, C) {
|
|
@@ -1242,10 +1242,10 @@ class Wa {
|
|
|
1242
1242
|
e.isImageBitmapLoader === !0 && (f = function(d) {
|
|
1243
1243
|
const p = new fe(d);
|
|
1244
1244
|
p.needsUpdate = !0, B(p);
|
|
1245
|
-
}), e.load(mA.resolveURL(g,
|
|
1245
|
+
}), e.load(mA.resolveURL(g, i.path), f, void 0, C);
|
|
1246
1246
|
});
|
|
1247
1247
|
}).then(function(g) {
|
|
1248
|
-
return c === !0 && o.revokeObjectURL(r), tA(g,
|
|
1248
|
+
return c === !0 && o.revokeObjectURL(r), tA(g, s), g.userData.mimeType = s.mimeType || Pa(s.uri), g;
|
|
1249
1249
|
}).catch(function(g) {
|
|
1250
1250
|
throw console.error("THREE.GLTFLoader: Couldn't load texture", r), g;
|
|
1251
1251
|
});
|
|
@@ -1259,17 +1259,17 @@ class Wa {
|
|
|
1259
1259
|
* @return {Promise<Texture>}
|
|
1260
1260
|
*/
|
|
1261
1261
|
assignTexture(A, e, a, t) {
|
|
1262
|
-
const
|
|
1263
|
-
return this.getDependency("texture", a.index).then(function(
|
|
1264
|
-
if (!
|
|
1265
|
-
if (a.texCoord !== void 0 && a.texCoord > 0 && (
|
|
1262
|
+
const i = this;
|
|
1263
|
+
return this.getDependency("texture", a.index).then(function(s) {
|
|
1264
|
+
if (!s) return null;
|
|
1265
|
+
if (a.texCoord !== void 0 && a.texCoord > 0 && (s = s.clone(), s.channel = a.texCoord), i.extensions[y.KHR_TEXTURE_TRANSFORM]) {
|
|
1266
1266
|
const o = a.extensions !== void 0 ? a.extensions[y.KHR_TEXTURE_TRANSFORM] : void 0;
|
|
1267
1267
|
if (o) {
|
|
1268
|
-
const r =
|
|
1269
|
-
|
|
1268
|
+
const r = i.associations.get(s);
|
|
1269
|
+
s = i.extensions[y.KHR_TEXTURE_TRANSFORM].extendTexture(s, o), i.associations.set(s, r);
|
|
1270
1270
|
}
|
|
1271
1271
|
}
|
|
1272
|
-
return t !== void 0 && (
|
|
1272
|
+
return t !== void 0 && (s.colorSpace = t), A[e] = s, s;
|
|
1273
1273
|
});
|
|
1274
1274
|
}
|
|
1275
1275
|
/**
|
|
@@ -1283,7 +1283,7 @@ class Wa {
|
|
|
1283
1283
|
assignFinalMaterial(A) {
|
|
1284
1284
|
const e = A.geometry;
|
|
1285
1285
|
let a = A.material;
|
|
1286
|
-
const t = e.attributes.tangent === void 0,
|
|
1286
|
+
const t = e.attributes.tangent === void 0, i = e.attributes.color !== void 0, s = e.attributes.normal === void 0;
|
|
1287
1287
|
if (A.isPoints) {
|
|
1288
1288
|
const o = "PointsMaterial:" + a.uuid;
|
|
1289
1289
|
let r = this.cache.get(o);
|
|
@@ -1293,11 +1293,11 @@ class Wa {
|
|
|
1293
1293
|
let r = this.cache.get(o);
|
|
1294
1294
|
r || (r = new Rt(), NA.prototype.copy.call(r, a), r.color.copy(a.color), r.map = a.map, this.cache.add(o, r)), a = r;
|
|
1295
1295
|
}
|
|
1296
|
-
if (t ||
|
|
1296
|
+
if (t || i || s) {
|
|
1297
1297
|
let o = "ClonedMaterial:" + a.uuid + ":";
|
|
1298
|
-
t && (o += "derivative-tangents:"),
|
|
1298
|
+
t && (o += "derivative-tangents:"), i && (o += "vertex-colors:"), s && (o += "flat-shading:");
|
|
1299
1299
|
let r = this.cache.get(o);
|
|
1300
|
-
r || (r = a.clone(),
|
|
1300
|
+
r || (r = a.clone(), i && (r.vertexColors = !0), s && (r.flatShading = !0), t && (r.normalScale && (r.normalScale.y *= -1), r.clearcoatNormalScale && (r.clearcoatNormalScale.y *= -1)), this.cache.add(o, r), this.associations.set(r, this.associations.get(a))), a = r;
|
|
1301
1301
|
}
|
|
1302
1302
|
A.material = a;
|
|
1303
1303
|
}
|
|
@@ -1310,37 +1310,37 @@ class Wa {
|
|
|
1310
1310
|
* @return {Promise<Material>}
|
|
1311
1311
|
*/
|
|
1312
1312
|
loadMaterial(A) {
|
|
1313
|
-
const e = this, a = this.json, t = this.extensions,
|
|
1314
|
-
let
|
|
1315
|
-
const o = {}, r =
|
|
1313
|
+
const e = this, a = this.json, t = this.extensions, i = a.materials[A];
|
|
1314
|
+
let s;
|
|
1315
|
+
const o = {}, r = i.extensions || {}, c = [];
|
|
1316
1316
|
if (r[y.KHR_MATERIALS_UNLIT]) {
|
|
1317
1317
|
const g = t[y.KHR_MATERIALS_UNLIT];
|
|
1318
|
-
|
|
1318
|
+
s = g.getMaterialType(), c.push(g.extendParams(o, i, e));
|
|
1319
1319
|
} else {
|
|
1320
|
-
const g =
|
|
1320
|
+
const g = i.pbrMetallicRoughness || {};
|
|
1321
1321
|
if (o.color = new rA(1, 1, 1), o.opacity = 1, Array.isArray(g.baseColorFactor)) {
|
|
1322
1322
|
const B = g.baseColorFactor;
|
|
1323
1323
|
o.color.setRGB(B[0], B[1], B[2], Y), o.opacity = B[3];
|
|
1324
1324
|
}
|
|
1325
|
-
g.baseColorTexture !== void 0 && c.push(e.assignTexture(o, "map", g.baseColorTexture, AA)), o.metalness = g.metallicFactor !== void 0 ? g.metallicFactor : 1, o.roughness = g.roughnessFactor !== void 0 ? g.roughnessFactor : 1, g.metallicRoughnessTexture !== void 0 && (c.push(e.assignTexture(o, "metalnessMap", g.metallicRoughnessTexture)), c.push(e.assignTexture(o, "roughnessMap", g.metallicRoughnessTexture))),
|
|
1325
|
+
g.baseColorTexture !== void 0 && c.push(e.assignTexture(o, "map", g.baseColorTexture, AA)), o.metalness = g.metallicFactor !== void 0 ? g.metallicFactor : 1, o.roughness = g.roughnessFactor !== void 0 ? g.roughnessFactor : 1, g.metallicRoughnessTexture !== void 0 && (c.push(e.assignTexture(o, "metalnessMap", g.metallicRoughnessTexture)), c.push(e.assignTexture(o, "roughnessMap", g.metallicRoughnessTexture))), s = this._invokeOne(function(B) {
|
|
1326
1326
|
return B.getMaterialType && B.getMaterialType(A);
|
|
1327
1327
|
}), c.push(Promise.all(this._invokeAll(function(B) {
|
|
1328
1328
|
return B.extendMaterialParams && B.extendMaterialParams(A, o);
|
|
1329
1329
|
})));
|
|
1330
1330
|
}
|
|
1331
|
-
|
|
1332
|
-
const I =
|
|
1333
|
-
if (I === _A.BLEND ? (o.transparent = !0, o.depthWrite = !1) : (o.transparent = !1, I === _A.MASK && (o.alphaTest =
|
|
1334
|
-
const g =
|
|
1331
|
+
i.doubleSided === !0 && (o.side = St);
|
|
1332
|
+
const I = i.alphaMode || _A.OPAQUE;
|
|
1333
|
+
if (I === _A.BLEND ? (o.transparent = !0, o.depthWrite = !1) : (o.transparent = !1, I === _A.MASK && (o.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && s !== hA && (c.push(e.assignTexture(o, "normalMap", i.normalTexture)), o.normalScale = new SA(1, 1), i.normalTexture.scale !== void 0)) {
|
|
1334
|
+
const g = i.normalTexture.scale;
|
|
1335
1335
|
o.normalScale.set(g, g);
|
|
1336
1336
|
}
|
|
1337
|
-
if (
|
|
1338
|
-
const g =
|
|
1337
|
+
if (i.occlusionTexture !== void 0 && s !== hA && (c.push(e.assignTexture(o, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (o.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && s !== hA) {
|
|
1338
|
+
const g = i.emissiveFactor;
|
|
1339
1339
|
o.emissive = new rA().setRGB(g[0], g[1], g[2], Y);
|
|
1340
1340
|
}
|
|
1341
|
-
return
|
|
1342
|
-
const g = new
|
|
1343
|
-
return
|
|
1341
|
+
return i.emissiveTexture !== void 0 && s !== hA && c.push(e.assignTexture(o, "emissiveMap", i.emissiveTexture, AA)), Promise.all(c).then(function() {
|
|
1342
|
+
const g = new s(o);
|
|
1343
|
+
return i.name && (g.name = i.name), tA(g, i), e.associations.set(g, { materials: A }), i.extensions && gA(t, g, i), g;
|
|
1344
1344
|
});
|
|
1345
1345
|
}
|
|
1346
1346
|
/** When Object3D instances are targeted by animation, they need unique names. */
|
|
@@ -1358,22 +1358,22 @@ class Wa {
|
|
|
1358
1358
|
*/
|
|
1359
1359
|
loadGeometries(A) {
|
|
1360
1360
|
const e = this, a = this.extensions, t = this.primitiveCache;
|
|
1361
|
-
function
|
|
1361
|
+
function i(o) {
|
|
1362
1362
|
return a[y.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o, e).then(function(r) {
|
|
1363
1363
|
return ke(r, o, e);
|
|
1364
1364
|
});
|
|
1365
1365
|
}
|
|
1366
|
-
const
|
|
1366
|
+
const s = [];
|
|
1367
1367
|
for (let o = 0, r = A.length; o < r; o++) {
|
|
1368
1368
|
const c = A[o], I = Ka(c), g = t[I];
|
|
1369
1369
|
if (g)
|
|
1370
|
-
|
|
1370
|
+
s.push(g.promise);
|
|
1371
1371
|
else {
|
|
1372
1372
|
let B;
|
|
1373
|
-
c.extensions && c.extensions[y.KHR_DRACO_MESH_COMPRESSION] ? B =
|
|
1373
|
+
c.extensions && c.extensions[y.KHR_DRACO_MESH_COMPRESSION] ? B = i(c) : B = ke(new ne(), c, e), t[I] = { primitive: c, promise: B }, s.push(B);
|
|
1374
1374
|
}
|
|
1375
1375
|
}
|
|
1376
|
-
return Promise.all(
|
|
1376
|
+
return Promise.all(s);
|
|
1377
1377
|
}
|
|
1378
1378
|
/**
|
|
1379
1379
|
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes
|
|
@@ -1381,19 +1381,19 @@ class Wa {
|
|
|
1381
1381
|
* @return {Promise<Group|Mesh|SkinnedMesh>}
|
|
1382
1382
|
*/
|
|
1383
1383
|
loadMesh(A) {
|
|
1384
|
-
const e = this, a = this.json, t = this.extensions,
|
|
1385
|
-
for (let r = 0, c =
|
|
1386
|
-
const I =
|
|
1384
|
+
const e = this, a = this.json, t = this.extensions, i = a.meshes[A], s = i.primitives, o = [];
|
|
1385
|
+
for (let r = 0, c = s.length; r < c; r++) {
|
|
1386
|
+
const I = s[r].material === void 0 ? va(this.cache) : this.getDependency("material", s[r].material);
|
|
1387
1387
|
o.push(I);
|
|
1388
1388
|
}
|
|
1389
|
-
return o.push(e.loadGeometries(
|
|
1389
|
+
return o.push(e.loadGeometries(s)), Promise.all(o).then(function(r) {
|
|
1390
1390
|
const c = r.slice(0, r.length - 1), I = r[r.length - 1], g = [];
|
|
1391
1391
|
for (let C = 0, f = I.length; C < f; C++) {
|
|
1392
|
-
const d = I[C], p =
|
|
1392
|
+
const d = I[C], p = s[C];
|
|
1393
1393
|
let E;
|
|
1394
1394
|
const l = c[C];
|
|
1395
1395
|
if (p.mode === O.TRIANGLES || p.mode === O.TRIANGLE_STRIP || p.mode === O.TRIANGLE_FAN || p.mode === void 0)
|
|
1396
|
-
E =
|
|
1396
|
+
E = i.isSkinnedMesh === !0 ? new Gt(d, l) : new Me(d, l), E.isSkinnedMesh === !0 && E.normalizeSkinWeights(), p.mode === O.TRIANGLE_STRIP ? E.geometry = ue(E.geometry, Ge) : p.mode === O.TRIANGLE_FAN && (E.geometry = ue(E.geometry, XA));
|
|
1397
1397
|
else if (p.mode === O.LINES)
|
|
1398
1398
|
E = new xt(d, l);
|
|
1399
1399
|
else if (p.mode === O.LINE_STRIP)
|
|
@@ -1404,7 +1404,7 @@ class Wa {
|
|
|
1404
1404
|
E = new Mt(d, l);
|
|
1405
1405
|
else
|
|
1406
1406
|
throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + p.mode);
|
|
1407
|
-
Object.keys(E.geometry.morphAttributes).length > 0 && ja(E,
|
|
1407
|
+
Object.keys(E.geometry.morphAttributes).length > 0 && ja(E, i), E.name = e.createUniqueName(i.name || "mesh_" + A), tA(E, i), p.extensions && gA(t, E, p), e.assignFinalMaterial(E), g.push(E);
|
|
1408
1408
|
}
|
|
1409
1409
|
for (let C = 0, f = g.length; C < f; C++)
|
|
1410
1410
|
e.associations.set(g[C], {
|
|
@@ -1412,9 +1412,9 @@ class Wa {
|
|
|
1412
1412
|
primitives: C
|
|
1413
1413
|
});
|
|
1414
1414
|
if (g.length === 1)
|
|
1415
|
-
return
|
|
1415
|
+
return i.extensions && gA(t, g[0], i), g[0];
|
|
1416
1416
|
const B = new kA();
|
|
1417
|
-
|
|
1417
|
+
i.extensions && gA(t, B, i), e.associations.set(B, { meshes: A });
|
|
1418
1418
|
for (let C = 0, f = g.length; C < f; C++)
|
|
1419
1419
|
B.add(g[C]);
|
|
1420
1420
|
return B;
|
|
@@ -1441,16 +1441,16 @@ class Wa {
|
|
|
1441
1441
|
*/
|
|
1442
1442
|
loadSkin(A) {
|
|
1443
1443
|
const e = this.json.skins[A], a = [];
|
|
1444
|
-
for (let t = 0,
|
|
1444
|
+
for (let t = 0, i = e.joints.length; t < i; t++)
|
|
1445
1445
|
a.push(this._loadNodeShallow(e.joints[t]));
|
|
1446
1446
|
return e.inverseBindMatrices !== void 0 ? a.push(this.getDependency("accessor", e.inverseBindMatrices)) : a.push(null), Promise.all(a).then(function(t) {
|
|
1447
|
-
const
|
|
1448
|
-
for (let c = 0, I =
|
|
1449
|
-
const g =
|
|
1447
|
+
const i = t.pop(), s = t, o = [], r = [];
|
|
1448
|
+
for (let c = 0, I = s.length; c < I; c++) {
|
|
1449
|
+
const g = s[c];
|
|
1450
1450
|
if (g) {
|
|
1451
1451
|
o.push(g);
|
|
1452
1452
|
const B = new yA();
|
|
1453
|
-
|
|
1453
|
+
i !== null && B.fromArray(i.array, c * 16), r.push(B);
|
|
1454
1454
|
} else
|
|
1455
1455
|
console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', e.joints[c]);
|
|
1456
1456
|
}
|
|
@@ -1463,13 +1463,13 @@ class Wa {
|
|
|
1463
1463
|
* @return {Promise<AnimationClip>}
|
|
1464
1464
|
*/
|
|
1465
1465
|
loadAnimation(A) {
|
|
1466
|
-
const e = this.json, a = this, t = e.animations[A],
|
|
1466
|
+
const e = this.json, a = this, t = e.animations[A], i = t.name ? t.name : "animation_" + A, s = [], o = [], r = [], c = [], I = [];
|
|
1467
1467
|
for (let g = 0, B = t.channels.length; g < B; g++) {
|
|
1468
1468
|
const C = t.channels[g], f = t.samplers[C.sampler], d = C.target, p = d.node, E = t.parameters !== void 0 ? t.parameters[f.input] : f.input, l = t.parameters !== void 0 ? t.parameters[f.output] : f.output;
|
|
1469
|
-
d.node !== void 0 && (
|
|
1469
|
+
d.node !== void 0 && (s.push(this.getDependency("node", p)), o.push(this.getDependency("accessor", E)), r.push(this.getDependency("accessor", l)), c.push(f), I.push(d));
|
|
1470
1470
|
}
|
|
1471
1471
|
return Promise.all([
|
|
1472
|
-
Promise.all(
|
|
1472
|
+
Promise.all(s),
|
|
1473
1473
|
Promise.all(o),
|
|
1474
1474
|
Promise.all(r),
|
|
1475
1475
|
Promise.all(c),
|
|
@@ -1485,18 +1485,18 @@ class Wa {
|
|
|
1485
1485
|
for (let Q = 0; Q < b.length; Q++)
|
|
1486
1486
|
E.push(b[Q]);
|
|
1487
1487
|
}
|
|
1488
|
-
return new Ht(
|
|
1488
|
+
return new Ht(i, void 0, E);
|
|
1489
1489
|
});
|
|
1490
1490
|
}
|
|
1491
1491
|
createNodeMesh(A) {
|
|
1492
1492
|
const e = this.json, a = this, t = e.nodes[A];
|
|
1493
|
-
return t.mesh === void 0 ? null : a.getDependency("mesh", t.mesh).then(function(
|
|
1494
|
-
const
|
|
1495
|
-
return t.weights !== void 0 &&
|
|
1493
|
+
return t.mesh === void 0 ? null : a.getDependency("mesh", t.mesh).then(function(i) {
|
|
1494
|
+
const s = a._getNodeRef(a.meshCache, t.mesh, i);
|
|
1495
|
+
return t.weights !== void 0 && s.traverse(function(o) {
|
|
1496
1496
|
if (o.isMesh)
|
|
1497
1497
|
for (let r = 0, c = t.weights.length; r < c; r++)
|
|
1498
1498
|
o.morphTargetInfluences[r] = t.weights[r];
|
|
1499
|
-
}),
|
|
1499
|
+
}), s;
|
|
1500
1500
|
});
|
|
1501
1501
|
}
|
|
1502
1502
|
/**
|
|
@@ -1505,13 +1505,13 @@ class Wa {
|
|
|
1505
1505
|
* @return {Promise<Object3D>}
|
|
1506
1506
|
*/
|
|
1507
1507
|
loadNode(A) {
|
|
1508
|
-
const e = this.json, a = this, t = e.nodes[A],
|
|
1508
|
+
const e = this.json, a = this, t = e.nodes[A], i = a._loadNodeShallow(A), s = [], o = t.children || [];
|
|
1509
1509
|
for (let c = 0, I = o.length; c < I; c++)
|
|
1510
|
-
|
|
1510
|
+
s.push(a.getDependency("node", o[c]));
|
|
1511
1511
|
const r = t.skin === void 0 ? Promise.resolve(null) : a.getDependency("skin", t.skin);
|
|
1512
1512
|
return Promise.all([
|
|
1513
|
-
|
|
1514
|
-
Promise.all(
|
|
1513
|
+
i,
|
|
1514
|
+
Promise.all(s),
|
|
1515
1515
|
r
|
|
1516
1516
|
]).then(function(c) {
|
|
1517
1517
|
const I = c[0], g = c[1], B = c[2];
|
|
@@ -1529,25 +1529,25 @@ class Wa {
|
|
|
1529
1529
|
const e = this.json, a = this.extensions, t = this;
|
|
1530
1530
|
if (this.nodeCache[A] !== void 0)
|
|
1531
1531
|
return this.nodeCache[A];
|
|
1532
|
-
const
|
|
1532
|
+
const i = e.nodes[A], s = i.name ? t.createUniqueName(i.name) : "", o = [], r = t._invokeOne(function(c) {
|
|
1533
1533
|
return c.createNodeMesh && c.createNodeMesh(A);
|
|
1534
1534
|
});
|
|
1535
|
-
return r && o.push(r),
|
|
1536
|
-
return t._getNodeRef(t.cameraCache,
|
|
1535
|
+
return r && o.push(r), i.camera !== void 0 && o.push(t.getDependency("camera", i.camera).then(function(c) {
|
|
1536
|
+
return t._getNodeRef(t.cameraCache, i.camera, c);
|
|
1537
1537
|
})), t._invokeAll(function(c) {
|
|
1538
1538
|
return c.createNodeAttachment && c.createNodeAttachment(A);
|
|
1539
1539
|
}).forEach(function(c) {
|
|
1540
1540
|
o.push(c);
|
|
1541
1541
|
}), this.nodeCache[A] = Promise.all(o).then(function(c) {
|
|
1542
1542
|
let I;
|
|
1543
|
-
if (
|
|
1543
|
+
if (i.isBone === !0 ? I = new Ot() : c.length > 1 ? I = new kA() : c.length === 1 ? I = c[0] : I = new ie(), I !== c[0])
|
|
1544
1544
|
for (let g = 0, B = c.length; g < B; g++)
|
|
1545
1545
|
I.add(c[g]);
|
|
1546
|
-
if (
|
|
1546
|
+
if (i.name && (I.userData.name = i.name, I.name = s), tA(I, i), i.extensions && gA(a, I, i), i.matrix !== void 0) {
|
|
1547
1547
|
const g = new yA();
|
|
1548
|
-
g.fromArray(
|
|
1548
|
+
g.fromArray(i.matrix), I.applyMatrix4(g);
|
|
1549
1549
|
} else
|
|
1550
|
-
|
|
1550
|
+
i.translation !== void 0 && I.position.fromArray(i.translation), i.rotation !== void 0 && I.quaternion.fromArray(i.rotation), i.scale !== void 0 && I.scale.fromArray(i.scale);
|
|
1551
1551
|
return t.associations.has(I) || t.associations.set(I, {}), t.associations.get(I).nodes = A, I;
|
|
1552
1552
|
}), this.nodeCache[A];
|
|
1553
1553
|
}
|
|
@@ -1557,14 +1557,14 @@ class Wa {
|
|
|
1557
1557
|
* @return {Promise<Group>}
|
|
1558
1558
|
*/
|
|
1559
1559
|
loadScene(A) {
|
|
1560
|
-
const e = this.extensions, a = this.json.scenes[A], t = this,
|
|
1561
|
-
a.name && (
|
|
1562
|
-
const
|
|
1563
|
-
for (let r = 0, c =
|
|
1564
|
-
o.push(t.getDependency("node",
|
|
1560
|
+
const e = this.extensions, a = this.json.scenes[A], t = this, i = new kA();
|
|
1561
|
+
a.name && (i.name = t.createUniqueName(a.name)), tA(i, a), a.extensions && gA(e, i, a);
|
|
1562
|
+
const s = a.nodes || [], o = [];
|
|
1563
|
+
for (let r = 0, c = s.length; r < c; r++)
|
|
1564
|
+
o.push(t.getDependency("node", s[r]));
|
|
1565
1565
|
return Promise.all(o).then(function(r) {
|
|
1566
1566
|
for (let I = 0, g = r.length; I < g; I++)
|
|
1567
|
-
|
|
1567
|
+
i.add(r[I]);
|
|
1568
1568
|
const c = (I) => {
|
|
1569
1569
|
const g = /* @__PURE__ */ new Map();
|
|
1570
1570
|
for (const [B, C] of t.associations)
|
|
@@ -1574,24 +1574,24 @@ class Wa {
|
|
|
1574
1574
|
C != null && g.set(B, C);
|
|
1575
1575
|
}), g;
|
|
1576
1576
|
};
|
|
1577
|
-
return t.associations = c(
|
|
1577
|
+
return t.associations = c(i), i;
|
|
1578
1578
|
});
|
|
1579
1579
|
}
|
|
1580
|
-
_createAnimationTracks(A, e, a, t,
|
|
1581
|
-
const
|
|
1582
|
-
|
|
1580
|
+
_createAnimationTracks(A, e, a, t, i) {
|
|
1581
|
+
const s = [], o = A.name ? A.name : A.uuid, r = [];
|
|
1582
|
+
sA[i.path] === sA.weights ? A.traverse(function(B) {
|
|
1583
1583
|
B.morphTargetInfluences && r.push(B.name ? B.name : B.uuid);
|
|
1584
1584
|
}) : r.push(o);
|
|
1585
1585
|
let c;
|
|
1586
|
-
switch (
|
|
1587
|
-
case
|
|
1586
|
+
switch (sA[i.path]) {
|
|
1587
|
+
case sA.weights:
|
|
1588
1588
|
c = Qe;
|
|
1589
1589
|
break;
|
|
1590
|
-
case
|
|
1590
|
+
case sA.rotation:
|
|
1591
1591
|
c = de;
|
|
1592
1592
|
break;
|
|
1593
|
-
case
|
|
1594
|
-
case
|
|
1593
|
+
case sA.position:
|
|
1594
|
+
case sA.scale:
|
|
1595
1595
|
c = Ee;
|
|
1596
1596
|
break;
|
|
1597
1597
|
default:
|
|
@@ -1610,21 +1610,21 @@ class Wa {
|
|
|
1610
1610
|
const I = t.interpolation !== void 0 ? Oa[t.interpolation] : Ne, g = this._getArrayFromAccessor(a);
|
|
1611
1611
|
for (let B = 0, C = r.length; B < C; B++) {
|
|
1612
1612
|
const f = new c(
|
|
1613
|
-
r[B] + "." +
|
|
1613
|
+
r[B] + "." + sA[i.path],
|
|
1614
1614
|
e.array,
|
|
1615
1615
|
g,
|
|
1616
1616
|
I
|
|
1617
1617
|
);
|
|
1618
|
-
t.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(f),
|
|
1618
|
+
t.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(f), s.push(f);
|
|
1619
1619
|
}
|
|
1620
|
-
return
|
|
1620
|
+
return s;
|
|
1621
1621
|
}
|
|
1622
1622
|
_getArrayFromAccessor(A) {
|
|
1623
1623
|
let e = A.array;
|
|
1624
1624
|
if (A.normalized) {
|
|
1625
1625
|
const a = $A(e.constructor), t = new Float32Array(e.length);
|
|
1626
|
-
for (let
|
|
1627
|
-
t[
|
|
1626
|
+
for (let i = 0, s = e.length; i < s; i++)
|
|
1627
|
+
t[i] = e[i] * a;
|
|
1628
1628
|
e = t;
|
|
1629
1629
|
}
|
|
1630
1630
|
return e;
|
|
@@ -1654,11 +1654,11 @@ function Va(n, A, e) {
|
|
|
1654
1654
|
}
|
|
1655
1655
|
} else
|
|
1656
1656
|
return;
|
|
1657
|
-
const
|
|
1658
|
-
if (
|
|
1657
|
+
const i = A.targets;
|
|
1658
|
+
if (i !== void 0) {
|
|
1659
1659
|
const o = new CA(), r = new CA();
|
|
1660
|
-
for (let c = 0, I =
|
|
1661
|
-
const g =
|
|
1660
|
+
for (let c = 0, I = i.length; c < I; c++) {
|
|
1661
|
+
const g = i[c];
|
|
1662
1662
|
if (g.POSITION !== void 0) {
|
|
1663
1663
|
const B = e.json.accessors[g.POSITION], C = B.min, f = B.max;
|
|
1664
1664
|
if (C !== void 0 && f !== void 0) {
|
|
@@ -1674,25 +1674,25 @@ function Va(n, A, e) {
|
|
|
1674
1674
|
t.expandByVector(o);
|
|
1675
1675
|
}
|
|
1676
1676
|
n.boundingBox = t;
|
|
1677
|
-
const
|
|
1678
|
-
t.getCenter(
|
|
1677
|
+
const s = new Vt();
|
|
1678
|
+
t.getCenter(s.center), s.radius = t.min.distanceTo(t.max) / 2, n.boundingSphere = s;
|
|
1679
1679
|
}
|
|
1680
1680
|
function ke(n, A, e) {
|
|
1681
1681
|
const a = A.attributes, t = [];
|
|
1682
|
-
function s
|
|
1683
|
-
return e.getDependency("accessor",
|
|
1682
|
+
function i(s, o) {
|
|
1683
|
+
return e.getDependency("accessor", s).then(function(r) {
|
|
1684
1684
|
n.setAttribute(o, r);
|
|
1685
1685
|
});
|
|
1686
1686
|
}
|
|
1687
|
-
for (const
|
|
1688
|
-
const o = ZA[
|
|
1689
|
-
o in n.attributes || t.push(
|
|
1687
|
+
for (const s in a) {
|
|
1688
|
+
const o = ZA[s] || s.toLowerCase();
|
|
1689
|
+
o in n.attributes || t.push(i(a[s], o));
|
|
1690
1690
|
}
|
|
1691
1691
|
if (A.indices !== void 0 && !n.index) {
|
|
1692
|
-
const
|
|
1692
|
+
const s = e.getDependency("accessor", A.indices).then(function(o) {
|
|
1693
1693
|
n.setIndex(o);
|
|
1694
1694
|
});
|
|
1695
|
-
t.push(
|
|
1695
|
+
t.push(s);
|
|
1696
1696
|
}
|
|
1697
1697
|
return le.workingColorSpace !== Y && "COLOR_0" in a && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${le.workingColorSpace}" not supported.`), tA(n, A), Va(n, A, e), Promise.all(t).then(function() {
|
|
1698
1698
|
return A.targets !== void 0 ? Ja(n, A.targets, e) : n;
|
|
@@ -1723,24 +1723,24 @@ class za extends TA {
|
|
|
1723
1723
|
return this.workerLimit = A, this;
|
|
1724
1724
|
}
|
|
1725
1725
|
load(A, e, a, t) {
|
|
1726
|
-
const
|
|
1727
|
-
|
|
1728
|
-
this.parse(
|
|
1726
|
+
const i = new aA(this.manager);
|
|
1727
|
+
i.setPath(this.path), i.setResponseType("arraybuffer"), i.setRequestHeader(this.requestHeader), i.setWithCredentials(this.withCredentials), i.load(A, (s) => {
|
|
1728
|
+
this.parse(s, e, t);
|
|
1729
1729
|
}, a, t);
|
|
1730
1730
|
}
|
|
1731
1731
|
parse(A, e, a = () => {
|
|
1732
1732
|
}) {
|
|
1733
1733
|
this.decodeDracoFile(A, e, null, null, AA, a).catch(a);
|
|
1734
1734
|
}
|
|
1735
|
-
decodeDracoFile(A, e, a, t,
|
|
1735
|
+
decodeDracoFile(A, e, a, t, i = Y, s = () => {
|
|
1736
1736
|
}) {
|
|
1737
1737
|
const o = {
|
|
1738
1738
|
attributeIDs: a || this.defaultAttributeIDs,
|
|
1739
1739
|
attributeTypes: t || this.defaultAttributeTypes,
|
|
1740
1740
|
useUniqueIDs: !!a,
|
|
1741
|
-
vertexColorSpace:
|
|
1741
|
+
vertexColorSpace: i
|
|
1742
1742
|
};
|
|
1743
|
-
return this.decodeGeometry(A, o).then(e).catch(
|
|
1743
|
+
return this.decodeGeometry(A, o).then(e).catch(s);
|
|
1744
1744
|
}
|
|
1745
1745
|
decodeGeometry(A, e) {
|
|
1746
1746
|
const a = JSON.stringify(e);
|
|
@@ -1754,11 +1754,11 @@ class za extends TA {
|
|
|
1754
1754
|
);
|
|
1755
1755
|
}
|
|
1756
1756
|
let t;
|
|
1757
|
-
const
|
|
1758
|
-
t._callbacks[
|
|
1757
|
+
const i = this.workerNextTaskID++, s = A.byteLength, o = this._getWorker(i, s).then((r) => (t = r, new Promise((c, I) => {
|
|
1758
|
+
t._callbacks[i] = { resolve: c, reject: I }, t.postMessage({ type: "decode", id: i, taskConfig: e, buffer: A }, [A]);
|
|
1759
1759
|
}))).then((r) => this._createGeometry(r.geometry));
|
|
1760
1760
|
return o.catch(() => !0).then(() => {
|
|
1761
|
-
t &&
|
|
1761
|
+
t && i && this._releaseTask(t, i);
|
|
1762
1762
|
}), HA.set(A, {
|
|
1763
1763
|
key: a,
|
|
1764
1764
|
promise: o
|
|
@@ -1768,21 +1768,21 @@ class za extends TA {
|
|
|
1768
1768
|
const e = new ne();
|
|
1769
1769
|
A.index && e.setIndex(new X(A.index.array, 1));
|
|
1770
1770
|
for (let a = 0; a < A.attributes.length; a++) {
|
|
1771
|
-
const t = A.attributes[a],
|
|
1772
|
-
|
|
1771
|
+
const t = A.attributes[a], i = t.name, s = t.array, o = t.itemSize, r = new X(s, o);
|
|
1772
|
+
i === "color" && (this._assignVertexColorSpace(r, t.vertexColorSpace), r.normalized = !(s instanceof Float32Array)), e.setAttribute(i, r);
|
|
1773
1773
|
}
|
|
1774
1774
|
return e;
|
|
1775
1775
|
}
|
|
1776
1776
|
_assignVertexColorSpace(A, e) {
|
|
1777
1777
|
if (e !== AA) return;
|
|
1778
1778
|
const a = new rA();
|
|
1779
|
-
for (let t = 0,
|
|
1779
|
+
for (let t = 0, i = A.count; t < i; t++)
|
|
1780
1780
|
a.fromBufferAttribute(A, t).convertSRGBToLinear(), A.setXYZ(t, a.r, a.g, a.b);
|
|
1781
1781
|
}
|
|
1782
1782
|
_loadLibrary(A, e) {
|
|
1783
1783
|
const a = new aA(this.manager);
|
|
1784
|
-
return a.setPath(this.decoderPath), a.setResponseType(e), a.setWithCredentials(this.withCredentials), new Promise((t,
|
|
1785
|
-
a.load(A, t, void 0,
|
|
1784
|
+
return a.setPath(this.decoderPath), a.setResponseType(e), a.setWithCredentials(this.withCredentials), new Promise((t, i) => {
|
|
1785
|
+
a.load(A, t, void 0, i);
|
|
1786
1786
|
});
|
|
1787
1787
|
}
|
|
1788
1788
|
preload() {
|
|
@@ -1794,37 +1794,37 @@ class za extends TA {
|
|
|
1794
1794
|
return A ? e.push(this._loadLibrary("draco_decoder.js", "text")) : (e.push(this._loadLibrary("draco_wasm_wrapper.js", "text")), e.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer"))), this.decoderPending = Promise.all(e).then((a) => {
|
|
1795
1795
|
const t = a[0];
|
|
1796
1796
|
A || (this.decoderConfig.wasmBinary = a[1]);
|
|
1797
|
-
const
|
|
1797
|
+
const i = Xa.toString(), s = [
|
|
1798
1798
|
"/* draco decoder */",
|
|
1799
1799
|
t,
|
|
1800
1800
|
"",
|
|
1801
1801
|
"/* worker */",
|
|
1802
|
-
|
|
1802
|
+
i.substring(i.indexOf("{") + 1, i.lastIndexOf("}"))
|
|
1803
1803
|
].join(`
|
|
1804
1804
|
`);
|
|
1805
|
-
this.workerSourceURL = URL.createObjectURL(new Blob([
|
|
1805
|
+
this.workerSourceURL = URL.createObjectURL(new Blob([s]));
|
|
1806
1806
|
}), this.decoderPending;
|
|
1807
1807
|
}
|
|
1808
1808
|
_getWorker(A, e) {
|
|
1809
1809
|
return this._initDecoder().then(() => {
|
|
1810
1810
|
if (this.workerPool.length < this.workerLimit) {
|
|
1811
1811
|
const t = new Worker(this.workerSourceURL);
|
|
1812
|
-
t._callbacks = {}, t._taskCosts = {}, t._taskLoad = 0, t.postMessage({ type: "init", decoderConfig: this.decoderConfig }), t.onmessage = function(
|
|
1813
|
-
const
|
|
1814
|
-
switch (
|
|
1812
|
+
t._callbacks = {}, t._taskCosts = {}, t._taskLoad = 0, t.postMessage({ type: "init", decoderConfig: this.decoderConfig }), t.onmessage = function(i) {
|
|
1813
|
+
const s = i.data;
|
|
1814
|
+
switch (s.type) {
|
|
1815
1815
|
case "decode":
|
|
1816
|
-
t._callbacks[
|
|
1816
|
+
t._callbacks[s.id].resolve(s);
|
|
1817
1817
|
break;
|
|
1818
1818
|
case "error":
|
|
1819
|
-
t._callbacks[
|
|
1819
|
+
t._callbacks[s.id].reject(s);
|
|
1820
1820
|
break;
|
|
1821
1821
|
default:
|
|
1822
|
-
console.error('THREE.DRACOLoader: Unexpected message, "' +
|
|
1822
|
+
console.error('THREE.DRACOLoader: Unexpected message, "' + s.type + '"');
|
|
1823
1823
|
}
|
|
1824
1824
|
}, this.workerPool.push(t);
|
|
1825
1825
|
} else
|
|
1826
|
-
this.workerPool.sort(function(t,
|
|
1827
|
-
return t._taskLoad >
|
|
1826
|
+
this.workerPool.sort(function(t, i) {
|
|
1827
|
+
return t._taskLoad > i._taskLoad ? -1 : 1;
|
|
1828
1828
|
});
|
|
1829
1829
|
const a = this.workerPool[this.workerPool.length - 1];
|
|
1830
1830
|
return a._taskCosts[A] = e, a._taskLoad += e, a;
|
|
@@ -1844,8 +1844,8 @@ class za extends TA {
|
|
|
1844
1844
|
}
|
|
1845
1845
|
function Xa() {
|
|
1846
1846
|
let n, A;
|
|
1847
|
-
onmessage = function(
|
|
1848
|
-
const o =
|
|
1847
|
+
onmessage = function(s) {
|
|
1848
|
+
const o = s.data;
|
|
1849
1849
|
switch (o.type) {
|
|
1850
1850
|
case "init":
|
|
1851
1851
|
n = o.decoderConfig, A = new Promise(function(I) {
|
|
@@ -1870,14 +1870,14 @@ function Xa() {
|
|
|
1870
1870
|
break;
|
|
1871
1871
|
}
|
|
1872
1872
|
};
|
|
1873
|
-
function e(
|
|
1873
|
+
function e(s, o, r, c) {
|
|
1874
1874
|
const I = c.attributeIDs, g = c.attributeTypes;
|
|
1875
1875
|
let B, C;
|
|
1876
1876
|
const f = o.GetEncodedGeometryType(r);
|
|
1877
|
-
if (f ===
|
|
1878
|
-
B = new
|
|
1879
|
-
else if (f ===
|
|
1880
|
-
B = new
|
|
1877
|
+
if (f === s.TRIANGULAR_MESH)
|
|
1878
|
+
B = new s.Mesh(), C = o.DecodeArrayToMesh(r, r.byteLength, B);
|
|
1879
|
+
else if (f === s.POINT_CLOUD)
|
|
1880
|
+
B = new s.PointCloud(), C = o.DecodeArrayToPointCloud(r, r.byteLength, B);
|
|
1881
1881
|
else
|
|
1882
1882
|
throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
|
|
1883
1883
|
if (!C.ok() || B.ptr === 0)
|
|
@@ -1889,46 +1889,46 @@ function Xa() {
|
|
|
1889
1889
|
if (c.useUniqueIDs)
|
|
1890
1890
|
h = I[p], l = o.GetAttributeByUniqueId(B, h);
|
|
1891
1891
|
else {
|
|
1892
|
-
if (h = o.GetAttributeId(B,
|
|
1892
|
+
if (h = o.GetAttributeId(B, s[I[p]]), h === -1) continue;
|
|
1893
1893
|
l = o.GetAttribute(B, h);
|
|
1894
1894
|
}
|
|
1895
|
-
const u = t(
|
|
1895
|
+
const u = t(s, o, B, p, E, l);
|
|
1896
1896
|
p === "color" && (u.vertexColorSpace = c.vertexColorSpace), d.attributes.push(u);
|
|
1897
1897
|
}
|
|
1898
|
-
return f ===
|
|
1898
|
+
return f === s.TRIANGULAR_MESH && (d.index = a(s, o, B)), s.destroy(B), d;
|
|
1899
1899
|
}
|
|
1900
|
-
function a(
|
|
1901
|
-
const I = r.num_faces() * 3, g = I * 4, B =
|
|
1900
|
+
function a(s, o, r) {
|
|
1901
|
+
const I = r.num_faces() * 3, g = I * 4, B = s._malloc(g);
|
|
1902
1902
|
o.GetTrianglesUInt32Array(r, g, B);
|
|
1903
|
-
const C = new Uint32Array(
|
|
1904
|
-
return
|
|
1903
|
+
const C = new Uint32Array(s.HEAPF32.buffer, B, I).slice();
|
|
1904
|
+
return s._free(B), { array: C, itemSize: 1 };
|
|
1905
1905
|
}
|
|
1906
|
-
function t(
|
|
1907
|
-
const B = g.num_components(), f = r.num_points() * B, d = f * I.BYTES_PER_ELEMENT, p = s
|
|
1906
|
+
function t(s, o, r, c, I, g) {
|
|
1907
|
+
const B = g.num_components(), f = r.num_points() * B, d = f * I.BYTES_PER_ELEMENT, p = i(s, I), E = s._malloc(d);
|
|
1908
1908
|
o.GetAttributeDataArrayForAllPoints(r, g, p, d, E);
|
|
1909
|
-
const l = new I(
|
|
1910
|
-
return
|
|
1909
|
+
const l = new I(s.HEAPF32.buffer, E, f).slice();
|
|
1910
|
+
return s._free(E), {
|
|
1911
1911
|
name: c,
|
|
1912
1912
|
array: l,
|
|
1913
1913
|
itemSize: B
|
|
1914
1914
|
};
|
|
1915
1915
|
}
|
|
1916
|
-
function s
|
|
1916
|
+
function i(s, o) {
|
|
1917
1917
|
switch (o) {
|
|
1918
1918
|
case Float32Array:
|
|
1919
|
-
return
|
|
1919
|
+
return s.DT_FLOAT32;
|
|
1920
1920
|
case Int8Array:
|
|
1921
|
-
return
|
|
1921
|
+
return s.DT_INT8;
|
|
1922
1922
|
case Int16Array:
|
|
1923
|
-
return
|
|
1923
|
+
return s.DT_INT16;
|
|
1924
1924
|
case Int32Array:
|
|
1925
|
-
return
|
|
1925
|
+
return s.DT_INT32;
|
|
1926
1926
|
case Uint8Array:
|
|
1927
|
-
return
|
|
1927
|
+
return s.DT_UINT8;
|
|
1928
1928
|
case Uint16Array:
|
|
1929
|
-
return
|
|
1929
|
+
return s.DT_UINT16;
|
|
1930
1930
|
case Uint32Array:
|
|
1931
|
-
return
|
|
1931
|
+
return s.DT_UINT32;
|
|
1932
1932
|
}
|
|
1933
1933
|
}
|
|
1934
1934
|
}
|
|
@@ -1950,8 +1950,8 @@ class Za {
|
|
|
1950
1950
|
_onMessage(A, e) {
|
|
1951
1951
|
const a = this.workersResolve[A];
|
|
1952
1952
|
if (a && a(e), this.queue.length) {
|
|
1953
|
-
const { resolve: t, msg:
|
|
1954
|
-
this.workersResolve[A] = t, this.workers[A].postMessage(
|
|
1953
|
+
const { resolve: t, msg: i, transfer: s } = this.queue.shift();
|
|
1954
|
+
this.workersResolve[A] = t, this.workers[A].postMessage(i, s);
|
|
1955
1955
|
} else
|
|
1956
1956
|
this.workerStatus ^= 1 << A;
|
|
1957
1957
|
}
|
|
@@ -1971,8 +1971,8 @@ class Za {
|
|
|
1971
1971
|
this.workers.forEach((A) => A.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
1972
1972
|
}
|
|
1973
1973
|
}
|
|
1974
|
-
const $a = 0, Fe = 2,
|
|
1975
|
-
class
|
|
1974
|
+
const $a = 0, Fe = 2, Ai = 1, Re = 2, ei = 0, ti = 1, ai = 10, ii = 0, Je = 9, je = 15, Ke = 16, Pe = 22, Ye = 37, We = 43, Ve = 76, ze = 83, Xe = 97, Ze = 100, $e = 103, At = 109, et = 165, tt = 166;
|
|
1975
|
+
class si {
|
|
1976
1976
|
constructor() {
|
|
1977
1977
|
this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null;
|
|
1978
1978
|
}
|
|
@@ -2015,16 +2015,16 @@ const U = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
|
2015
2015
|
function Se(n) {
|
|
2016
2016
|
return typeof TextDecoder < "u" ? new TextDecoder().decode(n) : Buffer.from(n).toString("utf8");
|
|
2017
2017
|
}
|
|
2018
|
-
function
|
|
2018
|
+
function ni(n) {
|
|
2019
2019
|
const A = new Uint8Array(n.buffer, n.byteOffset, U.length);
|
|
2020
2020
|
if (A[0] !== U[0] || A[1] !== U[1] || A[2] !== U[2] || A[3] !== U[3] || A[4] !== U[4] || A[5] !== U[5] || A[6] !== U[6] || A[7] !== U[7] || A[8] !== U[8] || A[9] !== U[9] || A[10] !== U[10] || A[11] !== U[11]) throw new Error("Missing KTX 2.0 identifier.");
|
|
2021
|
-
const e = new
|
|
2021
|
+
const e = new si(), a = 17 * Uint32Array.BYTES_PER_ELEMENT, t = new dA(n, U.length, a, !0);
|
|
2022
2022
|
e.vkFormat = t._nextUint32(), e.typeSize = t._nextUint32(), e.pixelWidth = t._nextUint32(), e.pixelHeight = t._nextUint32(), e.pixelDepth = t._nextUint32(), e.layerCount = t._nextUint32(), e.faceCount = t._nextUint32();
|
|
2023
|
-
const
|
|
2023
|
+
const i = t._nextUint32();
|
|
2024
2024
|
e.supercompressionScheme = t._nextUint32();
|
|
2025
|
-
const
|
|
2026
|
-
for (let T = 0; T <
|
|
2027
|
-
const C = new dA(n,
|
|
2025
|
+
const s = t._nextUint32(), o = t._nextUint32(), r = t._nextUint32(), c = t._nextUint32(), I = t._nextUint64(), g = t._nextUint64(), B = new dA(n, U.length + a, 3 * i * 8, !0);
|
|
2026
|
+
for (let T = 0; T < i; T++) e.levels.push({ levelData: new Uint8Array(n.buffer, n.byteOffset + B._nextUint64(), B._nextUint64()), uncompressedByteLength: B._nextUint64() });
|
|
2027
|
+
const C = new dA(n, s, o, !0), f = { 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: [] }, d = (f.descriptorBlockSize / 4 - 6) / 4;
|
|
2028
2028
|
for (let T = 0; T < d; T++) {
|
|
2029
2029
|
const N = { bitOffset: C._nextUint16(), bitLength: C._nextUint8(), channelType: C._nextUint8(), samplePosition: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
|
|
2030
2030
|
64 & N.channelType ? (N.sampleLower = C._nextInt32(), N.sampleUpper = C._nextInt32()) : (N.sampleLower = C._nextUint32(), N.sampleUpper = C._nextUint32()), f.samples[T] = N;
|
|
@@ -2037,7 +2037,7 @@ function ns(n) {
|
|
|
2037
2037
|
}
|
|
2038
2038
|
if (g <= 0) return e;
|
|
2039
2039
|
const E = new dA(n, I, g, !0), l = E._nextUint16(), h = E._nextUint16(), u = E._nextUint32(), k = E._nextUint32(), R = E._nextUint32(), G = E._nextUint32(), M = [];
|
|
2040
|
-
for (let T = 0; T <
|
|
2040
|
+
for (let T = 0; T < i; T++) M.push({ imageFlags: E._nextUint32(), rgbSliceByteOffset: E._nextUint32(), rgbSliceByteLength: E._nextUint32(), alphaSliceByteOffset: E._nextUint32(), alphaSliceByteLength: E._nextUint32() });
|
|
2041
2041
|
const b = I + E._offset, Q = b + u, m = Q + k, D = m + R, w = new Uint8Array(n.buffer, n.byteOffset + b, u), S = new Uint8Array(n.buffer, n.byteOffset + Q, k), F = new Uint8Array(n.buffer, n.byteOffset + m, R), x = new Uint8Array(n.buffer, n.byteOffset + D, G);
|
|
2042
2042
|
return e.globalData = { endpointCount: l, selectorCount: h, imageDescs: M, endpointsData: w, selectorsData: S, tablesData: F, extendedData: x }, e;
|
|
2043
2043
|
}
|
|
@@ -2045,7 +2045,7 @@ let OA, eA, Ae;
|
|
|
2045
2045
|
const vA = { env: { emscripten_notify_memory_growth: function(n) {
|
|
2046
2046
|
Ae = new Uint8Array(eA.exports.memory.buffer);
|
|
2047
2047
|
} } };
|
|
2048
|
-
class
|
|
2048
|
+
class oi {
|
|
2049
2049
|
init() {
|
|
2050
2050
|
return OA || (OA = typeof fetch < "u" ? fetch("data:application/wasm;base64," + ye).then((A) => A.arrayBuffer()).then((A) => WebAssembly.instantiate(A, vA)).then(this._init) : WebAssembly.instantiate(Buffer.from(ye, "base64"), vA).then(this._init), OA);
|
|
2051
2051
|
}
|
|
@@ -2056,8 +2056,8 @@ class os {
|
|
|
2056
2056
|
if (!eA) throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
2057
2057
|
const a = A.byteLength, t = eA.exports.malloc(a);
|
|
2058
2058
|
Ae.set(A, t), e = e || Number(eA.exports.ZSTD_findDecompressedSize(t, a));
|
|
2059
|
-
const
|
|
2060
|
-
return eA.exports.free(t), eA.exports.free(
|
|
2059
|
+
const i = eA.exports.malloc(e), s = eA.exports.ZSTD_decompress(i, e, t, a), o = Ae.slice(i, i + s);
|
|
2060
|
+
return eA.exports.free(t), eA.exports.free(i), o;
|
|
2061
2061
|
}
|
|
2062
2062
|
}
|
|
2063
2063
|
const ye = "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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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", JA = /* @__PURE__ */ new WeakMap();
|
|
@@ -2108,19 +2108,19 @@ class $ extends TA {
|
|
|
2108
2108
|
const e = A.loadAsync("basis_transcoder.js"), a = new aA(this.manager);
|
|
2109
2109
|
a.setPath(this.transcoderPath), a.setResponseType("arraybuffer"), a.setWithCredentials(this.withCredentials);
|
|
2110
2110
|
const t = a.loadAsync("basis_transcoder.wasm");
|
|
2111
|
-
this.transcoderPending = Promise.all([e, t]).then(([
|
|
2111
|
+
this.transcoderPending = Promise.all([e, t]).then(([i, s]) => {
|
|
2112
2112
|
const o = $.BasisWorker.toString(), r = [
|
|
2113
2113
|
"/* constants */",
|
|
2114
2114
|
"let _EngineFormat = " + JSON.stringify($.EngineFormat),
|
|
2115
2115
|
"let _TranscoderFormat = " + JSON.stringify($.TranscoderFormat),
|
|
2116
2116
|
"let _BasisFormat = " + JSON.stringify($.BasisFormat),
|
|
2117
2117
|
"/* basis_transcoder.js */",
|
|
2118
|
-
|
|
2118
|
+
i,
|
|
2119
2119
|
"/* worker */",
|
|
2120
2120
|
o.substring(o.indexOf("{") + 1, o.lastIndexOf("}"))
|
|
2121
2121
|
].join(`
|
|
2122
2122
|
`);
|
|
2123
|
-
this.workerSourceURL = URL.createObjectURL(new Blob([r])), this.transcoderBinary =
|
|
2123
|
+
this.workerSourceURL = URL.createObjectURL(new Blob([r])), this.transcoderBinary = s, this.workerPool.setWorkerCreator(() => {
|
|
2124
2124
|
const c = new Worker(this.workerSourceURL), I = this.transcoderBinary.slice(0);
|
|
2125
2125
|
return c.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: I }, [I]), c;
|
|
2126
2126
|
});
|
|
@@ -2133,9 +2133,9 @@ class $ extends TA {
|
|
|
2133
2133
|
load(A, e, a, t) {
|
|
2134
2134
|
if (this.workerConfig === null)
|
|
2135
2135
|
throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2136
|
-
const
|
|
2137
|
-
|
|
2138
|
-
this.parse(
|
|
2136
|
+
const i = new aA(this.manager);
|
|
2137
|
+
i.setResponseType("arraybuffer"), i.setWithCredentials(this.withCredentials), i.load(A, (s) => {
|
|
2138
|
+
this.parse(s, e, t);
|
|
2139
2139
|
}, a, t);
|
|
2140
2140
|
}
|
|
2141
2141
|
parse(A, e, a) {
|
|
@@ -2146,16 +2146,16 @@ class $ extends TA {
|
|
|
2146
2146
|
this._createTexture(A).then((t) => e ? e(t) : null).catch(a);
|
|
2147
2147
|
}
|
|
2148
2148
|
_createTextureFrom(A, e) {
|
|
2149
|
-
const { faces: a, width: t, height:
|
|
2149
|
+
const { faces: a, width: t, height: i, format: s, type: o, error: r, dfdFlags: c } = A;
|
|
2150
2150
|
if (o === "error") return Promise.reject(r);
|
|
2151
2151
|
let I;
|
|
2152
2152
|
if (e.faceCount === 6)
|
|
2153
|
-
I = new Xt(a,
|
|
2153
|
+
I = new Xt(a, s, K);
|
|
2154
2154
|
else {
|
|
2155
2155
|
const g = a[0].mipmaps;
|
|
2156
|
-
I = e.layerCount > 1 ? new Zt(g, t,
|
|
2156
|
+
I = e.layerCount > 1 ? new Zt(g, t, i, e.layerCount, s, K) : new qe(g, t, i, s, K);
|
|
2157
2157
|
}
|
|
2158
|
-
return I.minFilter = a[0].mipmaps.length === 1 ? GA :
|
|
2158
|
+
return I.minFilter = a[0].mipmaps.length === 1 ? GA : se, I.magFilter = GA, I.generateMipmaps = !1, I.needsUpdate = !0, I.colorSpace = at(e), I.premultiplyAlpha = !!(c & Ai), I;
|
|
2159
2159
|
}
|
|
2160
2160
|
/**
|
|
2161
2161
|
* @param {ArrayBuffer} buffer
|
|
@@ -2163,11 +2163,11 @@ class $ extends TA {
|
|
|
2163
2163
|
* @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
|
|
2164
2164
|
*/
|
|
2165
2165
|
async _createTexture(A, e = {}) {
|
|
2166
|
-
const a =
|
|
2167
|
-
if (a.vkFormat !==
|
|
2168
|
-
return
|
|
2169
|
-
const t = e,
|
|
2170
|
-
return JA.set(A, { promise:
|
|
2166
|
+
const a = ni(new Uint8Array(A));
|
|
2167
|
+
if (a.vkFormat !== ii)
|
|
2168
|
+
return ci(a);
|
|
2169
|
+
const t = e, i = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: A, taskConfig: t }, [A])).then((s) => this._createTextureFrom(s.data, a));
|
|
2170
|
+
return JA.set(A, { promise: i }), i;
|
|
2171
2171
|
}
|
|
2172
2172
|
dispose() {
|
|
2173
2173
|
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), jA--, this;
|
|
@@ -2203,19 +2203,19 @@ $.EngineFormat = {
|
|
|
2203
2203
|
RGBA_ETC2_EAC_Format: ea,
|
|
2204
2204
|
RGBA_PVRTC_4BPPV1_Format: ta,
|
|
2205
2205
|
RGBA_S3TC_DXT5_Format: aa,
|
|
2206
|
-
RGB_ETC1_Format:
|
|
2207
|
-
RGB_ETC2_Format:
|
|
2206
|
+
RGB_ETC1_Format: ia,
|
|
2207
|
+
RGB_ETC2_Format: sa,
|
|
2208
2208
|
RGB_PVRTC_4BPPV1_Format: na,
|
|
2209
2209
|
RGBA_S3TC_DXT1_Format: oa
|
|
2210
2210
|
};
|
|
2211
2211
|
$.BasisWorker = function() {
|
|
2212
2212
|
let n, A, e;
|
|
2213
|
-
const a = _EngineFormat, t = _TranscoderFormat,
|
|
2213
|
+
const a = _EngineFormat, t = _TranscoderFormat, i = _BasisFormat;
|
|
2214
2214
|
self.addEventListener("message", function(f) {
|
|
2215
2215
|
const d = f.data;
|
|
2216
2216
|
switch (d.type) {
|
|
2217
2217
|
case "init":
|
|
2218
|
-
n = d.config,
|
|
2218
|
+
n = d.config, s(d.transcoderBinary);
|
|
2219
2219
|
break;
|
|
2220
2220
|
case "transcode":
|
|
2221
2221
|
A.then(() => {
|
|
@@ -2229,7 +2229,7 @@ $.BasisWorker = function() {
|
|
|
2229
2229
|
break;
|
|
2230
2230
|
}
|
|
2231
2231
|
});
|
|
2232
|
-
function
|
|
2232
|
+
function s(f) {
|
|
2233
2233
|
A = new Promise((d) => {
|
|
2234
2234
|
e = { wasmBinary: f, onRuntimeInitialized: d }, BASIS(e);
|
|
2235
2235
|
}).then(() => {
|
|
@@ -2243,7 +2243,7 @@ $.BasisWorker = function() {
|
|
|
2243
2243
|
}
|
|
2244
2244
|
if (!d.isValid())
|
|
2245
2245
|
throw p(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
|
|
2246
|
-
const E = d.isUASTC() ?
|
|
2246
|
+
const E = d.isUASTC() ? i.UASTC_4x4 : i.ETC1S, l = d.getWidth(), h = d.getHeight(), u = d.getLayers() || 1, k = d.getLevels(), R = d.getFaces(), G = d.getHasAlpha(), M = d.getDFDFlags(), { transcoderFormat: b, engineFormat: Q } = g(E, l, h, G);
|
|
2247
2247
|
if (!l || !h || !k)
|
|
2248
2248
|
throw p(), new Error("THREE.KTX2Loader: Invalid texture");
|
|
2249
2249
|
if (!d.startTranscoding())
|
|
@@ -2255,8 +2255,8 @@ $.BasisWorker = function() {
|
|
|
2255
2255
|
const x = [];
|
|
2256
2256
|
let T, N;
|
|
2257
2257
|
for (let J = 0; J < u; J++) {
|
|
2258
|
-
const
|
|
2259
|
-
w === 0 && F === 0 && J === 0 && (
|
|
2258
|
+
const iA = d.getImageLevelInfo(F, J, w);
|
|
2259
|
+
w === 0 && F === 0 && J === 0 && (iA.origWidth % 4 !== 0 || iA.origHeight % 4 !== 0) && console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), k > 1 ? (T = iA.origWidth, N = iA.origHeight) : (T = iA.width, N = iA.height);
|
|
2260
2260
|
const IA = new Uint8Array(d.getImageTranscodedSizeInBytes(F, J, 0, b));
|
|
2261
2261
|
if (!d.transcodeImage(IA, F, J, w, b, 0, -1, -1))
|
|
2262
2262
|
throw p(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
@@ -2272,7 +2272,7 @@ $.BasisWorker = function() {
|
|
|
2272
2272
|
const r = [
|
|
2273
2273
|
{
|
|
2274
2274
|
if: "astcSupported",
|
|
2275
|
-
basisFormat: [
|
|
2275
|
+
basisFormat: [i.UASTC_4x4],
|
|
2276
2276
|
transcoderFormat: [t.ASTC_4x4, t.ASTC_4x4],
|
|
2277
2277
|
engineFormat: [a.RGBA_ASTC_4x4_Format, a.RGBA_ASTC_4x4_Format],
|
|
2278
2278
|
priorityETC1S: 1 / 0,
|
|
@@ -2281,7 +2281,7 @@ $.BasisWorker = function() {
|
|
|
2281
2281
|
},
|
|
2282
2282
|
{
|
|
2283
2283
|
if: "bptcSupported",
|
|
2284
|
-
basisFormat: [
|
|
2284
|
+
basisFormat: [i.ETC1S, i.UASTC_4x4],
|
|
2285
2285
|
transcoderFormat: [t.BC7_M5, t.BC7_M5],
|
|
2286
2286
|
engineFormat: [a.RGBA_BPTC_Format, a.RGBA_BPTC_Format],
|
|
2287
2287
|
priorityETC1S: 3,
|
|
@@ -2290,7 +2290,7 @@ $.BasisWorker = function() {
|
|
|
2290
2290
|
},
|
|
2291
2291
|
{
|
|
2292
2292
|
if: "dxtSupported",
|
|
2293
|
-
basisFormat: [
|
|
2293
|
+
basisFormat: [i.ETC1S, i.UASTC_4x4],
|
|
2294
2294
|
transcoderFormat: [t.BC1, t.BC3],
|
|
2295
2295
|
engineFormat: [a.RGBA_S3TC_DXT1_Format, a.RGBA_S3TC_DXT5_Format],
|
|
2296
2296
|
priorityETC1S: 4,
|
|
@@ -2299,7 +2299,7 @@ $.BasisWorker = function() {
|
|
|
2299
2299
|
},
|
|
2300
2300
|
{
|
|
2301
2301
|
if: "etc2Supported",
|
|
2302
|
-
basisFormat: [
|
|
2302
|
+
basisFormat: [i.ETC1S, i.UASTC_4x4],
|
|
2303
2303
|
transcoderFormat: [t.ETC1, t.ETC2],
|
|
2304
2304
|
engineFormat: [a.RGB_ETC2_Format, a.RGBA_ETC2_EAC_Format],
|
|
2305
2305
|
priorityETC1S: 1,
|
|
@@ -2308,7 +2308,7 @@ $.BasisWorker = function() {
|
|
|
2308
2308
|
},
|
|
2309
2309
|
{
|
|
2310
2310
|
if: "etc1Supported",
|
|
2311
|
-
basisFormat: [
|
|
2311
|
+
basisFormat: [i.ETC1S, i.UASTC_4x4],
|
|
2312
2312
|
transcoderFormat: [t.ETC1],
|
|
2313
2313
|
engineFormat: [a.RGB_ETC1_Format],
|
|
2314
2314
|
priorityETC1S: 2,
|
|
@@ -2317,7 +2317,7 @@ $.BasisWorker = function() {
|
|
|
2317
2317
|
},
|
|
2318
2318
|
{
|
|
2319
2319
|
if: "pvrtcSupported",
|
|
2320
|
-
basisFormat: [
|
|
2320
|
+
basisFormat: [i.ETC1S, i.UASTC_4x4],
|
|
2321
2321
|
transcoderFormat: [t.PVRTC1_4_RGB, t.PVRTC1_4_RGBA],
|
|
2322
2322
|
engineFormat: [a.RGB_PVRTC_4BPPV1_Format, a.RGBA_PVRTC_4BPPV1_Format],
|
|
2323
2323
|
priorityETC1S: 5,
|
|
@@ -2331,7 +2331,7 @@ $.BasisWorker = function() {
|
|
|
2331
2331
|
});
|
|
2332
2332
|
function g(f, d, p, E) {
|
|
2333
2333
|
let l, h;
|
|
2334
|
-
const u = f ===
|
|
2334
|
+
const u = f === i.ETC1S ? c : I;
|
|
2335
2335
|
for (let k = 0; k < u.length; k++) {
|
|
2336
2336
|
const R = u[k];
|
|
2337
2337
|
if (n[R.if] && R.basisFormat.includes(f) && !(E && R.transcoderFormat.length < 2) && !(R.needsPowerOfTwo && !(B(d) && B(p))))
|
|
@@ -2358,7 +2358,7 @@ $.BasisWorker = function() {
|
|
|
2358
2358
|
return p;
|
|
2359
2359
|
}
|
|
2360
2360
|
};
|
|
2361
|
-
const
|
|
2361
|
+
const ri = /* @__PURE__ */ new Set([bA, pA, uA]), PA = {
|
|
2362
2362
|
[At]: bA,
|
|
2363
2363
|
[Xe]: bA,
|
|
2364
2364
|
[Ye]: bA,
|
|
@@ -2389,18 +2389,18 @@ const rs = /* @__PURE__ */ new Set([bA, pA, uA]), PA = {
|
|
|
2389
2389
|
[tt]: K,
|
|
2390
2390
|
[et]: K
|
|
2391
2391
|
};
|
|
2392
|
-
async function
|
|
2392
|
+
async function ci(n) {
|
|
2393
2393
|
const { vkFormat: A } = n;
|
|
2394
2394
|
if (PA[A] === void 0)
|
|
2395
2395
|
throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
2396
2396
|
let e;
|
|
2397
|
-
n.supercompressionScheme === Fe && (KA || (KA = new Promise(async (
|
|
2398
|
-
const
|
|
2399
|
-
await
|
|
2397
|
+
n.supercompressionScheme === Fe && (KA || (KA = new Promise(async (i) => {
|
|
2398
|
+
const s = new oi();
|
|
2399
|
+
await s.init(), i(s);
|
|
2400
2400
|
})), e = await KA);
|
|
2401
2401
|
const a = [];
|
|
2402
|
-
for (let
|
|
2403
|
-
const
|
|
2402
|
+
for (let i = 0; i < n.levels.length; i++) {
|
|
2403
|
+
const s = Math.max(1, n.pixelWidth >> i), o = Math.max(1, n.pixelHeight >> i), r = n.pixelDepth ? Math.max(1, n.pixelDepth >> i) : 0, c = n.levels[i];
|
|
2404
2404
|
let I;
|
|
2405
2405
|
if (n.supercompressionScheme === $a)
|
|
2406
2406
|
I = c.levelData;
|
|
@@ -2419,13 +2419,13 @@ async function cs(n) {
|
|
|
2419
2419
|
I.byteLength / Uint16Array.BYTES_PER_ELEMENT
|
|
2420
2420
|
) : g = I, a.push({
|
|
2421
2421
|
data: g,
|
|
2422
|
-
width:
|
|
2422
|
+
width: s,
|
|
2423
2423
|
height: o,
|
|
2424
2424
|
depth: r
|
|
2425
2425
|
});
|
|
2426
2426
|
}
|
|
2427
2427
|
let t;
|
|
2428
|
-
if (
|
|
2428
|
+
if (ri.has(PA[A]))
|
|
2429
2429
|
t = n.pixelDepth === 0 ? new ra(a[0].data, n.pixelWidth, n.pixelHeight) : new ca(a[0].data, n.pixelWidth, n.pixelHeight, n.pixelDepth);
|
|
2430
2430
|
else {
|
|
2431
2431
|
if (n.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
@@ -2435,16 +2435,16 @@ async function cs(n) {
|
|
|
2435
2435
|
}
|
|
2436
2436
|
function at(n) {
|
|
2437
2437
|
const A = n.dataFormatDescriptor[0];
|
|
2438
|
-
return A.colorPrimaries ===
|
|
2438
|
+
return A.colorPrimaries === ti ? A.transferFunction === Re ? AA : Y : A.colorPrimaries === ai ? A.transferFunction === Re ? ga : Ia : A.colorPrimaries === ei ? oA : (console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`), oA);
|
|
2439
2439
|
}
|
|
2440
|
-
var
|
|
2440
|
+
var gi = function() {
|
|
2441
2441
|
var n = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb", A = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb", e = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11]), a = 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]);
|
|
2442
2442
|
if (typeof WebAssembly != "object")
|
|
2443
2443
|
return {
|
|
2444
2444
|
supported: !1
|
|
2445
2445
|
};
|
|
2446
|
-
var t = WebAssembly.validate(e) ? A : n,
|
|
2447
|
-
|
|
2446
|
+
var t = WebAssembly.validate(e) ? A : n, i, s = WebAssembly.instantiate(o(t), {}).then(function(E) {
|
|
2447
|
+
i = E.instance, i.exports.__wasm_call_ctors();
|
|
2448
2448
|
});
|
|
2449
2449
|
function o(E) {
|
|
2450
2450
|
for (var l = new Uint8Array(E.length), h = 0; h < E.length; ++h) {
|
|
@@ -2456,7 +2456,7 @@ var gs = function() {
|
|
|
2456
2456
|
return l.buffer.slice(0, k);
|
|
2457
2457
|
}
|
|
2458
2458
|
function r(E, l, h, u, k, R) {
|
|
2459
|
-
var G =
|
|
2459
|
+
var G = i.exports.sbrk, M = h + 3 & -4, b = G(M * u), Q = G(k.length), m = new Uint8Array(i.exports.memory.buffer);
|
|
2460
2460
|
m.set(k, Q);
|
|
2461
2461
|
var D = E(b, h, u, Q, k.length);
|
|
2462
2462
|
if (D == 0 && R && R(b, M, u), l.set(m.subarray(b, b + h * u)), G(b - G(0)), D != 0)
|
|
@@ -2497,38 +2497,38 @@ var gs = function() {
|
|
|
2497
2497
|
});
|
|
2498
2498
|
}
|
|
2499
2499
|
function p(E) {
|
|
2500
|
-
|
|
2500
|
+
s.then(function() {
|
|
2501
2501
|
var l = E.data;
|
|
2502
2502
|
try {
|
|
2503
2503
|
var h = new Uint8Array(l.count * l.size);
|
|
2504
|
-
r(
|
|
2504
|
+
r(i.exports[l.mode], h, l.count, l.size, l.source, i.exports[l.filter]), self.postMessage({ id: l.id, count: l.count, action: "resolve", value: h }, [h.buffer]);
|
|
2505
2505
|
} catch (u) {
|
|
2506
2506
|
self.postMessage({ id: l.id, count: l.count, action: "reject", value: u });
|
|
2507
2507
|
}
|
|
2508
2508
|
});
|
|
2509
2509
|
}
|
|
2510
2510
|
return {
|
|
2511
|
-
ready:
|
|
2511
|
+
ready: s,
|
|
2512
2512
|
supported: !0,
|
|
2513
2513
|
useWorkers: function(E) {
|
|
2514
2514
|
f(E);
|
|
2515
2515
|
},
|
|
2516
2516
|
decodeVertexBuffer: function(E, l, h, u, k) {
|
|
2517
|
-
r(
|
|
2517
|
+
r(i.exports.meshopt_decodeVertexBuffer, E, l, h, u, i.exports[c[k]]);
|
|
2518
2518
|
},
|
|
2519
2519
|
decodeIndexBuffer: function(E, l, h, u) {
|
|
2520
|
-
r(
|
|
2520
|
+
r(i.exports.meshopt_decodeIndexBuffer, E, l, h, u);
|
|
2521
2521
|
},
|
|
2522
2522
|
decodeIndexSequence: function(E, l, h, u) {
|
|
2523
|
-
r(
|
|
2523
|
+
r(i.exports.meshopt_decodeIndexSequence, E, l, h, u);
|
|
2524
2524
|
},
|
|
2525
2525
|
decodeGltfBuffer: function(E, l, h, u, k, R) {
|
|
2526
|
-
r(
|
|
2526
|
+
r(i.exports[I[k]], E, l, h, u, i.exports[c[R]]);
|
|
2527
2527
|
},
|
|
2528
2528
|
decodeGltfBufferAsync: function(E, l, h, u, k) {
|
|
2529
|
-
return g.length > 0 ? d(E, l, h, I[u], c[k]) :
|
|
2529
|
+
return g.length > 0 ? d(E, l, h, I[u], c[k]) : s.then(function() {
|
|
2530
2530
|
var R = new Uint8Array(E * l);
|
|
2531
|
-
return r(
|
|
2531
|
+
return r(i.exports[I[u]], R, E, l, h, i.exports[c[k]]), R;
|
|
2532
2532
|
});
|
|
2533
2533
|
}
|
|
2534
2534
|
};
|
|
@@ -2538,7 +2538,7 @@ function oe() {
|
|
|
2538
2538
|
n.setDecoderPath("/draco/");
|
|
2539
2539
|
const A = new $();
|
|
2540
2540
|
A.setTranscoderPath("/draco/");
|
|
2541
|
-
const e = new la().setDRACOLoader(n).setKTX2Loader(A.detectSupport(new Ba())).setMeshoptDecoder(
|
|
2541
|
+
const e = new la().setDRACOLoader(n).setKTX2Loader(A.detectSupport(new Ba())).setMeshoptDecoder(gi);
|
|
2542
2542
|
return e.manager.onError = (a) => {
|
|
2543
2543
|
V.emit("load-error", `Failed to load file ${a}`);
|
|
2544
2544
|
}, e;
|
|
@@ -2549,7 +2549,7 @@ fflate - fast JavaScript compression/decompression
|
|
|
2549
2549
|
Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
|
|
2550
2550
|
version 0.8.2
|
|
2551
2551
|
*/
|
|
2552
|
-
var H = Uint8Array, lA = Uint16Array,
|
|
2552
|
+
var H = Uint8Array, lA = Uint16Array, Ii = Int32Array, it = new H([
|
|
2553
2553
|
0,
|
|
2554
2554
|
0,
|
|
2555
2555
|
0,
|
|
@@ -2584,7 +2584,7 @@ var H = Uint8Array, lA = Uint16Array, Is = Int32Array, st = new H([
|
|
|
2584
2584
|
0,
|
|
2585
2585
|
/* impossible */
|
|
2586
2586
|
0
|
|
2587
|
-
]),
|
|
2587
|
+
]), st = new H([
|
|
2588
2588
|
0,
|
|
2589
2589
|
0,
|
|
2590
2590
|
0,
|
|
@@ -2618,37 +2618,37 @@ var H = Uint8Array, lA = Uint16Array, Is = Int32Array, st = new H([
|
|
|
2618
2618
|
/* unused */
|
|
2619
2619
|
0,
|
|
2620
2620
|
0
|
|
2621
|
-
]),
|
|
2621
|
+
]), Bi = new H([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), nt = function(n, A) {
|
|
2622
2622
|
for (var e = new lA(31), a = 0; a < 31; ++a)
|
|
2623
2623
|
e[a] = A += 1 << n[a - 1];
|
|
2624
|
-
for (var t = new
|
|
2625
|
-
for (var
|
|
2626
|
-
t[
|
|
2624
|
+
for (var t = new Ii(e[30]), a = 1; a < 30; ++a)
|
|
2625
|
+
for (var i = e[a]; i < e[a + 1]; ++i)
|
|
2626
|
+
t[i] = i - e[a] << 5 | a;
|
|
2627
2627
|
return { b: e, r: t };
|
|
2628
|
-
}, ot = nt(
|
|
2629
|
-
rt[28] = 258,
|
|
2630
|
-
var
|
|
2628
|
+
}, ot = nt(it, 2), rt = ot.b, Ci = ot.r;
|
|
2629
|
+
rt[28] = 258, Ci[258] = 28;
|
|
2630
|
+
var bi = nt(st, 0), li = bi.b, ee = new lA(32768);
|
|
2631
2631
|
for (var L = 0; L < 32768; ++L) {
|
|
2632
2632
|
var nA = (L & 43690) >> 1 | (L & 21845) << 1;
|
|
2633
2633
|
nA = (nA & 52428) >> 2 | (nA & 13107) << 2, nA = (nA & 61680) >> 4 | (nA & 3855) << 4, ee[L] = ((nA & 65280) >> 8 | (nA & 255) << 8) >> 1;
|
|
2634
2634
|
}
|
|
2635
2635
|
var wA = function(n, A, e) {
|
|
2636
|
-
for (var a = n.length, t = 0,
|
|
2637
|
-
n[t] && ++
|
|
2638
|
-
var
|
|
2636
|
+
for (var a = n.length, t = 0, i = new lA(A); t < a; ++t)
|
|
2637
|
+
n[t] && ++i[n[t] - 1];
|
|
2638
|
+
var s = new lA(A);
|
|
2639
2639
|
for (t = 1; t < A; ++t)
|
|
2640
|
-
|
|
2640
|
+
s[t] = s[t - 1] + i[t - 1] << 1;
|
|
2641
2641
|
var o;
|
|
2642
2642
|
if (e) {
|
|
2643
2643
|
o = new lA(1 << A);
|
|
2644
2644
|
var r = 15 - A;
|
|
2645
2645
|
for (t = 0; t < a; ++t)
|
|
2646
2646
|
if (n[t])
|
|
2647
|
-
for (var c = t << 4 | n[t], I = A - n[t], g =
|
|
2647
|
+
for (var c = t << 4 | n[t], I = A - n[t], g = s[n[t] - 1]++ << I, B = g | (1 << I) - 1; g <= B; ++g)
|
|
2648
2648
|
o[ee[g] >> r] = c;
|
|
2649
2649
|
} else
|
|
2650
2650
|
for (o = new lA(a), t = 0; t < a; ++t)
|
|
2651
|
-
n[t] && (o[t] = ee[
|
|
2651
|
+
n[t] && (o[t] = ee[s[n[t] - 1]++] >> 15 - n[t]);
|
|
2652
2652
|
return o;
|
|
2653
2653
|
}, DA = new H(288);
|
|
2654
2654
|
for (var L = 0; L < 144; ++L)
|
|
@@ -2662,7 +2662,7 @@ for (var L = 280; L < 288; ++L)
|
|
|
2662
2662
|
var ct = new H(32);
|
|
2663
2663
|
for (var L = 0; L < 32; ++L)
|
|
2664
2664
|
ct[L] = 5;
|
|
2665
|
-
var
|
|
2665
|
+
var fi = /* @__PURE__ */ wA(DA, 9, 1), Ei = /* @__PURE__ */ wA(ct, 5, 1), WA = function(n) {
|
|
2666
2666
|
for (var A = n[0], e = 1; e < n.length; ++e)
|
|
2667
2667
|
n[e] > A && (A = n[e]);
|
|
2668
2668
|
return A;
|
|
@@ -2672,11 +2672,11 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2672
2672
|
}, VA = function(n, A) {
|
|
2673
2673
|
var e = A / 8 | 0;
|
|
2674
2674
|
return (n[e] | n[e + 1] << 8 | n[e + 2] << 16) >> (A & 7);
|
|
2675
|
-
},
|
|
2675
|
+
}, Qi = function(n) {
|
|
2676
2676
|
return (n + 7) / 8 | 0;
|
|
2677
2677
|
}, re = function(n, A, e) {
|
|
2678
2678
|
return (A == null || A < 0) && (A = 0), (e == null || e > n.length) && (e = n.length), new H(n.subarray(A, e));
|
|
2679
|
-
},
|
|
2679
|
+
}, di = [
|
|
2680
2680
|
"unexpected EOF",
|
|
2681
2681
|
"invalid block type",
|
|
2682
2682
|
"invalid length/literal",
|
|
@@ -2693,16 +2693,16 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2693
2693
|
"invalid zip data"
|
|
2694
2694
|
// determined by unknown compression method
|
|
2695
2695
|
], v = function(n, A, e) {
|
|
2696
|
-
var a = new Error(A ||
|
|
2696
|
+
var a = new Error(A || di[n]);
|
|
2697
2697
|
if (a.code = n, Error.captureStackTrace && Error.captureStackTrace(a, v), !e)
|
|
2698
2698
|
throw a;
|
|
2699
2699
|
return a;
|
|
2700
|
-
},
|
|
2701
|
-
var t = n.length,
|
|
2700
|
+
}, hi = function(n, A, e, a) {
|
|
2701
|
+
var t = n.length, i = a ? a.length : 0;
|
|
2702
2702
|
if (!t || A.f && !A.l)
|
|
2703
2703
|
return e || new H(0);
|
|
2704
|
-
var
|
|
2705
|
-
|
|
2704
|
+
var s = !e, o = s || A.i != 2, r = A.i;
|
|
2705
|
+
s && (e = new H(t * 3));
|
|
2706
2706
|
var c = function(Be) {
|
|
2707
2707
|
var Ce = e.length;
|
|
2708
2708
|
if (Be > Ce) {
|
|
@@ -2716,12 +2716,12 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2716
2716
|
var l = j(n, g + 1, 3);
|
|
2717
2717
|
if (g += 3, l)
|
|
2718
2718
|
if (l == 1)
|
|
2719
|
-
C =
|
|
2719
|
+
C = fi, f = Ei, d = 9, p = 5;
|
|
2720
2720
|
else if (l == 2) {
|
|
2721
2721
|
var R = j(n, g, 31) + 257, G = j(n, g + 10, 15) + 4, M = R + j(n, g + 5, 31) + 1;
|
|
2722
2722
|
g += 14;
|
|
2723
2723
|
for (var b = new H(M), Q = new H(19), m = 0; m < G; ++m)
|
|
2724
|
-
Q[
|
|
2724
|
+
Q[Bi[m]] = j(n, g + m * 3, 7);
|
|
2725
2725
|
g += G * 3;
|
|
2726
2726
|
for (var D = WA(Q), w = (1 << D) - 1, S = wA(Q, D, 1), m = 0; m < M; ) {
|
|
2727
2727
|
var F = S[j(n, g, w)];
|
|
@@ -2740,7 +2740,7 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2740
2740
|
} else
|
|
2741
2741
|
v(1);
|
|
2742
2742
|
else {
|
|
2743
|
-
var h =
|
|
2743
|
+
var h = Qi(g) + 4, u = n[h - 4] | n[h - 3] << 8, k = h + u;
|
|
2744
2744
|
if (k > t) {
|
|
2745
2745
|
r && v(0);
|
|
2746
2746
|
break;
|
|
@@ -2754,7 +2754,7 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2754
2754
|
}
|
|
2755
2755
|
}
|
|
2756
2756
|
o && c(B + 131072);
|
|
2757
|
-
for (var J = (1 << d) - 1,
|
|
2757
|
+
for (var J = (1 << d) - 1, iA = (1 << p) - 1, IA = g; ; IA = g) {
|
|
2758
2758
|
var x = C[VA(n, g) & J], cA = x >> 4;
|
|
2759
2759
|
if (g += x & 15, g > E) {
|
|
2760
2760
|
r && v(0);
|
|
@@ -2768,14 +2768,14 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2768
2768
|
} else {
|
|
2769
2769
|
var ce = cA - 254;
|
|
2770
2770
|
if (cA > 264) {
|
|
2771
|
-
var m = cA - 257, EA =
|
|
2771
|
+
var m = cA - 257, EA = it[m];
|
|
2772
2772
|
ce = j(n, g, (1 << EA) - 1) + rt[m], g += EA;
|
|
2773
2773
|
}
|
|
2774
|
-
var LA = f[VA(n, g) &
|
|
2774
|
+
var LA = f[VA(n, g) & iA], MA = LA >> 4;
|
|
2775
2775
|
LA || v(3), g += LA & 15;
|
|
2776
|
-
var _ =
|
|
2776
|
+
var _ = li[MA];
|
|
2777
2777
|
if (MA > 3) {
|
|
2778
|
-
var EA =
|
|
2778
|
+
var EA = st[MA];
|
|
2779
2779
|
_ += VA(n, g) & (1 << EA) - 1, g += EA;
|
|
2780
2780
|
}
|
|
2781
2781
|
if (g > E) {
|
|
@@ -2785,7 +2785,7 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2785
2785
|
o && c(B + 131072);
|
|
2786
2786
|
var ge = B + ce;
|
|
2787
2787
|
if (B < _) {
|
|
2788
|
-
var Ie =
|
|
2788
|
+
var Ie = i - _, It = Math.min(_, ge);
|
|
2789
2789
|
for (Ie + B < 0 && v(3); B < It; ++B)
|
|
2790
2790
|
e[B] = a[Ie + B];
|
|
2791
2791
|
}
|
|
@@ -2795,23 +2795,23 @@ var fs = /* @__PURE__ */ wA(DA, 9, 1), Es = /* @__PURE__ */ wA(ct, 5, 1), WA = f
|
|
|
2795
2795
|
}
|
|
2796
2796
|
A.l = C, A.p = IA, A.b = B, A.f = I, C && (I = 1, A.m = d, A.d = f, A.n = p);
|
|
2797
2797
|
} while (!I);
|
|
2798
|
-
return B != e.length &&
|
|
2799
|
-
},
|
|
2798
|
+
return B != e.length && s ? re(e, 0, B) : e.subarray(0, B);
|
|
2799
|
+
}, pi = /* @__PURE__ */ new H(0), Z = function(n, A) {
|
|
2800
2800
|
return n[A] | n[A + 1] << 8;
|
|
2801
2801
|
}, P = function(n, A) {
|
|
2802
2802
|
return (n[A] | n[A + 1] << 8 | n[A + 2] << 16 | n[A + 3] << 24) >>> 0;
|
|
2803
2803
|
}, zA = function(n, A) {
|
|
2804
2804
|
return P(n, A) + P(n, A + 4) * 4294967296;
|
|
2805
2805
|
};
|
|
2806
|
-
function
|
|
2807
|
-
return
|
|
2806
|
+
function ui(n, A) {
|
|
2807
|
+
return hi(n, { i: 2 }, A && A.out, A && A.dictionary);
|
|
2808
2808
|
}
|
|
2809
|
-
var te = typeof TextDecoder < "u" && /* @__PURE__ */ new TextDecoder(),
|
|
2809
|
+
var te = typeof TextDecoder < "u" && /* @__PURE__ */ new TextDecoder(), mi = 0;
|
|
2810
2810
|
try {
|
|
2811
|
-
te.decode(
|
|
2811
|
+
te.decode(pi, { stream: !0 }), mi = 1;
|
|
2812
2812
|
} catch {
|
|
2813
2813
|
}
|
|
2814
|
-
var
|
|
2814
|
+
var wi = function(n) {
|
|
2815
2815
|
for (var A = "", e = 0; ; ) {
|
|
2816
2816
|
var a = n[e++], t = (a > 127) + (a > 223) + (a > 239);
|
|
2817
2817
|
if (e + t > n.length)
|
|
@@ -2827,85 +2827,85 @@ function ae(n, A) {
|
|
|
2827
2827
|
} else {
|
|
2828
2828
|
if (te)
|
|
2829
2829
|
return te.decode(n);
|
|
2830
|
-
var t =
|
|
2831
|
-
return e.length && v(8),
|
|
2830
|
+
var t = wi(n), i = t.s, e = t.r;
|
|
2831
|
+
return e.length && v(8), i;
|
|
2832
2832
|
}
|
|
2833
2833
|
}
|
|
2834
|
-
var
|
|
2834
|
+
var Di = function(n, A) {
|
|
2835
2835
|
return A + 30 + Z(n, A + 26) + Z(n, A + 28);
|
|
2836
|
-
},
|
|
2837
|
-
var a = Z(n, A + 28), t = ae(n.subarray(A + 46, A + 46 + a), !(Z(n, A + 8) & 2048)),
|
|
2838
|
-
return [Z(n, A + 10), r, c, t,
|
|
2839
|
-
},
|
|
2836
|
+
}, ki = function(n, A, e) {
|
|
2837
|
+
var a = Z(n, A + 28), t = ae(n.subarray(A + 46, A + 46 + a), !(Z(n, A + 8) & 2048)), i = A + 46 + a, s = P(n, A + 20), o = e && s == 4294967295 ? Fi(n, i) : [s, P(n, A + 24), P(n, A + 42)], r = o[0], c = o[1], I = o[2];
|
|
2838
|
+
return [Z(n, A + 10), r, c, t, i + Z(n, A + 30) + Z(n, A + 32), I];
|
|
2839
|
+
}, Fi = function(n, A) {
|
|
2840
2840
|
for (; Z(n, A) != 1; A += 4 + Z(n, A + 2))
|
|
2841
2841
|
;
|
|
2842
2842
|
return [zA(n, A + 12), zA(n, A + 4), zA(n, A + 20)];
|
|
2843
2843
|
};
|
|
2844
|
-
function
|
|
2844
|
+
function Ri(n, A) {
|
|
2845
2845
|
for (var e = {}, a = n.length - 22; P(n, a) != 101010256; --a)
|
|
2846
2846
|
(!a || n.length - a > 65558) && v(13);
|
|
2847
2847
|
var t = Z(n, a + 8);
|
|
2848
2848
|
if (!t)
|
|
2849
2849
|
return {};
|
|
2850
|
-
var
|
|
2851
|
-
if (
|
|
2850
|
+
var i = P(n, a + 16), s = i == 4294967295 || t == 65535;
|
|
2851
|
+
if (s) {
|
|
2852
2852
|
var o = P(n, a - 12);
|
|
2853
|
-
|
|
2853
|
+
s = P(n, o) == 101075792, s && (t = P(n, o + 32), i = P(n, o + 48));
|
|
2854
2854
|
}
|
|
2855
2855
|
for (var r = 0; r < t; ++r) {
|
|
2856
|
-
var c =
|
|
2857
|
-
|
|
2856
|
+
var c = ki(n, i, s), I = c[0], g = c[1], B = c[2], C = c[3], f = c[4], d = c[5], p = Di(n, d);
|
|
2857
|
+
i = f, I ? I == 8 ? e[C] = ui(n.subarray(p, p + g), { out: new H(B) }) : v(14, "unknown compression type " + I) : e[C] = re(n, p, p + g);
|
|
2858
2858
|
}
|
|
2859
2859
|
return e;
|
|
2860
2860
|
}
|
|
2861
|
-
class
|
|
2861
|
+
class Si {
|
|
2862
2862
|
parse(A) {
|
|
2863
2863
|
const e = {}, a = A.split(`
|
|
2864
2864
|
`);
|
|
2865
|
-
let t = null,
|
|
2866
|
-
const
|
|
2865
|
+
let t = null, i = e;
|
|
2866
|
+
const s = [e];
|
|
2867
2867
|
for (const o of a)
|
|
2868
2868
|
if (o.includes("=")) {
|
|
2869
2869
|
const r = o.split("="), c = r[0].trim(), I = r[1].trim();
|
|
2870
2870
|
if (I.endsWith("{")) {
|
|
2871
2871
|
const g = {};
|
|
2872
|
-
|
|
2872
|
+
s.push(g), i[c] = g, i = g;
|
|
2873
2873
|
} else if (I.endsWith("(")) {
|
|
2874
2874
|
const g = I.slice(0, -1);
|
|
2875
|
-
|
|
2875
|
+
i[c] = g;
|
|
2876
2876
|
const B = {};
|
|
2877
|
-
|
|
2877
|
+
s.push(B), i = B;
|
|
2878
2878
|
} else
|
|
2879
|
-
|
|
2879
|
+
i[c] = I;
|
|
2880
2880
|
} else if (o.endsWith("{")) {
|
|
2881
|
-
const r =
|
|
2882
|
-
|
|
2881
|
+
const r = i[t] || {};
|
|
2882
|
+
s.push(r), i[t] = r, i = r;
|
|
2883
2883
|
} else if (o.endsWith("}")) {
|
|
2884
|
-
if (
|
|
2885
|
-
|
|
2884
|
+
if (s.pop(), s.length === 0) continue;
|
|
2885
|
+
i = s[s.length - 1];
|
|
2886
2886
|
} else if (o.endsWith("(")) {
|
|
2887
2887
|
const r = {};
|
|
2888
|
-
|
|
2889
|
-
} else o.endsWith(")") ? (
|
|
2888
|
+
s.push(r), t = o.split("(")[0].trim() || t, i[t] = r, i = r;
|
|
2889
|
+
} else o.endsWith(")") ? (s.pop(), i = s[s.length - 1]) : t = o.trim();
|
|
2890
2890
|
return e;
|
|
2891
2891
|
}
|
|
2892
2892
|
}
|
|
2893
|
-
class
|
|
2893
|
+
class yi extends TA {
|
|
2894
2894
|
constructor(A) {
|
|
2895
2895
|
super(A);
|
|
2896
2896
|
}
|
|
2897
2897
|
load(A, e, a, t) {
|
|
2898
|
-
const
|
|
2899
|
-
|
|
2898
|
+
const i = this, s = new aA(i.manager);
|
|
2899
|
+
s.setPath(i.path), s.setResponseType("arraybuffer"), s.setRequestHeader(i.requestHeader), s.setWithCredentials(i.withCredentials), s.load(A, function(o) {
|
|
2900
2900
|
try {
|
|
2901
|
-
e(
|
|
2901
|
+
e(i.parse(o));
|
|
2902
2902
|
} catch (r) {
|
|
2903
|
-
t ? t(r) : console.error(r),
|
|
2903
|
+
t ? t(r) : console.error(r), i.manager.itemError(A);
|
|
2904
2904
|
}
|
|
2905
2905
|
}, a, t);
|
|
2906
2906
|
}
|
|
2907
2907
|
parse(A) {
|
|
2908
|
-
const e = new
|
|
2908
|
+
const e = new Si();
|
|
2909
2909
|
function a(b) {
|
|
2910
2910
|
const Q = {};
|
|
2911
2911
|
new aA().setResponseType("arraybuffer");
|
|
@@ -2927,7 +2927,7 @@ class ys extends TA {
|
|
|
2927
2927
|
const Q = b.slice(0, 7), m = new Uint8Array([80, 88, 82, 45, 85, 83, 68, 67]);
|
|
2928
2928
|
return Q.every((D, w) => D === m[w]);
|
|
2929
2929
|
}
|
|
2930
|
-
function
|
|
2930
|
+
function i(b) {
|
|
2931
2931
|
if (b.length < 1) return;
|
|
2932
2932
|
const Q = Object.keys(b)[0];
|
|
2933
2933
|
let m = !1;
|
|
@@ -2942,7 +2942,7 @@ class ys extends TA {
|
|
|
2942
2942
|
if (m)
|
|
2943
2943
|
throw Error("THREE.USDZLoader: Crate files (.usdc or binary .usd) are not supported.");
|
|
2944
2944
|
}
|
|
2945
|
-
const
|
|
2945
|
+
const s = Ri(new Uint8Array(A)), o = a(s), r = i(s), c = ae(r), I = e.parse(c);
|
|
2946
2946
|
function g(b) {
|
|
2947
2947
|
if (b) {
|
|
2948
2948
|
if ("prepend references" in b) {
|
|
@@ -3122,7 +3122,7 @@ class ys extends TA {
|
|
|
3122
3122
|
return null;
|
|
3123
3123
|
}
|
|
3124
3124
|
function R(b) {
|
|
3125
|
-
const Q = C(g(b)), m = h(p(b)), D = Q ? new Me(Q, m) : new
|
|
3125
|
+
const Q = C(g(b)), m = h(p(b)), D = Q ? new Me(Q, m) : new ie();
|
|
3126
3126
|
if ("matrix4d xformOp:transform" in b) {
|
|
3127
3127
|
const w = JSON.parse("[" + b["matrix4d xformOp:transform"].replace(/[()]*/g, "") + "]");
|
|
3128
3128
|
D.matrix.fromArray(w), D.matrix.decompose(D.position, D.quaternion, D.scale);
|
|
@@ -3142,20 +3142,20 @@ class ys extends TA {
|
|
|
3142
3142
|
return G(I, M), M;
|
|
3143
3143
|
}
|
|
3144
3144
|
}
|
|
3145
|
-
function
|
|
3146
|
-
const n = new
|
|
3145
|
+
function Gi() {
|
|
3146
|
+
const n = new yi();
|
|
3147
3147
|
return n.manager.onError = (A) => {
|
|
3148
3148
|
V.emit("load-error", `Failed to load file ${A}`);
|
|
3149
3149
|
}, n;
|
|
3150
3150
|
}
|
|
3151
|
-
function
|
|
3151
|
+
function xi(n) {
|
|
3152
3152
|
const A = z(
|
|
3153
|
-
async (a, t,
|
|
3153
|
+
async (a, t, i) => {
|
|
3154
3154
|
var I, g;
|
|
3155
|
-
const
|
|
3155
|
+
const s = new Map(t.map((B) => [B.name, B])), o = (((I = a.buffers) == null ? void 0 : I.length) || 0) + (((g = a.images) == null ? void 0 : g.length) || 0);
|
|
3156
3156
|
let r = 0;
|
|
3157
3157
|
const c = () => {
|
|
3158
|
-
r++,
|
|
3158
|
+
r++, i(r / o * 100);
|
|
3159
3159
|
};
|
|
3160
3160
|
if (a.buffers)
|
|
3161
3161
|
for (let B = 0; B < a.buffers.length; B++) {
|
|
@@ -3164,7 +3164,7 @@ function xs(n) {
|
|
|
3164
3164
|
c();
|
|
3165
3165
|
continue;
|
|
3166
3166
|
}
|
|
3167
|
-
const f = C.uri.split("/").pop() || "", d =
|
|
3167
|
+
const f = C.uri.split("/").pop() || "", d = s.get(f);
|
|
3168
3168
|
if (d) {
|
|
3169
3169
|
const p = await d.arrayBuffer(), E = await pe(p);
|
|
3170
3170
|
C.uri = `data:application/octet-stream;base64,${E}`;
|
|
@@ -3178,7 +3178,7 @@ function xs(n) {
|
|
|
3178
3178
|
c();
|
|
3179
3179
|
continue;
|
|
3180
3180
|
}
|
|
3181
|
-
const f = C.uri.split("/").pop() || "", d =
|
|
3181
|
+
const f = C.uri.split("/").pop() || "", d = s.get(f);
|
|
3182
3182
|
if (d) {
|
|
3183
3183
|
const p = await d.arrayBuffer(), E = await pe(p), l = d.type || "image/png";
|
|
3184
3184
|
C.uri = `data:${l};base64,${E}`;
|
|
@@ -3190,17 +3190,17 @@ function xs(n) {
|
|
|
3190
3190
|
[]
|
|
3191
3191
|
);
|
|
3192
3192
|
return { loadGltf: z(
|
|
3193
|
-
(a, t,
|
|
3194
|
-
const
|
|
3195
|
-
|
|
3193
|
+
(a, t, i) => {
|
|
3194
|
+
const s = new FileReader();
|
|
3195
|
+
s.onload = async (o) => {
|
|
3196
3196
|
var g;
|
|
3197
3197
|
const r = JSON.parse((g = o.target) == null ? void 0 : g.result);
|
|
3198
|
-
|
|
3198
|
+
i(10);
|
|
3199
3199
|
const c = await A(
|
|
3200
3200
|
r,
|
|
3201
3201
|
t,
|
|
3202
3202
|
(B) => {
|
|
3203
|
-
|
|
3203
|
+
i(10 + B * 0.8);
|
|
3204
3204
|
}
|
|
3205
3205
|
);
|
|
3206
3206
|
oe().parse(JSON.stringify(c), "", (B) => {
|
|
@@ -3212,20 +3212,20 @@ function xs(n) {
|
|
|
3212
3212
|
name: a.name
|
|
3213
3213
|
}
|
|
3214
3214
|
});
|
|
3215
|
-
}),
|
|
3216
|
-
},
|
|
3215
|
+
}), i(100), n({ type: "set-file-loading", payload: !1 });
|
|
3216
|
+
}, s.readAsText(a);
|
|
3217
3217
|
},
|
|
3218
3218
|
[n, A]
|
|
3219
3219
|
) };
|
|
3220
3220
|
}
|
|
3221
|
-
function
|
|
3221
|
+
function Ti(n) {
|
|
3222
3222
|
return { loadBinary: z(
|
|
3223
3223
|
(e, a, t) => {
|
|
3224
|
-
const
|
|
3225
|
-
|
|
3224
|
+
const i = new FileReader();
|
|
3225
|
+
i.onload = async (s) => {
|
|
3226
3226
|
var o;
|
|
3227
|
-
if ((o =
|
|
3228
|
-
const r =
|
|
3227
|
+
if ((o = s.target) != null && o.result) {
|
|
3228
|
+
const r = s.target.result;
|
|
3229
3229
|
if (a === q.glb)
|
|
3230
3230
|
oe().parse(r, "", (I) => {
|
|
3231
3231
|
n({
|
|
@@ -3238,7 +3238,7 @@ function Ts(n) {
|
|
|
3238
3238
|
});
|
|
3239
3239
|
});
|
|
3240
3240
|
else if (a === q.usdz) {
|
|
3241
|
-
const I =
|
|
3241
|
+
const I = Gi().parse(r);
|
|
3242
3242
|
n({
|
|
3243
3243
|
type: "set-file",
|
|
3244
3244
|
payload: {
|
|
@@ -3250,15 +3250,15 @@ function Ts(n) {
|
|
|
3250
3250
|
}
|
|
3251
3251
|
t(), n({ type: "set-file-loading", payload: !1 });
|
|
3252
3252
|
}
|
|
3253
|
-
},
|
|
3254
|
-
console.error("Error reading file:",
|
|
3255
|
-
},
|
|
3253
|
+
}, i.onerror = (s) => {
|
|
3254
|
+
console.error("Error reading file:", s), n({ type: "set-file-loading", payload: !1 });
|
|
3255
|
+
}, i.readAsArrayBuffer(e);
|
|
3256
3256
|
},
|
|
3257
3257
|
[n]
|
|
3258
3258
|
) };
|
|
3259
3259
|
}
|
|
3260
|
-
function
|
|
3261
|
-
const A = Ct(!1), [e, a] = bt(Ca, He), { loadGltf: t } =
|
|
3260
|
+
function Li(n) {
|
|
3261
|
+
const A = Ct(!1), [e, a] = bt(Ca, He), { loadGltf: t } = xi(a), { loadBinary: i } = Ti(a), s = z(
|
|
3262
3262
|
(B, C) => B.find((f) => f.name.endsWith("." + C)),
|
|
3263
3263
|
[]
|
|
3264
3264
|
), o = z((B) => {
|
|
@@ -3268,7 +3268,7 @@ function Ls(n) {
|
|
|
3268
3268
|
}, []), c = z(
|
|
3269
3269
|
(B) => {
|
|
3270
3270
|
if (B.length === 0) return;
|
|
3271
|
-
const C =
|
|
3271
|
+
const C = s(B, q.gltf), f = s(B, q.glb), d = s(B, q.usdz), p = [C, f, d].filter(
|
|
3272
3272
|
Boolean
|
|
3273
3273
|
);
|
|
3274
3274
|
if (p.length > 1) {
|
|
@@ -3283,9 +3283,9 @@ function Ls(n) {
|
|
|
3283
3283
|
if (C)
|
|
3284
3284
|
t(C, E, l);
|
|
3285
3285
|
else if (f)
|
|
3286
|
-
|
|
3286
|
+
i(f, q.glb, () => l(100));
|
|
3287
3287
|
else if (d)
|
|
3288
|
-
|
|
3288
|
+
i(
|
|
3289
3289
|
d,
|
|
3290
3290
|
q.usdz,
|
|
3291
3291
|
() => l(100)
|
|
@@ -3295,7 +3295,7 @@ function Ls(n) {
|
|
|
3295
3295
|
return;
|
|
3296
3296
|
}
|
|
3297
3297
|
},
|
|
3298
|
-
[o,
|
|
3298
|
+
[o, s, t, i]
|
|
3299
3299
|
), I = z(
|
|
3300
3300
|
async (B) => {
|
|
3301
3301
|
const C = [];
|
|
@@ -3314,7 +3314,7 @@ function Ls(n) {
|
|
|
3314
3314
|
lt(() => {
|
|
3315
3315
|
A.current && e.file && (V.emit("load-complete", e.file), A.current = !1, n && e.file.model && n.load(e.file.model));
|
|
3316
3316
|
}, [e.file, n]);
|
|
3317
|
-
const g =
|
|
3317
|
+
const g = Mi(
|
|
3318
3318
|
n,
|
|
3319
3319
|
a,
|
|
3320
3320
|
e.file
|
|
@@ -3357,58 +3357,69 @@ function Ls(n) {
|
|
|
3357
3357
|
optimize: g
|
|
3358
3358
|
};
|
|
3359
3359
|
}
|
|
3360
|
-
function
|
|
3360
|
+
function Mi(n, A, e) {
|
|
3361
3361
|
const a = z(
|
|
3362
|
-
(
|
|
3362
|
+
(o) => {
|
|
3363
3363
|
oe().parse(
|
|
3364
|
-
|
|
3364
|
+
o.buffer,
|
|
3365
3365
|
"",
|
|
3366
|
-
(
|
|
3366
|
+
(c) => {
|
|
3367
3367
|
A({
|
|
3368
3368
|
type: "set-file",
|
|
3369
3369
|
payload: {
|
|
3370
|
-
model:
|
|
3370
|
+
model: c.scene,
|
|
3371
3371
|
type: q.glb,
|
|
3372
3372
|
name: (e == null ? void 0 : e.name) || "optimized.glb"
|
|
3373
3373
|
}
|
|
3374
3374
|
});
|
|
3375
3375
|
},
|
|
3376
|
-
(
|
|
3377
|
-
console.error("Error loading new model:",
|
|
3376
|
+
(c) => {
|
|
3377
|
+
console.error("Error loading new model:", c);
|
|
3378
3378
|
}
|
|
3379
3379
|
);
|
|
3380
3380
|
},
|
|
3381
3381
|
[A, e]
|
|
3382
3382
|
), t = z(
|
|
3383
|
-
async (
|
|
3384
|
-
if (!n || !
|
|
3383
|
+
async (o, r) => {
|
|
3384
|
+
if (!n || !o) {
|
|
3385
3385
|
console.warn("Optimizer or optimization function is not available");
|
|
3386
3386
|
return;
|
|
3387
3387
|
}
|
|
3388
3388
|
try {
|
|
3389
|
-
await
|
|
3390
|
-
const
|
|
3391
|
-
|
|
3392
|
-
} catch (
|
|
3393
|
-
console.error("Optimization failed:",
|
|
3389
|
+
await o(r);
|
|
3390
|
+
const c = await n.getModel();
|
|
3391
|
+
c && a(c);
|
|
3392
|
+
} catch (c) {
|
|
3393
|
+
console.error("Optimization failed:", c);
|
|
3394
3394
|
}
|
|
3395
3395
|
},
|
|
3396
3396
|
[n, a]
|
|
3397
|
-
)
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3397
|
+
), i = (o) => () => {
|
|
3398
|
+
console.warn(o);
|
|
3399
|
+
}, s = {
|
|
3400
|
+
simplifyOptimization: i(
|
|
3401
|
+
"Optimizer is not available"
|
|
3402
3402
|
),
|
|
3403
|
-
dedupOptimization: (
|
|
3404
|
-
quantizeOptimization: (
|
|
3405
|
-
|
|
3406
|
-
s
|
|
3403
|
+
dedupOptimization: i("Optimizer is not available"),
|
|
3404
|
+
quantizeOptimization: i(
|
|
3405
|
+
"Optimizer is not available"
|
|
3407
3406
|
),
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3407
|
+
normalsOptimization: i("Optimizer is not available"),
|
|
3408
|
+
texturesCompressOptimization: i(
|
|
3409
|
+
"Optimizer is not available"
|
|
3411
3410
|
),
|
|
3411
|
+
getSize: i("Optimizer is not available"),
|
|
3412
|
+
reset: i("Optimizer is not available"),
|
|
3413
|
+
report: null,
|
|
3414
|
+
error: null,
|
|
3415
|
+
loading: !1
|
|
3416
|
+
};
|
|
3417
|
+
return n ? {
|
|
3418
|
+
simplifyOptimization: (o) => t(n.simplifyOptimization, o),
|
|
3419
|
+
dedupOptimization: (o) => t(n.dedupOptimization, o),
|
|
3420
|
+
quantizeOptimization: (o) => t(n.quantizeOptimization, o),
|
|
3421
|
+
normalsOptimization: (o) => t(n.normalsOptimization, o),
|
|
3422
|
+
texturesCompressOptimization: (o) => t(n.texturesOptimization, o),
|
|
3412
3423
|
getSize: n.getSize,
|
|
3413
3424
|
reset: n.reset,
|
|
3414
3425
|
report: n.report,
|
|
@@ -3417,38 +3428,16 @@ function Ms(n, A, e) {
|
|
|
3417
3428
|
// Include the error state
|
|
3418
3429
|
loading: n.loading
|
|
3419
3430
|
// Include the loading state
|
|
3420
|
-
} :
|
|
3421
|
-
simplifyOptimization: () => {
|
|
3422
|
-
console.warn("Optimizer is not available");
|
|
3423
|
-
},
|
|
3424
|
-
dedupOptimization: () => {
|
|
3425
|
-
console.warn("Optimizer is not available");
|
|
3426
|
-
},
|
|
3427
|
-
quantizeOptimization: () => {
|
|
3428
|
-
console.warn("Optimizer is not available");
|
|
3429
|
-
},
|
|
3430
|
-
texturesCompressOptimization: () => {
|
|
3431
|
-
console.warn("Optimizer is not available");
|
|
3432
|
-
},
|
|
3433
|
-
getSize: () => {
|
|
3434
|
-
console.warn("Optimizer is not available");
|
|
3435
|
-
},
|
|
3436
|
-
reset: () => {
|
|
3437
|
-
console.warn("Optimizer is not available");
|
|
3438
|
-
},
|
|
3439
|
-
report: null,
|
|
3440
|
-
error: null,
|
|
3441
|
-
loading: !1
|
|
3442
|
-
};
|
|
3431
|
+
} : s;
|
|
3443
3432
|
}
|
|
3444
|
-
const gt = ft({}),
|
|
3445
|
-
const e =
|
|
3433
|
+
const gt = ft({}), qi = ({ children: n, optimizer: A }) => {
|
|
3434
|
+
const e = Li(A);
|
|
3446
3435
|
return /* @__PURE__ */ Bt(gt.Provider, { value: e, children: n });
|
|
3447
|
-
},
|
|
3436
|
+
}, Hi = () => Et(gt);
|
|
3448
3437
|
export {
|
|
3449
3438
|
q as M,
|
|
3450
3439
|
gt as a,
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3440
|
+
qi as b,
|
|
3441
|
+
Hi as c,
|
|
3442
|
+
Li as u
|
|
3454
3443
|
};
|