belowjs 1.7.0 → 1.7.1
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/CHANGELOG.md +7 -1
- package/README.md +3 -3
- package/dist/belowjs.js +642 -635
- package/package.json +1 -1
package/dist/belowjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as m from "three";
|
|
2
|
-
import { Controls as
|
|
2
|
+
import { Controls as ir, Vector3 as v, MOUSE as We, TOUCH as Ke, Quaternion as $e, Spherical as qs, Vector2 as k, Ray as is, Plane as Pn, MathUtils as st, TrianglesDrawMode as nr, TriangleFanDrawMode as zs, TriangleStripDrawMode as Gn, Loader as ai, LoaderUtils as mt, FileLoader as xe, MeshPhysicalMaterial as ue, Color as Ee, LinearSRGBColorSpace as le, SRGBColorSpace as Ce, SpotLight as or, PointLight as rr, DirectionalLight as ar, Matrix4 as P, InstancedMesh as li, InstancedBufferAttribute as lr, Object3D as ns, TextureLoader as cr, ImageBitmapLoader as Ar, BufferAttribute as ne, InterleavedBuffer as hr, InterleavedBufferAttribute as Fe, LinearMipmapLinearFilter as os, NearestMipmapLinearFilter as dr, LinearMipmapNearestFilter as ur, NearestMipmapNearestFilter as gr, LinearFilter as Ge, NearestFilter as Un, RepeatWrapping as js, MirroredRepeatWrapping as pr, ClampToEdgeWrapping as fr, PointsMaterial as Nn, Material as gs, LineBasicMaterial as mr, MeshStandardMaterial as ci, DoubleSide as br, MeshBasicMaterial as ke, PropertyBinding as Cr, BufferGeometry as rs, SkinnedMesh as Er, Mesh as as, LineSegments as yr, Line as Ir, LineLoop as Br, Points as Vn, Group as Xe, PerspectiveCamera as wr, OrthographicCamera as On, Skeleton as Sr, AnimationClip as vr, Bone as Mr, InterpolateDiscrete as xr, InterpolateLinear as Hn, Texture as yi, VectorKeyframeTrack as Ii, NumberKeyframeTrack as Bi, QuaternionKeyframeTrack as wi, ColorManagement as Ks, FrontSide as Qr, Interpolant as Tr, Box3 as it, Sphere as Et, CompressedCubeTexture as Rr, CompressedArrayTexture as Dr, CompressedTexture as qn, NoColorSpace as Si, RGBA_BPTC_Format as Ys, RGBA_S3TC_DXT5_Format as Js, RGBA_S3TC_DXT3_Format as vi, RGB_S3TC_DXT1_Format as Mi, RGBA_S3TC_DXT1_Format as Ws, RGBA_ASTC_6x6_Format as xi, RGBA_ASTC_4x4_Format as jt, RGBA_ETC2_EAC_Format as zn, RGB_ETC2_Format as jn, RedFormat as gt, RGFormat as pt, RGBAFormat as Ye, UnsignedByteType as re, HalfFloatType as Je, FloatType as bt, DataTexture as Kn, Data3DTexture as Lr, RGB_PVRTC_4BPPV1_Format as Fr, RGB_ETC1_Format as kr, RGBA_PVRTC_4BPPV1_Format as _r, RGB_BPTC_UNSIGNED_Format as Pr, Euler as Yn, TextureUtils as Gr, LoadingManager as Ur, EventDispatcher as vt, Frustum as Nr, DefaultLoadingManager as ls, Matrix3 as Jn, Float32BufferAttribute as Jt, WebGLRenderer as Vr, WebGLRenderTarget as Qi, ShaderMaterial as Wn, OneFactor as Or, ZeroFactor as Hr, CustomBlending as qr, Box2 as zr, Matrix2 as jr, Vector4 as nt, SphereGeometry as Xn, BoxGeometry as Kr, DynamicDrawUsage as Yr, InstancedBufferGeometry as Jr, InstancedInterleavedBuffer as Xs, WireframeGeometry as Wr, ShaderLib as Kt, UniformsUtils as Zn, UniformsLib as Yt, Line3 as Xr } from "three";
|
|
3
3
|
class yt {
|
|
4
4
|
/**
|
|
5
5
|
* Creates a new EventSystem instance
|
|
@@ -143,7 +143,7 @@ class cs {
|
|
|
143
143
|
return Array.isArray(t) ? t.some((i) => s(e, i)) : s(e, t);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
class
|
|
146
|
+
class Zr {
|
|
147
147
|
constructor(e = {}) {
|
|
148
148
|
this.config = e, this.scene = new m.Scene(), this.init();
|
|
149
149
|
}
|
|
@@ -164,7 +164,7 @@ class Xr {
|
|
|
164
164
|
this.scene.clear();
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
const
|
|
167
|
+
const Ti = { type: "change" }, Ai = { type: "start" }, $n = { type: "end" }, Mt = new is(), Ri = new Pn(), $r = Math.cos(70 * st.DEG2RAD), U = new v(), J = 2 * Math.PI, _ = {
|
|
168
168
|
NONE: -1,
|
|
169
169
|
ROTATE: 0,
|
|
170
170
|
DOLLY: 1,
|
|
@@ -174,7 +174,7 @@ const Qi = { type: "change" }, ci = { type: "start" }, Zn = { type: "end" }, Mt
|
|
|
174
174
|
TOUCH_DOLLY_PAN: 5,
|
|
175
175
|
TOUCH_DOLLY_ROTATE: 6
|
|
176
176
|
}, ps = 1e-6;
|
|
177
|
-
class
|
|
177
|
+
class ea extends ir {
|
|
178
178
|
/**
|
|
179
179
|
* Constructs a new controls instance.
|
|
180
180
|
*
|
|
@@ -182,7 +182,7 @@ class $r extends sr {
|
|
|
182
182
|
* @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
|
|
183
183
|
*/
|
|
184
184
|
constructor(e, t = null) {
|
|
185
|
-
super(e, t), this.state = _.NONE, this.target = new v(), this.cursor = new v(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: We.ROTATE, MIDDLE: We.DOLLY, RIGHT: We.PAN }, this.touches = { ONE: Ke.ROTATE, TWO: Ke.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new v(), this._lastQuaternion = new $e(), this._lastTargetPosition = new v(), this._quat = new $e().setFromUnitVectors(e.up, new v(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new qs(), this._sphericalDelta = new qs(), this._scale = 1, this._panOffset = new v(), this._rotateStart = new k(), this._rotateEnd = new k(), this._rotateDelta = new k(), this._panStart = new k(), this._panEnd = new k(), this._panDelta = new k(), this._dollyStart = new k(), this._dollyEnd = new k(), this._dollyDelta = new k(), this._dollyDirection = new v(), this._mouse = new k(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove =
|
|
185
|
+
super(e, t), this.state = _.NONE, this.target = new v(), this.cursor = new v(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: We.ROTATE, MIDDLE: We.DOLLY, RIGHT: We.PAN }, this.touches = { ONE: Ke.ROTATE, TWO: Ke.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new v(), this._lastQuaternion = new $e(), this._lastTargetPosition = new v(), this._quat = new $e().setFromUnitVectors(e.up, new v(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new qs(), this._sphericalDelta = new qs(), this._scale = 1, this._panOffset = new v(), this._rotateStart = new k(), this._rotateEnd = new k(), this._rotateDelta = new k(), this._panStart = new k(), this._panEnd = new k(), this._panDelta = new k(), this._dollyStart = new k(), this._dollyEnd = new k(), this._dollyDelta = new k(), this._dollyDirection = new v(), this._mouse = new k(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = sa.bind(this), this._onPointerDown = ta.bind(this), this._onPointerUp = ia.bind(this), this._onContextMenu = Aa.bind(this), this._onMouseWheel = ra.bind(this), this._onKeyDown = aa.bind(this), this._onTouchStart = la.bind(this), this._onTouchMove = ca.bind(this), this._onMouseDown = na.bind(this), this._onMouseMove = oa.bind(this), this._interceptControlDown = ha.bind(this), this._interceptControlUp = da.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
|
|
186
186
|
}
|
|
187
187
|
connect(e) {
|
|
188
188
|
super.connect(e), this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointercancel", this._onPointerUp), this.domElement.addEventListener("contextmenu", this._onContextMenu), this.domElement.addEventListener("wheel", this._onMouseWheel, { passive: !1 }), this.domElement.getRootNode().addEventListener("keydown", this._interceptControlDown, { passive: !0, capture: !0 }), this.domElement.style.touchAction = "none";
|
|
@@ -243,7 +243,7 @@ class $r extends sr {
|
|
|
243
243
|
* was called, or the initial state.
|
|
244
244
|
*/
|
|
245
245
|
reset() {
|
|
246
|
-
this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(
|
|
246
|
+
this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(Ti), this.update(), this.state = _.NONE;
|
|
247
247
|
}
|
|
248
248
|
update(e = null) {
|
|
249
249
|
const t = this.object.position;
|
|
@@ -273,12 +273,12 @@ class $r extends sr {
|
|
|
273
273
|
c.unproject(this.object), this.object.position.sub(c).add(r), this.object.updateMatrixWorld(), o = U.length();
|
|
274
274
|
} else
|
|
275
275
|
console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), this.zoomToCursor = !1;
|
|
276
|
-
o !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(o).add(this.object.position) : (Mt.origin.copy(this.object.position), Mt.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(Mt.direction)) <
|
|
276
|
+
o !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(o).add(this.object.position) : (Mt.origin.copy(this.object.position), Mt.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(Mt.direction)) < $r ? this.object.lookAt(this.target) : (Ri.setFromNormalAndCoplanarPoint(this.object.up, this.target), Mt.intersectPlane(Ri, this.target))));
|
|
277
277
|
} else if (this.object.isOrthographicCamera) {
|
|
278
278
|
const o = this.object.zoom;
|
|
279
279
|
this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), o !== this.object.zoom && (this.object.updateProjectionMatrix(), n = !0);
|
|
280
280
|
}
|
|
281
|
-
return this._scale = 1, this._performCursorZoom = !1, n || this._lastPosition.distanceToSquared(this.object.position) > ps || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > ps || this._lastTargetPosition.distanceToSquared(this.target) > ps ? (this.dispatchEvent(
|
|
281
|
+
return this._scale = 1, this._performCursorZoom = !1, n || this._lastPosition.distanceToSquared(this.object.position) > ps || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > ps || this._lastTargetPosition.distanceToSquared(this.target) > ps ? (this.dispatchEvent(Ti), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
|
|
282
282
|
}
|
|
283
283
|
_getAutoRotationAngle(e) {
|
|
284
284
|
return e !== null ? J / 60 * this.autoRotateSpeed * e : J / 60 / 60 * this.autoRotateSpeed;
|
|
@@ -470,16 +470,16 @@ class $r extends sr {
|
|
|
470
470
|
return e.ctrlKey && !this._controlActive && (s.deltaY *= 10), s;
|
|
471
471
|
}
|
|
472
472
|
}
|
|
473
|
-
function
|
|
473
|
+
function ta(a) {
|
|
474
474
|
this.enabled !== !1 && (this._pointers.length === 0 && (this.domElement.setPointerCapture(a.pointerId), this.domElement.addEventListener("pointermove", this._onPointerMove), this.domElement.addEventListener("pointerup", this._onPointerUp)), !this._isTrackingPointer(a) && (this._addPointer(a), a.pointerType === "touch" ? this._onTouchStart(a) : this._onMouseDown(a)));
|
|
475
475
|
}
|
|
476
|
-
function
|
|
476
|
+
function sa(a) {
|
|
477
477
|
this.enabled !== !1 && (a.pointerType === "touch" ? this._onTouchMove(a) : this._onMouseMove(a));
|
|
478
478
|
}
|
|
479
|
-
function
|
|
479
|
+
function ia(a) {
|
|
480
480
|
switch (this._removePointer(a), this._pointers.length) {
|
|
481
481
|
case 0:
|
|
482
|
-
this.domElement.releasePointerCapture(a.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(
|
|
482
|
+
this.domElement.releasePointerCapture(a.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent($n), this.state = _.NONE;
|
|
483
483
|
break;
|
|
484
484
|
case 1:
|
|
485
485
|
const e = this._pointers[0], t = this._pointerPositions[e];
|
|
@@ -487,7 +487,7 @@ function sa(a) {
|
|
|
487
487
|
break;
|
|
488
488
|
}
|
|
489
489
|
}
|
|
490
|
-
function
|
|
490
|
+
function na(a) {
|
|
491
491
|
let e;
|
|
492
492
|
switch (a.button) {
|
|
493
493
|
case 0:
|
|
@@ -528,9 +528,9 @@ function ia(a) {
|
|
|
528
528
|
default:
|
|
529
529
|
this.state = _.NONE;
|
|
530
530
|
}
|
|
531
|
-
this.state !== _.NONE && this.dispatchEvent(
|
|
531
|
+
this.state !== _.NONE && this.dispatchEvent(Ai);
|
|
532
532
|
}
|
|
533
|
-
function
|
|
533
|
+
function oa(a) {
|
|
534
534
|
switch (this.state) {
|
|
535
535
|
case _.ROTATE:
|
|
536
536
|
if (this.enableRotate === !1) return;
|
|
@@ -546,13 +546,13 @@ function na(a) {
|
|
|
546
546
|
break;
|
|
547
547
|
}
|
|
548
548
|
}
|
|
549
|
-
function oa(a) {
|
|
550
|
-
this.enabled === !1 || this.enableZoom === !1 || this.state !== _.NONE || (a.preventDefault(), this.dispatchEvent(ci), this._handleMouseWheel(this._customWheelEvent(a)), this.dispatchEvent(Zn));
|
|
551
|
-
}
|
|
552
549
|
function ra(a) {
|
|
553
|
-
this.enabled
|
|
550
|
+
this.enabled === !1 || this.enableZoom === !1 || this.state !== _.NONE || (a.preventDefault(), this.dispatchEvent(Ai), this._handleMouseWheel(this._customWheelEvent(a)), this.dispatchEvent($n));
|
|
554
551
|
}
|
|
555
552
|
function aa(a) {
|
|
553
|
+
this.enabled !== !1 && this._handleKeyDown(a);
|
|
554
|
+
}
|
|
555
|
+
function la(a) {
|
|
556
556
|
switch (this._trackPointer(a), this._pointers.length) {
|
|
557
557
|
case 1:
|
|
558
558
|
switch (this.touches.ONE) {
|
|
@@ -585,9 +585,9 @@ function aa(a) {
|
|
|
585
585
|
default:
|
|
586
586
|
this.state = _.NONE;
|
|
587
587
|
}
|
|
588
|
-
this.state !== _.NONE && this.dispatchEvent(
|
|
588
|
+
this.state !== _.NONE && this.dispatchEvent(Ai);
|
|
589
589
|
}
|
|
590
|
-
function
|
|
590
|
+
function ca(a) {
|
|
591
591
|
switch (this._trackPointer(a), this.state) {
|
|
592
592
|
case _.TOUCH_ROTATE:
|
|
593
593
|
if (this.enableRotate === !1) return;
|
|
@@ -609,16 +609,16 @@ function la(a) {
|
|
|
609
609
|
this.state = _.NONE;
|
|
610
610
|
}
|
|
611
611
|
}
|
|
612
|
-
function
|
|
612
|
+
function Aa(a) {
|
|
613
613
|
this.enabled !== !1 && a.preventDefault();
|
|
614
614
|
}
|
|
615
|
-
function
|
|
615
|
+
function ha(a) {
|
|
616
616
|
a.key === "Control" && (this._controlActive = !0, this.domElement.getRootNode().addEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
|
|
617
617
|
}
|
|
618
|
-
function
|
|
618
|
+
function da(a) {
|
|
619
619
|
a.key === "Control" && (this._controlActive = !1, this.domElement.getRootNode().removeEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
|
|
620
620
|
}
|
|
621
|
-
class
|
|
621
|
+
class ua extends yt {
|
|
622
622
|
/**
|
|
623
623
|
* Creates a new Camera instance
|
|
624
624
|
*
|
|
@@ -639,7 +639,7 @@ class da extends yt {
|
|
|
639
639
|
}
|
|
640
640
|
initControls(e) {
|
|
641
641
|
if (!this.controls) {
|
|
642
|
-
this.controls = new
|
|
642
|
+
this.controls = new ea(this.camera, e);
|
|
643
643
|
const t = this.config.desktop || {};
|
|
644
644
|
this.controls.enableDamping = t.enableDamping ?? !0, this.controls.dampingFactor = t.dampingFactor ?? 0.08, this.controls.maxDistance = t.maxDistance ?? 100, this.controls.minDistance = t.minDistance ?? 0.5, this.controls.addEventListener("change", () => {
|
|
645
645
|
this.emit("change");
|
|
@@ -734,7 +734,7 @@ class da extends yt {
|
|
|
734
734
|
this.focusAnimation && (cancelAnimationFrame(this.focusAnimation), this.focusAnimation = null), this.controls && this.controls.dispose(), this.removeAllListeners();
|
|
735
735
|
}
|
|
736
736
|
}
|
|
737
|
-
function
|
|
737
|
+
function ga(a) {
|
|
738
738
|
let e = 0;
|
|
739
739
|
for (const s in a.attributes) {
|
|
740
740
|
const i = a.getAttribute(s);
|
|
@@ -743,10 +743,10 @@ function ua(a) {
|
|
|
743
743
|
const t = a.getIndex();
|
|
744
744
|
return e += t ? t.count * t.itemSize * t.array.BYTES_PER_ELEMENT : 0, e;
|
|
745
745
|
}
|
|
746
|
-
function
|
|
747
|
-
if (e ===
|
|
746
|
+
function Di(a, e) {
|
|
747
|
+
if (e === nr)
|
|
748
748
|
return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), a;
|
|
749
|
-
if (e === zs || e ===
|
|
749
|
+
if (e === zs || e === Gn) {
|
|
750
750
|
let t = a.getIndex();
|
|
751
751
|
if (t === null) {
|
|
752
752
|
const o = [], r = a.getAttribute("position");
|
|
@@ -770,7 +770,7 @@ function Ri(a, e) {
|
|
|
770
770
|
} else
|
|
771
771
|
return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", e), a;
|
|
772
772
|
}
|
|
773
|
-
class Ne extends
|
|
773
|
+
class Ne extends ai {
|
|
774
774
|
/**
|
|
775
775
|
* Constructs a new glTF loader.
|
|
776
776
|
*
|
|
@@ -778,39 +778,39 @@ class Ne extends ri {
|
|
|
778
778
|
*/
|
|
779
779
|
constructor(e) {
|
|
780
780
|
super(e), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(t) {
|
|
781
|
-
return new ba(t);
|
|
782
|
-
}), this.register(function(t) {
|
|
783
781
|
return new Ca(t);
|
|
784
782
|
}), this.register(function(t) {
|
|
785
|
-
return new
|
|
783
|
+
return new Ea(t);
|
|
786
784
|
}), this.register(function(t) {
|
|
787
785
|
return new Qa(t);
|
|
788
786
|
}), this.register(function(t) {
|
|
789
787
|
return new Ta(t);
|
|
790
788
|
}), this.register(function(t) {
|
|
791
|
-
return new
|
|
789
|
+
return new Ra(t);
|
|
792
790
|
}), this.register(function(t) {
|
|
793
791
|
return new Ia(t);
|
|
794
792
|
}), this.register(function(t) {
|
|
795
793
|
return new Ba(t);
|
|
796
794
|
}), this.register(function(t) {
|
|
797
795
|
return new wa(t);
|
|
798
|
-
}), this.register(function(t) {
|
|
799
|
-
return new ma(t);
|
|
800
796
|
}), this.register(function(t) {
|
|
801
797
|
return new Sa(t);
|
|
802
798
|
}), this.register(function(t) {
|
|
803
|
-
return new
|
|
804
|
-
}), this.register(function(t) {
|
|
805
|
-
return new Ma(t);
|
|
799
|
+
return new ba(t);
|
|
806
800
|
}), this.register(function(t) {
|
|
807
801
|
return new va(t);
|
|
808
802
|
}), this.register(function(t) {
|
|
809
|
-
return new
|
|
803
|
+
return new ya(t);
|
|
804
|
+
}), this.register(function(t) {
|
|
805
|
+
return new xa(t);
|
|
810
806
|
}), this.register(function(t) {
|
|
811
|
-
return new
|
|
807
|
+
return new Ma(t);
|
|
808
|
+
}), this.register(function(t) {
|
|
809
|
+
return new fa(t);
|
|
812
810
|
}), this.register(function(t) {
|
|
813
811
|
return new Da(t);
|
|
812
|
+
}), this.register(function(t) {
|
|
813
|
+
return new La(t);
|
|
814
814
|
});
|
|
815
815
|
}
|
|
816
816
|
/**
|
|
@@ -910,9 +910,9 @@ class Ne extends ri {
|
|
|
910
910
|
if (typeof e == "string")
|
|
911
911
|
n = JSON.parse(e);
|
|
912
912
|
else if (e instanceof ArrayBuffer)
|
|
913
|
-
if (l.decode(new Uint8Array(e, 0, 4)) ===
|
|
913
|
+
if (l.decode(new Uint8Array(e, 0, 4)) === eo) {
|
|
914
914
|
try {
|
|
915
|
-
o[D.KHR_BINARY_GLTF] = new
|
|
915
|
+
o[D.KHR_BINARY_GLTF] = new Fa(e);
|
|
916
916
|
} catch (h) {
|
|
917
917
|
i && i(h);
|
|
918
918
|
return;
|
|
@@ -926,7 +926,7 @@ class Ne extends ri {
|
|
|
926
926
|
i && i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));
|
|
927
927
|
return;
|
|
928
928
|
}
|
|
929
|
-
const c = new
|
|
929
|
+
const c = new Ka(n, {
|
|
930
930
|
path: t || this.resourcePath || "",
|
|
931
931
|
crossOrigin: this.crossOrigin,
|
|
932
932
|
requestHeader: this.requestHeader,
|
|
@@ -944,16 +944,16 @@ class Ne extends ri {
|
|
|
944
944
|
const h = n.extensionsUsed[A], d = n.extensionsRequired || [];
|
|
945
945
|
switch (h) {
|
|
946
946
|
case D.KHR_MATERIALS_UNLIT:
|
|
947
|
-
o[h] = new
|
|
947
|
+
o[h] = new ma();
|
|
948
948
|
break;
|
|
949
949
|
case D.KHR_DRACO_MESH_COMPRESSION:
|
|
950
|
-
o[h] = new
|
|
950
|
+
o[h] = new ka(n, this.dracoLoader);
|
|
951
951
|
break;
|
|
952
952
|
case D.KHR_TEXTURE_TRANSFORM:
|
|
953
|
-
o[h] = new
|
|
953
|
+
o[h] = new _a();
|
|
954
954
|
break;
|
|
955
955
|
case D.KHR_MESH_QUANTIZATION:
|
|
956
|
-
o[h] = new
|
|
956
|
+
o[h] = new Pa();
|
|
957
957
|
break;
|
|
958
958
|
default:
|
|
959
959
|
d.indexOf(h) >= 0 && r[h] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + h + '".');
|
|
@@ -976,7 +976,7 @@ class Ne extends ri {
|
|
|
976
976
|
});
|
|
977
977
|
}
|
|
978
978
|
}
|
|
979
|
-
function
|
|
979
|
+
function pa() {
|
|
980
980
|
let a = {};
|
|
981
981
|
return {
|
|
982
982
|
get: function(e) {
|
|
@@ -1017,7 +1017,7 @@ const D = {
|
|
|
1017
1017
|
EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression",
|
|
1018
1018
|
EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing"
|
|
1019
1019
|
};
|
|
1020
|
-
class
|
|
1020
|
+
class fa {
|
|
1021
1021
|
constructor(e) {
|
|
1022
1022
|
this.parser = e, this.name = D.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
|
|
1023
1023
|
}
|
|
@@ -1039,13 +1039,13 @@ class pa {
|
|
|
1039
1039
|
const h = l.range !== void 0 ? l.range : 0;
|
|
1040
1040
|
switch (l.type) {
|
|
1041
1041
|
case "directional":
|
|
1042
|
-
c = new
|
|
1042
|
+
c = new ar(A), c.target.position.set(0, 0, -1), c.add(c.target);
|
|
1043
1043
|
break;
|
|
1044
1044
|
case "point":
|
|
1045
|
-
c = new
|
|
1045
|
+
c = new rr(A), c.distance = h;
|
|
1046
1046
|
break;
|
|
1047
1047
|
case "spot":
|
|
1048
|
-
c = new
|
|
1048
|
+
c = new or(A), c.distance = h, l.spot = l.spot || {}, l.spot.innerConeAngle = l.spot.innerConeAngle !== void 0 ? l.spot.innerConeAngle : 0, l.spot.outerConeAngle = l.spot.outerConeAngle !== void 0 ? l.spot.outerConeAngle : Math.PI / 4, c.angle = l.spot.outerConeAngle, c.penumbra = 1 - l.spot.innerConeAngle / l.spot.outerConeAngle, c.target.position.set(0, 0, -1), c.add(c.target);
|
|
1049
1049
|
break;
|
|
1050
1050
|
default:
|
|
1051
1051
|
throw new Error("THREE.GLTFLoader: Unexpected light type: " + l.type);
|
|
@@ -1063,7 +1063,7 @@ class pa {
|
|
|
1063
1063
|
});
|
|
1064
1064
|
}
|
|
1065
1065
|
}
|
|
1066
|
-
class
|
|
1066
|
+
class ma {
|
|
1067
1067
|
constructor() {
|
|
1068
1068
|
this.name = D.KHR_MATERIALS_UNLIT;
|
|
1069
1069
|
}
|
|
@@ -1084,7 +1084,7 @@ class fa {
|
|
|
1084
1084
|
return Promise.all(i);
|
|
1085
1085
|
}
|
|
1086
1086
|
}
|
|
1087
|
-
class
|
|
1087
|
+
class ba {
|
|
1088
1088
|
constructor(e) {
|
|
1089
1089
|
this.parser = e, this.name = D.KHR_MATERIALS_EMISSIVE_STRENGTH;
|
|
1090
1090
|
}
|
|
@@ -1096,7 +1096,7 @@ class ma {
|
|
|
1096
1096
|
return n !== void 0 && (t.emissiveIntensity = n), Promise.resolve();
|
|
1097
1097
|
}
|
|
1098
1098
|
}
|
|
1099
|
-
class
|
|
1099
|
+
class Ca {
|
|
1100
1100
|
constructor(e) {
|
|
1101
1101
|
this.parser = e, this.name = D.KHR_MATERIALS_CLEARCOAT;
|
|
1102
1102
|
}
|
|
@@ -1116,7 +1116,7 @@ class ba {
|
|
|
1116
1116
|
return Promise.all(n);
|
|
1117
1117
|
}
|
|
1118
1118
|
}
|
|
1119
|
-
class
|
|
1119
|
+
class Ea {
|
|
1120
1120
|
constructor(e) {
|
|
1121
1121
|
this.parser = e, this.name = D.KHR_MATERIALS_DISPERSION;
|
|
1122
1122
|
}
|
|
@@ -1132,7 +1132,7 @@ class Ca {
|
|
|
1132
1132
|
return t.dispersion = n.dispersion !== void 0 ? n.dispersion : 0, Promise.resolve();
|
|
1133
1133
|
}
|
|
1134
1134
|
}
|
|
1135
|
-
class
|
|
1135
|
+
class ya {
|
|
1136
1136
|
constructor(e) {
|
|
1137
1137
|
this.parser = e, this.name = D.KHR_MATERIALS_IRIDESCENCE;
|
|
1138
1138
|
}
|
|
@@ -1148,7 +1148,7 @@ class Ea {
|
|
|
1148
1148
|
return o.iridescenceFactor !== void 0 && (t.iridescence = o.iridescenceFactor), o.iridescenceTexture !== void 0 && n.push(s.assignTexture(t, "iridescenceMap", o.iridescenceTexture)), o.iridescenceIor !== void 0 && (t.iridescenceIOR = o.iridescenceIor), t.iridescenceThicknessRange === void 0 && (t.iridescenceThicknessRange = [100, 400]), o.iridescenceThicknessMinimum !== void 0 && (t.iridescenceThicknessRange[0] = o.iridescenceThicknessMinimum), o.iridescenceThicknessMaximum !== void 0 && (t.iridescenceThicknessRange[1] = o.iridescenceThicknessMaximum), o.iridescenceThicknessTexture !== void 0 && n.push(s.assignTexture(t, "iridescenceThicknessMap", o.iridescenceThicknessTexture)), Promise.all(n);
|
|
1149
1149
|
}
|
|
1150
1150
|
}
|
|
1151
|
-
class
|
|
1151
|
+
class Ia {
|
|
1152
1152
|
constructor(e) {
|
|
1153
1153
|
this.parser = e, this.name = D.KHR_MATERIALS_SHEEN;
|
|
1154
1154
|
}
|
|
@@ -1170,7 +1170,7 @@ class ya {
|
|
|
1170
1170
|
return o.sheenRoughnessFactor !== void 0 && (t.sheenRoughness = o.sheenRoughnessFactor), o.sheenColorTexture !== void 0 && n.push(s.assignTexture(t, "sheenColorMap", o.sheenColorTexture, Ce)), o.sheenRoughnessTexture !== void 0 && n.push(s.assignTexture(t, "sheenRoughnessMap", o.sheenRoughnessTexture)), Promise.all(n);
|
|
1171
1171
|
}
|
|
1172
1172
|
}
|
|
1173
|
-
class
|
|
1173
|
+
class Ba {
|
|
1174
1174
|
constructor(e) {
|
|
1175
1175
|
this.parser = e, this.name = D.KHR_MATERIALS_TRANSMISSION;
|
|
1176
1176
|
}
|
|
@@ -1186,7 +1186,7 @@ class Ia {
|
|
|
1186
1186
|
return o.transmissionFactor !== void 0 && (t.transmission = o.transmissionFactor), o.transmissionTexture !== void 0 && n.push(s.assignTexture(t, "transmissionMap", o.transmissionTexture)), Promise.all(n);
|
|
1187
1187
|
}
|
|
1188
1188
|
}
|
|
1189
|
-
class
|
|
1189
|
+
class wa {
|
|
1190
1190
|
constructor(e) {
|
|
1191
1191
|
this.parser = e, this.name = D.KHR_MATERIALS_VOLUME;
|
|
1192
1192
|
}
|
|
@@ -1204,7 +1204,7 @@ class Ba {
|
|
|
1204
1204
|
return t.attenuationColor = new Ee().setRGB(r[0], r[1], r[2], le), Promise.all(n);
|
|
1205
1205
|
}
|
|
1206
1206
|
}
|
|
1207
|
-
class
|
|
1207
|
+
class Sa {
|
|
1208
1208
|
constructor(e) {
|
|
1209
1209
|
this.parser = e, this.name = D.KHR_MATERIALS_IOR;
|
|
1210
1210
|
}
|
|
@@ -1220,7 +1220,7 @@ class wa {
|
|
|
1220
1220
|
return t.ior = n.ior !== void 0 ? n.ior : 1.5, Promise.resolve();
|
|
1221
1221
|
}
|
|
1222
1222
|
}
|
|
1223
|
-
class
|
|
1223
|
+
class va {
|
|
1224
1224
|
constructor(e) {
|
|
1225
1225
|
this.parser = e, this.name = D.KHR_MATERIALS_SPECULAR;
|
|
1226
1226
|
}
|
|
@@ -1238,7 +1238,7 @@ class Sa {
|
|
|
1238
1238
|
return t.specularColor = new Ee().setRGB(r[0], r[1], r[2], le), o.specularColorTexture !== void 0 && n.push(s.assignTexture(t, "specularColorMap", o.specularColorTexture, Ce)), Promise.all(n);
|
|
1239
1239
|
}
|
|
1240
1240
|
}
|
|
1241
|
-
class
|
|
1241
|
+
class Ma {
|
|
1242
1242
|
constructor(e) {
|
|
1243
1243
|
this.parser = e, this.name = D.EXT_MATERIALS_BUMP;
|
|
1244
1244
|
}
|
|
@@ -1254,7 +1254,7 @@ class va {
|
|
|
1254
1254
|
return t.bumpScale = o.bumpFactor !== void 0 ? o.bumpFactor : 1, o.bumpTexture !== void 0 && n.push(s.assignTexture(t, "bumpMap", o.bumpTexture)), Promise.all(n);
|
|
1255
1255
|
}
|
|
1256
1256
|
}
|
|
1257
|
-
class
|
|
1257
|
+
class xa {
|
|
1258
1258
|
constructor(e) {
|
|
1259
1259
|
this.parser = e, this.name = D.KHR_MATERIALS_ANISOTROPY;
|
|
1260
1260
|
}
|
|
@@ -1270,7 +1270,7 @@ class Ma {
|
|
|
1270
1270
|
return o.anisotropyStrength !== void 0 && (t.anisotropy = o.anisotropyStrength), o.anisotropyRotation !== void 0 && (t.anisotropyRotation = o.anisotropyRotation), o.anisotropyTexture !== void 0 && n.push(s.assignTexture(t, "anisotropyMap", o.anisotropyTexture)), Promise.all(n);
|
|
1271
1271
|
}
|
|
1272
1272
|
}
|
|
1273
|
-
class
|
|
1273
|
+
class Qa {
|
|
1274
1274
|
constructor(e) {
|
|
1275
1275
|
this.parser = e, this.name = D.KHR_TEXTURE_BASISU;
|
|
1276
1276
|
}
|
|
@@ -1287,7 +1287,7 @@ class xa {
|
|
|
1287
1287
|
return t.loadTextureImage(e, n.source, o);
|
|
1288
1288
|
}
|
|
1289
1289
|
}
|
|
1290
|
-
class
|
|
1290
|
+
class Ta {
|
|
1291
1291
|
constructor(e) {
|
|
1292
1292
|
this.parser = e, this.name = D.EXT_TEXTURE_WEBP;
|
|
1293
1293
|
}
|
|
@@ -1304,7 +1304,7 @@ class Qa {
|
|
|
1304
1304
|
return s.loadTextureImage(e, o.source, l);
|
|
1305
1305
|
}
|
|
1306
1306
|
}
|
|
1307
|
-
class
|
|
1307
|
+
class Ra {
|
|
1308
1308
|
constructor(e) {
|
|
1309
1309
|
this.parser = e, this.name = D.EXT_TEXTURE_AVIF;
|
|
1310
1310
|
}
|
|
@@ -1321,7 +1321,7 @@ class Ta {
|
|
|
1321
1321
|
return s.loadTextureImage(e, o.source, l);
|
|
1322
1322
|
}
|
|
1323
1323
|
}
|
|
1324
|
-
class
|
|
1324
|
+
class Da {
|
|
1325
1325
|
constructor(e) {
|
|
1326
1326
|
this.name = D.EXT_MESHOPT_COMPRESSION, this.parser = e;
|
|
1327
1327
|
}
|
|
@@ -1347,7 +1347,7 @@ class Ra {
|
|
|
1347
1347
|
return null;
|
|
1348
1348
|
}
|
|
1349
1349
|
}
|
|
1350
|
-
class
|
|
1350
|
+
class La {
|
|
1351
1351
|
constructor(e) {
|
|
1352
1352
|
this.name = D.EXT_MESH_GPU_INSTANCING, this.parser = e;
|
|
1353
1353
|
}
|
|
@@ -1365,13 +1365,13 @@ class Da {
|
|
|
1365
1365
|
return r.length < 1 ? null : (r.push(this.parser.createNodeMesh(e)), Promise.all(r).then((c) => {
|
|
1366
1366
|
const A = c.pop(), h = A.isGroup ? A.children : [A], d = c[0].count, u = [];
|
|
1367
1367
|
for (const g of h) {
|
|
1368
|
-
const p = new P(), b = new v(), E = new $e(), C = new v(1, 1, 1), y = new
|
|
1368
|
+
const p = new P(), b = new v(), E = new $e(), C = new v(1, 1, 1), y = new li(g.geometry, g.material, d);
|
|
1369
1369
|
for (let f = 0; f < d; f++)
|
|
1370
1370
|
l.TRANSLATION && b.fromBufferAttribute(l.TRANSLATION, f), l.ROTATION && E.fromBufferAttribute(l.ROTATION, f), l.SCALE && C.fromBufferAttribute(l.SCALE, f), y.setMatrixAt(f, p.compose(b, E, C));
|
|
1371
1371
|
for (const f in l)
|
|
1372
1372
|
if (f === "_COLOR_0") {
|
|
1373
1373
|
const I = l[f];
|
|
1374
|
-
y.instanceColor = new
|
|
1374
|
+
y.instanceColor = new lr(I.array, I.itemSize, I.normalized);
|
|
1375
1375
|
} else f !== "TRANSLATION" && f !== "ROTATION" && f !== "SCALE" && g.geometry.setAttribute(f, l[f]);
|
|
1376
1376
|
ns.prototype.copy.call(y, g), this.parser.assignFinalMaterial(y), u.push(y);
|
|
1377
1377
|
}
|
|
@@ -1379,8 +1379,8 @@ class Da {
|
|
|
1379
1379
|
}));
|
|
1380
1380
|
}
|
|
1381
1381
|
}
|
|
1382
|
-
const
|
|
1383
|
-
class
|
|
1382
|
+
const eo = "glTF", rt = 12, Li = { JSON: 1313821514, BIN: 5130562 };
|
|
1383
|
+
class Fa {
|
|
1384
1384
|
constructor(e) {
|
|
1385
1385
|
this.name = D.KHR_BINARY_GLTF, this.content = null, this.body = null;
|
|
1386
1386
|
const t = new DataView(e, 0, rt), s = new TextDecoder();
|
|
@@ -1388,7 +1388,7 @@ class La {
|
|
|
1388
1388
|
magic: s.decode(new Uint8Array(e.slice(0, 4))),
|
|
1389
1389
|
version: t.getUint32(4, !0),
|
|
1390
1390
|
length: t.getUint32(8, !0)
|
|
1391
|
-
}, this.header.magic !==
|
|
1391
|
+
}, this.header.magic !== eo)
|
|
1392
1392
|
throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");
|
|
1393
1393
|
if (this.header.version < 2)
|
|
1394
1394
|
throw new Error("THREE.GLTFLoader: Legacy binary file detected.");
|
|
@@ -1398,10 +1398,10 @@ class La {
|
|
|
1398
1398
|
const r = n.getUint32(o, !0);
|
|
1399
1399
|
o += 4;
|
|
1400
1400
|
const l = n.getUint32(o, !0);
|
|
1401
|
-
if (o += 4, l ===
|
|
1401
|
+
if (o += 4, l === Li.JSON) {
|
|
1402
1402
|
const c = new Uint8Array(e, rt + o, r);
|
|
1403
1403
|
this.content = s.decode(c);
|
|
1404
|
-
} else if (l ===
|
|
1404
|
+
} else if (l === Li.BIN) {
|
|
1405
1405
|
const c = rt + o;
|
|
1406
1406
|
this.body = e.slice(c, c + r);
|
|
1407
1407
|
}
|
|
@@ -1411,7 +1411,7 @@ class La {
|
|
|
1411
1411
|
throw new Error("THREE.GLTFLoader: JSON content not found.");
|
|
1412
1412
|
}
|
|
1413
1413
|
}
|
|
1414
|
-
class
|
|
1414
|
+
class ka {
|
|
1415
1415
|
constructor(e, t) {
|
|
1416
1416
|
if (!t)
|
|
1417
1417
|
throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
|
|
@@ -1443,7 +1443,7 @@ class Fa {
|
|
|
1443
1443
|
});
|
|
1444
1444
|
}
|
|
1445
1445
|
}
|
|
1446
|
-
class
|
|
1446
|
+
class _a {
|
|
1447
1447
|
constructor() {
|
|
1448
1448
|
this.name = D.KHR_TEXTURE_TRANSFORM;
|
|
1449
1449
|
}
|
|
@@ -1451,12 +1451,12 @@ class ka {
|
|
|
1451
1451
|
return (t.texCoord === void 0 || t.texCoord === e.channel) && t.offset === void 0 && t.rotation === void 0 && t.scale === void 0 || (e = e.clone(), t.texCoord !== void 0 && (e.channel = t.texCoord), t.offset !== void 0 && e.offset.fromArray(t.offset), t.rotation !== void 0 && (e.rotation = t.rotation), t.scale !== void 0 && e.repeat.fromArray(t.scale), e.needsUpdate = !0), e;
|
|
1452
1452
|
}
|
|
1453
1453
|
}
|
|
1454
|
-
class
|
|
1454
|
+
class Pa {
|
|
1455
1455
|
constructor() {
|
|
1456
1456
|
this.name = D.KHR_MESH_QUANTIZATION;
|
|
1457
1457
|
}
|
|
1458
1458
|
}
|
|
1459
|
-
class
|
|
1459
|
+
class to extends Tr {
|
|
1460
1460
|
constructor(e, t, s, i) {
|
|
1461
1461
|
super(e, t, s, i);
|
|
1462
1462
|
}
|
|
@@ -1475,11 +1475,11 @@ class eo extends Qr {
|
|
|
1475
1475
|
return n;
|
|
1476
1476
|
}
|
|
1477
1477
|
}
|
|
1478
|
-
const
|
|
1479
|
-
class
|
|
1478
|
+
const Ga = new $e();
|
|
1479
|
+
class Ua extends to {
|
|
1480
1480
|
interpolate_(e, t, s, i) {
|
|
1481
1481
|
const n = super.interpolate_(e, t, s, i);
|
|
1482
|
-
return
|
|
1482
|
+
return Ga.fromArray(n).normalize().toArray(n), n;
|
|
1483
1483
|
}
|
|
1484
1484
|
}
|
|
1485
1485
|
const ie = {
|
|
@@ -1497,16 +1497,16 @@ const ie = {
|
|
|
1497
1497
|
5123: Uint16Array,
|
|
1498
1498
|
5125: Uint32Array,
|
|
1499
1499
|
5126: Float32Array
|
|
1500
|
-
},
|
|
1501
|
-
9728:
|
|
1500
|
+
}, Fi = {
|
|
1501
|
+
9728: Un,
|
|
1502
1502
|
9729: Ge,
|
|
1503
|
-
9984:
|
|
1504
|
-
9985:
|
|
1505
|
-
9986:
|
|
1503
|
+
9984: gr,
|
|
1504
|
+
9985: ur,
|
|
1505
|
+
9986: dr,
|
|
1506
1506
|
9987: os
|
|
1507
|
-
},
|
|
1508
|
-
33071:
|
|
1509
|
-
33648:
|
|
1507
|
+
}, ki = {
|
|
1508
|
+
33071: fr,
|
|
1509
|
+
33648: pr,
|
|
1510
1510
|
10497: js
|
|
1511
1511
|
}, fs = {
|
|
1512
1512
|
SCALAR: 1,
|
|
@@ -1532,26 +1532,26 @@ const ie = {
|
|
|
1532
1532
|
translation: "position",
|
|
1533
1533
|
rotation: "quaternion",
|
|
1534
1534
|
weights: "morphTargetInfluences"
|
|
1535
|
-
},
|
|
1535
|
+
}, Na = {
|
|
1536
1536
|
CUBICSPLINE: void 0,
|
|
1537
1537
|
// We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each
|
|
1538
1538
|
// keyframe track will be initialized with a default interpolation type, then modified.
|
|
1539
|
-
LINEAR:
|
|
1540
|
-
STEP:
|
|
1539
|
+
LINEAR: Hn,
|
|
1540
|
+
STEP: xr
|
|
1541
1541
|
}, ms = {
|
|
1542
1542
|
OPAQUE: "OPAQUE",
|
|
1543
1543
|
MASK: "MASK",
|
|
1544
1544
|
BLEND: "BLEND"
|
|
1545
1545
|
};
|
|
1546
|
-
function
|
|
1547
|
-
return a.DefaultMaterial === void 0 && (a.DefaultMaterial = new
|
|
1546
|
+
function Va(a) {
|
|
1547
|
+
return a.DefaultMaterial === void 0 && (a.DefaultMaterial = new ci({
|
|
1548
1548
|
color: 16777215,
|
|
1549
1549
|
emissive: 0,
|
|
1550
1550
|
metalness: 1,
|
|
1551
1551
|
roughness: 1,
|
|
1552
1552
|
transparent: !1,
|
|
1553
1553
|
depthTest: !0,
|
|
1554
|
-
side:
|
|
1554
|
+
side: Qr
|
|
1555
1555
|
})), a.DefaultMaterial;
|
|
1556
1556
|
}
|
|
1557
1557
|
function Re(a, e, t) {
|
|
@@ -1561,7 +1561,7 @@ function Re(a, e, t) {
|
|
|
1561
1561
|
function be(a, e) {
|
|
1562
1562
|
e.extras !== void 0 && (typeof e.extras == "object" ? Object.assign(a.userData, e.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + e.extras));
|
|
1563
1563
|
}
|
|
1564
|
-
function
|
|
1564
|
+
function Oa(a, e, t) {
|
|
1565
1565
|
let s = !1, i = !1, n = !1;
|
|
1566
1566
|
for (let c = 0, A = e.length; c < A; c++) {
|
|
1567
1567
|
const h = e[c];
|
|
@@ -1593,7 +1593,7 @@ function Va(a, e, t) {
|
|
|
1593
1593
|
return s && (a.morphAttributes.position = A), i && (a.morphAttributes.normal = h), n && (a.morphAttributes.color = d), a.morphTargetsRelative = !0, a;
|
|
1594
1594
|
});
|
|
1595
1595
|
}
|
|
1596
|
-
function
|
|
1596
|
+
function Ha(a, e) {
|
|
1597
1597
|
if (a.updateMorphTargets(), e.weights !== void 0)
|
|
1598
1598
|
for (let t = 0, s = e.weights.length; t < s; t++)
|
|
1599
1599
|
a.morphTargetInfluences[t] = e.weights[t];
|
|
@@ -1607,7 +1607,7 @@ function Oa(a, e) {
|
|
|
1607
1607
|
console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
|
|
1608
1608
|
}
|
|
1609
1609
|
}
|
|
1610
|
-
function
|
|
1610
|
+
function qa(a) {
|
|
1611
1611
|
let e;
|
|
1612
1612
|
const t = a.extensions && a.extensions[D.KHR_DRACO_MESH_COMPRESSION];
|
|
1613
1613
|
if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + bs(t.attributes) : e = a.indices + ":" + bs(a.attributes) + ":" + a.mode, a.targets !== void 0)
|
|
@@ -1636,13 +1636,13 @@ function $s(a) {
|
|
|
1636
1636
|
throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
|
|
1637
1637
|
}
|
|
1638
1638
|
}
|
|
1639
|
-
function
|
|
1639
|
+
function za(a) {
|
|
1640
1640
|
return a.search(/\.jpe?g($|\?)/i) > 0 || a.search(/^data\:image\/jpeg/) === 0 ? "image/jpeg" : a.search(/\.webp($|\?)/i) > 0 || a.search(/^data\:image\/webp/) === 0 ? "image/webp" : a.search(/\.ktx2($|\?)/i) > 0 || a.search(/^data\:image\/ktx2/) === 0 ? "image/ktx2" : "image/png";
|
|
1641
1641
|
}
|
|
1642
|
-
const
|
|
1643
|
-
class
|
|
1642
|
+
const ja = new P();
|
|
1643
|
+
class Ka {
|
|
1644
1644
|
constructor(e = {}, t = {}) {
|
|
1645
|
-
this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new
|
|
1645
|
+
this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new pa(), 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 = {};
|
|
1646
1646
|
let s = !1, i = -1, n = !1, o = -1;
|
|
1647
1647
|
if (typeof navigator < "u") {
|
|
1648
1648
|
const r = navigator.userAgent;
|
|
@@ -1650,7 +1650,7 @@ class ja {
|
|
|
1650
1650
|
const l = r.match(/Version\/(\d+)/);
|
|
1651
1651
|
i = s && l ? parseInt(l[1], 10) : -1, n = r.indexOf("Firefox") > -1, o = n ? r.match(/Firefox\/([0-9]+)\./)[1] : -1;
|
|
1652
1652
|
}
|
|
1653
|
-
typeof createImageBitmap > "u" || s && i < 17 || n && o < 98 ? this.textureLoader = new
|
|
1653
|
+
typeof createImageBitmap > "u" || s && i < 17 || n && o < 98 ? this.textureLoader = new cr(this.options.manager) : this.textureLoader = new Ar(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new xe(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
|
|
1654
1654
|
}
|
|
1655
1655
|
setExtensions(e) {
|
|
1656
1656
|
this.extensions = e;
|
|
@@ -1900,7 +1900,7 @@ class ja {
|
|
|
1900
1900
|
if (u && u !== h) {
|
|
1901
1901
|
const E = Math.floor(d / u), C = "InterleavedBuffer:" + i.bufferView + ":" + i.componentType + ":" + E + ":" + i.count;
|
|
1902
1902
|
let y = t.cache.get(C);
|
|
1903
|
-
y || (p = new c(r, E * u, i.count * u / A), y = new
|
|
1903
|
+
y || (p = new c(r, E * u, i.count * u / A), y = new hr(p, u / A), t.cache.add(C, y)), b = new Fe(y, l, d % u / A, g);
|
|
1904
1904
|
} else
|
|
1905
1905
|
r === null ? p = new c(i.count * l) : p = new c(r, d, i.count * l), b = new ne(p, l, g);
|
|
1906
1906
|
if (i.sparse !== void 0) {
|
|
@@ -1938,7 +1938,7 @@ class ja {
|
|
|
1938
1938
|
const c = this.loadImageSource(t, s).then(function(A) {
|
|
1939
1939
|
A.flipY = !1, A.name = o.name || r.name || "", A.name === "" && typeof r.uri == "string" && r.uri.startsWith("data:image/") === !1 && (A.name = r.uri);
|
|
1940
1940
|
const d = (n.samplers || {})[o.sampler] || {};
|
|
1941
|
-
return A.magFilter =
|
|
1941
|
+
return A.magFilter = Fi[d.magFilter] || Ge, A.minFilter = Fi[d.minFilter] || os, A.wrapS = ki[d.wrapS] || js, A.wrapT = ki[d.wrapT] || js, A.generateMipmaps = !A.isCompressedTexture && A.minFilter !== Un && A.minFilter !== Ge, i.associations.set(A, { textures: e }), A;
|
|
1942
1942
|
}).catch(function() {
|
|
1943
1943
|
return null;
|
|
1944
1944
|
});
|
|
@@ -1962,12 +1962,12 @@ class ja {
|
|
|
1962
1962
|
return new Promise(function(d, u) {
|
|
1963
1963
|
let g = d;
|
|
1964
1964
|
t.isImageBitmapLoader === !0 && (g = function(p) {
|
|
1965
|
-
const b = new
|
|
1965
|
+
const b = new yi(p);
|
|
1966
1966
|
b.needsUpdate = !0, d(b);
|
|
1967
1967
|
}), t.load(mt.resolveURL(h, n.path), g, void 0, u);
|
|
1968
1968
|
});
|
|
1969
1969
|
}).then(function(h) {
|
|
1970
|
-
return c === !0 && r.revokeObjectURL(l), be(h, o), h.userData.mimeType = o.mimeType ||
|
|
1970
|
+
return c === !0 && r.revokeObjectURL(l), be(h, o), h.userData.mimeType = o.mimeType || za(o.uri), h;
|
|
1971
1971
|
}).catch(function(h) {
|
|
1972
1972
|
throw console.error("THREE.GLTFLoader: Couldn't load texture", l), h;
|
|
1973
1973
|
});
|
|
@@ -2014,11 +2014,11 @@ class ja {
|
|
|
2014
2014
|
if (e.isPoints) {
|
|
2015
2015
|
const r = "PointsMaterial:" + s.uuid;
|
|
2016
2016
|
let l = this.cache.get(r);
|
|
2017
|
-
l || (l = new
|
|
2017
|
+
l || (l = new Nn(), gs.prototype.copy.call(l, s), l.color.copy(s.color), l.map = s.map, l.sizeAttenuation = !1, this.cache.add(r, l)), s = l;
|
|
2018
2018
|
} else if (e.isLine) {
|
|
2019
2019
|
const r = "LineBasicMaterial:" + s.uuid;
|
|
2020
2020
|
let l = this.cache.get(r);
|
|
2021
|
-
l || (l = new
|
|
2021
|
+
l || (l = new mr(), gs.prototype.copy.call(l, s), l.color.copy(s.color), l.map = s.map, this.cache.add(r, l)), s = l;
|
|
2022
2022
|
}
|
|
2023
2023
|
if (i || n || o) {
|
|
2024
2024
|
let r = "ClonedMaterial:" + s.uuid + ":";
|
|
@@ -2029,7 +2029,7 @@ class ja {
|
|
|
2029
2029
|
e.material = s;
|
|
2030
2030
|
}
|
|
2031
2031
|
getMaterialType() {
|
|
2032
|
-
return
|
|
2032
|
+
return ci;
|
|
2033
2033
|
}
|
|
2034
2034
|
/**
|
|
2035
2035
|
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials
|
|
@@ -2057,7 +2057,7 @@ class ja {
|
|
|
2057
2057
|
return d.extendMaterialParams && d.extendMaterialParams(e, r);
|
|
2058
2058
|
})));
|
|
2059
2059
|
}
|
|
2060
|
-
n.doubleSided === !0 && (r.side =
|
|
2060
|
+
n.doubleSided === !0 && (r.side = br);
|
|
2061
2061
|
const A = n.alphaMode || ms.OPAQUE;
|
|
2062
2062
|
if (A === ms.BLEND ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, A === ms.MASK && (r.alphaTest = n.alphaCutoff !== void 0 ? n.alphaCutoff : 0.5)), n.normalTexture !== void 0 && o !== ke && (c.push(t.assignTexture(r, "normalMap", n.normalTexture)), r.normalScale = new k(1, 1), n.normalTexture.scale !== void 0)) {
|
|
2063
2063
|
const h = n.normalTexture.scale;
|
|
@@ -2080,7 +2080,7 @@ class ja {
|
|
|
2080
2080
|
* @return {string}
|
|
2081
2081
|
*/
|
|
2082
2082
|
createUniqueName(e) {
|
|
2083
|
-
const t =
|
|
2083
|
+
const t = Cr.sanitizeNodeName(e || "");
|
|
2084
2084
|
return t in this.nodeNamesUsed ? t + "_" + ++this.nodeNamesUsed[t] : (this.nodeNamesUsed[t] = 0, t);
|
|
2085
2085
|
}
|
|
2086
2086
|
/**
|
|
@@ -2096,17 +2096,17 @@ class ja {
|
|
|
2096
2096
|
const t = this, s = this.extensions, i = this.primitiveCache;
|
|
2097
2097
|
function n(r) {
|
|
2098
2098
|
return s[D.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r, t).then(function(l) {
|
|
2099
|
-
return
|
|
2099
|
+
return _i(l, r, t);
|
|
2100
2100
|
});
|
|
2101
2101
|
}
|
|
2102
2102
|
const o = [];
|
|
2103
2103
|
for (let r = 0, l = e.length; r < l; r++) {
|
|
2104
|
-
const c = e[r], A =
|
|
2104
|
+
const c = e[r], A = qa(c), h = i[A];
|
|
2105
2105
|
if (h)
|
|
2106
2106
|
o.push(h.promise);
|
|
2107
2107
|
else {
|
|
2108
2108
|
let d;
|
|
2109
|
-
c.extensions && c.extensions[D.KHR_DRACO_MESH_COMPRESSION] ? d = n(c) : d =
|
|
2109
|
+
c.extensions && c.extensions[D.KHR_DRACO_MESH_COMPRESSION] ? d = n(c) : d = _i(new rs(), c, t), i[A] = { primitive: c, promise: d }, o.push(d);
|
|
2110
2110
|
}
|
|
2111
2111
|
}
|
|
2112
2112
|
return Promise.all(o);
|
|
@@ -2121,7 +2121,7 @@ class ja {
|
|
|
2121
2121
|
loadMesh(e) {
|
|
2122
2122
|
const t = this, s = this.json, i = this.extensions, n = s.meshes[e], o = n.primitives, r = [];
|
|
2123
2123
|
for (let l = 0, c = o.length; l < c; l++) {
|
|
2124
|
-
const A = o[l].material === void 0 ?
|
|
2124
|
+
const A = o[l].material === void 0 ? Va(this.cache) : this.getDependency("material", o[l].material);
|
|
2125
2125
|
r.push(A);
|
|
2126
2126
|
}
|
|
2127
2127
|
return r.push(t.loadGeometries(o)), Promise.all(r).then(function(l) {
|
|
@@ -2131,18 +2131,18 @@ class ja {
|
|
|
2131
2131
|
let E;
|
|
2132
2132
|
const C = c[u];
|
|
2133
2133
|
if (b.mode === ie.TRIANGLES || b.mode === ie.TRIANGLE_STRIP || b.mode === ie.TRIANGLE_FAN || b.mode === void 0)
|
|
2134
|
-
E = n.isSkinnedMesh === !0 ? new
|
|
2134
|
+
E = n.isSkinnedMesh === !0 ? new Er(p, C) : new as(p, C), E.isSkinnedMesh === !0 && E.normalizeSkinWeights(), b.mode === ie.TRIANGLE_STRIP ? E.geometry = Di(E.geometry, Gn) : b.mode === ie.TRIANGLE_FAN && (E.geometry = Di(E.geometry, zs));
|
|
2135
2135
|
else if (b.mode === ie.LINES)
|
|
2136
|
-
E = new Er(p, C);
|
|
2137
|
-
else if (b.mode === ie.LINE_STRIP)
|
|
2138
2136
|
E = new yr(p, C);
|
|
2139
|
-
else if (b.mode === ie.
|
|
2137
|
+
else if (b.mode === ie.LINE_STRIP)
|
|
2140
2138
|
E = new Ir(p, C);
|
|
2139
|
+
else if (b.mode === ie.LINE_LOOP)
|
|
2140
|
+
E = new Br(p, C);
|
|
2141
2141
|
else if (b.mode === ie.POINTS)
|
|
2142
|
-
E = new
|
|
2142
|
+
E = new Vn(p, C);
|
|
2143
2143
|
else
|
|
2144
2144
|
throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + b.mode);
|
|
2145
|
-
Object.keys(E.geometry.morphAttributes).length > 0 &&
|
|
2145
|
+
Object.keys(E.geometry.morphAttributes).length > 0 && Ha(E, n), E.name = t.createUniqueName(n.name || "mesh_" + e), be(E, n), b.extensions && Re(i, E, b), t.assignFinalMaterial(E), h.push(E);
|
|
2146
2146
|
}
|
|
2147
2147
|
for (let u = 0, g = h.length; u < g; u++)
|
|
2148
2148
|
t.associations.set(h[u], {
|
|
@@ -2172,7 +2172,7 @@ class ja {
|
|
|
2172
2172
|
console.warn("THREE.GLTFLoader: Missing camera parameters.");
|
|
2173
2173
|
return;
|
|
2174
2174
|
}
|
|
2175
|
-
return s.type === "perspective" ? t = new
|
|
2175
|
+
return s.type === "perspective" ? t = new wr(st.radToDeg(i.yfov), i.aspectRatio || 1, i.znear || 1, i.zfar || 2e6) : s.type === "orthographic" && (t = new On(-i.xmag, i.xmag, i.ymag, -i.ymag, i.znear, i.zfar)), s.name && (t.name = this.createUniqueName(s.name)), be(t, s), Promise.resolve(t);
|
|
2176
2176
|
}
|
|
2177
2177
|
/**
|
|
2178
2178
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
|
|
@@ -2196,7 +2196,7 @@ class ja {
|
|
|
2196
2196
|
} else
|
|
2197
2197
|
console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', t.joints[c]);
|
|
2198
2198
|
}
|
|
2199
|
-
return new
|
|
2199
|
+
return new Sr(r, l);
|
|
2200
2200
|
});
|
|
2201
2201
|
}
|
|
2202
2202
|
/**
|
|
@@ -2229,7 +2229,7 @@ class ja {
|
|
|
2229
2229
|
for (let x = 0; x < S.length; x++)
|
|
2230
2230
|
E.push(S[x]);
|
|
2231
2231
|
}
|
|
2232
|
-
return new
|
|
2232
|
+
return new vr(n, void 0, E);
|
|
2233
2233
|
});
|
|
2234
2234
|
}
|
|
2235
2235
|
createNodeMesh(e) {
|
|
@@ -2262,7 +2262,7 @@ class ja {
|
|
|
2262
2262
|
]).then(function(c) {
|
|
2263
2263
|
const A = c[0], h = c[1], d = c[2];
|
|
2264
2264
|
d !== null && A.traverse(function(u) {
|
|
2265
|
-
u.isSkinnedMesh && u.bind(d,
|
|
2265
|
+
u.isSkinnedMesh && u.bind(d, ja);
|
|
2266
2266
|
});
|
|
2267
2267
|
for (let u = 0, g = h.length; u < g; u++)
|
|
2268
2268
|
A.add(h[u]);
|
|
@@ -2286,7 +2286,7 @@ class ja {
|
|
|
2286
2286
|
r.push(c);
|
|
2287
2287
|
}), this.nodeCache[e] = Promise.all(r).then(function(c) {
|
|
2288
2288
|
let A;
|
|
2289
|
-
if (n.isBone === !0 ? A = new
|
|
2289
|
+
if (n.isBone === !0 ? A = new Mr() : c.length > 1 ? A = new Xe() : c.length === 1 ? A = c[0] : A = new ns(), A !== c[0])
|
|
2290
2290
|
for (let h = 0, d = c.length; h < d; h++)
|
|
2291
2291
|
A.add(c[h]);
|
|
2292
2292
|
if (n.name && (A.userData.name = n.name, A.name = o), be(A, n), n.extensions && Re(s, A, n), n.matrix !== void 0) {
|
|
@@ -2322,7 +2322,7 @@ class ja {
|
|
|
2322
2322
|
const c = (A) => {
|
|
2323
2323
|
const h = /* @__PURE__ */ new Map();
|
|
2324
2324
|
for (const [d, u] of i.associations)
|
|
2325
|
-
(d instanceof gs || d instanceof
|
|
2325
|
+
(d instanceof gs || d instanceof yi) && h.set(d, u);
|
|
2326
2326
|
return A.traverse((d) => {
|
|
2327
2327
|
const u = i.associations.get(d);
|
|
2328
2328
|
u != null && h.set(d, u);
|
|
@@ -2339,29 +2339,29 @@ class ja {
|
|
|
2339
2339
|
let c;
|
|
2340
2340
|
switch (Ie[n.path]) {
|
|
2341
2341
|
case Ie.weights:
|
|
2342
|
-
c =
|
|
2342
|
+
c = Bi;
|
|
2343
2343
|
break;
|
|
2344
2344
|
case Ie.rotation:
|
|
2345
|
-
c =
|
|
2345
|
+
c = wi;
|
|
2346
2346
|
break;
|
|
2347
2347
|
case Ie.translation:
|
|
2348
2348
|
case Ie.scale:
|
|
2349
|
-
c =
|
|
2349
|
+
c = Ii;
|
|
2350
2350
|
break;
|
|
2351
2351
|
default:
|
|
2352
2352
|
switch (s.itemSize) {
|
|
2353
2353
|
case 1:
|
|
2354
|
-
c =
|
|
2354
|
+
c = Bi;
|
|
2355
2355
|
break;
|
|
2356
2356
|
case 2:
|
|
2357
2357
|
case 3:
|
|
2358
2358
|
default:
|
|
2359
|
-
c =
|
|
2359
|
+
c = Ii;
|
|
2360
2360
|
break;
|
|
2361
2361
|
}
|
|
2362
2362
|
break;
|
|
2363
2363
|
}
|
|
2364
|
-
const A = i.interpolation !== void 0 ?
|
|
2364
|
+
const A = i.interpolation !== void 0 ? Na[i.interpolation] : Hn, h = this._getArrayFromAccessor(s);
|
|
2365
2365
|
for (let d = 0, u = l.length; d < u; d++) {
|
|
2366
2366
|
const g = new c(
|
|
2367
2367
|
l[d] + "." + Ie[n.path],
|
|
@@ -2385,12 +2385,12 @@ class ja {
|
|
|
2385
2385
|
}
|
|
2386
2386
|
_createCubicSplineTrackInterpolant(e) {
|
|
2387
2387
|
e.createInterpolant = function(s) {
|
|
2388
|
-
const i = this instanceof
|
|
2388
|
+
const i = this instanceof wi ? Ua : to;
|
|
2389
2389
|
return new i(this.times, this.values, this.getValueSize() / 3, s);
|
|
2390
2390
|
}, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
|
|
2391
2391
|
}
|
|
2392
2392
|
}
|
|
2393
|
-
function
|
|
2393
|
+
function Ya(a, e, t) {
|
|
2394
2394
|
const s = e.attributes, i = new it();
|
|
2395
2395
|
if (s.POSITION !== void 0) {
|
|
2396
2396
|
const r = t.json.accessors[s.POSITION], l = r.min, c = r.max;
|
|
@@ -2431,7 +2431,7 @@ function Ka(a, e, t) {
|
|
|
2431
2431
|
const o = new Et();
|
|
2432
2432
|
i.getCenter(o.center), o.radius = i.min.distanceTo(i.max) / 2, a.boundingSphere = o;
|
|
2433
2433
|
}
|
|
2434
|
-
function
|
|
2434
|
+
function _i(a, e, t) {
|
|
2435
2435
|
const s = e.attributes, i = [];
|
|
2436
2436
|
function n(o, r) {
|
|
2437
2437
|
return t.getDependency("accessor", o).then(function(l) {
|
|
@@ -2448,12 +2448,12 @@ function ki(a, e, t) {
|
|
|
2448
2448
|
});
|
|
2449
2449
|
i.push(o);
|
|
2450
2450
|
}
|
|
2451
|
-
return Ks.workingColorSpace !== le && "COLOR_0" in s && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Ks.workingColorSpace}" not supported.`), be(a, e),
|
|
2452
|
-
return e.targets !== void 0 ?
|
|
2451
|
+
return Ks.workingColorSpace !== le && "COLOR_0" in s && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Ks.workingColorSpace}" not supported.`), be(a, e), Ya(a, e, t), Promise.all(i).then(function() {
|
|
2452
|
+
return e.targets !== void 0 ? Oa(a, e.targets, t) : a;
|
|
2453
2453
|
});
|
|
2454
2454
|
}
|
|
2455
2455
|
const Cs = /* @__PURE__ */ new WeakMap();
|
|
2456
|
-
class
|
|
2456
|
+
class so extends ai {
|
|
2457
2457
|
/**
|
|
2458
2458
|
* Constructs a new Draco loader.
|
|
2459
2459
|
*
|
|
@@ -2589,7 +2589,7 @@ class to extends ri {
|
|
|
2589
2589
|
return e ? t.push(this._loadLibrary("draco_decoder.js", "text")) : (t.push(this._loadLibrary("draco_wasm_wrapper.js", "text")), t.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer"))), this.decoderPending = Promise.all(t).then((s) => {
|
|
2590
2590
|
const i = s[0];
|
|
2591
2591
|
e || (this.decoderConfig.wasmBinary = s[1]);
|
|
2592
|
-
const n =
|
|
2592
|
+
const n = Ja.toString(), o = [
|
|
2593
2593
|
"/* draco decoder */",
|
|
2594
2594
|
i,
|
|
2595
2595
|
"",
|
|
@@ -2637,7 +2637,7 @@ class to extends ri {
|
|
|
2637
2637
|
return this.workerPool.length = 0, this.workerSourceURL !== "" && URL.revokeObjectURL(this.workerSourceURL), this;
|
|
2638
2638
|
}
|
|
2639
2639
|
}
|
|
2640
|
-
function
|
|
2640
|
+
function Ja() {
|
|
2641
2641
|
let a, e;
|
|
2642
2642
|
onmessage = function(o) {
|
|
2643
2643
|
const r = o.data;
|
|
@@ -2727,7 +2727,7 @@ function Ya() {
|
|
|
2727
2727
|
}
|
|
2728
2728
|
}
|
|
2729
2729
|
}
|
|
2730
|
-
class
|
|
2730
|
+
class Wa {
|
|
2731
2731
|
/**
|
|
2732
2732
|
* Constructs a new Worker pool.
|
|
2733
2733
|
*
|
|
@@ -2793,8 +2793,8 @@ class Ja {
|
|
|
2793
2793
|
this.workers.forEach((e) => e.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
2794
2794
|
}
|
|
2795
2795
|
}
|
|
2796
|
-
const
|
|
2797
|
-
class
|
|
2796
|
+
const Xa = 0, Pi = 2, Za = 1, Gi = 2, $a = 0, el = 1, tl = 10, sl = 0, io = 9, no = 15, oo = 16, ro = 22, ao = 37, lo = 43, co = 76, Ao = 83, ho = 97, uo = 100, go = 103, po = 109, il = 131, nl = 132, ol = 133, rl = 134, al = 137, ll = 138, cl = 141, Al = 142, hl = 145, dl = 146, fo = 148, mo = 152, ul = 157, gl = 158, bo = 165, Co = 166, hi = 1000066e3;
|
|
2797
|
+
class pl {
|
|
2798
2798
|
constructor() {
|
|
2799
2799
|
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;
|
|
2800
2800
|
}
|
|
@@ -2839,13 +2839,13 @@ class at {
|
|
|
2839
2839
|
}
|
|
2840
2840
|
}
|
|
2841
2841
|
const K = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
2842
|
-
function
|
|
2842
|
+
function Ui(a) {
|
|
2843
2843
|
return new TextDecoder().decode(a);
|
|
2844
2844
|
}
|
|
2845
|
-
function
|
|
2845
|
+
function fl(a) {
|
|
2846
2846
|
const e = new Uint8Array(a.buffer, a.byteOffset, K.length);
|
|
2847
2847
|
if (e[0] !== K[0] || e[1] !== K[1] || e[2] !== K[2] || e[3] !== K[3] || e[4] !== K[4] || e[5] !== K[5] || e[6] !== K[6] || e[7] !== K[7] || e[8] !== K[8] || e[9] !== K[9] || e[10] !== K[10] || e[11] !== K[11]) throw new Error("Missing KTX 2.0 identifier.");
|
|
2848
|
-
const t = new
|
|
2848
|
+
const t = new pl(), s = 17 * Uint32Array.BYTES_PER_ELEMENT, i = new at(a, K.length, s, !0);
|
|
2849
2849
|
t.vkFormat = i._nextUint32(), t.typeSize = i._nextUint32(), t.pixelWidth = i._nextUint32(), t.pixelHeight = i._nextUint32(), t.pixelDepth = i._nextUint32(), t.layerCount = i._nextUint32(), t.faceCount = i._nextUint32();
|
|
2850
2850
|
const n = i._nextUint32();
|
|
2851
2851
|
t.supercompressionScheme = i._nextUint32();
|
|
@@ -2859,9 +2859,9 @@ function pl(a) {
|
|
|
2859
2859
|
t.dataFormatDescriptor.length = 0, t.dataFormatDescriptor.push(g);
|
|
2860
2860
|
const b = new at(a, l, c, !0);
|
|
2861
2861
|
for (; b._offset < c; ) {
|
|
2862
|
-
const F = b._nextUint32(), j = b._scan(F), ye =
|
|
2862
|
+
const F = b._nextUint32(), j = b._scan(F), ye = Ui(j);
|
|
2863
2863
|
if (t.keyValue[ye] = b._nextUint8Array(F - j.byteLength - 1), ye.match(/^ktx/i)) {
|
|
2864
|
-
const ot =
|
|
2864
|
+
const ot = Ui(t.keyValue[ye]);
|
|
2865
2865
|
t.keyValue[ye] = ot.substring(0, ot.lastIndexOf("\0"));
|
|
2866
2866
|
}
|
|
2867
2867
|
b._skip(F % 4 ? 4 - F % 4 : 0);
|
|
@@ -2876,9 +2876,9 @@ let Es, me, ei;
|
|
|
2876
2876
|
const ys = { env: { emscripten_notify_memory_growth: function(a) {
|
|
2877
2877
|
ei = new Uint8Array(me.exports.memory.buffer);
|
|
2878
2878
|
} } };
|
|
2879
|
-
let
|
|
2879
|
+
let ml = class {
|
|
2880
2880
|
init() {
|
|
2881
|
-
return Es || (Es = typeof fetch < "u" ? fetch("data:application/wasm;base64," +
|
|
2881
|
+
return Es || (Es = typeof fetch < "u" ? fetch("data:application/wasm;base64," + Ni).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, ys)).then(this._init) : WebAssembly.instantiate(Buffer.from(Ni, "base64"), ys).then(this._init), Es);
|
|
2882
2882
|
}
|
|
2883
2883
|
_init(e) {
|
|
2884
2884
|
me = e.instance, ys.env.emscripten_notify_memory_growth(0);
|
|
@@ -2891,16 +2891,16 @@ let fl = class {
|
|
|
2891
2891
|
return me.exports.free(i), me.exports.free(n), r;
|
|
2892
2892
|
}
|
|
2893
2893
|
};
|
|
2894
|
-
const Ui = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", ml = "display-p3", bl = "display-p3-linear", Is = /* @__PURE__ */ new WeakMap();
|
|
2894
|
+
const Ni = "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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+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", bl = "display-p3", Cl = "display-p3-linear", Is = /* @__PURE__ */ new WeakMap();
|
|
2895
2895
|
let Bs = 0, ws;
|
|
2896
|
-
class ee extends
|
|
2896
|
+
class ee extends ai {
|
|
2897
2897
|
/**
|
|
2898
2898
|
* Constructs a new KTX2 loader.
|
|
2899
2899
|
*
|
|
2900
2900
|
* @param {LoadingManager} [manager] - The loading manager.
|
|
2901
2901
|
*/
|
|
2902
2902
|
constructor(e) {
|
|
2903
|
-
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new
|
|
2903
|
+
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new Wa(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn(
|
|
2904
2904
|
'THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.'
|
|
2905
2905
|
);
|
|
2906
2906
|
}
|
|
@@ -3038,12 +3038,12 @@ class ee extends ri {
|
|
|
3038
3038
|
if (s === "error") return Promise.reject(i);
|
|
3039
3039
|
let h;
|
|
3040
3040
|
if (t.faceCount === 6)
|
|
3041
|
-
h = new
|
|
3041
|
+
h = new Rr(n, l, c);
|
|
3042
3042
|
else {
|
|
3043
3043
|
const d = n[0].mipmaps;
|
|
3044
|
-
h = t.layerCount > 1 ? new
|
|
3044
|
+
h = t.layerCount > 1 ? new Dr(d, o, r, t.layerCount, l, c) : new qn(d, o, r, l, c);
|
|
3045
3045
|
}
|
|
3046
|
-
return h.minFilter = n[0].mipmaps.length === 1 ? Ge : os, h.magFilter = Ge, h.generateMipmaps = !1, h.needsUpdate = !0, h.colorSpace =
|
|
3046
|
+
return h.minFilter = n[0].mipmaps.length === 1 ? Ge : os, h.magFilter = Ge, h.generateMipmaps = !1, h.needsUpdate = !0, h.colorSpace = Eo(t), h.premultiplyAlpha = !!(A & Za), h;
|
|
3047
3047
|
}
|
|
3048
3048
|
/**
|
|
3049
3049
|
* @private
|
|
@@ -3052,9 +3052,9 @@ class ee extends ri {
|
|
|
3052
3052
|
* @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
|
|
3053
3053
|
*/
|
|
3054
3054
|
async _createTexture(e, t = {}) {
|
|
3055
|
-
const s =
|
|
3056
|
-
if (!(s.vkFormat ===
|
|
3057
|
-
return
|
|
3055
|
+
const s = fl(new Uint8Array(e)), i = s.vkFormat === hi && s.dataFormatDescriptor[0].colorModel === 167;
|
|
3056
|
+
if (!(s.vkFormat === sl || i && !this.workerConfig.astcHDRSupported))
|
|
3057
|
+
return yl(s);
|
|
3058
3058
|
const o = t, r = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: o }, [e])).then((l) => this._createTextureFrom(l.data, s));
|
|
3059
3059
|
return Is.set(e, { promise: r }), r;
|
|
3060
3060
|
}
|
|
@@ -3096,14 +3096,14 @@ ee.TranscoderFormat = {
|
|
|
3096
3096
|
ee.EngineFormat = {
|
|
3097
3097
|
RGBAFormat: Ye,
|
|
3098
3098
|
RGBA_ASTC_4x4_Format: jt,
|
|
3099
|
-
RGB_BPTC_UNSIGNED_Format:
|
|
3099
|
+
RGB_BPTC_UNSIGNED_Format: Pr,
|
|
3100
3100
|
RGBA_BPTC_Format: Ys,
|
|
3101
|
-
RGBA_ETC2_EAC_Format:
|
|
3102
|
-
RGBA_PVRTC_4BPPV1_Format:
|
|
3101
|
+
RGBA_ETC2_EAC_Format: zn,
|
|
3102
|
+
RGBA_PVRTC_4BPPV1_Format: _r,
|
|
3103
3103
|
RGBA_S3TC_DXT5_Format: Js,
|
|
3104
|
-
RGB_ETC1_Format:
|
|
3105
|
-
RGB_ETC2_Format:
|
|
3106
|
-
RGB_PVRTC_4BPPV1_Format:
|
|
3104
|
+
RGB_ETC1_Format: kr,
|
|
3105
|
+
RGB_ETC2_Format: jn,
|
|
3106
|
+
RGB_PVRTC_4BPPV1_Format: Fr,
|
|
3107
3107
|
RGBA_S3TC_DXT1_Format: Ws
|
|
3108
3108
|
};
|
|
3109
3109
|
ee.EngineType = {
|
|
@@ -3170,8 +3170,8 @@ ee.BasisWorker = function() {
|
|
|
3170
3170
|
const Oe = p.getImageLevelInfo(z, Ve, Q);
|
|
3171
3171
|
Q === 0 && z === 0 && Ve === 0 && (Oe.origWidth % 4 !== 0 || Oe.origHeight % 4 !== 0) && console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), I > 1 ? (j = Oe.origWidth, ye = Oe.origHeight) : (j = Oe.width, ye = Oe.height);
|
|
3172
3172
|
let He = new Uint8Array(p.getImageTranscodedSizeInBytes(z, Ve, 0, S));
|
|
3173
|
-
const
|
|
3174
|
-
if (R === i.HalfFloatType && (He = new Uint16Array(He.buffer, He.byteOffset, He.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !
|
|
3173
|
+
const sr = p.transcodeImage(He, z, Ve, Q, S, 0, -1, -1);
|
|
3174
|
+
if (R === i.HalfFloatType && (He = new Uint16Array(He.buffer, He.byteOffset, He.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !sr)
|
|
3175
3175
|
throw b(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
3176
3176
|
F.push(He);
|
|
3177
3177
|
}
|
|
@@ -3308,71 +3308,71 @@ ee.BasisWorker = function() {
|
|
|
3308
3308
|
return b;
|
|
3309
3309
|
}
|
|
3310
3310
|
};
|
|
3311
|
-
const
|
|
3312
|
-
[
|
|
3313
|
-
[
|
|
3314
|
-
[ro]: Ye,
|
|
3311
|
+
const El = /* @__PURE__ */ new Set([Ye, pt, gt]), Ss = {
|
|
3312
|
+
[po]: Ye,
|
|
3313
|
+
[ho]: Ye,
|
|
3315
3314
|
[ao]: Ye,
|
|
3316
|
-
[
|
|
3317
|
-
[
|
|
3318
|
-
[
|
|
3315
|
+
[lo]: Ye,
|
|
3316
|
+
[go]: pt,
|
|
3317
|
+
[Ao]: pt,
|
|
3319
3318
|
[oo]: pt,
|
|
3320
|
-
[
|
|
3321
|
-
[
|
|
3319
|
+
[ro]: pt,
|
|
3320
|
+
[uo]: gt,
|
|
3321
|
+
[co]: gt,
|
|
3322
|
+
[no]: gt,
|
|
3322
3323
|
[io]: gt,
|
|
3323
|
-
[
|
|
3324
|
-
[
|
|
3325
|
-
[
|
|
3326
|
-
[
|
|
3324
|
+
[fo]: jn,
|
|
3325
|
+
[mo]: zn,
|
|
3326
|
+
[hi]: jt,
|
|
3327
|
+
[gl]: jt,
|
|
3327
3328
|
[ul]: jt,
|
|
3328
|
-
[
|
|
3329
|
-
[bo]:
|
|
3330
|
-
[mo]: Mi,
|
|
3331
|
-
[nl]: Ws,
|
|
3329
|
+
[Co]: xi,
|
|
3330
|
+
[bo]: xi,
|
|
3332
3331
|
[ol]: Ws,
|
|
3333
|
-
[
|
|
3334
|
-
[il]:
|
|
3335
|
-
[
|
|
3336
|
-
[
|
|
3332
|
+
[rl]: Ws,
|
|
3333
|
+
[il]: Mi,
|
|
3334
|
+
[nl]: Mi,
|
|
3335
|
+
[ll]: vi,
|
|
3336
|
+
[al]: vi,
|
|
3337
|
+
[Al]: Js,
|
|
3337
3338
|
[cl]: Js,
|
|
3338
|
-
[
|
|
3339
|
-
[hl]: Ys
|
|
3340
|
-
[Al]: Ys
|
|
3339
|
+
[dl]: Ys,
|
|
3340
|
+
[hl]: Ys
|
|
3341
3341
|
}, vs = {
|
|
3342
|
+
[po]: bt,
|
|
3343
|
+
[ho]: Je,
|
|
3344
|
+
[ao]: re,
|
|
3345
|
+
[lo]: re,
|
|
3342
3346
|
[go]: bt,
|
|
3343
3347
|
[Ao]: Je,
|
|
3348
|
+
[oo]: re,
|
|
3344
3349
|
[ro]: re,
|
|
3345
|
-
[ao]: re,
|
|
3346
3350
|
[uo]: bt,
|
|
3347
3351
|
[co]: Je,
|
|
3348
3352
|
[no]: re,
|
|
3349
|
-
[oo]: re,
|
|
3350
|
-
[ho]: bt,
|
|
3351
|
-
[lo]: Je,
|
|
3352
3353
|
[io]: re,
|
|
3353
|
-
[so]: re,
|
|
3354
|
-
[po]: re,
|
|
3355
3354
|
[fo]: re,
|
|
3356
|
-
[
|
|
3357
|
-
[
|
|
3358
|
-
[
|
|
3355
|
+
[mo]: re,
|
|
3356
|
+
[hi]: Je,
|
|
3357
|
+
[Co]: re,
|
|
3358
|
+
[bo]: re
|
|
3359
3359
|
};
|
|
3360
|
-
async function
|
|
3360
|
+
async function yl(a) {
|
|
3361
3361
|
const { vkFormat: e } = a;
|
|
3362
3362
|
if (Ss[e] === void 0)
|
|
3363
3363
|
throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
3364
3364
|
let t;
|
|
3365
|
-
a.supercompressionScheme ===
|
|
3366
|
-
const o = new
|
|
3365
|
+
a.supercompressionScheme === Pi && (ws || (ws = new Promise(async (n) => {
|
|
3366
|
+
const o = new ml();
|
|
3367
3367
|
await o.init(), n(o);
|
|
3368
3368
|
})), t = await ws);
|
|
3369
3369
|
const s = [];
|
|
3370
3370
|
for (let n = 0; n < a.levels.length; n++) {
|
|
3371
3371
|
const o = Math.max(1, a.pixelWidth >> n), r = Math.max(1, a.pixelHeight >> n), l = a.pixelDepth ? Math.max(1, a.pixelDepth >> n) : 0, c = a.levels[n];
|
|
3372
3372
|
let A;
|
|
3373
|
-
if (a.supercompressionScheme ===
|
|
3373
|
+
if (a.supercompressionScheme === Xa)
|
|
3374
3374
|
A = c.levelData;
|
|
3375
|
-
else if (a.supercompressionScheme ===
|
|
3375
|
+
else if (a.supercompressionScheme === Pi)
|
|
3376
3376
|
A = t.decode(c.levelData, c.uncompressedByteLength);
|
|
3377
3377
|
else
|
|
3378
3378
|
throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
@@ -3393,19 +3393,19 @@ async function El(a) {
|
|
|
3393
3393
|
});
|
|
3394
3394
|
}
|
|
3395
3395
|
let i;
|
|
3396
|
-
if (
|
|
3397
|
-
i = a.pixelDepth === 0 ? new
|
|
3396
|
+
if (El.has(Ss[e]))
|
|
3397
|
+
i = a.pixelDepth === 0 ? new Kn(s[0].data, a.pixelWidth, a.pixelHeight) : new Lr(s[0].data, a.pixelWidth, a.pixelHeight, a.pixelDepth);
|
|
3398
3398
|
else {
|
|
3399
3399
|
if (a.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
3400
|
-
i = new
|
|
3400
|
+
i = new qn(s, a.pixelWidth, a.pixelHeight), i.minFilter = s.length === 1 ? Ge : os, i.magFilter = Ge;
|
|
3401
3401
|
}
|
|
3402
|
-
return i.mipmaps = s, i.type = vs[e], i.format = Ss[e], i.colorSpace =
|
|
3402
|
+
return i.mipmaps = s, i.type = vs[e], i.format = Ss[e], i.colorSpace = Eo(a), i.needsUpdate = !0, Promise.resolve(i);
|
|
3403
3403
|
}
|
|
3404
|
-
function
|
|
3404
|
+
function Eo(a) {
|
|
3405
3405
|
const e = a.dataFormatDescriptor[0];
|
|
3406
|
-
return e.colorPrimaries ===
|
|
3406
|
+
return e.colorPrimaries === el ? e.transferFunction === Gi ? Ce : le : e.colorPrimaries === tl ? e.transferFunction === Gi ? bl : Cl : e.colorPrimaries === $a ? Si : (console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), Si);
|
|
3407
3407
|
}
|
|
3408
|
-
var
|
|
3408
|
+
var Il = function() {
|
|
3409
3409
|
var a = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;w8Wqdbk;esezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9Uc;WFbGgocjdaocjd6EhDaicefhocbhqdnindndndnaeaq9nmbaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxalc9WGgmTmecbhPawcjdfhsaohzinaraz9Rax6mvarazaxfgo9RcK6mvczhlcbhHinalgic9WfgOawcj;cbffhldndndndndnazaOco4fRbbaHcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgOco4gAaAciSgAE86bbawcj;cbfaifglcGfaoclfaAfgARbbaOcl4ciGgCaCciSgCE86bbalcVfaAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc7faAaCfgARbbaOciGgOaOciSgOE86bbalctfaAaOfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgOcl4gAaAcsSgAE86bbawcj;cbfaifglcGfaocwfaAfgARbbaOcsGgOaOcsSgOE86bbalcVfaAaOfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaHcdfhHaiczfhlarao9RcL0mekkaiam6mvaoTmvdnakTmbawaPfRbbhHawcj;cbfhlashiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkkascefhsaohzaPcefgPad9hmbxikkcbc99arao9Radcaadca0ESEhoxlkaoaxad2fhCdnakmbadhlinaoTmlarao9Rax6mlaoaxfhoalcufglmbkaChoxekcbhmawcjdfhAinarao9Rax6miawamfRbbhHawcj;cbfhlaAhiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkaAcefhAaoaxfhoamcefgmad9hmbkaChokabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekc9:hokavcj;ebf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok: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;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklzNbb", e = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq:p9sqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:N8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhlaicefhodnaeTmbadTmbalc;WFbGglcjdalcjd6EhwcbhDinawaeaD9RaDawfae6Egqcsfglc9WGgkci2hxakcethmalcl4cifcd4hPabaDad2fhsakc;ab6hzcbhHincbhOaohAdndninaraA9RaP6meavcj;cbfaOak2fhCaAaPfhocbhidnazmbarao9Rc;Gb6mbcbhlinaCalfhidndndndndnaAalco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklbaoczfhokdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklzaoczfhokdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklaaoczfhokdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaoclfaYpQbfaXc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaocwfaYpQbfaXc:q:yjjbfRbbfhoxekaiaopbbbpkl8Waoczfhokalc;abfhialcjefak0meaihlarao9Rc;Fb0mbkkdnaiak9pmbaici4hlinarao9RcK6miaCaifhXdndndndndnaAaico4fRbbalcoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpkbbxikaXaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaXaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaXaopbbbpkbbaoczfhokalcdfhlaiczfgiak6mbkkaoTmeaohAaOcefgOclSmdxbkkc9:hoxlkdnakTmbavcjdfaHfhiavaHfpbdbhYcbhXinaiavcj;cbfaXfglpblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLalakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEalamfpblbg3cep9Ta3aQp9op9Hp9rg3alaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfhiaXczfgXak6mbkkaHclfgHad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfgDae6mbkkcbc99arao9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp: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:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkalaiad;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:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiaeciGgvcitgofcbcaao9R;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:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb", t = new Uint8Array([
|
|
3410
3410
|
0,
|
|
3411
3411
|
97,
|
|
@@ -3618,7 +3618,7 @@ var yl = function() {
|
|
|
3618
3618
|
}
|
|
3619
3619
|
};
|
|
3620
3620
|
}();
|
|
3621
|
-
function
|
|
3621
|
+
function Bl(a) {
|
|
3622
3622
|
if (!a) return;
|
|
3623
3623
|
(Array.isArray(a) ? a : [a]).forEach((t) => {
|
|
3624
3624
|
t && (Object.keys(t).forEach((s) => {
|
|
@@ -3629,15 +3629,15 @@ function Il(a) {
|
|
|
3629
3629
|
}
|
|
3630
3630
|
function Ms(a) {
|
|
3631
3631
|
!a || !a.traverse || a.traverse((e) => {
|
|
3632
|
-
e.geometry && e.geometry.dispose(), e.material &&
|
|
3632
|
+
e.geometry && e.geometry.dispose(), e.material && Bl(e.material);
|
|
3633
3633
|
});
|
|
3634
3634
|
}
|
|
3635
|
-
function
|
|
3635
|
+
function wl() {
|
|
3636
3636
|
m.Cache && typeof m.Cache.clear == "function" && m.Cache.clear();
|
|
3637
3637
|
}
|
|
3638
3638
|
class $ {
|
|
3639
3639
|
constructor(e = null) {
|
|
3640
|
-
this.renderer = e, this.isIOSWebKit = $.isIOSWebKit(), this.platformKey = $.getPlatformKey(), this.loader = new Ne(), this.dracoLoader = new
|
|
3640
|
+
this.renderer = e, this.isIOSWebKit = $.isIOSWebKit(), this.platformKey = $.getPlatformKey(), this.loader = new Ne(), this.dracoLoader = new so(), this.ktx2Loader = null, this.loadQueue = Promise.resolve(), this.activeIOSLoad = !1, this.dracoLoader.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.6/"), this.isIOSWebKit && typeof this.dracoLoader.setWorkerLimit == "function" && this.dracoLoader.setWorkerLimit(1), this.loader.setDRACOLoader(this.dracoLoader), this.loader.setMeshoptDecoder(Il), this.loader.register((t) => ({
|
|
3641
3641
|
name: "KHR_materials_pbrSpecularGlossiness",
|
|
3642
3642
|
extendMaterialParams: async (s, i) => {
|
|
3643
3643
|
const n = t.json.materials[s];
|
|
@@ -3819,7 +3819,7 @@ class $ {
|
|
|
3819
3819
|
}
|
|
3820
3820
|
releaseParserCaches(e) {
|
|
3821
3821
|
const t = e?.parser;
|
|
3822
|
-
t && (t.cache && typeof t.cache.removeAll == "function" && t.cache.removeAll(), t.associations && typeof t.associations.clear == "function" && t.associations.clear(), t.primitiveCache = {}, t.nodeCache = {}, t.meshCache = { refs: {}, uses: {} }, t.cameraCache = { refs: {}, uses: {} }, t.lightCache = { refs: {}, uses: {} }, t.sourceCache = {}, t.textureCache = {}, t.nodeNamesUsed = {}, t.json = null, t.extensions = null, t.plugins = null, t.options = null, t.textureLoader = null, e.parser = null,
|
|
3822
|
+
t && (t.cache && typeof t.cache.removeAll == "function" && t.cache.removeAll(), t.associations && typeof t.associations.clear == "function" && t.associations.clear(), t.primitiveCache = {}, t.nodeCache = {}, t.meshCache = { refs: {}, uses: {} }, t.cameraCache = { refs: {}, uses: {} }, t.lightCache = { refs: {}, uses: {} }, t.sourceCache = {}, t.textureCache = {}, t.nodeNamesUsed = {}, t.json = null, t.extensions = null, t.plugins = null, t.options = null, t.textureLoader = null, e.parser = null, wl());
|
|
3823
3823
|
}
|
|
3824
3824
|
dispose() {
|
|
3825
3825
|
this.dracoLoader && this.dracoLoader.dispose(), this.cache.forEach((e) => {
|
|
@@ -3838,7 +3838,7 @@ class $ {
|
|
|
3838
3838
|
}
|
|
3839
3839
|
$.sharedKTX2Loaders = /* @__PURE__ */ new Map();
|
|
3840
3840
|
$.sharedKTX2SetupComplete = /* @__PURE__ */ new Map();
|
|
3841
|
-
let
|
|
3841
|
+
let Sl = class {
|
|
3842
3842
|
get unloadPriorityCallback() {
|
|
3843
3843
|
return this._unloadPriorityCallback;
|
|
3844
3844
|
}
|
|
@@ -3955,7 +3955,7 @@ let wl = class {
|
|
|
3955
3955
|
this.scheduled = !1, this.unloadUnusedContent();
|
|
3956
3956
|
}));
|
|
3957
3957
|
}
|
|
3958
|
-
},
|
|
3958
|
+
}, Vi = class extends Error {
|
|
3959
3959
|
constructor() {
|
|
3960
3960
|
super("PriorityQueue: Item removed"), this.name = "PriorityQueueItemRemovedError";
|
|
3961
3961
|
}
|
|
@@ -3995,9 +3995,9 @@ let wl = class {
|
|
|
3995
3995
|
if (i !== -1) {
|
|
3996
3996
|
const n = s.get(e);
|
|
3997
3997
|
n.promise.catch((o) => {
|
|
3998
|
-
if (!(o instanceof
|
|
3998
|
+
if (!(o instanceof Vi))
|
|
3999
3999
|
throw o;
|
|
4000
|
-
}), n.reject(new
|
|
4000
|
+
}), n.reject(new Vi()), t.splice(i, 1), s.delete(e);
|
|
4001
4001
|
}
|
|
4002
4002
|
}
|
|
4003
4003
|
removeByFilter(e) {
|
|
@@ -4031,8 +4031,8 @@ let wl = class {
|
|
|
4031
4031
|
this.scheduled || (this.schedulingCallback(this._runjobs), this.scheduled = !0);
|
|
4032
4032
|
}
|
|
4033
4033
|
};
|
|
4034
|
-
const _e = -1, Be = 0, xt = 1, Qt = 2, Qs = 3, ae = 4,
|
|
4035
|
-
function
|
|
4034
|
+
const _e = -1, Be = 0, xt = 1, Qt = 2, Qs = 3, ae = 4, Oi = 6378137, vl = 6356752314245179e-9;
|
|
4035
|
+
function Ml(a, e = null, t = null) {
|
|
4036
4036
|
const s = [];
|
|
4037
4037
|
for (s.push(a), s.push(null), s.push(0); s.length > 0; ) {
|
|
4038
4038
|
const i = s.pop(), n = s.pop(), o = s.pop();
|
|
@@ -4058,11 +4058,11 @@ function Ue(a) {
|
|
|
4058
4058
|
t += String.fromCharCode(e.getUint8(s));
|
|
4059
4059
|
return t;
|
|
4060
4060
|
}
|
|
4061
|
-
const
|
|
4062
|
-
function hi(a) {
|
|
4063
|
-
return Ml.decode(a);
|
|
4064
|
-
}
|
|
4061
|
+
const xl = new TextDecoder();
|
|
4065
4062
|
function di(a) {
|
|
4063
|
+
return xl.decode(a);
|
|
4064
|
+
}
|
|
4065
|
+
function ui(a) {
|
|
4066
4066
|
return a.replace(/[\\/][^\\/]+$/, "") + "/";
|
|
4067
4067
|
}
|
|
4068
4068
|
let It = class {
|
|
@@ -4077,7 +4077,7 @@ let It = class {
|
|
|
4077
4077
|
if (!t.ok)
|
|
4078
4078
|
throw new Error(`Failed to load file "${e}" with status ${t.status} : ${t.statusText}`);
|
|
4079
4079
|
return t.arrayBuffer();
|
|
4080
|
-
}).then((t) => (this.workingPath === "" && (this.workingPath =
|
|
4080
|
+
}).then((t) => (this.workingPath === "" && (this.workingPath = ui(e)), this.parse(t)));
|
|
4081
4081
|
}
|
|
4082
4082
|
resolveExternalURL(e) {
|
|
4083
4083
|
return new URL(e, this.workingPath).href;
|
|
@@ -4086,7 +4086,7 @@ let It = class {
|
|
|
4086
4086
|
throw new Error("LoaderBase: Parse not implemented.");
|
|
4087
4087
|
}
|
|
4088
4088
|
};
|
|
4089
|
-
function
|
|
4089
|
+
function Hi(a) {
|
|
4090
4090
|
if (!a)
|
|
4091
4091
|
return null;
|
|
4092
4092
|
let e = a.length;
|
|
@@ -4104,9 +4104,9 @@ function Wt(a) {
|
|
|
4104
4104
|
return a === ae || a === _e;
|
|
4105
4105
|
}
|
|
4106
4106
|
function Qe(a, e) {
|
|
4107
|
-
return
|
|
4107
|
+
return yo(a) && a.traversal.lastFrameVisited === e && a.traversal.used;
|
|
4108
4108
|
}
|
|
4109
|
-
function
|
|
4109
|
+
function yo(a) {
|
|
4110
4110
|
return !!a.traversal;
|
|
4111
4111
|
}
|
|
4112
4112
|
function Bt(a) {
|
|
@@ -4126,33 +4126,33 @@ function ti(a, e, t = !1) {
|
|
|
4126
4126
|
ti(s[i], e, t);
|
|
4127
4127
|
}
|
|
4128
4128
|
}
|
|
4129
|
-
function
|
|
4129
|
+
function Io(a, e) {
|
|
4130
4130
|
if (As(a, e), a.traversal.usedLastFrame && (Xt(a), a.traversal.wasSetActive && (a.traversal.active = !0), (!a.traversal.active || et(a)) && Bt(a))) {
|
|
4131
4131
|
const t = a.children;
|
|
4132
4132
|
for (let s = 0, i = t.length; s < i; s++)
|
|
4133
|
-
|
|
4133
|
+
Io(t[s], e);
|
|
4134
4134
|
}
|
|
4135
4135
|
}
|
|
4136
4136
|
function Xt(a) {
|
|
4137
4137
|
a.traversal.used = !0;
|
|
4138
4138
|
}
|
|
4139
|
-
function
|
|
4139
|
+
function Ql(a, e) {
|
|
4140
4140
|
return !(a.traversal.error <= e.errorTarget && !et(a) || e.maxDepth > 0 && a.internal.depth + 1 >= e.maxDepth || !Bt(a));
|
|
4141
4141
|
}
|
|
4142
|
-
function
|
|
4142
|
+
function Bo(a, e) {
|
|
4143
4143
|
const { frameCount: t } = e, { children: s } = a;
|
|
4144
4144
|
for (let i = 0, n = s.length; i < n; i++) {
|
|
4145
4145
|
const o = s[i];
|
|
4146
|
-
Qe(o, t) && (o.traversal.active && (o.traversal.kicked = !0, o.traversal.active = !1),
|
|
4146
|
+
Qe(o, t) && (o.traversal.active && (o.traversal.kicked = !0, o.traversal.active = !1), Bo(o, e));
|
|
4147
4147
|
}
|
|
4148
4148
|
}
|
|
4149
|
-
function
|
|
4149
|
+
function qi(a) {
|
|
4150
4150
|
return !et(a) && (!a.internal.hasContent || Wt(a.internal.loadingState));
|
|
4151
4151
|
}
|
|
4152
|
-
function
|
|
4152
|
+
function wo(a, e) {
|
|
4153
4153
|
if (As(a, e), !a.traversal.inFrustum)
|
|
4154
4154
|
return;
|
|
4155
|
-
if (!
|
|
4155
|
+
if (!Ql(a, e)) {
|
|
4156
4156
|
Xt(a);
|
|
4157
4157
|
return;
|
|
4158
4158
|
}
|
|
@@ -4160,7 +4160,7 @@ function Bo(a, e) {
|
|
|
4160
4160
|
const i = a.children;
|
|
4161
4161
|
for (let n = 0, o = i.length; n < o; n++) {
|
|
4162
4162
|
const r = i[n];
|
|
4163
|
-
|
|
4163
|
+
wo(r, e), t = t || Qe(r, e.frameCount), s = s || r.traversal.inFrustum;
|
|
4164
4164
|
}
|
|
4165
4165
|
if (a.refine === "REPLACE" && !s && i.length !== 0) {
|
|
4166
4166
|
a.traversal.inFrustum = !1, e.markTileUsed(a);
|
|
@@ -4172,7 +4172,7 @@ function Bo(a, e) {
|
|
|
4172
4172
|
for (let n = 0, o = i.length; n < o; n++)
|
|
4173
4173
|
ti(i[n], e);
|
|
4174
4174
|
}
|
|
4175
|
-
function
|
|
4175
|
+
function So(a, e) {
|
|
4176
4176
|
const t = e.frameCount;
|
|
4177
4177
|
if (!Qe(a, t))
|
|
4178
4178
|
return;
|
|
@@ -4186,7 +4186,7 @@ function wo(a, e) {
|
|
|
4186
4186
|
a.traversal.isLeaf = !0;
|
|
4187
4187
|
else
|
|
4188
4188
|
for (let o = 0, r = s.length; o < r; o++)
|
|
4189
|
-
|
|
4189
|
+
So(s[o], e);
|
|
4190
4190
|
let n = !0;
|
|
4191
4191
|
for (let o = 0, r = s.length; o < r; o++) {
|
|
4192
4192
|
const l = s[o];
|
|
@@ -4194,88 +4194,88 @@ function wo(a, e) {
|
|
|
4194
4194
|
}
|
|
4195
4195
|
a.traversal.allUsedChildrenProcessed = n && Bt(a);
|
|
4196
4196
|
}
|
|
4197
|
-
function
|
|
4197
|
+
function vo(a, e) {
|
|
4198
4198
|
if (!Qe(a, e.frameCount))
|
|
4199
4199
|
return;
|
|
4200
4200
|
const t = a.internal.hasContent, s = Wt(a.internal.loadingState) && t, i = a.children;
|
|
4201
4201
|
if (a.traversal.isLeaf) {
|
|
4202
4202
|
if (!et(a) && (a.traversal.active = !0, Bt(a) && (!a.internal.hasContent || !Wt(a.internal.loadingState))))
|
|
4203
4203
|
for (let r = 0, l = i.length; r < l; r++)
|
|
4204
|
-
|
|
4204
|
+
Io(i[r], e);
|
|
4205
4205
|
return;
|
|
4206
4206
|
}
|
|
4207
4207
|
let n = i.length > 0;
|
|
4208
4208
|
for (let r = 0, l = i.length; r < l; r++) {
|
|
4209
4209
|
const c = i[r];
|
|
4210
|
-
|
|
4210
|
+
vo(c, e), Qe(c, e.frameCount) && !(c.traversal.active && qi(c)) && !c.traversal.allChildrenReady && (n = !1);
|
|
4211
4211
|
}
|
|
4212
4212
|
a.traversal.allChildrenReady = n;
|
|
4213
|
-
const o = a.traversal.active &&
|
|
4214
|
-
!et(a) && !n && !o && a.traversal.wasSetActive && (s || !a.internal.hasContent) && (a.traversal.active = !0,
|
|
4213
|
+
const o = a.traversal.active && qi(a);
|
|
4214
|
+
!et(a) && !n && !o && a.traversal.wasSetActive && (s || !a.internal.hasContent) && (a.traversal.active = !0, Bo(a, e));
|
|
4215
4215
|
}
|
|
4216
|
-
function
|
|
4216
|
+
function Mo(a, e) {
|
|
4217
4217
|
var t;
|
|
4218
4218
|
const s = Qe(a, e.frameCount);
|
|
4219
|
-
if (s && ((a.internal.hasUnrenderableContent || a.internal.hasRenderableContent && a.refine === "ADD") && (a.traversal.active = !0), (a.traversal.active || a.traversal.kicked) && a.internal.hasContent ? (e.markTileUsed(a), (a.internal.hasUnrenderableContent || a.traversal.allUsedChildrenProcessed) && e.queueTileForDownload(a), a.internal.loadingState !== ae && (a.traversal.active = !1)) : a.traversal.active = !1, a.traversal.visible = a.internal.hasRenderableContent && a.traversal.active && a.traversal.inFrustum && a.internal.loadingState === ae, e.stats.used++, a.traversal.inFrustum && e.stats.inFrustum++), s ||
|
|
4219
|
+
if (s && ((a.internal.hasUnrenderableContent || a.internal.hasRenderableContent && a.refine === "ADD") && (a.traversal.active = !0), (a.traversal.active || a.traversal.kicked) && a.internal.hasContent ? (e.markTileUsed(a), (a.internal.hasUnrenderableContent || a.traversal.allUsedChildrenProcessed) && e.queueTileForDownload(a), a.internal.loadingState !== ae && (a.traversal.active = !1)) : a.traversal.active = !1, a.traversal.visible = a.internal.hasRenderableContent && a.traversal.active && a.traversal.inFrustum && a.internal.loadingState === ae, e.stats.used++, a.traversal.inFrustum && e.stats.inFrustum++), s || yo(a) && (t = a.traversal) != null && t.usedLastFrame) {
|
|
4220
4220
|
let i = !1, n = !1;
|
|
4221
4221
|
s ? (i = a.traversal.active, e.displayActiveTiles ? n = a.traversal.active || a.traversal.visible : n = a.traversal.visible) : As(a, e), a.internal.hasRenderableContent && a.internal.loadingState === ae && (a.traversal.wasSetActive !== i && (e.stats.active += i ? 1 : -1, e.invokeOnePlugin((r) => r.setTileActive && r.setTileActive(a, i))), a.traversal.wasSetVisible !== n && (e.stats.visible += n ? 1 : -1, e.invokeOnePlugin((r) => r.setTileVisible && r.setTileVisible(a, n)))), a.traversal.wasSetActive = i, a.traversal.wasSetVisible = n, a.traversal.usedLastFrame = s;
|
|
4222
4222
|
const o = a.children;
|
|
4223
4223
|
for (let r = 0, l = o.length; r < l; r++) {
|
|
4224
4224
|
const c = o[r];
|
|
4225
|
-
|
|
4225
|
+
Mo(c, e);
|
|
4226
4226
|
}
|
|
4227
4227
|
}
|
|
4228
4228
|
}
|
|
4229
|
-
function
|
|
4230
|
-
|
|
4229
|
+
function Tl(a, e) {
|
|
4230
|
+
wo(a, e), So(a, e), vo(a, e), Mo(a, e);
|
|
4231
4231
|
}
|
|
4232
4232
|
const Rt = {
|
|
4233
4233
|
inView: !1,
|
|
4234
4234
|
error: 1 / 0,
|
|
4235
4235
|
distanceFromCamera: 1 / 0
|
|
4236
|
-
},
|
|
4237
|
-
function
|
|
4236
|
+
}, xo = !0;
|
|
4237
|
+
function Qo(a) {
|
|
4238
4238
|
return a === ae || a === _e;
|
|
4239
4239
|
}
|
|
4240
4240
|
function Te(a, e) {
|
|
4241
|
-
return
|
|
4241
|
+
return To(a) && a.traversal.lastFrameVisited === e && a.traversal.used;
|
|
4242
4242
|
}
|
|
4243
|
-
function
|
|
4243
|
+
function To(a) {
|
|
4244
4244
|
return !!a.traversal;
|
|
4245
4245
|
}
|
|
4246
|
-
function
|
|
4246
|
+
function gi(a) {
|
|
4247
4247
|
return a.children.length === 0 || !!a.children[0].internal;
|
|
4248
4248
|
}
|
|
4249
|
-
function
|
|
4249
|
+
function pi(a) {
|
|
4250
4250
|
return a.internal.hasUnrenderableContent || a.parent && a.parent.geometricError < a.geometricError;
|
|
4251
4251
|
}
|
|
4252
|
-
function
|
|
4252
|
+
function fi(a, e) {
|
|
4253
4253
|
a.traversal.lastFrameVisited !== e.frameCount && (a.traversal.lastFrameVisited = e.frameCount, a.traversal.used = !1, a.traversal.inFrustum = !1, a.traversal.isLeaf = !1, a.traversal.visible = !1, a.traversal.active = !1, a.traversal.error = 1 / 0, a.traversal.distanceFromCamera = 1 / 0, a.traversal.allChildrenReady = !1, e.calculateTileViewErrorWithPlugin(a, Rt), a.traversal.inFrustum = Rt.inView, a.traversal.error = Rt.error, a.traversal.distanceFromCamera = Rt.distanceFromCamera);
|
|
4254
4254
|
}
|
|
4255
4255
|
function si(a, e, t = !1) {
|
|
4256
|
-
if (e.ensureChildrenArePreprocessed(a),
|
|
4256
|
+
if (e.ensureChildrenArePreprocessed(a), fi(a, e), ii(a, e, t), pi(a) && gi(a)) {
|
|
4257
4257
|
const s = a.children;
|
|
4258
4258
|
for (let i = 0, n = s.length; i < n; i++)
|
|
4259
4259
|
si(s[i], e, t);
|
|
4260
4260
|
}
|
|
4261
4261
|
}
|
|
4262
|
-
function
|
|
4263
|
-
if (e.ensureChildrenArePreprocessed(a), Te(a, e.frameCount) && (a.internal.hasContent && e.queueTileForDownload(a),
|
|
4262
|
+
function Ro(a, e) {
|
|
4263
|
+
if (e.ensureChildrenArePreprocessed(a), Te(a, e.frameCount) && (a.internal.hasContent && e.queueTileForDownload(a), gi(a))) {
|
|
4264
4264
|
const t = a.children;
|
|
4265
4265
|
for (let s = 0, i = t.length; s < i; s++)
|
|
4266
|
-
|
|
4266
|
+
Ro(t[s], e);
|
|
4267
4267
|
}
|
|
4268
4268
|
}
|
|
4269
4269
|
function ii(a, e, t = !1) {
|
|
4270
4270
|
a.traversal.used || (t || (a.traversal.used = !0, e.stats.used++), e.markTileUsed(a), a.traversal.inFrustum === !0 && e.stats.inFrustum++);
|
|
4271
4271
|
}
|
|
4272
|
-
function
|
|
4273
|
-
return !(a.traversal.error <= e.errorTarget && !
|
|
4272
|
+
function Rl(a, e) {
|
|
4273
|
+
return !(a.traversal.error <= e.errorTarget && !pi(a) || e.maxDepth > 0 && a.internal.depth + 1 >= e.maxDepth || !gi(a));
|
|
4274
4274
|
}
|
|
4275
|
-
function
|
|
4276
|
-
if (e.ensureChildrenArePreprocessed(a),
|
|
4275
|
+
function Do(a, e) {
|
|
4276
|
+
if (e.ensureChildrenArePreprocessed(a), fi(a, e), !a.traversal.inFrustum)
|
|
4277
4277
|
return;
|
|
4278
|
-
if (!
|
|
4278
|
+
if (!Rl(a, e)) {
|
|
4279
4279
|
ii(a, e);
|
|
4280
4280
|
return;
|
|
4281
4281
|
}
|
|
@@ -4283,7 +4283,7 @@ function Ro(a, e) {
|
|
|
4283
4283
|
const i = a.children;
|
|
4284
4284
|
for (let n = 0, o = i.length; n < o; n++) {
|
|
4285
4285
|
const r = i[n];
|
|
4286
|
-
|
|
4286
|
+
Do(r, e), t = t || Te(r, e.frameCount), s = s || r.traversal.inFrustum;
|
|
4287
4287
|
}
|
|
4288
4288
|
if (a.refine === "REPLACE" && !s && i.length !== 0) {
|
|
4289
4289
|
a.traversal.inFrustum = !1;
|
|
@@ -4291,11 +4291,11 @@ function Ro(a, e) {
|
|
|
4291
4291
|
si(i[n], e, !0);
|
|
4292
4292
|
return;
|
|
4293
4293
|
}
|
|
4294
|
-
if (ii(a, e), a.refine === "REPLACE" && (t && a.internal.depth !== 0 ||
|
|
4294
|
+
if (ii(a, e), a.refine === "REPLACE" && (t && a.internal.depth !== 0 || xo))
|
|
4295
4295
|
for (let n = 0, o = i.length; n < o; n++)
|
|
4296
4296
|
si(i[n], e);
|
|
4297
4297
|
}
|
|
4298
|
-
function
|
|
4298
|
+
function Lo(a, e) {
|
|
4299
4299
|
const t = e.frameCount;
|
|
4300
4300
|
if (!Te(a, t))
|
|
4301
4301
|
return;
|
|
@@ -4311,16 +4311,16 @@ function Do(a, e) {
|
|
|
4311
4311
|
let n = !0;
|
|
4312
4312
|
for (let o = 0, r = s.length; o < r; o++) {
|
|
4313
4313
|
const l = s[o];
|
|
4314
|
-
if (
|
|
4315
|
-
const c = !
|
|
4316
|
-
let A = !l.internal.hasContent || l.internal.hasRenderableContent &&
|
|
4314
|
+
if (Lo(l, e), Te(l, t)) {
|
|
4315
|
+
const c = !pi(l);
|
|
4316
|
+
let A = !l.internal.hasContent || l.internal.hasRenderableContent && Qo(l.internal.loadingState) || l.internal.hasUnrenderableContent && l.internal.loadingState === _e;
|
|
4317
4317
|
A = c && A || l.traversal.allChildrenReady, n = n && A;
|
|
4318
4318
|
}
|
|
4319
4319
|
}
|
|
4320
4320
|
a.traversal.allChildrenReady = n;
|
|
4321
4321
|
}
|
|
4322
4322
|
}
|
|
4323
|
-
function
|
|
4323
|
+
function Fo(a, e) {
|
|
4324
4324
|
const t = e.stats;
|
|
4325
4325
|
if (!Te(a, e.frameCount))
|
|
4326
4326
|
return;
|
|
@@ -4328,32 +4328,32 @@ function Lo(a, e) {
|
|
|
4328
4328
|
a.internal.loadingState === ae ? (a.traversal.inFrustum && (a.traversal.visible = !0, t.visible++), a.traversal.active = !0, t.active++) : a.internal.hasContent && e.queueTileForDownload(a);
|
|
4329
4329
|
return;
|
|
4330
4330
|
}
|
|
4331
|
-
const s = a.children, i = a.internal.hasContent, n =
|
|
4331
|
+
const s = a.children, i = a.internal.hasContent, n = Qo(a.internal.loadingState) && i, o = (e.errorTarget + 1) * e.errorThreshold, r = a.traversal.error <= o, l = a.refine === "ADD", c = a.traversal.allChildrenReady || a.internal.depth === 0 && !xo;
|
|
4332
4332
|
if (i && (r || l) && e.queueTileForDownload(a), (r && n && !c || n && l) && (a.traversal.inFrustum && (a.traversal.visible = !0, t.visible++), a.traversal.active = !0, t.active++), !l && r && !c)
|
|
4333
4333
|
for (let A = 0, h = s.length; A < h; A++) {
|
|
4334
4334
|
const d = s[A];
|
|
4335
|
-
Te(d, e.frameCount) &&
|
|
4335
|
+
Te(d, e.frameCount) && Ro(d, e);
|
|
4336
4336
|
}
|
|
4337
4337
|
else
|
|
4338
4338
|
for (let A = 0, h = s.length; A < h; A++)
|
|
4339
|
-
|
|
4339
|
+
Fo(s[A], e);
|
|
4340
4340
|
}
|
|
4341
|
-
function
|
|
4341
|
+
function ko(a, e) {
|
|
4342
4342
|
const t = Te(a, e.frameCount);
|
|
4343
|
-
if (t ||
|
|
4343
|
+
if (t || To(a) && a.traversal.usedLastFrame) {
|
|
4344
4344
|
let s = !1, i = !1;
|
|
4345
|
-
t ? (s = a.traversal.active, e.displayActiveTiles ? i = a.traversal.active || a.traversal.visible : i = a.traversal.visible) :
|
|
4345
|
+
t ? (s = a.traversal.active, e.displayActiveTiles ? i = a.traversal.active || a.traversal.visible : i = a.traversal.visible) : fi(a, e), a.internal.hasRenderableContent && a.internal.loadingState === ae && (a.traversal.wasSetActive !== s && e.invokeOnePlugin((o) => o.setTileActive && o.setTileActive(a, s)), a.traversal.wasSetVisible !== i && e.invokeOnePlugin((o) => o.setTileVisible && o.setTileVisible(a, i))), a.traversal.wasSetActive = s, a.traversal.wasSetVisible = i, a.traversal.usedLastFrame = t;
|
|
4346
4346
|
const n = a.children;
|
|
4347
4347
|
for (let o = 0, r = n.length; o < r; o++) {
|
|
4348
4348
|
const l = n[o];
|
|
4349
|
-
|
|
4349
|
+
ko(l, e);
|
|
4350
4350
|
}
|
|
4351
4351
|
}
|
|
4352
4352
|
}
|
|
4353
|
-
function
|
|
4354
|
-
|
|
4353
|
+
function Dl(a, e) {
|
|
4354
|
+
Do(a, e), Lo(a, e), Fo(a, e), ko(a, e);
|
|
4355
4355
|
}
|
|
4356
|
-
function
|
|
4356
|
+
function Ll(a) {
|
|
4357
4357
|
let e = null;
|
|
4358
4358
|
return () => {
|
|
4359
4359
|
e === null && (e = requestAnimationFrame(() => {
|
|
@@ -4361,21 +4361,21 @@ function Dl(a) {
|
|
|
4361
4361
|
}));
|
|
4362
4362
|
};
|
|
4363
4363
|
}
|
|
4364
|
-
const
|
|
4364
|
+
const zi = Symbol("PLUGIN_REGISTERED"), we = {
|
|
4365
4365
|
inView: !0,
|
|
4366
4366
|
error: 0,
|
|
4367
4367
|
distance: 1 / 0
|
|
4368
4368
|
}, Ts = (a, e) => {
|
|
4369
4369
|
const t = a.priority || 0, s = e.priority || 0;
|
|
4370
4370
|
return t !== s ? t > s ? 1 : -1 : !a.traversal || !e.traversal ? 0 : a.traversal.used !== e.traversal.used ? a.traversal.used ? 1 : -1 : a.traversal.error !== e.traversal.error ? a.traversal.error > e.traversal.error ? 1 : -1 : a.traversal.distanceFromCamera !== e.traversal.distanceFromCamera ? a.traversal.distanceFromCamera > e.traversal.distanceFromCamera ? -1 : 1 : a.internal.depthFromRenderedParent !== e.internal.depthFromRenderedParent ? a.internal.depthFromRenderedParent > e.internal.depthFromRenderedParent ? -1 : 1 : 0;
|
|
4371
|
-
},
|
|
4371
|
+
}, Fl = (a, e) => {
|
|
4372
4372
|
const t = a.priority || 0, s = e.priority || 0;
|
|
4373
4373
|
return t !== s ? t > s ? 1 : -1 : !a.traversal || !e.traversal ? 0 : a.traversal.used !== e.traversal.used ? a.traversal.used ? 1 : -1 : a.traversal.inFrustum !== e.traversal.inFrustum ? a.traversal.inFrustum ? 1 : -1 : a.internal.hasUnrenderableContent !== e.internal.hasUnrenderableContent ? a.internal.hasUnrenderableContent ? 1 : -1 : a.traversal.distanceFromCamera !== e.traversal.distanceFromCamera ? a.traversal.distanceFromCamera > e.traversal.distanceFromCamera ? -1 : 1 : 0;
|
|
4374
|
-
},
|
|
4374
|
+
}, kl = (a, e) => {
|
|
4375
4375
|
const t = a.priority || 0, s = e.priority || 0;
|
|
4376
4376
|
return t !== s ? t > s ? 1 : -1 : !a.traversal || !e.traversal ? 0 : a.traversal.lastFrameVisited !== e.traversal.lastFrameVisited ? a.traversal.lastFrameVisited > e.traversal.lastFrameVisited ? -1 : 1 : a.internal.depthFromRenderedParent !== e.internal.depthFromRenderedParent ? a.internal.depthFromRenderedParent > e.internal.depthFromRenderedParent ? 1 : -1 : a.internal.loadingState !== e.internal.loadingState ? a.internal.loadingState > e.internal.loadingState ? -1 : 1 : a.internal.hasUnrenderableContent !== e.internal.hasUnrenderableContent ? a.internal.hasUnrenderableContent ? -1 : 1 : a.traversal.error !== e.traversal.error ? a.traversal.error > e.traversal.error ? -1 : 1 : 0;
|
|
4377
4377
|
};
|
|
4378
|
-
class
|
|
4378
|
+
class _l {
|
|
4379
4379
|
get root() {
|
|
4380
4380
|
const e = this.rootTileset;
|
|
4381
4381
|
return e ? e.root : null;
|
|
@@ -4395,8 +4395,8 @@ class kl {
|
|
|
4395
4395
|
}
|
|
4396
4396
|
constructor(e = null) {
|
|
4397
4397
|
this.rootLoadingState = Be, this.rootTileset = null, this.rootURL = e, this.fetchOptions = {}, this.plugins = [], this.queuedTiles = [], this.cachedSinceLoadComplete = /* @__PURE__ */ new Set(), this.isLoading = !1;
|
|
4398
|
-
const t = new
|
|
4399
|
-
t.unloadPriorityCallback =
|
|
4398
|
+
const t = new Sl();
|
|
4399
|
+
t.unloadPriorityCallback = kl;
|
|
4400
4400
|
const s = new xs();
|
|
4401
4401
|
s.maxJobs = 25, s.priorityCallback = Ts;
|
|
4402
4402
|
const i = new xs();
|
|
@@ -4418,13 +4418,13 @@ class kl {
|
|
|
4418
4418
|
active: 0,
|
|
4419
4419
|
visible: 0,
|
|
4420
4420
|
tilesProcessed: 0
|
|
4421
|
-
}, this.frameCount = 0, this._dispatchNeedsUpdateEvent =
|
|
4421
|
+
}, this.frameCount = 0, this._dispatchNeedsUpdateEvent = Ll(() => {
|
|
4422
4422
|
this.dispatchEvent({ type: "needs-update" });
|
|
4423
4423
|
}), this.errorTarget = 16, this._errorThreshold = 1 / 0, this.displayActiveTiles = !1, this.maxDepth = 1 / 0, this.optimizedLoadStrategy = !1, this.loadSiblings = !0, this.maxTilesProcessed = 250;
|
|
4424
4424
|
}
|
|
4425
4425
|
// Plugins
|
|
4426
4426
|
registerPlugin(e) {
|
|
4427
|
-
if (e[
|
|
4427
|
+
if (e[zi] === !0)
|
|
4428
4428
|
throw new Error("TilesRendererBase: A plugin can only be registered to a single tileset");
|
|
4429
4429
|
e.loadRootTileSet && !e.loadRootTileset && (console.warn('TilesRendererBase: Plugin implements deprecated "loadRootTileSet" method. Please rename to "loadRootTileset".'), e.loadRootTileset = e.loadRootTileSet), e.preprocessTileSet && !e.preprocessTileset && (console.warn('TilesRendererBase: Plugin implements deprecated "preprocessTileSet" method. Please rename to "preprocessTileset".'), e.preprocessTileset = e.preprocessTileSet);
|
|
4430
4430
|
const t = this.plugins, s = e.priority || 0;
|
|
@@ -4434,7 +4434,7 @@ class kl {
|
|
|
4434
4434
|
i = n;
|
|
4435
4435
|
break;
|
|
4436
4436
|
}
|
|
4437
|
-
t.splice(i, 0, e), e[
|
|
4437
|
+
t.splice(i, 0, e), e[zi] = !0, e.init && e.init(this);
|
|
4438
4438
|
}
|
|
4439
4439
|
unregisterPlugin(e) {
|
|
4440
4440
|
const t = this.plugins;
|
|
@@ -4466,7 +4466,7 @@ class kl {
|
|
|
4466
4466
|
}
|
|
4467
4467
|
// Public API
|
|
4468
4468
|
traverse(e, t, s = !0) {
|
|
4469
|
-
this.root &&
|
|
4469
|
+
this.root && Ml(this.root, (i, ...n) => (s && this.ensureChildrenArePreprocessed(i, !0), e ? e(i, ...n) : !1), t);
|
|
4470
4470
|
}
|
|
4471
4471
|
getAttributions(e = []) {
|
|
4472
4472
|
return this.invokeAllPlugins((t) => t !== this && t.getAttributions && t.getAttributions(e)), e;
|
|
@@ -4504,8 +4504,8 @@ class kl {
|
|
|
4504
4504
|
return;
|
|
4505
4505
|
}
|
|
4506
4506
|
this.dispatchEvent({ type: "update-before" }), s.inFrustum = 0, s.used = 0, s.active = 0, s.visible = 0, s.tilesProcessed = 0, this.frameCount++, t.forEach((d) => e.markUnused(d)), t.clear();
|
|
4507
|
-
const A = l ?
|
|
4508
|
-
n.priorityCallback = A, o.priorityCallback = A, this.prepareForTraversal(), l ?
|
|
4507
|
+
const A = l ? Fl : Ts;
|
|
4508
|
+
n.priorityCallback = A, o.priorityCallback = A, this.prepareForTraversal(), l ? Tl(i, this) : Dl(i, this), this.removeUnusedPendingTiles();
|
|
4509
4509
|
const h = this.queuedTiles;
|
|
4510
4510
|
h.sort(e.unloadPriorityCallback);
|
|
4511
4511
|
for (let d = 0, u = h.length; d < u && !e.isFull(); d++)
|
|
@@ -4581,7 +4581,7 @@ class kl {
|
|
|
4581
4581
|
depth: -1,
|
|
4582
4582
|
depthFromRenderedParent: -1
|
|
4583
4583
|
}, (i = e.content) != null && i.uri) {
|
|
4584
|
-
const n =
|
|
4584
|
+
const n = Hi(e.content.uri), o = !!(n && /json$/.test(n));
|
|
4585
4585
|
e.internal.hasContent = !0, e.internal.hasUnrenderableContent = o, e.internal.hasRenderableContent = !o;
|
|
4586
4586
|
} else
|
|
4587
4587
|
e.internal.hasContent = !1, e.internal.hasUnrenderableContent = !1, e.internal.hasRenderableContent = !1;
|
|
@@ -4704,7 +4704,7 @@ class kl {
|
|
|
4704
4704
|
return;
|
|
4705
4705
|
let t = !1, s = null, i = new URL(e.content.uri, e.internal.basePath + "/").toString();
|
|
4706
4706
|
this.invokeAllPlugins((u) => i = u.preprocessURL ? u.preprocessURL(i, e) : i);
|
|
4707
|
-
const n = this.stats, o = this.lruCache, r = this.downloadQueue, l = this.parseQueue, c = this.loadingTiles, A =
|
|
4707
|
+
const n = this.stats, o = this.lruCache, r = this.downloadQueue, l = this.parseQueue, c = this.loadingTiles, A = Hi(i), h = new AbortController(), d = h.signal;
|
|
4708
4708
|
if (o.add(e, (u) => {
|
|
4709
4709
|
h.abort(), t ? u.children.length = 0 : this.invokeAllPlugins((g) => {
|
|
4710
4710
|
g.disposeTile && g.disposeTile(u);
|
|
@@ -4755,7 +4755,7 @@ class kl {
|
|
|
4755
4755
|
});
|
|
4756
4756
|
}
|
|
4757
4757
|
}
|
|
4758
|
-
function
|
|
4758
|
+
function _o(a, e, t, s, i, n) {
|
|
4759
4759
|
let o;
|
|
4760
4760
|
switch (s) {
|
|
4761
4761
|
case "SCALAR":
|
|
@@ -4811,7 +4811,7 @@ let hs = class {
|
|
|
4811
4811
|
let n = null;
|
|
4812
4812
|
if (s !== 0) {
|
|
4813
4813
|
const o = new Uint8Array(e, t, s);
|
|
4814
|
-
n = JSON.parse(
|
|
4814
|
+
n = JSON.parse(di(o));
|
|
4815
4815
|
} else
|
|
4816
4816
|
n = {};
|
|
4817
4817
|
this.header = n;
|
|
@@ -4831,7 +4831,7 @@ let hs = class {
|
|
|
4831
4831
|
const { buffer: r, binOffset: l, binLength: c } = this, A = o.byteOffset || 0, h = o.type || i, d = o.componentType || s;
|
|
4832
4832
|
if ("type" in o && i && o.type !== i)
|
|
4833
4833
|
throw new Error("FeatureTable: Specified type does not match expected type.");
|
|
4834
|
-
const u = l + A, g =
|
|
4834
|
+
const u = l + A, g = _o(r, u, t, h, d, e);
|
|
4835
4835
|
if (u + g.byteLength > l + c)
|
|
4836
4836
|
throw new Error("FeatureTable: Feature data read outside binary body length.");
|
|
4837
4837
|
return g;
|
|
@@ -4843,7 +4843,7 @@ let hs = class {
|
|
|
4843
4843
|
return s.slice(i + e, i + e + t);
|
|
4844
4844
|
}
|
|
4845
4845
|
};
|
|
4846
|
-
class
|
|
4846
|
+
class Pl {
|
|
4847
4847
|
constructor(e) {
|
|
4848
4848
|
this.batchTable = e;
|
|
4849
4849
|
const t = e.header.extensions["3DTILES_batch_table_hierarchy"];
|
|
@@ -4868,7 +4868,7 @@ class _l {
|
|
|
4868
4868
|
return e;
|
|
4869
4869
|
{
|
|
4870
4870
|
const { buffer: i, binOffset: n } = this.batchTable, o = e.byteOffset, r = e.componentType || "UNSIGNED_SHORT", l = n + o;
|
|
4871
|
-
return
|
|
4871
|
+
return _o(i, l, t, "SCALAR", r, s);
|
|
4872
4872
|
}
|
|
4873
4873
|
}
|
|
4874
4874
|
getDataFromId(e, t = {}) {
|
|
@@ -4888,14 +4888,14 @@ class _l {
|
|
|
4888
4888
|
return t;
|
|
4889
4889
|
}
|
|
4890
4890
|
}
|
|
4891
|
-
class
|
|
4891
|
+
class mi extends hs {
|
|
4892
4892
|
get batchSize() {
|
|
4893
4893
|
return console.warn("BatchTable.batchSize has been deprecated and replaced with BatchTable.count."), this.count;
|
|
4894
4894
|
}
|
|
4895
4895
|
constructor(e, t, s, i, n) {
|
|
4896
4896
|
super(e, s, i, n), this.count = t, this.extensions = {};
|
|
4897
4897
|
const o = this.header.extensions;
|
|
4898
|
-
o && o["3DTILES_batch_table_hierarchy"] && (this.extensions["3DTILES_batch_table_hierarchy"] = new
|
|
4898
|
+
o && o["3DTILES_batch_table_hierarchy"] && (this.extensions["3DTILES_batch_table_hierarchy"] = new Pl(this));
|
|
4899
4899
|
}
|
|
4900
4900
|
getData(e, t = null, s = null) {
|
|
4901
4901
|
return console.warn("BatchTable: BatchTable.getData is deprecated. Use BatchTable.getDataFromId to get allproperties for an id or BatchTable.getPropertyArray for getting an array of value for a property."), super.getData(e, this.count, t, s);
|
|
@@ -4915,7 +4915,7 @@ class fi extends hs {
|
|
|
4915
4915
|
return super.getData(e, this.count);
|
|
4916
4916
|
}
|
|
4917
4917
|
}
|
|
4918
|
-
let
|
|
4918
|
+
let Gl = class extends It {
|
|
4919
4919
|
parse(e) {
|
|
4920
4920
|
const t = new DataView(e), s = Ue(t);
|
|
4921
4921
|
console.assert(s === "b3dm");
|
|
@@ -4934,7 +4934,7 @@ let Pl = class extends It {
|
|
|
4934
4934
|
), u = A + o + r, g = e.slice(
|
|
4935
4935
|
u,
|
|
4936
4936
|
u + l + c
|
|
4937
|
-
), p = new
|
|
4937
|
+
), p = new mi(
|
|
4938
4938
|
g,
|
|
4939
4939
|
d.getData("BATCH_LENGTH"),
|
|
4940
4940
|
0,
|
|
@@ -4948,7 +4948,7 @@ let Pl = class extends It {
|
|
|
4948
4948
|
glbBytes: E
|
|
4949
4949
|
};
|
|
4950
4950
|
}
|
|
4951
|
-
},
|
|
4951
|
+
}, Ul = class extends It {
|
|
4952
4952
|
parse(e) {
|
|
4953
4953
|
const t = new DataView(e), s = Ue(t);
|
|
4954
4954
|
console.assert(s === "i3dm");
|
|
@@ -4967,7 +4967,7 @@ let Pl = class extends It {
|
|
|
4967
4967
|
), g = h + o + r, p = e.slice(
|
|
4968
4968
|
g,
|
|
4969
4969
|
g + l + c
|
|
4970
|
-
), b = new
|
|
4970
|
+
), b = new mi(
|
|
4971
4971
|
p,
|
|
4972
4972
|
u.getData("INSTANCES_LENGTH"),
|
|
4973
4973
|
0,
|
|
@@ -4978,8 +4978,8 @@ let Pl = class extends It {
|
|
|
4978
4978
|
if (A)
|
|
4979
4979
|
y = C, f = Promise.resolve();
|
|
4980
4980
|
else {
|
|
4981
|
-
const w = this.resolveExternalURL(
|
|
4982
|
-
I =
|
|
4981
|
+
const w = this.resolveExternalURL(di(C));
|
|
4982
|
+
I = ui(w), f = fetch(w, this.fetchOptions).then((B) => {
|
|
4983
4983
|
if (!B.ok)
|
|
4984
4984
|
throw new Error(`I3DMLoaderBase : Failed to load file "${w}" with status ${B.status} : ${B.statusText}`);
|
|
4985
4985
|
return B.arrayBuffer();
|
|
@@ -4995,7 +4995,7 @@ let Pl = class extends It {
|
|
|
4995
4995
|
gltfWorkingPath: I
|
|
4996
4996
|
}));
|
|
4997
4997
|
}
|
|
4998
|
-
},
|
|
4998
|
+
}, Nl = class extends It {
|
|
4999
4999
|
parse(e) {
|
|
5000
5000
|
const t = new DataView(e), s = Ue(t);
|
|
5001
5001
|
console.assert(s === "pnts");
|
|
@@ -5014,7 +5014,7 @@ let Pl = class extends It {
|
|
|
5014
5014
|
), u = A + o + r, g = e.slice(
|
|
5015
5015
|
u,
|
|
5016
5016
|
u + l + c
|
|
5017
|
-
), p = new
|
|
5017
|
+
), p = new mi(
|
|
5018
5018
|
g,
|
|
5019
5019
|
d.getData("BATCH_LENGTH") || d.getData("POINTS_LENGTH"),
|
|
5020
5020
|
0,
|
|
@@ -5027,7 +5027,7 @@ let Pl = class extends It {
|
|
|
5027
5027
|
batchTable: p
|
|
5028
5028
|
});
|
|
5029
5029
|
}
|
|
5030
|
-
},
|
|
5030
|
+
}, Vl = class extends It {
|
|
5031
5031
|
parse(e) {
|
|
5032
5032
|
const t = new DataView(e), s = Ue(t);
|
|
5033
5033
|
console.assert(s === "cmpt", 'CMPTLoader: The magic bytes equal "cmpt".');
|
|
@@ -5051,15 +5051,15 @@ let Pl = class extends It {
|
|
|
5051
5051
|
};
|
|
5052
5052
|
}
|
|
5053
5053
|
};
|
|
5054
|
-
function
|
|
5054
|
+
function Ol(a) {
|
|
5055
5055
|
const { x: e, y: t, z: s } = a;
|
|
5056
5056
|
a.x = s, a.y = e, a.z = t;
|
|
5057
5057
|
}
|
|
5058
|
-
function
|
|
5058
|
+
function Hl(a) {
|
|
5059
5059
|
return -a + Math.PI / 2;
|
|
5060
5060
|
}
|
|
5061
|
-
const
|
|
5062
|
-
let
|
|
5061
|
+
const ji = /* @__PURE__ */ new qs(), Se = /* @__PURE__ */ new v(), W = /* @__PURE__ */ new v(), Rs = /* @__PURE__ */ new v(), se = /* @__PURE__ */ new P(), ce = /* @__PURE__ */ new P(), Ki = /* @__PURE__ */ new P(), Ds = /* @__PURE__ */ new Et(), X = /* @__PURE__ */ new Yn(), Yi = /* @__PURE__ */ new v(), Ji = /* @__PURE__ */ new v(), Wi = /* @__PURE__ */ new v(), De = /* @__PURE__ */ new v(), Dt = /* @__PURE__ */ new is(), ql = 1e-12, zl = 0.1, Lt = 0, Xi = 1, Ft = 2;
|
|
5062
|
+
let Po = class {
|
|
5063
5063
|
constructor(e = 1, t = 1, s = 1) {
|
|
5064
5064
|
this.name = "", this.radius = new v(e, t, s);
|
|
5065
5065
|
}
|
|
@@ -5068,7 +5068,7 @@ let _o = class {
|
|
|
5068
5068
|
}
|
|
5069
5069
|
// returns a frame with Z indicating altitude, Y pointing north, X pointing east
|
|
5070
5070
|
getEastNorthUpFrame(e, t, s, i) {
|
|
5071
|
-
return s.isMatrix4 && (i = s, s = 0, console.warn('Ellipsoid: The signature for "getEastNorthUpFrame" has changed.')), this.getEastNorthUpAxes(e, t,
|
|
5071
|
+
return s.isMatrix4 && (i = s, s = 0, console.warn('Ellipsoid: The signature for "getEastNorthUpFrame" has changed.')), this.getEastNorthUpAxes(e, t, Yi, Ji, Wi), this.getCartographicToPosition(e, t, s, De), i.makeBasis(Yi, Ji, Wi).setPosition(De);
|
|
5072
5072
|
}
|
|
5073
5073
|
// returns a frame with z indicating altitude and az, el, roll rotation within that frame
|
|
5074
5074
|
// - azimuth: measured off of true north, increasing towards "east" (z-axis)
|
|
@@ -5081,10 +5081,10 @@ let _o = class {
|
|
|
5081
5081
|
// OBJECT_FRAME: oriented such that "+Y" is up and "+Z" is forward.
|
|
5082
5082
|
// CAMERA_FRAME: oriented such that "+Y" is up and "-Z" is forward.
|
|
5083
5083
|
getObjectFrame(e, t, s, i, n, o, r, l = Ft) {
|
|
5084
|
-
return this.getEastNorthUpFrame(e, t, s, se), X.set(n, o, -i, "ZXY"), r.makeRotationFromEuler(X).premultiply(se), l ===
|
|
5084
|
+
return this.getEastNorthUpFrame(e, t, s, se), X.set(n, o, -i, "ZXY"), r.makeRotationFromEuler(X).premultiply(se), l === Xi ? (X.set(Math.PI / 2, 0, 0, "XYZ"), ce.makeRotationFromEuler(X), r.multiply(ce)) : l === Ft && (X.set(-Math.PI / 2, 0, Math.PI, "XYZ"), ce.makeRotationFromEuler(X), r.multiply(ce)), r;
|
|
5085
5085
|
}
|
|
5086
5086
|
getCartographicFromObjectFrame(e, t, s = Ft) {
|
|
5087
|
-
return s ===
|
|
5087
|
+
return s === Xi ? (X.set(-Math.PI / 2, 0, 0, "XYZ"), ce.makeRotationFromEuler(X).premultiply(e)) : s === Ft ? (X.set(-Math.PI / 2, 0, Math.PI, "XYZ"), ce.makeRotationFromEuler(X).premultiply(e)) : ce.copy(e), De.setFromMatrixPosition(ce), this.getPositionToCartographic(De, t), this.getEastNorthUpFrame(t.lat, t.lon, 0, se).invert(), ce.premultiply(se), X.setFromRotationMatrix(ce, "ZXY"), t.azimuth = -X.z, t.elevation = X.x, t.roll = X.y, t;
|
|
5088
5088
|
}
|
|
5089
5089
|
getEastNorthUpAxes(e, t, s, i, n, o = De) {
|
|
5090
5090
|
this.getCartographicToPosition(e, t, 0, o), this.getCartographicToNormal(e, t, n), s.set(-o.y, o.x, 0).normalize(), i.crossVectors(n, s).normalize();
|
|
@@ -5093,7 +5093,7 @@ let _o = class {
|
|
|
5093
5093
|
// elevation: measured off of the horizon, increasing towards sky
|
|
5094
5094
|
// roll: rotation around northern axis
|
|
5095
5095
|
getAzElRollFromRotationMatrix(e, t, s, i, n = Lt) {
|
|
5096
|
-
return console.warn('Ellipsoid: "getAzElRollFromRotationMatrix" is deprecated. Use "getCartographicFromObjectFrame", instead.'), this.getCartographicToPosition(e, t, 0, De),
|
|
5096
|
+
return console.warn('Ellipsoid: "getAzElRollFromRotationMatrix" is deprecated. Use "getCartographicFromObjectFrame", instead.'), this.getCartographicToPosition(e, t, 0, De), Ki.copy(s).setPosition(De), this.getCartographicFromObjectFrame(Ki, i, n), delete i.height, delete i.lat, delete i.lon, i;
|
|
5097
5097
|
}
|
|
5098
5098
|
getRotationMatrixFromAzElRoll(e, t, s, i, n, o, r = Lt) {
|
|
5099
5099
|
return console.warn('Ellipsoid: "getRotationMatrixFromAzElRoll" function has been deprecated. Use "getObjectFrame", instead.'), this.getObjectFrame(e, t, 0, s, i, n, o, r), o.setPosition(0, 0, 0), o;
|
|
@@ -5114,7 +5114,7 @@ let _o = class {
|
|
|
5114
5114
|
return t.lon = Math.atan2(Se.y, Se.x), t.lat = Math.asin(Se.z), t.height = Math.sign(s.dot(e)) * s.length(), t;
|
|
5115
5115
|
}
|
|
5116
5116
|
getCartographicToNormal(e, t, s) {
|
|
5117
|
-
return
|
|
5117
|
+
return ji.set(1, Hl(e), t), s.setFromSpherical(ji).normalize(), Ol(s), s;
|
|
5118
5118
|
}
|
|
5119
5119
|
getPositionToNormal(e, t) {
|
|
5120
5120
|
const s = this.radius;
|
|
@@ -5122,7 +5122,7 @@ let _o = class {
|
|
|
5122
5122
|
}
|
|
5123
5123
|
getPositionToSurfacePoint(e, t) {
|
|
5124
5124
|
const s = this.radius, i = 1 / s.x ** 2, n = 1 / s.y ** 2, o = 1 / s.z ** 2, r = e.x * e.x * i, l = e.y * e.y * n, c = e.z * e.z * o, A = r + l + c, h = Math.sqrt(1 / A), d = W.copy(e).multiplyScalar(h);
|
|
5125
|
-
if (A <
|
|
5125
|
+
if (A < zl)
|
|
5126
5126
|
return isFinite(h) ? t.copy(d) : null;
|
|
5127
5127
|
const u = Rs.set(
|
|
5128
5128
|
d.x * i * 2,
|
|
@@ -5134,7 +5134,7 @@ let _o = class {
|
|
|
5134
5134
|
g -= p, C = 1 / (1 + g * i), y = 1 / (1 + g * n), f = 1 / (1 + g * o), I = C * C, w = y * y, B = f * f, M = I * C, S = w * y, x = B * f, b = r * I + l * w + c * B - 1, E = r * M * i + l * S * n + c * x * o;
|
|
5135
5135
|
const R = -2 * E;
|
|
5136
5136
|
p = b / R;
|
|
5137
|
-
} while (Math.abs(b) >
|
|
5137
|
+
} while (Math.abs(b) > ql);
|
|
5138
5138
|
return t.set(
|
|
5139
5139
|
e.x * C,
|
|
5140
5140
|
e.y * y,
|
|
@@ -5166,12 +5166,12 @@ let _o = class {
|
|
|
5166
5166
|
return new this.constructor().copy(this);
|
|
5167
5167
|
}
|
|
5168
5168
|
};
|
|
5169
|
-
const ds = new
|
|
5169
|
+
const ds = new Po(Oi, Oi, vl);
|
|
5170
5170
|
ds.name = "WGS84 Earth";
|
|
5171
5171
|
const kt = /* @__PURE__ */ new v(), _t = /* @__PURE__ */ new v(), Z = /* @__PURE__ */ new v(), Pt = /* @__PURE__ */ new is();
|
|
5172
|
-
let
|
|
5172
|
+
let Zi = class {
|
|
5173
5173
|
constructor(e = new it(), t = new P()) {
|
|
5174
|
-
this.box = e.clone(), this.transform = t.clone(), this.inverseTransform = new P(), this.points = new Array(8).fill().map(() => new v()), this.planes = new Array(6).fill().map(() => new
|
|
5174
|
+
this.box = e.clone(), this.transform = t.clone(), this.inverseTransform = new P(), this.points = new Array(8).fill().map(() => new v()), this.planes = new Array(6).fill().map(() => new Pn());
|
|
5175
5175
|
}
|
|
5176
5176
|
copy(e) {
|
|
5177
5177
|
return this.box.copy(e.box), this.transform.copy(e.transform), this.update(), this;
|
|
@@ -5263,19 +5263,19 @@ let Xi = class {
|
|
|
5263
5263
|
return !0;
|
|
5264
5264
|
}
|
|
5265
5265
|
};
|
|
5266
|
-
const Ls = 1e-13, ft = Math.PI, Fs = ft / 2, lt = /* @__PURE__ */ new v(), Le = /* @__PURE__ */ new v(), oe = /* @__PURE__ */ new v(), T = /* @__PURE__ */ new v(), Y = /* @__PURE__ */ new P(),
|
|
5266
|
+
const Ls = 1e-13, ft = Math.PI, Fs = ft / 2, lt = /* @__PURE__ */ new v(), Le = /* @__PURE__ */ new v(), oe = /* @__PURE__ */ new v(), T = /* @__PURE__ */ new v(), Y = /* @__PURE__ */ new P(), jl = /* @__PURE__ */ new it(), $i = /* @__PURE__ */ new P();
|
|
5267
5267
|
function ve(a, e) {
|
|
5268
5268
|
e.radius = Math.max(e.radius, a.distanceToSquared(e.center));
|
|
5269
5269
|
}
|
|
5270
|
-
function
|
|
5270
|
+
function en(a) {
|
|
5271
5271
|
return a.x !== a.y;
|
|
5272
5272
|
}
|
|
5273
|
-
let
|
|
5273
|
+
let Kl = class extends Po {
|
|
5274
5274
|
constructor(e = 1, t = 1, s = 1, i = -Fs, n = Fs, o = 0, r = 2 * ft, l = 0, c = 0) {
|
|
5275
5275
|
super(e, t, s), this.latStart = i, this.latEnd = n, this.lonStart = o, this.lonEnd = r, this.heightStart = l, this.heightEnd = c;
|
|
5276
5276
|
}
|
|
5277
5277
|
getBoundingBox(e, t) {
|
|
5278
|
-
|
|
5278
|
+
en(this.radius) && console.warn("EllipsoidRegion: Triaxial ellipsoids are not supported.");
|
|
5279
5279
|
const {
|
|
5280
5280
|
latStart: s,
|
|
5281
5281
|
latEnd: i,
|
|
@@ -5290,7 +5290,7 @@ let jl = class extends _o {
|
|
|
5290
5290
|
g.setScalar(1 / 0), p.setScalar(-1 / 0), o - n <= ft ? (this.getCartographicToNormal(c, A, oe), Le.set(0, 0, 1), lt.crossVectors(Le, oe).normalize(), Le.crossVectors(oe, lt).normalize(), t.makeBasis(lt, Le, oe), Y.copy(t).invert(), this.getCartographicToPosition(u, n, l, T).applyMatrix4(Y), p.x = Math.abs(T.x), g.x = -p.x, this.getCartographicToPosition(i, n, l, T).applyMatrix4(Y), p.y = T.y, this.getCartographicToPosition(i, A, l, T).applyMatrix4(Y), p.y = Math.max(T.y, p.y), this.getCartographicToPosition(s, n, l, T).applyMatrix4(Y), g.y = T.y, this.getCartographicToPosition(s, A, l, T).applyMatrix4(Y), g.y = Math.min(T.y, g.y), this.getCartographicToPosition(c, A, l, T).applyMatrix4(Y), p.z = T.z, this.getCartographicToPosition(s, n, r, T).applyMatrix4(Y), g.z = T.z, this.getCartographicToPosition(i, n, r, T).applyMatrix4(Y), g.z = Math.min(T.z, g.z)) : (this.getCartographicToPosition(u, A, l, oe), oe.z = 0, oe.length() < 1e-10 ? oe.set(1, 0, 0) : oe.normalize(), Le.set(0, 0, 1), lt.crossVectors(oe, Le).normalize(), t.makeBasis(lt, Le, oe), Y.copy(t).invert(), this.getCartographicToPosition(u, A + Fs, l, T).applyMatrix4(Y), p.x = Math.abs(T.x), g.x = -p.x, this.getCartographicToPosition(i, 0, d ? r : l, T).applyMatrix4(Y), p.y = T.y, this.getCartographicToPosition(s, 0, h ? r : l, T).applyMatrix4(Y), g.y = T.y, this.getCartographicToPosition(u, A, l, T).applyMatrix4(Y), p.z = T.z, this.getCartographicToPosition(u, o, l, T).applyMatrix4(Y), g.z = T.z), e.getCenter(T), e.min.sub(T).multiplyScalar(1 + Ls), e.max.sub(T).multiplyScalar(1 + Ls), T.applyMatrix4(t), t.setPosition(T);
|
|
5291
5291
|
}
|
|
5292
5292
|
getBoundingSphere(e) {
|
|
5293
|
-
|
|
5293
|
+
en(this.radius) && console.warn("EllipsoidRegion: Triaxial ellipsoids are not supported."), this.getBoundingBox(jl, $i), e.center.setFromMatrixPosition($i), e.radius = 0;
|
|
5294
5294
|
const {
|
|
5295
5295
|
latStart: t,
|
|
5296
5296
|
latEnd: s,
|
|
@@ -5303,27 +5303,27 @@ let jl = class extends _o {
|
|
|
5303
5303
|
A ? d = t : h ? d = s : d = 0, this.getCartographicToPosition(d, i, r, T), ve(T, e), this.getCartographicToPosition(s, i, r, T), ve(T, e), this.getCartographicToPosition(s, c, r, T), ve(T, e), this.getCartographicToPosition(t, i, r, T), ve(T, e), this.getCartographicToPosition(t, c, r, T), ve(T, e), this.getCartographicToPosition(l, c, r, T), ve(T, e), this.getCartographicToPosition(t, i, o, T), ve(T, e), n - i > ft && (this.getCartographicToPosition(d, c + ft, r, T), ve(T, e)), e.radius = Math.sqrt(e.radius) * (1 + Ls);
|
|
5304
5304
|
}
|
|
5305
5305
|
};
|
|
5306
|
-
function
|
|
5306
|
+
function Yl(a) {
|
|
5307
5307
|
if (!a)
|
|
5308
5308
|
return 0;
|
|
5309
5309
|
const { format: e, type: t, image: s } = a, { width: i, height: n } = s;
|
|
5310
|
-
let o =
|
|
5310
|
+
let o = Gr.getByteLength(i, n, e, t);
|
|
5311
5311
|
return o *= a.generateMipmaps ? 4 / 3 : 1, o;
|
|
5312
5312
|
}
|
|
5313
|
-
function
|
|
5313
|
+
function Jl(a) {
|
|
5314
5314
|
const e = /* @__PURE__ */ new Set();
|
|
5315
5315
|
let t = 0;
|
|
5316
5316
|
return a.traverse((s) => {
|
|
5317
|
-
if (s.geometry && !e.has(s.geometry) && (t +=
|
|
5317
|
+
if (s.geometry && !e.has(s.geometry) && (t += ga(s.geometry), e.add(s.geometry)), s.material) {
|
|
5318
5318
|
const i = s.material;
|
|
5319
5319
|
for (const n in i) {
|
|
5320
5320
|
const o = i[n];
|
|
5321
|
-
o && o.isTexture && !e.has(o) && (t +=
|
|
5321
|
+
o && o.isTexture && !e.has(o) && (t += Yl(o), e.add(o));
|
|
5322
5322
|
}
|
|
5323
5323
|
}
|
|
5324
5324
|
}), t;
|
|
5325
5325
|
}
|
|
5326
|
-
class
|
|
5326
|
+
class Go extends Gl {
|
|
5327
5327
|
constructor(e = ls) {
|
|
5328
5328
|
super(), this.manager = e, this.adjustmentTransform = new P();
|
|
5329
5329
|
}
|
|
@@ -5342,27 +5342,27 @@ class Po extends Pl {
|
|
|
5342
5342
|
});
|
|
5343
5343
|
}
|
|
5344
5344
|
}
|
|
5345
|
-
function
|
|
5345
|
+
function Wl(a) {
|
|
5346
5346
|
const e = a >> 11, t = a >> 5 & 63, s = a & 31, i = Math.round(e / 31 * 255), n = Math.round(t / 63 * 255), o = Math.round(s / 31 * 255);
|
|
5347
5347
|
return [i, n, o];
|
|
5348
5348
|
}
|
|
5349
5349
|
const ct = /* @__PURE__ */ new k();
|
|
5350
|
-
function
|
|
5350
|
+
function Xl(a, e, t = new v()) {
|
|
5351
5351
|
ct.set(a, e).divideScalar(256).multiplyScalar(2).subScalar(1), t.set(ct.x, ct.y, 1 - Math.abs(ct.x) - Math.abs(ct.y));
|
|
5352
5352
|
const s = st.clamp(-t.z, 0, 1);
|
|
5353
5353
|
return t.x >= 0 ? t.setX(t.x - s) : t.setX(t.x + s), t.y >= 0 ? t.setY(t.y - s) : t.setY(t.y + s), t.normalize(), t;
|
|
5354
5354
|
}
|
|
5355
|
-
const
|
|
5355
|
+
const tn = {
|
|
5356
5356
|
RGB: "color",
|
|
5357
5357
|
POSITION: "position"
|
|
5358
5358
|
};
|
|
5359
|
-
class
|
|
5359
|
+
class Uo extends Nl {
|
|
5360
5360
|
constructor(e = ls) {
|
|
5361
5361
|
super(), this.manager = e;
|
|
5362
5362
|
}
|
|
5363
5363
|
parse(e) {
|
|
5364
5364
|
return super.parse(e).then(async (t) => {
|
|
5365
|
-
const { featureTable: s, batchTable: i } = t, n = new
|
|
5365
|
+
const { featureTable: s, batchTable: i } = t, n = new Nn(), o = s.header.extensions, r = new v();
|
|
5366
5366
|
let l;
|
|
5367
5367
|
if (o && o["3DTILES_draco_point_compression"]) {
|
|
5368
5368
|
const { byteOffset: h, byteLength: d, properties: u } = o["3DTILES_draco_point_compression"], g = this.manager.getHandler("draco.drc");
|
|
@@ -5370,8 +5370,8 @@ class Go extends Ul {
|
|
|
5370
5370
|
throw new Error("PNTSLoader: dracoLoader not available.");
|
|
5371
5371
|
const p = {};
|
|
5372
5372
|
for (const C in u)
|
|
5373
|
-
if (C in
|
|
5374
|
-
const y =
|
|
5373
|
+
if (C in tn && C in u) {
|
|
5374
|
+
const y = tn[C];
|
|
5375
5375
|
p[y] = u[C];
|
|
5376
5376
|
}
|
|
5377
5377
|
const b = {
|
|
@@ -5400,7 +5400,7 @@ class Go extends Ul {
|
|
|
5400
5400
|
else if (g !== null) {
|
|
5401
5401
|
const w = new Float32Array(h * 3), B = new v();
|
|
5402
5402
|
for (let M = 0; M < h; M++) {
|
|
5403
|
-
const S = g[M * 2], x = g[M * 2 + 1], R =
|
|
5403
|
+
const S = g[M * 2], x = g[M * 2 + 1], R = Xl(S, x, B);
|
|
5404
5404
|
w[M * 3] = R.x, w[M * 3 + 1] = R.y, w[M * 3 + 2] = R.z;
|
|
5405
5405
|
}
|
|
5406
5406
|
l.setAttribute("normal", new ne(w, 3, !1));
|
|
@@ -5412,7 +5412,7 @@ class Go extends Ul {
|
|
|
5412
5412
|
else if (E !== null) {
|
|
5413
5413
|
const w = new Uint8Array(h * 3);
|
|
5414
5414
|
for (let B = 0; B < h; B++) {
|
|
5415
|
-
const M =
|
|
5415
|
+
const M = Wl(E[B]);
|
|
5416
5416
|
for (let S = 0; S < 3; S++) {
|
|
5417
5417
|
const x = 3 * B + S;
|
|
5418
5418
|
w[x] = M[S];
|
|
@@ -5426,22 +5426,22 @@ class Go extends Ul {
|
|
|
5426
5426
|
B < 1 && (n.opacity = B, n.transparent = !0, n.depthWrite = !1);
|
|
5427
5427
|
}
|
|
5428
5428
|
}
|
|
5429
|
-
const c = new
|
|
5429
|
+
const c = new Vn(l, n);
|
|
5430
5430
|
c.position.copy(r), t.scene = c, t.scene.featureTable = s, t.scene.batchTable = i;
|
|
5431
5431
|
const A = s.getData("RTC_CENTER", 1, "FLOAT", "VEC3");
|
|
5432
5432
|
return A && (t.scene.position.x += A[0], t.scene.position.y += A[1], t.scene.position.z += A[2]), t;
|
|
5433
5433
|
});
|
|
5434
5434
|
}
|
|
5435
5435
|
}
|
|
5436
|
-
const Gt = /* @__PURE__ */ new v(), qe = /* @__PURE__ */ new v(), ze = /* @__PURE__ */ new v(), ks = /* @__PURE__ */ new v(), Ut = /* @__PURE__ */ new $e(), Nt = /* @__PURE__ */ new v(), je = /* @__PURE__ */ new P(),
|
|
5437
|
-
function
|
|
5436
|
+
const Gt = /* @__PURE__ */ new v(), qe = /* @__PURE__ */ new v(), ze = /* @__PURE__ */ new v(), ks = /* @__PURE__ */ new v(), Ut = /* @__PURE__ */ new $e(), Nt = /* @__PURE__ */ new v(), je = /* @__PURE__ */ new P(), sn = /* @__PURE__ */ new P(), nn = /* @__PURE__ */ new v(), on = /* @__PURE__ */ new P(), _s = /* @__PURE__ */ new $e(), Ps = {};
|
|
5437
|
+
function rn(a, e, t, s) {
|
|
5438
5438
|
if (a = a / t * 2 - 1, e = e / t * 2 - 1, s.x = a, s.y = e, s.z = 1 - Math.abs(a) - Math.abs(e), s.z < 0) {
|
|
5439
5439
|
const i = s.x;
|
|
5440
5440
|
s.x = (1 - Math.abs(s.y)) * (i >= 0 ? 1 : -1), s.y = (1 - Math.abs(i)) * (s.y >= 0 ? 1 : -1);
|
|
5441
5441
|
}
|
|
5442
5442
|
return s.normalize(), s;
|
|
5443
5443
|
}
|
|
5444
|
-
class
|
|
5444
|
+
class No extends Ul {
|
|
5445
5445
|
constructor(e = ls) {
|
|
5446
5446
|
super(), this.manager = e, this.adjustmentTransform = new P(), this.ellipsoid = ds.clone();
|
|
5447
5447
|
}
|
|
@@ -5473,7 +5473,7 @@ class Uo extends Gl {
|
|
|
5473
5473
|
u.scene.updateMatrixWorld(), u.scene.traverse((Q) => {
|
|
5474
5474
|
if (Q.isMesh) {
|
|
5475
5475
|
q.push(Q);
|
|
5476
|
-
const { geometry: te, material: z } = Q, F = new
|
|
5476
|
+
const { geometry: te, material: z } = Q, F = new li(te, z, g);
|
|
5477
5477
|
F.position.copy(R), S && (F.position.x += S[0], F.position.y += S[1], F.position.z += S[2]), L.push(F);
|
|
5478
5478
|
}
|
|
5479
5479
|
});
|
|
@@ -5494,12 +5494,12 @@ class Uo extends Gl {
|
|
|
5494
5494
|
ze,
|
|
5495
5495
|
qe,
|
|
5496
5496
|
Gt
|
|
5497
|
-
), Ut.setFromRotationMatrix(je)) : I && w && (
|
|
5497
|
+
), Ut.setFromRotationMatrix(je)) : I && w && (rn(
|
|
5498
5498
|
I[Q * 2 + 0],
|
|
5499
5499
|
I[Q * 2 + 1],
|
|
5500
5500
|
65535,
|
|
5501
5501
|
qe
|
|
5502
|
-
),
|
|
5502
|
+
), rn(
|
|
5503
5503
|
w[Q * 2 + 0],
|
|
5504
5504
|
w[Q * 2 + 1],
|
|
5505
5505
|
65535,
|
|
@@ -5515,9 +5515,9 @@ class Uo extends Gl {
|
|
|
5515
5515
|
), M && Nt.multiplyScalar(M[Q]);
|
|
5516
5516
|
for (let te = 0, z = L.length; te < z; te++) {
|
|
5517
5517
|
const F = L[te];
|
|
5518
|
-
_s.copy(Ut), x && (F.updateMatrixWorld(),
|
|
5518
|
+
_s.copy(Ut), x && (F.updateMatrixWorld(), nn.copy(ks).applyMatrix4(F.matrixWorld), this.ellipsoid.getPositionToCartographic(nn, Ps), this.ellipsoid.getEastNorthUpFrame(Ps.lat, Ps.lon, on), _s.setFromRotationMatrix(on)), je.compose(ks, _s, Nt).multiply(d);
|
|
5519
5519
|
const j = q[te];
|
|
5520
|
-
|
|
5520
|
+
sn.multiplyMatrices(je, j.matrixWorld), F.setMatrixAt(Q, sn);
|
|
5521
5521
|
}
|
|
5522
5522
|
}
|
|
5523
5523
|
u.scene.clear(), u.scene.add(...L), u.batchTable = i, u.featureTable = s, u.scene.batchTable = i, u.scene.featureTable = s, o(u);
|
|
@@ -5526,7 +5526,7 @@ class Uo extends Gl {
|
|
|
5526
5526
|
});
|
|
5527
5527
|
}
|
|
5528
5528
|
}
|
|
5529
|
-
class
|
|
5529
|
+
class Zl extends Vl {
|
|
5530
5530
|
constructor(e = ls) {
|
|
5531
5531
|
super(), this.manager = e, this.adjustmentTransform = new P(), this.ellipsoid = ds.clone();
|
|
5532
5532
|
}
|
|
@@ -5536,21 +5536,21 @@ class Xl extends Nl {
|
|
|
5536
5536
|
const { type: l, buffer: c } = t.tiles[r];
|
|
5537
5537
|
switch (l) {
|
|
5538
5538
|
case "b3dm": {
|
|
5539
|
-
const A = c.slice(), h = new
|
|
5539
|
+
const A = c.slice(), h = new Go(s);
|
|
5540
5540
|
h.workingPath = this.workingPath, h.fetchOptions = this.fetchOptions, h.adjustmentTransform.copy(n);
|
|
5541
5541
|
const d = h.parse(A.buffer);
|
|
5542
5542
|
o.push(d);
|
|
5543
5543
|
break;
|
|
5544
5544
|
}
|
|
5545
5545
|
case "pnts": {
|
|
5546
|
-
const A = c.slice(), h = new
|
|
5546
|
+
const A = c.slice(), h = new Uo(s);
|
|
5547
5547
|
h.workingPath = this.workingPath, h.fetchOptions = this.fetchOptions;
|
|
5548
5548
|
const d = h.parse(A.buffer);
|
|
5549
5549
|
o.push(d);
|
|
5550
5550
|
break;
|
|
5551
5551
|
}
|
|
5552
5552
|
case "i3dm": {
|
|
5553
|
-
const A = c.slice(), h = new
|
|
5553
|
+
const A = c.slice(), h = new No(s);
|
|
5554
5554
|
h.workingPath = this.workingPath, h.fetchOptions = this.fetchOptions, h.ellipsoid.copy(i), h.adjustmentTransform.copy(n);
|
|
5555
5555
|
const d = h.parse(A.buffer);
|
|
5556
5556
|
o.push(d);
|
|
@@ -5570,7 +5570,7 @@ class Xl extends Nl {
|
|
|
5570
5570
|
}
|
|
5571
5571
|
}
|
|
5572
5572
|
const At = /* @__PURE__ */ new P();
|
|
5573
|
-
class
|
|
5573
|
+
class $l extends Xe {
|
|
5574
5574
|
constructor(e) {
|
|
5575
5575
|
super(), this.isTilesGroup = !0, this.name = "TilesRenderer.TilesGroup", this.tilesRenderer = e, this.matrixWorldInverse = new P();
|
|
5576
5576
|
}
|
|
@@ -5601,44 +5601,44 @@ class Zl extends Xe {
|
|
|
5601
5601
|
this.parent && e && this.parent.updateWorldMatrix(e, !1), this.updateMatrixWorld(!0);
|
|
5602
5602
|
}
|
|
5603
5603
|
}
|
|
5604
|
-
const
|
|
5605
|
-
function
|
|
5604
|
+
const Vo = /* @__PURE__ */ new is(), Gs = /* @__PURE__ */ new v(), Vt = [];
|
|
5605
|
+
function Oo(a, e) {
|
|
5606
5606
|
return a.distance - e.distance;
|
|
5607
5607
|
}
|
|
5608
|
-
function
|
|
5608
|
+
function Ho(a, e, t, s) {
|
|
5609
5609
|
const { scene: i } = a.engineData;
|
|
5610
5610
|
t.invokeOnePlugin((n) => n.raycastTile && n.raycastTile(a, i, e, s)) || e.intersectObject(i, !0, s);
|
|
5611
5611
|
}
|
|
5612
|
-
function
|
|
5613
|
-
|
|
5612
|
+
function ec(a, e, t) {
|
|
5613
|
+
Ho(a, e, t, Vt), Vt.sort(Oo);
|
|
5614
5614
|
const s = Vt[0] || null;
|
|
5615
5615
|
return Vt.length = 0, s;
|
|
5616
5616
|
}
|
|
5617
|
-
function
|
|
5617
|
+
function qo(a) {
|
|
5618
5618
|
return "traversal" in a;
|
|
5619
5619
|
}
|
|
5620
|
-
function
|
|
5620
|
+
function zo(a, e, t, s = null) {
|
|
5621
5621
|
const { group: i, activeTiles: n } = a;
|
|
5622
|
-
s === null && (s =
|
|
5622
|
+
s === null && (s = Vo, s.copy(t.ray).applyMatrix4(i.matrixWorldInverse));
|
|
5623
5623
|
const o = [], r = e.children;
|
|
5624
5624
|
for (let A = 0, h = r.length; A < h; A++) {
|
|
5625
5625
|
const d = r[A];
|
|
5626
|
-
!
|
|
5626
|
+
!qo(d) || !d.traversal.used || d.engineData.boundingVolume.intersectRay(s, Gs) !== null && (Gs.applyMatrix4(i.matrixWorld), o.push({
|
|
5627
5627
|
distance: Gs.distanceToSquared(t.ray.origin),
|
|
5628
5628
|
tile: d
|
|
5629
5629
|
}));
|
|
5630
5630
|
}
|
|
5631
|
-
o.sort(
|
|
5631
|
+
o.sort(Oo);
|
|
5632
5632
|
let l = null, c = 1 / 0;
|
|
5633
5633
|
if (n.has(e)) {
|
|
5634
|
-
const A =
|
|
5634
|
+
const A = ec(e, t, a);
|
|
5635
5635
|
A && (l = A, c = A.distance * A.distance);
|
|
5636
5636
|
}
|
|
5637
5637
|
for (let A = 0, h = o.length; A < h; A++) {
|
|
5638
5638
|
const d = o[A], u = d.distance, g = d.tile;
|
|
5639
5639
|
if (u > c)
|
|
5640
5640
|
break;
|
|
5641
|
-
const p =
|
|
5641
|
+
const p = zo(a, g, t, s);
|
|
5642
5642
|
if (p) {
|
|
5643
5643
|
const b = p.distance * p.distance;
|
|
5644
5644
|
b < c && (l = p, c = b);
|
|
@@ -5646,19 +5646,19 @@ function qo(a, e, t, s = null) {
|
|
|
5646
5646
|
}
|
|
5647
5647
|
return l;
|
|
5648
5648
|
}
|
|
5649
|
-
function
|
|
5650
|
-
if (!
|
|
5649
|
+
function jo(a, e, t, s, i = null) {
|
|
5650
|
+
if (!qo(e))
|
|
5651
5651
|
return;
|
|
5652
5652
|
const { group: n, activeTiles: o } = a, { boundingVolume: r } = e.engineData;
|
|
5653
|
-
if (i === null && (i =
|
|
5653
|
+
if (i === null && (i = Vo, i.copy(t.ray).applyMatrix4(n.matrixWorldInverse)), !e.traversal.used || !r.intersectsRay(i))
|
|
5654
5654
|
return;
|
|
5655
|
-
o.has(e) &&
|
|
5655
|
+
o.has(e) && Ho(e, t, a, s);
|
|
5656
5656
|
const l = e.children;
|
|
5657
5657
|
for (let c = 0, A = l.length; c < A; c++)
|
|
5658
|
-
|
|
5658
|
+
jo(a, l[c], t, s, i);
|
|
5659
5659
|
}
|
|
5660
|
-
const ge = /* @__PURE__ */ new v(), pe = /* @__PURE__ */ new v(), fe = /* @__PURE__ */ new v(),
|
|
5661
|
-
class
|
|
5660
|
+
const ge = /* @__PURE__ */ new v(), pe = /* @__PURE__ */ new v(), fe = /* @__PURE__ */ new v(), an = /* @__PURE__ */ new v(), ln = /* @__PURE__ */ new v();
|
|
5661
|
+
class tc {
|
|
5662
5662
|
constructor() {
|
|
5663
5663
|
this.sphere = null, this.obb = null, this.region = null, this.regionObb = null;
|
|
5664
5664
|
}
|
|
@@ -5669,7 +5669,7 @@ class ec {
|
|
|
5669
5669
|
intersectRay(e, t = null) {
|
|
5670
5670
|
const s = this.sphere, i = this.obb || this.regionObb;
|
|
5671
5671
|
let n = -1 / 0, o = -1 / 0;
|
|
5672
|
-
s && e.intersectSphere(s,
|
|
5672
|
+
s && e.intersectSphere(s, an) && (n = s.containsPoint(e.origin) ? 0 : e.origin.distanceToSquared(an)), i && i.intersectRay(e, ln) && (o = i.containsPoint(e.origin) ? 0 : e.origin.distanceToSquared(ln));
|
|
5673
5673
|
const r = Math.max(n, o);
|
|
5674
5674
|
return r === -1 / 0 ? null : (e.at(Math.sqrt(r), t), t);
|
|
5675
5675
|
}
|
|
@@ -5713,7 +5713,7 @@ class ec {
|
|
|
5713
5713
|
}
|
|
5714
5714
|
}
|
|
5715
5715
|
setObbData(e, t) {
|
|
5716
|
-
const s = new
|
|
5716
|
+
const s = new Zi();
|
|
5717
5717
|
ge.set(e[3], e[4], e[5]), pe.set(e[6], e[7], e[8]), fe.set(e[9], e[10], e[11]);
|
|
5718
5718
|
const i = ge.length(), n = pe.length(), o = fe.length();
|
|
5719
5719
|
ge.normalize(), pe.normalize(), fe.normalize(), i === 0 && ge.crossVectors(pe, fe), n === 0 && pe.crossVectors(ge, fe), o === 0 && fe.crossVectors(ge, pe), s.transform.set(
|
|
@@ -5740,7 +5740,7 @@ class ec {
|
|
|
5740
5740
|
o.center.set(e, t, s), o.radius = i, o.applyMatrix4(n), this.sphere = o;
|
|
5741
5741
|
}
|
|
5742
5742
|
setRegionData(e, t, s, i, n, o, r) {
|
|
5743
|
-
const l = new
|
|
5743
|
+
const l = new Kl(
|
|
5744
5744
|
...e.radius,
|
|
5745
5745
|
s,
|
|
5746
5746
|
n,
|
|
@@ -5748,13 +5748,13 @@ class ec {
|
|
|
5748
5748
|
i,
|
|
5749
5749
|
o,
|
|
5750
5750
|
r
|
|
5751
|
-
), c = new
|
|
5751
|
+
), c = new Zi();
|
|
5752
5752
|
l.getBoundingBox(c.box, c.transform), c.update(), this.region = l, this.regionObb = c;
|
|
5753
5753
|
}
|
|
5754
5754
|
}
|
|
5755
|
-
const
|
|
5756
|
-
function
|
|
5757
|
-
const i =
|
|
5755
|
+
const sc = /* @__PURE__ */ new Jn();
|
|
5756
|
+
function ic(a, e, t, s) {
|
|
5757
|
+
const i = sc.set(
|
|
5758
5758
|
a.normal.x,
|
|
5759
5759
|
a.normal.y,
|
|
5760
5760
|
a.normal.z,
|
|
@@ -5767,7 +5767,7 @@ function sc(a, e, t, s) {
|
|
|
5767
5767
|
);
|
|
5768
5768
|
return s.set(-a.constant, -e.constant, -t.constant), s.applyMatrix3(i.invert()), s;
|
|
5769
5769
|
}
|
|
5770
|
-
class
|
|
5770
|
+
class nc extends Nr {
|
|
5771
5771
|
constructor() {
|
|
5772
5772
|
super(), this.points = Array(8).fill().map(() => new v());
|
|
5773
5773
|
}
|
|
@@ -5794,23 +5794,23 @@ class ic extends Ur {
|
|
|
5794
5794
|
[e[1], e[2], e[5]]
|
|
5795
5795
|
// Far bottom right
|
|
5796
5796
|
].forEach((s, i) => {
|
|
5797
|
-
|
|
5797
|
+
ic(s[0], s[1], s[2], t[i]);
|
|
5798
5798
|
});
|
|
5799
5799
|
}
|
|
5800
5800
|
}
|
|
5801
|
-
const
|
|
5802
|
-
function
|
|
5801
|
+
const cn = /* @__PURE__ */ new P(), An = /* @__PURE__ */ new Yn(), Ko = Symbol("INITIAL_FRUSTUM_CULLED"), Ot = /* @__PURE__ */ new P(), ht = /* @__PURE__ */ new v(), Us = /* @__PURE__ */ new k(), oc = /* @__PURE__ */ new v(1, 0, 0), rc = /* @__PURE__ */ new v(0, 1, 0);
|
|
5802
|
+
function hn(a, e) {
|
|
5803
5803
|
a.traverse((t) => {
|
|
5804
|
-
t.frustumCulled = t[
|
|
5804
|
+
t.frustumCulled = t[Ko] && e;
|
|
5805
5805
|
});
|
|
5806
5806
|
}
|
|
5807
|
-
let
|
|
5807
|
+
let ac = class extends _l {
|
|
5808
5808
|
get autoDisableRendererCulling() {
|
|
5809
5809
|
return this._autoDisableRendererCulling;
|
|
5810
5810
|
}
|
|
5811
5811
|
set autoDisableRendererCulling(e) {
|
|
5812
5812
|
this._autoDisableRendererCulling !== e && (super._autoDisableRendererCulling = e, this.forEachLoadedModel((t) => {
|
|
5813
|
-
|
|
5813
|
+
hn(t, !e);
|
|
5814
5814
|
}));
|
|
5815
5815
|
}
|
|
5816
5816
|
get optimizeRaycast() {
|
|
@@ -5820,7 +5820,7 @@ let rc = class extends kl {
|
|
|
5820
5820
|
console.warn('TilesRenderer: The "optimizeRaycast" option has been deprecated.'), this._optimizeRaycast = e;
|
|
5821
5821
|
}
|
|
5822
5822
|
constructor(...e) {
|
|
5823
|
-
super(...e), this.group = new
|
|
5823
|
+
super(...e), this.group = new $l(this), this.ellipsoid = ds.clone(), this.cameras = [], this.cameraMap = /* @__PURE__ */ new Map(), this.cameraInfo = [], this._optimizeRaycast = !0, this._upRotationMatrix = new P(), this._bytesUsed = /* @__PURE__ */ new WeakMap(), this._autoDisableRendererCulling = !0, this.manager = new Ur(), this._listeners = {};
|
|
5824
5824
|
}
|
|
5825
5825
|
addEventListener(e, t) {
|
|
5826
5826
|
e === "load-tile-set" && (console.warn('TilesRenderer: "load-tile-set" event has been deprecated. Use "load-tileset" instead.'), e = "load-tileset"), vt.prototype.addEventListener.call(this, e, t);
|
|
@@ -5868,10 +5868,10 @@ let rc = class extends kl {
|
|
|
5868
5868
|
raycast(e, t) {
|
|
5869
5869
|
if (this.root)
|
|
5870
5870
|
if (e.firstHitOnly) {
|
|
5871
|
-
const s =
|
|
5871
|
+
const s = zo(this, this.root, e);
|
|
5872
5872
|
s && t.push(s);
|
|
5873
5873
|
} else
|
|
5874
|
-
|
|
5874
|
+
jo(this, this.root, e, t);
|
|
5875
5875
|
}
|
|
5876
5876
|
hasCamera(e) {
|
|
5877
5877
|
return this.cameraMap.has(e);
|
|
@@ -5904,10 +5904,10 @@ let rc = class extends kl {
|
|
|
5904
5904
|
const { asset: s, extensions: i = {} } = t;
|
|
5905
5905
|
switch ((s && s.gltfUpAxis || "y").toLowerCase()) {
|
|
5906
5906
|
case "x":
|
|
5907
|
-
this._upRotationMatrix.makeRotationAxis(
|
|
5907
|
+
this._upRotationMatrix.makeRotationAxis(rc, -Math.PI / 2);
|
|
5908
5908
|
break;
|
|
5909
5909
|
case "y":
|
|
5910
|
-
this._upRotationMatrix.makeRotationAxis(
|
|
5910
|
+
this._upRotationMatrix.makeRotationAxis(oc, Math.PI / 2);
|
|
5911
5911
|
break;
|
|
5912
5912
|
}
|
|
5913
5913
|
if ("3DTILES_ellipsoid" in i) {
|
|
@@ -5923,7 +5923,7 @@ let rc = class extends kl {
|
|
|
5923
5923
|
i.pop();
|
|
5924
5924
|
for (; i.length < t.length; )
|
|
5925
5925
|
i.push({
|
|
5926
|
-
frustum: new
|
|
5926
|
+
frustum: new nc(),
|
|
5927
5927
|
isOrthographic: !1,
|
|
5928
5928
|
sseDenominator: -1,
|
|
5929
5929
|
// used if isOrthographic:false
|
|
@@ -5960,31 +5960,31 @@ let rc = class extends kl {
|
|
|
5960
5960
|
i.elements[l] = r[l];
|
|
5961
5961
|
}
|
|
5962
5962
|
s && i.premultiply(s.engineData.transform);
|
|
5963
|
-
const n = new P().copy(i).invert(), o = new
|
|
5963
|
+
const n = new P().copy(i).invert(), o = new tc();
|
|
5964
5964
|
"sphere" in e.boundingVolume && o.setSphereData(...e.boundingVolume.sphere, i), "box" in e.boundingVolume && o.setObbData(e.boundingVolume.box, i), "region" in e.boundingVolume && o.setRegionData(this.ellipsoid, ...e.boundingVolume.region), e.engineData.transform = i, e.engineData.transformInverse = n, e.engineData.boundingVolume = o, e.engineData.geometry = null, e.engineData.materials = null, e.engineData.textures = null;
|
|
5965
5965
|
}
|
|
5966
5966
|
async parseTile(e, t, s, i, n) {
|
|
5967
|
-
const o = t.engineData, r =
|
|
5967
|
+
const o = t.engineData, r = ui(i), l = this.fetchOptions, c = this.manager;
|
|
5968
5968
|
let A = null;
|
|
5969
5969
|
const h = o.transform, d = this._upRotationMatrix, u = (Ue(e) || s).toLowerCase();
|
|
5970
5970
|
switch (u) {
|
|
5971
5971
|
case "b3dm": {
|
|
5972
|
-
const f = new
|
|
5972
|
+
const f = new Go(c);
|
|
5973
5973
|
f.workingPath = r, f.fetchOptions = l, f.adjustmentTransform.copy(d), A = f.parse(e);
|
|
5974
5974
|
break;
|
|
5975
5975
|
}
|
|
5976
5976
|
case "pnts": {
|
|
5977
|
-
const f = new
|
|
5977
|
+
const f = new Uo(c);
|
|
5978
5978
|
f.workingPath = r, f.fetchOptions = l, A = f.parse(e);
|
|
5979
5979
|
break;
|
|
5980
5980
|
}
|
|
5981
5981
|
case "i3dm": {
|
|
5982
|
-
const f = new
|
|
5982
|
+
const f = new No(c);
|
|
5983
5983
|
f.workingPath = r, f.fetchOptions = l, f.adjustmentTransform.copy(d), f.ellipsoid.copy(this.ellipsoid), A = f.parse(e);
|
|
5984
5984
|
break;
|
|
5985
5985
|
}
|
|
5986
5986
|
case "cmpt": {
|
|
5987
|
-
const f = new
|
|
5987
|
+
const f = new Zl(c);
|
|
5988
5988
|
f.workingPath = r, f.fetchOptions = l, f.adjustmentTransform.copy(d), f.ellipsoid.copy(this.ellipsoid), A = f.parse(e).then((I) => I.scene);
|
|
5989
5989
|
break;
|
|
5990
5990
|
}
|
|
@@ -6011,8 +6011,8 @@ let rc = class extends kl {
|
|
|
6011
6011
|
throw new Error(`TilesRenderer: Content type "${u}" not supported.`);
|
|
6012
6012
|
let p, b;
|
|
6013
6013
|
g.isObject3D ? (p = g, b = null) : (p = g.scene, b = g), p.updateMatrix(), p.matrix.premultiply(h), p.matrix.decompose(p.position, p.quaternion, p.scale), await this.invokeAllPlugins((f) => f.processTileModel && f.processTileModel(p, t)), p.traverse((f) => {
|
|
6014
|
-
f[
|
|
6015
|
-
}),
|
|
6014
|
+
f[Ko] = f.frustumCulled;
|
|
6015
|
+
}), hn(p, !this.autoDisableRendererCulling);
|
|
6016
6016
|
const E = [], C = [], y = [];
|
|
6017
6017
|
if (p.traverse((f) => {
|
|
6018
6018
|
if (f.geometry && C.push(f.geometry), f.material) {
|
|
@@ -6057,7 +6057,7 @@ let rc = class extends kl {
|
|
|
6057
6057
|
}
|
|
6058
6058
|
calculateBytesUsed(e, t) {
|
|
6059
6059
|
const s = this._bytesUsed;
|
|
6060
|
-
return !s.has(e) && t && s.set(e,
|
|
6060
|
+
return !s.has(e) && t && s.set(e, Jl(t)), s.get(e) ?? null;
|
|
6061
6061
|
}
|
|
6062
6062
|
calculateTileViewError(e, t) {
|
|
6063
6063
|
const s = e.engineData, i = this.cameras, n = this.cameraInfo, o = s.boundingVolume;
|
|
@@ -6081,7 +6081,7 @@ let rc = class extends kl {
|
|
|
6081
6081
|
setLatLonToYUp(e, t) {
|
|
6082
6082
|
console.warn("TilesRenderer: setLatLonToYUp is deprecated. Use the ReorientationPlugin, instead.");
|
|
6083
6083
|
const { ellipsoid: s, group: i } = this;
|
|
6084
|
-
|
|
6084
|
+
An.set(Math.PI / 2, Math.PI / 2, 0), cn.makeRotationFromEuler(An), s.getEastNorthUpFrame(e, t, 0, i.matrix).multiply(cn).invert().decompose(
|
|
6085
6085
|
i.position,
|
|
6086
6086
|
i.quaternion,
|
|
6087
6087
|
i.scale
|
|
@@ -6097,16 +6097,16 @@ function Zt(a) {
|
|
|
6097
6097
|
function Ns(a) {
|
|
6098
6098
|
return Zt(a) ? 8 : 4;
|
|
6099
6099
|
}
|
|
6100
|
-
function
|
|
6100
|
+
function lc(a, e) {
|
|
6101
6101
|
if (!a)
|
|
6102
6102
|
return [0, 0, 0];
|
|
6103
6103
|
const t = a.implicitTilingData.x, s = a.implicitTilingData.y, i = a.implicitTilingData.z, n = 2 * t + e % 2, o = 2 * s + Math.floor(e / 2) % 2, r = Zt(a) ? 2 * i + Math.floor(e / 4) % 2 : 0;
|
|
6104
6104
|
return [n, o, r];
|
|
6105
6105
|
}
|
|
6106
|
-
class
|
|
6106
|
+
class dn {
|
|
6107
6107
|
constructor(e, t) {
|
|
6108
6108
|
this.parent = e, this.children = [], this.geometricError = 0, this.boundingVolume = null;
|
|
6109
|
-
const [s, i, n] =
|
|
6109
|
+
const [s, i, n] = lc(e, t);
|
|
6110
6110
|
this.implicitTilingData = {
|
|
6111
6111
|
level: e.implicitTilingData.level + 1,
|
|
6112
6112
|
root: e.implicitTilingData.root,
|
|
@@ -6128,7 +6128,7 @@ class hn {
|
|
|
6128
6128
|
};
|
|
6129
6129
|
}
|
|
6130
6130
|
}
|
|
6131
|
-
class
|
|
6131
|
+
class cc extends It {
|
|
6132
6132
|
constructor(e) {
|
|
6133
6133
|
super(), this.tile = e, this.rootTile = e.implicitTilingData.root, this.workingPath = null;
|
|
6134
6134
|
}
|
|
@@ -6157,7 +6157,7 @@ class lc extends It {
|
|
|
6157
6157
|
s += 8;
|
|
6158
6158
|
const r = t.getUint32(s, !0);
|
|
6159
6159
|
s += 8;
|
|
6160
|
-
const l = JSON.parse(
|
|
6160
|
+
const l = JSON.parse(di(new Uint8Array(e, s, o)));
|
|
6161
6161
|
s += o;
|
|
6162
6162
|
const c = e.slice(s, s + r);
|
|
6163
6163
|
return {
|
|
@@ -6390,7 +6390,7 @@ class lc extends It {
|
|
|
6390
6390
|
* @private
|
|
6391
6391
|
*/
|
|
6392
6392
|
expandSubtree(e, t) {
|
|
6393
|
-
const s =
|
|
6393
|
+
const s = dn.clone(e);
|
|
6394
6394
|
for (let o = 0; t && o < t._contentAvailabilityBitstreams.length; o++)
|
|
6395
6395
|
if (t && this.getBit(t._contentAvailabilityBitstreams[o], 0)) {
|
|
6396
6396
|
s.content = { uri: this.parseImplicitURI(e, this.rootTile.content.uri) };
|
|
@@ -6458,7 +6458,7 @@ class lc extends It {
|
|
|
6458
6458
|
* @private
|
|
6459
6459
|
*/
|
|
6460
6460
|
deriveChildTile(e, t, s, i) {
|
|
6461
|
-
const n = new
|
|
6461
|
+
const n = new dn(t, i);
|
|
6462
6462
|
n.boundingVolume = this.getTileBoundingVolume(n), n.geometricError = this.getGeometricError(n);
|
|
6463
6463
|
for (let o = 0; e && o < e._contentAvailabilityBitstreams.length; o++)
|
|
6464
6464
|
if (e && this.getBit(e._contentAvailabilityBitstreams[o], s)) {
|
|
@@ -6583,7 +6583,7 @@ class lc extends It {
|
|
|
6583
6583
|
return n.pathname = n.pathname.substring(0, n.pathname.lastIndexOf("/")), new URL(n.pathname + "/" + s, this.workingPath + "/").toString();
|
|
6584
6584
|
}
|
|
6585
6585
|
}
|
|
6586
|
-
class
|
|
6586
|
+
class Ac {
|
|
6587
6587
|
constructor() {
|
|
6588
6588
|
this.name = "IMPLICIT_TILING_PLUGIN";
|
|
6589
6589
|
}
|
|
@@ -6606,7 +6606,7 @@ class cc {
|
|
|
6606
6606
|
}
|
|
6607
6607
|
parseTile(e, t, s) {
|
|
6608
6608
|
if (/^subtree$/i.test(s)) {
|
|
6609
|
-
const i = new
|
|
6609
|
+
const i = new cc(t);
|
|
6610
6610
|
return i.workingPath = t.internal.basePath, i.fetchOptions = this.tiles.fetchOptions, i.parse(e);
|
|
6611
6611
|
}
|
|
6612
6612
|
}
|
|
@@ -6624,21 +6624,21 @@ class cc {
|
|
|
6624
6624
|
}), e.children.length = 0);
|
|
6625
6625
|
}
|
|
6626
6626
|
}
|
|
6627
|
-
const
|
|
6628
|
-
class
|
|
6627
|
+
const hc = new On(-1, 1, 1, -1, 0, 1);
|
|
6628
|
+
class dc extends rs {
|
|
6629
6629
|
constructor() {
|
|
6630
6630
|
super(), this.setAttribute("position", new Jt([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new Jt([0, 2, 0, 0, 2, 0], 2));
|
|
6631
6631
|
}
|
|
6632
6632
|
}
|
|
6633
|
-
const
|
|
6634
|
-
class
|
|
6633
|
+
const uc = new dc();
|
|
6634
|
+
class Yo {
|
|
6635
6635
|
/**
|
|
6636
6636
|
* Constructs a new full screen quad.
|
|
6637
6637
|
*
|
|
6638
6638
|
* @param {?Material} material - The material to render te full screen quad with.
|
|
6639
6639
|
*/
|
|
6640
6640
|
constructor(e) {
|
|
6641
|
-
this._mesh = new as(
|
|
6641
|
+
this._mesh = new as(uc, e);
|
|
6642
6642
|
}
|
|
6643
6643
|
/**
|
|
6644
6644
|
* Frees the GPU-related resources allocated by this instance. Call this
|
|
@@ -6653,7 +6653,7 @@ class Ko {
|
|
|
6653
6653
|
* @param {WebGLRenderer} renderer - The renderer.
|
|
6654
6654
|
*/
|
|
6655
6655
|
render(e) {
|
|
6656
|
-
e.render(this._mesh,
|
|
6656
|
+
e.render(this._mesh, hc);
|
|
6657
6657
|
}
|
|
6658
6658
|
/**
|
|
6659
6659
|
* The quad's material.
|
|
@@ -6670,10 +6670,10 @@ class Ko {
|
|
|
6670
6670
|
function N(a, e, t) {
|
|
6671
6671
|
return a && e in a ? a[e] : t;
|
|
6672
6672
|
}
|
|
6673
|
-
function
|
|
6673
|
+
function Jo(a) {
|
|
6674
6674
|
return a !== "BOOLEAN" && a !== "STRING" && a !== "ENUM";
|
|
6675
6675
|
}
|
|
6676
|
-
function
|
|
6676
|
+
function gc(a) {
|
|
6677
6677
|
return /^FLOAT/.test(a);
|
|
6678
6678
|
}
|
|
6679
6679
|
function wt(a) {
|
|
@@ -6682,7 +6682,7 @@ function wt(a) {
|
|
|
6682
6682
|
function St(a) {
|
|
6683
6683
|
return /^MAT/.test(a);
|
|
6684
6684
|
}
|
|
6685
|
-
function
|
|
6685
|
+
function Wo(a, e, t, s = null) {
|
|
6686
6686
|
return St(t) || wt(t) ? s.fromArray(a, e) : a[e];
|
|
6687
6687
|
}
|
|
6688
6688
|
function ni(a) {
|
|
@@ -6697,9 +6697,9 @@ function ni(a) {
|
|
|
6697
6697
|
case "VEC4":
|
|
6698
6698
|
return new nt();
|
|
6699
6699
|
case "MAT2":
|
|
6700
|
-
return new
|
|
6700
|
+
return new jr();
|
|
6701
6701
|
case "MAT3":
|
|
6702
|
-
return new
|
|
6702
|
+
return new Jn();
|
|
6703
6703
|
case "MAT4":
|
|
6704
6704
|
return new P();
|
|
6705
6705
|
case "BOOLEAN":
|
|
@@ -6712,7 +6712,7 @@ function ni(a) {
|
|
|
6712
6712
|
return 0;
|
|
6713
6713
|
}
|
|
6714
6714
|
}
|
|
6715
|
-
function
|
|
6715
|
+
function un(a, e) {
|
|
6716
6716
|
if (e == null)
|
|
6717
6717
|
return !1;
|
|
6718
6718
|
switch (a) {
|
|
@@ -6770,7 +6770,7 @@ function Ct(a, e = null) {
|
|
|
6770
6770
|
}
|
|
6771
6771
|
throw new Error("ClassProperty: invalid type.");
|
|
6772
6772
|
}
|
|
6773
|
-
function
|
|
6773
|
+
function pc(a, e = null) {
|
|
6774
6774
|
if (a.array) {
|
|
6775
6775
|
e = e && Array.isArray(e) ? e : [], e.length = a.count;
|
|
6776
6776
|
for (let t = 0, s = e.length; t < s; t++)
|
|
@@ -6812,7 +6812,7 @@ function $t(a, e = null) {
|
|
|
6812
6812
|
else
|
|
6813
6813
|
return t;
|
|
6814
6814
|
}
|
|
6815
|
-
function
|
|
6815
|
+
function fc(a, e) {
|
|
6816
6816
|
if (a.noData === null)
|
|
6817
6817
|
return e;
|
|
6818
6818
|
const t = a.noData, s = a.type;
|
|
@@ -6841,7 +6841,7 @@ function pc(a, e) {
|
|
|
6841
6841
|
return t === o;
|
|
6842
6842
|
}
|
|
6843
6843
|
}
|
|
6844
|
-
function
|
|
6844
|
+
function mc(a, e) {
|
|
6845
6845
|
switch (a) {
|
|
6846
6846
|
case "INT8":
|
|
6847
6847
|
return Math.max(e / 127, -1);
|
|
@@ -6862,7 +6862,7 @@ function fc(a, e) {
|
|
|
6862
6862
|
return Number(e) / 18446744073709552e3;
|
|
6863
6863
|
}
|
|
6864
6864
|
}
|
|
6865
|
-
function
|
|
6865
|
+
function bc(a, e) {
|
|
6866
6866
|
const {
|
|
6867
6867
|
type: t,
|
|
6868
6868
|
componentType: s,
|
|
@@ -6889,16 +6889,16 @@ function mc(a, e) {
|
|
|
6889
6889
|
return h;
|
|
6890
6890
|
}
|
|
6891
6891
|
function A(h) {
|
|
6892
|
-
return o && (h =
|
|
6892
|
+
return o && (h = mc(s, h)), (o || gc(s)) && (h = h * i + n), h;
|
|
6893
6893
|
}
|
|
6894
6894
|
}
|
|
6895
|
-
function
|
|
6895
|
+
function bi(a, e, t = null) {
|
|
6896
6896
|
if (a.array) {
|
|
6897
6897
|
Array.isArray(e) || (e = new Array(a.count || 0)), e.length = t !== null ? t : a.count;
|
|
6898
6898
|
for (let s = 0, i = e.length; s < i; s++)
|
|
6899
|
-
|
|
6899
|
+
un(a.type, e[s]) || (e[s] = ni(a));
|
|
6900
6900
|
} else
|
|
6901
|
-
|
|
6901
|
+
un(a.type, e) || (e = ni(a));
|
|
6902
6902
|
return e;
|
|
6903
6903
|
}
|
|
6904
6904
|
function es(a, e) {
|
|
@@ -6906,10 +6906,10 @@ function es(a, e) {
|
|
|
6906
6906
|
t in a || delete e[t];
|
|
6907
6907
|
for (const t in a) {
|
|
6908
6908
|
const s = a[t];
|
|
6909
|
-
e[t] =
|
|
6909
|
+
e[t] = bi(s, e[t]);
|
|
6910
6910
|
}
|
|
6911
6911
|
}
|
|
6912
|
-
function
|
|
6912
|
+
function Cc(a) {
|
|
6913
6913
|
switch (a) {
|
|
6914
6914
|
case "ENUM":
|
|
6915
6915
|
return 1;
|
|
@@ -6943,7 +6943,7 @@ class us {
|
|
|
6943
6943
|
// shape the given target to match the data type of the property
|
|
6944
6944
|
// enums are set to their integer value
|
|
6945
6945
|
shapeToProperty(e, t = null) {
|
|
6946
|
-
return
|
|
6946
|
+
return bi(this, e, t);
|
|
6947
6947
|
}
|
|
6948
6948
|
// resolve the given object to the default value for the property for a single element
|
|
6949
6949
|
// enums are set to a default string
|
|
@@ -6953,11 +6953,11 @@ class us {
|
|
|
6953
6953
|
// resolve the target to the default value for the property for every element if it's an array
|
|
6954
6954
|
// enums are set to a default string
|
|
6955
6955
|
resolveDefault(e) {
|
|
6956
|
-
return
|
|
6956
|
+
return pc(this, e);
|
|
6957
6957
|
}
|
|
6958
6958
|
// converts any instances of no data to the default value
|
|
6959
6959
|
resolveNoData(e) {
|
|
6960
|
-
return
|
|
6960
|
+
return fc(this, e);
|
|
6961
6961
|
}
|
|
6962
6962
|
// converts enums integers in the given target to strings
|
|
6963
6963
|
resolveEnumsToStrings(e) {
|
|
@@ -6976,10 +6976,10 @@ class us {
|
|
|
6976
6976
|
}
|
|
6977
6977
|
// apply scales
|
|
6978
6978
|
adjustValueScaleOffset(e) {
|
|
6979
|
-
return
|
|
6979
|
+
return Jo(this.type) ? bc(this, e) : e;
|
|
6980
6980
|
}
|
|
6981
6981
|
}
|
|
6982
|
-
class
|
|
6982
|
+
class Ci {
|
|
6983
6983
|
constructor(e, t = {}, s = {}, i = null) {
|
|
6984
6984
|
this.definition = e, this.class = t[e.class], this.className = e.class, this.enums = s, this.data = i, this.name = "name" in e ? e.name : null, this.properties = null;
|
|
6985
6985
|
}
|
|
@@ -6998,14 +6998,14 @@ class bi {
|
|
|
6998
6998
|
this.properties = t;
|
|
6999
6999
|
}
|
|
7000
7000
|
}
|
|
7001
|
-
class
|
|
7001
|
+
class Ec extends us {
|
|
7002
7002
|
constructor(e, t, s = null) {
|
|
7003
7003
|
super(e, t, s), this.attribute = s?.attribute ?? null;
|
|
7004
7004
|
}
|
|
7005
7005
|
}
|
|
7006
|
-
class
|
|
7006
|
+
class yc extends Ci {
|
|
7007
7007
|
constructor(...e) {
|
|
7008
|
-
super(...e), this.isPropertyAttributeAccessor = !0, this._initProperties(
|
|
7008
|
+
super(...e), this.isPropertyAttributeAccessor = !0, this._initProperties(Ec);
|
|
7009
7009
|
}
|
|
7010
7010
|
getData(e, t, s = {}) {
|
|
7011
7011
|
const i = this.properties;
|
|
@@ -7037,9 +7037,9 @@ class Ec extends bi {
|
|
|
7037
7037
|
return i = n.adjustValueScaleOffset(i), i = n.resolveEnumsToStrings(i), i = n.resolveNoData(i), i;
|
|
7038
7038
|
}
|
|
7039
7039
|
}
|
|
7040
|
-
class
|
|
7040
|
+
class Ic extends us {
|
|
7041
7041
|
constructor(e, t, s = null) {
|
|
7042
|
-
super(e, t, s), this.values = s?.values ?? null, this.valueLength =
|
|
7042
|
+
super(e, t, s), this.values = s?.values ?? null, this.valueLength = Cc(this.type), this.arrayOffsets = N(s, "arrayOffsets", null), this.stringOffsets = N(s, "stringOffsets", null), this.arrayOffsetType = N(s, "arrayOffsetType", "UINT32"), this.stringOffsetType = N(s, "stringOffsetType", "UINT32");
|
|
7043
7043
|
}
|
|
7044
7044
|
// returns the necessary array length based on the array offsets if present
|
|
7045
7045
|
getArrayLengthFromId(e, t) {
|
|
@@ -7061,9 +7061,9 @@ class yc extends us {
|
|
|
7061
7061
|
return s;
|
|
7062
7062
|
}
|
|
7063
7063
|
}
|
|
7064
|
-
class
|
|
7064
|
+
class Bc extends Ci {
|
|
7065
7065
|
constructor(...e) {
|
|
7066
|
-
super(...e), this.isPropertyTableAccessor = !0, this.count = this.definition.count, this._initProperties(
|
|
7066
|
+
super(...e), this.isPropertyTableAccessor = !0, this.count = this.definition.count, this._initProperties(Ic);
|
|
7067
7067
|
}
|
|
7068
7068
|
getData(e, t = {}) {
|
|
7069
7069
|
const s = this.properties;
|
|
@@ -7075,8 +7075,8 @@ class Ic extends bi {
|
|
|
7075
7075
|
// reads an individual element
|
|
7076
7076
|
_readValueAtIndex(e, t, s, i = null) {
|
|
7077
7077
|
const n = this.properties[e], { componentType: o, type: r } = n, l = this.data, c = l[n.values], A = Ct(o, r), h = new A(c), d = n.getIndexOffsetFromId(l, t);
|
|
7078
|
-
if (
|
|
7079
|
-
return
|
|
7078
|
+
if (Jo(r) || r === "ENUM")
|
|
7079
|
+
return Wo(h, (d + s) * n.valueLength, r, i);
|
|
7080
7080
|
if (r === "STRING") {
|
|
7081
7081
|
let u = d + s, g = 0;
|
|
7082
7082
|
if (n.stringOffsets !== null) {
|
|
@@ -7109,13 +7109,13 @@ class Ic extends bi {
|
|
|
7109
7109
|
return s = i.adjustValueScaleOffset(s), s = i.resolveEnumsToStrings(s), s = i.resolveNoData(s), s;
|
|
7110
7110
|
}
|
|
7111
7111
|
}
|
|
7112
|
-
const dt = /* @__PURE__ */ new
|
|
7113
|
-
class
|
|
7112
|
+
const dt = /* @__PURE__ */ new zr();
|
|
7113
|
+
class gn {
|
|
7114
7114
|
constructor() {
|
|
7115
|
-
this._renderer = new
|
|
7116
|
-
blending:
|
|
7117
|
-
blendDst:
|
|
7118
|
-
blendSrc:
|
|
7115
|
+
this._renderer = new Vr(), this._target = new Qi(1, 1), this._texTarget = new Qi(), this._quad = new Yo(new Wn({
|
|
7116
|
+
blending: qr,
|
|
7117
|
+
blendDst: Hr,
|
|
7118
|
+
blendSrc: Or,
|
|
7119
7119
|
uniforms: {
|
|
7120
7120
|
map: { value: null },
|
|
7121
7121
|
pixel: { value: new k() }
|
|
@@ -7169,28 +7169,28 @@ class un {
|
|
|
7169
7169
|
const Me = /* @__PURE__ */ new class {
|
|
7170
7170
|
constructor() {
|
|
7171
7171
|
let a = null;
|
|
7172
|
-
Object.getOwnPropertyNames(
|
|
7173
|
-
e !== "constructor" && (this[e] = (...t) => (a = a || new
|
|
7172
|
+
Object.getOwnPropertyNames(gn.prototype).forEach((e) => {
|
|
7173
|
+
e !== "constructor" && (this[e] = (...t) => (a = a || new gn(), a[e](...t)));
|
|
7174
7174
|
});
|
|
7175
7175
|
}
|
|
7176
|
-
}(),
|
|
7177
|
-
function
|
|
7176
|
+
}(), pn = /* @__PURE__ */ new k(), fn = /* @__PURE__ */ new k(), mn = /* @__PURE__ */ new k();
|
|
7177
|
+
function wc(a, e) {
|
|
7178
7178
|
return e === 0 ? a.getAttribute("uv") : a.getAttribute(`uv${e}`);
|
|
7179
7179
|
}
|
|
7180
|
-
function
|
|
7180
|
+
function Xo(a, e, t = new Array(3)) {
|
|
7181
7181
|
let s = 3 * e, i = 3 * e + 1, n = 3 * e + 2;
|
|
7182
7182
|
return a.index && (s = a.index.getX(s), i = a.index.getX(i), n = a.index.getX(n)), t[0] = s, t[1] = i, t[2] = n, t;
|
|
7183
7183
|
}
|
|
7184
|
-
function
|
|
7185
|
-
const [n, o, r] = s, l =
|
|
7186
|
-
|
|
7184
|
+
function Zo(a, e, t, s, i) {
|
|
7185
|
+
const [n, o, r] = s, l = wc(a, e);
|
|
7186
|
+
pn.fromBufferAttribute(l, n), fn.fromBufferAttribute(l, o), mn.fromBufferAttribute(l, r), i.set(0, 0, 0).addScaledVector(pn, t.x).addScaledVector(fn, t.y).addScaledVector(mn, t.z);
|
|
7187
7187
|
}
|
|
7188
|
-
function
|
|
7188
|
+
function $o(a, e, t, s) {
|
|
7189
7189
|
const i = a.x - Math.floor(a.x), n = a.y - Math.floor(a.y), o = Math.floor(i * e % e), r = Math.floor(n * t % t);
|
|
7190
7190
|
return s.set(o, r), s;
|
|
7191
7191
|
}
|
|
7192
|
-
const
|
|
7193
|
-
class
|
|
7192
|
+
const bn = /* @__PURE__ */ new k(), Cn = /* @__PURE__ */ new k(), En = /* @__PURE__ */ new k();
|
|
7193
|
+
class Sc extends us {
|
|
7194
7194
|
constructor(e, t, s = null) {
|
|
7195
7195
|
super(e, t, s), this.channels = N(s, "channels", [0]), this.index = N(s, "index", null), this.texCoord = N(s, "texCoord", null), this.valueLength = parseInt(this.type.replace(/[^0-9]/g, "")) || 1;
|
|
7196
7196
|
}
|
|
@@ -7199,12 +7199,12 @@ class wc extends us {
|
|
|
7199
7199
|
const i = this.type;
|
|
7200
7200
|
if (i === "BOOLEAN" || i === "STRING")
|
|
7201
7201
|
throw new Error("PropertyTextureAccessor: BOOLEAN and STRING types not supported.");
|
|
7202
|
-
return
|
|
7202
|
+
return Wo(e, t * this.valueLength, i, s);
|
|
7203
7203
|
}
|
|
7204
7204
|
}
|
|
7205
|
-
class
|
|
7205
|
+
class vc extends Ci {
|
|
7206
7206
|
constructor(...e) {
|
|
7207
|
-
super(...e), this.isPropertyTextureAccessor = !0, this._asyncRead = !1, this._initProperties(
|
|
7207
|
+
super(...e), this.isPropertyTextureAccessor = !0, this._asyncRead = !1, this._initProperties(Sc);
|
|
7208
7208
|
}
|
|
7209
7209
|
// Reads the full set of property data
|
|
7210
7210
|
getData(e, t, s, i = {}) {
|
|
@@ -7230,13 +7230,13 @@ class Sc extends bi {
|
|
|
7230
7230
|
getPropertyValuesAtTexel(e, t, s, i, n = []) {
|
|
7231
7231
|
for (; n.length < e.length; ) n.push(null);
|
|
7232
7232
|
n.length = e.length, Me.increaseSizeTo(n.length);
|
|
7233
|
-
const o = this.data, r = this.definition.properties, l = this.properties, c =
|
|
7233
|
+
const o = this.data, r = this.definition.properties, l = this.properties, c = Xo(i, t);
|
|
7234
7234
|
for (let d = 0, u = e.length; d < u; d++) {
|
|
7235
7235
|
const g = e[d];
|
|
7236
7236
|
if (!r[g])
|
|
7237
7237
|
continue;
|
|
7238
7238
|
const p = l[g], b = o[p.index];
|
|
7239
|
-
|
|
7239
|
+
Zo(i, p.texCoord, s, c, bn), $o(bn, b.image.width, b.image.height, Cn), En.set(d, 0), Me.renderPixelToTarget(b, Cn, En);
|
|
7240
7240
|
}
|
|
7241
7241
|
const A = new Uint8Array(e.length * 4);
|
|
7242
7242
|
if (this._asyncRead)
|
|
@@ -7245,7 +7245,7 @@ class Sc extends bi {
|
|
|
7245
7245
|
function h() {
|
|
7246
7246
|
for (let d = 0, u = e.length; d < u; d++) {
|
|
7247
7247
|
const g = e[d], p = l[g], b = p.type;
|
|
7248
|
-
if (n[d] =
|
|
7248
|
+
if (n[d] = bi(p, n[d]), p) {
|
|
7249
7249
|
if (!r[g]) {
|
|
7250
7250
|
n[d] = p.resolveDefault(n);
|
|
7251
7251
|
continue;
|
|
@@ -7269,16 +7269,16 @@ class Sc extends bi {
|
|
|
7269
7269
|
});
|
|
7270
7270
|
}
|
|
7271
7271
|
}
|
|
7272
|
-
class
|
|
7272
|
+
class yn {
|
|
7273
7273
|
constructor(e, t, s, i = null, n = null) {
|
|
7274
7274
|
const {
|
|
7275
7275
|
schema: o,
|
|
7276
7276
|
propertyTables: r = [],
|
|
7277
7277
|
propertyTextures: l = [],
|
|
7278
7278
|
propertyAttributes: c = []
|
|
7279
|
-
} = e, { enums: A, classes: h } = o, d = r.map((p) => new
|
|
7279
|
+
} = e, { enums: A, classes: h } = o, d = r.map((p) => new Bc(p, h, A, s));
|
|
7280
7280
|
let u = [], g = [];
|
|
7281
|
-
i && (i.propertyTextures && (u = i.propertyTextures.map((p) => new
|
|
7281
|
+
i && (i.propertyTextures && (u = i.propertyTextures.map((p) => new vc(l[p], h, A, t))), i.propertyAttributes && (g = i.propertyAttributes.map((p) => new yc(c[p], h, A)))), this.schema = o, this.tableAccessors = d, this.textureAccessors = u, this.attributeAccessors = g, this.object = n, this.textures = t, this.nodeMetadata = i;
|
|
7282
7282
|
}
|
|
7283
7283
|
// Property Tables
|
|
7284
7284
|
getPropertyTableData(e, t, s = null) {
|
|
@@ -7358,7 +7358,7 @@ class En {
|
|
|
7358
7358
|
}
|
|
7359
7359
|
}
|
|
7360
7360
|
const ut = "EXT_structural_metadata";
|
|
7361
|
-
function
|
|
7361
|
+
function Mc(a, e = []) {
|
|
7362
7362
|
var t;
|
|
7363
7363
|
const s = ((t = a.json.textures) == null ? void 0 : t.length) || 0, i = new Array(s).fill(null);
|
|
7364
7364
|
return e.forEach(({ properties: n }) => {
|
|
@@ -7368,7 +7368,7 @@ function vc(a, e = []) {
|
|
|
7368
7368
|
}
|
|
7369
7369
|
}), Promise.all(i);
|
|
7370
7370
|
}
|
|
7371
|
-
function
|
|
7371
|
+
function xc(a, e = []) {
|
|
7372
7372
|
var t;
|
|
7373
7373
|
const s = ((t = a.json.bufferViews) == null ? void 0 : t.length) || 0, i = new Array(s).fill(null);
|
|
7374
7374
|
return e.forEach(({ properties: n }) => {
|
|
@@ -7378,7 +7378,7 @@ function Mc(a, e = []) {
|
|
|
7378
7378
|
}
|
|
7379
7379
|
}), Promise.all(i);
|
|
7380
7380
|
}
|
|
7381
|
-
class
|
|
7381
|
+
class Qc {
|
|
7382
7382
|
constructor(e) {
|
|
7383
7383
|
this.parser = e, this.name = ut;
|
|
7384
7384
|
}
|
|
@@ -7394,28 +7394,28 @@ class xc {
|
|
|
7394
7394
|
});
|
|
7395
7395
|
}
|
|
7396
7396
|
const [o, r] = await Promise.all([
|
|
7397
|
-
|
|
7398
|
-
|
|
7397
|
+
Mc(t, n.propertyTextures),
|
|
7398
|
+
xc(t, n.propertyTables),
|
|
7399
7399
|
i
|
|
7400
|
-
]), l = new
|
|
7400
|
+
]), l = new yn(n, o, r);
|
|
7401
7401
|
e.userData.structuralMetadata = l, e.traverse((c) => {
|
|
7402
7402
|
var A;
|
|
7403
7403
|
if (t.associations.has(c)) {
|
|
7404
7404
|
const { meshes: h, primitives: d } = t.associations.get(c), u = (A = t.json.meshes[h]) == null ? void 0 : A.primitives[d];
|
|
7405
7405
|
if (u && u.extensions && u.extensions[ut]) {
|
|
7406
7406
|
const g = u.extensions[ut];
|
|
7407
|
-
c.userData.structuralMetadata = new
|
|
7407
|
+
c.userData.structuralMetadata = new yn(n, o, r, g, c);
|
|
7408
7408
|
} else
|
|
7409
7409
|
c.userData.structuralMetadata = l;
|
|
7410
7410
|
}
|
|
7411
7411
|
});
|
|
7412
7412
|
}
|
|
7413
7413
|
}
|
|
7414
|
-
const
|
|
7415
|
-
function
|
|
7414
|
+
const In = /* @__PURE__ */ new k(), Bn = /* @__PURE__ */ new k(), wn = /* @__PURE__ */ new k();
|
|
7415
|
+
function Tc(a) {
|
|
7416
7416
|
return a.x > a.y && a.x > a.z ? 0 : a.y > a.z ? 1 : 2;
|
|
7417
7417
|
}
|
|
7418
|
-
class
|
|
7418
|
+
class Rc {
|
|
7419
7419
|
constructor(e, t, s) {
|
|
7420
7420
|
this.geometry = e, this.textures = t, this.data = s, this._asyncRead = !1, this.featureIds = s.featureIds.map((i) => {
|
|
7421
7421
|
const { texture: n, ...o } = i, r = {
|
|
@@ -7449,12 +7449,12 @@ class Tc {
|
|
|
7449
7449
|
getFeatures(e, t) {
|
|
7450
7450
|
const { geometry: s, textures: i, featureIds: n } = this, o = new Array(n.length).fill(null), r = n.length;
|
|
7451
7451
|
Me.increaseSizeTo(r);
|
|
7452
|
-
const l =
|
|
7452
|
+
const l = Xo(s, e), c = l[Tc(t)];
|
|
7453
7453
|
for (let d = 0, u = n.length; d < u; d++) {
|
|
7454
7454
|
const g = n[d], p = "nullFeatureId" in g ? g.nullFeatureId : null;
|
|
7455
7455
|
if ("texture" in g) {
|
|
7456
7456
|
const b = i[g.texture.index];
|
|
7457
|
-
|
|
7457
|
+
Zo(s, g.texture.texCoord, t, l, In), $o(In, b.image.width, b.image.height, Bn), wn.set(d, 0), Me.renderPixelToTarget(i[g.texture.index], Bn, wn);
|
|
7458
7458
|
} else if ("attribute" in g) {
|
|
7459
7459
|
const b = s.getAttribute(`_feature_id_${g.attribute}`).getX(c);
|
|
7460
7460
|
b !== p && (o[d] = b);
|
|
@@ -7488,7 +7488,7 @@ class Tc {
|
|
|
7488
7488
|
}
|
|
7489
7489
|
}
|
|
7490
7490
|
const ts = "EXT_mesh_features";
|
|
7491
|
-
function
|
|
7491
|
+
function Sn(a, e, t) {
|
|
7492
7492
|
a.traverse((s) => {
|
|
7493
7493
|
var i;
|
|
7494
7494
|
if (e.associations.has(s)) {
|
|
@@ -7497,7 +7497,7 @@ function wn(a, e, t) {
|
|
|
7497
7497
|
}
|
|
7498
7498
|
});
|
|
7499
7499
|
}
|
|
7500
|
-
class
|
|
7500
|
+
class Dc {
|
|
7501
7501
|
constructor(e) {
|
|
7502
7502
|
this.parser = e, this.name = ts;
|
|
7503
7503
|
}
|
|
@@ -7507,7 +7507,7 @@ class Rc {
|
|
|
7507
7507
|
if (!i || !i.includes(ts))
|
|
7508
7508
|
return;
|
|
7509
7509
|
const n = ((s = t.json.textures) == null ? void 0 : s.length) || 0, o = new Array(n).fill(null);
|
|
7510
|
-
|
|
7510
|
+
Sn(e, t, (l, { featureIds: c }) => {
|
|
7511
7511
|
c.forEach((A) => {
|
|
7512
7512
|
if (A.texture && o[A.texture.index] === null) {
|
|
7513
7513
|
const h = A.texture.index;
|
|
@@ -7516,12 +7516,12 @@ class Rc {
|
|
|
7516
7516
|
});
|
|
7517
7517
|
});
|
|
7518
7518
|
const r = await Promise.all(o);
|
|
7519
|
-
|
|
7520
|
-
l.userData.meshFeatures = new
|
|
7519
|
+
Sn(e, t, (l, c) => {
|
|
7520
|
+
l.userData.meshFeatures = new Rc(l.geometry, r, c);
|
|
7521
7521
|
});
|
|
7522
7522
|
}
|
|
7523
7523
|
}
|
|
7524
|
-
class
|
|
7524
|
+
class Lc {
|
|
7525
7525
|
constructor() {
|
|
7526
7526
|
this.name = "CESIUM_RTC";
|
|
7527
7527
|
}
|
|
@@ -7532,7 +7532,7 @@ class Dc {
|
|
|
7532
7532
|
}
|
|
7533
7533
|
}
|
|
7534
7534
|
}
|
|
7535
|
-
class
|
|
7535
|
+
class Fc {
|
|
7536
7536
|
constructor(e) {
|
|
7537
7537
|
e = {
|
|
7538
7538
|
metadata: !0,
|
|
@@ -7547,18 +7547,18 @@ class Lc {
|
|
|
7547
7547
|
}
|
|
7548
7548
|
init(e) {
|
|
7549
7549
|
const t = new Ne(e.manager);
|
|
7550
|
-
this.dracoLoader && (t.setDRACOLoader(this.dracoLoader), e.manager.addHandler(this._dracoRegex, this.dracoLoader)), this.ktxLoader && t.setKTX2Loader(this.ktxLoader), this.meshoptDecoder && t.setMeshoptDecoder(this.meshoptDecoder), this.rtc && t.register(() => new
|
|
7550
|
+
this.dracoLoader && (t.setDRACOLoader(this.dracoLoader), e.manager.addHandler(this._dracoRegex, this.dracoLoader)), this.ktxLoader && t.setKTX2Loader(this.ktxLoader), this.meshoptDecoder && t.setMeshoptDecoder(this.meshoptDecoder), this.rtc && t.register(() => new Lc()), this.metadata && (t.register(() => new Qc()), t.register(() => new Dc())), this.plugins.forEach((s) => t.register(s)), e.manager.addHandler(this._gltfRegex, t), this.tiles = e, this._loader = t;
|
|
7551
7551
|
}
|
|
7552
7552
|
dispose() {
|
|
7553
7553
|
this.tiles.manager.removeHandler(this._gltfRegex), this.tiles.manager.removeHandler(this._dracoRegex), this.autoDispose && (this.ktxLoader.dispose(), this.dracoLoader.dispose());
|
|
7554
7554
|
}
|
|
7555
7555
|
}
|
|
7556
|
-
const { clamp:
|
|
7557
|
-
new
|
|
7558
|
-
const
|
|
7559
|
-
|
|
7560
|
-
const
|
|
7561
|
-
class
|
|
7556
|
+
const { clamp: PA } = st;
|
|
7557
|
+
new Yo(new ke());
|
|
7558
|
+
const kc = new Kn(new Uint8Array([255, 255, 255, 255]), 1, 1);
|
|
7559
|
+
kc.needsUpdate = !0;
|
|
7560
|
+
const _c = "https://unpkg.com/three@0.179.1/examples/jsm/libs/draco/gltf/", Pc = "https://unpkg.com/three@0.179.1/examples/jsm/libs/basis/";
|
|
7561
|
+
class Gc extends ac {
|
|
7562
7562
|
preprocessTileset(e, t, s = null) {
|
|
7563
7563
|
const i = e.asset?.version || "1.0", [n] = i.split(".").map((r) => parseInt(r, 10));
|
|
7564
7564
|
console.assert(
|
|
@@ -7569,7 +7569,7 @@ class Pc extends rc {
|
|
|
7569
7569
|
o = new URL(o, window.location.href).toString(), this.preprocessNode(e.root, o, s);
|
|
7570
7570
|
}
|
|
7571
7571
|
}
|
|
7572
|
-
class
|
|
7572
|
+
class Uc {
|
|
7573
7573
|
constructor(e = null, t = null) {
|
|
7574
7574
|
this.renderer = e, this.camera = t, this.activeTilesets = /* @__PURE__ */ new Set(), this.tilesetStates = /* @__PURE__ */ new Map(), this.pendingQueueTasks = [], this._resolutionVec2 = new m.Vector2();
|
|
7575
7575
|
}
|
|
@@ -7754,11 +7754,11 @@ class Gc {
|
|
|
7754
7754
|
configureGltfExtensions(e, t = {}) {
|
|
7755
7755
|
if (t.enableGltfExtensions === !1)
|
|
7756
7756
|
return null;
|
|
7757
|
-
const s = new
|
|
7758
|
-
s.setDecoderPath(t.dracoDecoderPath ||
|
|
7757
|
+
const s = new so();
|
|
7758
|
+
s.setDecoderPath(t.dracoDecoderPath || _c);
|
|
7759
7759
|
const i = new ee();
|
|
7760
|
-
i.setTranscoderPath(t.ktx2TranscoderPath ||
|
|
7761
|
-
const n = new
|
|
7760
|
+
i.setTranscoderPath(t.ktx2TranscoderPath || Pc), this.renderer && i.detectSupport(this.renderer);
|
|
7761
|
+
const n = new Fc({
|
|
7762
7762
|
rtc: !0,
|
|
7763
7763
|
dracoLoader: s,
|
|
7764
7764
|
ktxLoader: i
|
|
@@ -7938,8 +7938,8 @@ class Gc {
|
|
|
7938
7938
|
}
|
|
7939
7939
|
load(e, t = {}) {
|
|
7940
7940
|
return new Promise((s, i) => {
|
|
7941
|
-
const n = new
|
|
7942
|
-
n.registerPlugin(new
|
|
7941
|
+
const n = new Gc(e);
|
|
7942
|
+
n.registerPlugin(new Ac()), this.configureScheduling(n), this.applyOptions(n, t), this.configureGltfExtensions(n, t);
|
|
7943
7943
|
const o = new m.Group(), r = new m.Group(), l = new m.Group();
|
|
7944
7944
|
o.add(r), r.add(l);
|
|
7945
7945
|
const c = n.group;
|
|
@@ -8091,7 +8091,7 @@ class tt {
|
|
|
8091
8091
|
}
|
|
8092
8092
|
tt.xrSessionIsGranted = !1;
|
|
8093
8093
|
tt.registerSessionGrantedListener();
|
|
8094
|
-
class
|
|
8094
|
+
class Nc {
|
|
8095
8095
|
constructor(e, t, s, i = null) {
|
|
8096
8096
|
this.renderer = e, this.camera = t, this.scene = s, this.container = i || document.body, this.isVRSupported = !1, this.isVRPresenting = !1, this.isQuest2 = !1, this.isQuest3 = !1, this.vrButton = null, this.onSessionStart = null, this.onSessionEnd = null;
|
|
8097
8097
|
}
|
|
@@ -8276,23 +8276,23 @@ const G = {
|
|
|
8276
8276
|
VISIBILITY: "visibility"
|
|
8277
8277
|
})
|
|
8278
8278
|
};
|
|
8279
|
-
async function
|
|
8279
|
+
async function er(a) {
|
|
8280
8280
|
const e = await fetch(a);
|
|
8281
8281
|
if (e.ok)
|
|
8282
8282
|
return e.json();
|
|
8283
8283
|
throw new Error(e.statusText);
|
|
8284
8284
|
}
|
|
8285
|
-
async function
|
|
8285
|
+
async function Vc(a) {
|
|
8286
8286
|
if (!a)
|
|
8287
8287
|
throw new Error("No basePath supplied");
|
|
8288
|
-
return await
|
|
8288
|
+
return await er(`${a}/profilesList.json`);
|
|
8289
8289
|
}
|
|
8290
|
-
async function
|
|
8290
|
+
async function Oc(a, e, t = null, s = !0) {
|
|
8291
8291
|
if (!a)
|
|
8292
8292
|
throw new Error("No xrInputSource supplied");
|
|
8293
8293
|
if (!e)
|
|
8294
8294
|
throw new Error("No basePath supplied");
|
|
8295
|
-
const i = await
|
|
8295
|
+
const i = await Vc(e);
|
|
8296
8296
|
let n;
|
|
8297
8297
|
if (a.profiles.some((l) => {
|
|
8298
8298
|
const c = i[l];
|
|
@@ -8313,7 +8313,7 @@ async function Vc(a, e, t = null, s = !0) {
|
|
|
8313
8313
|
deprecated: !!l.deprecated
|
|
8314
8314
|
};
|
|
8315
8315
|
}
|
|
8316
|
-
const o = await
|
|
8316
|
+
const o = await er(n.profilePath);
|
|
8317
8317
|
let r;
|
|
8318
8318
|
if (s) {
|
|
8319
8319
|
let l;
|
|
@@ -8325,13 +8325,13 @@ async function Vc(a, e, t = null, s = !0) {
|
|
|
8325
8325
|
}
|
|
8326
8326
|
return { profile: o, assetPath: r };
|
|
8327
8327
|
}
|
|
8328
|
-
const
|
|
8328
|
+
const Hc = {
|
|
8329
8329
|
xAxis: 0,
|
|
8330
8330
|
yAxis: 0,
|
|
8331
8331
|
button: 0,
|
|
8332
8332
|
state: G.ComponentState.DEFAULT
|
|
8333
8333
|
};
|
|
8334
|
-
function
|
|
8334
|
+
function qc(a = 0, e = 0) {
|
|
8335
8335
|
let t = a, s = e;
|
|
8336
8336
|
if (Math.sqrt(a * a + e * e) > 1) {
|
|
8337
8337
|
const o = Math.atan2(e, a);
|
|
@@ -8342,9 +8342,9 @@ function Hc(a = 0, e = 0) {
|
|
|
8342
8342
|
normalizedYAxis: s * 0.5 + 0.5
|
|
8343
8343
|
};
|
|
8344
8344
|
}
|
|
8345
|
-
class
|
|
8345
|
+
class zc {
|
|
8346
8346
|
constructor(e) {
|
|
8347
|
-
this.componentProperty = e.componentProperty, this.states = e.states, this.valueNodeName = e.valueNodeName, this.valueNodeProperty = e.valueNodeProperty, this.valueNodeProperty === G.VisualResponseProperty.TRANSFORM && (this.minNodeName = e.minNodeName, this.maxNodeName = e.maxNodeName), this.value = 0, this.updateFromComponent(
|
|
8347
|
+
this.componentProperty = e.componentProperty, this.states = e.states, this.valueNodeName = e.valueNodeName, this.valueNodeProperty = e.valueNodeProperty, this.valueNodeProperty === G.VisualResponseProperty.TRANSFORM && (this.minNodeName = e.minNodeName, this.maxNodeName = e.maxNodeName), this.value = 0, this.updateFromComponent(Hc);
|
|
8348
8348
|
}
|
|
8349
8349
|
/**
|
|
8350
8350
|
* Computes the visual response's interpolation weight based on component state
|
|
@@ -8360,7 +8360,7 @@ class qc {
|
|
|
8360
8360
|
button: s,
|
|
8361
8361
|
state: i
|
|
8362
8362
|
}) {
|
|
8363
|
-
const { normalizedXAxis: n, normalizedYAxis: o } =
|
|
8363
|
+
const { normalizedXAxis: n, normalizedYAxis: o } = qc(e, t);
|
|
8364
8364
|
switch (this.componentProperty) {
|
|
8365
8365
|
case G.ComponentProperty.X_AXIS:
|
|
8366
8366
|
this.value = this.states.includes(i) ? n : 0.5;
|
|
@@ -8379,7 +8379,7 @@ class qc {
|
|
|
8379
8379
|
}
|
|
8380
8380
|
}
|
|
8381
8381
|
}
|
|
8382
|
-
class
|
|
8382
|
+
class jc {
|
|
8383
8383
|
/**
|
|
8384
8384
|
* @param {Object} componentId - Id of the component
|
|
8385
8385
|
* @param {Object} componentDescription - Description of the component to be created
|
|
@@ -8388,7 +8388,7 @@ class zc {
|
|
|
8388
8388
|
if (!e || !t || !t.visualResponses || !t.gamepadIndices || Object.keys(t.gamepadIndices).length === 0)
|
|
8389
8389
|
throw new Error("Invalid arguments supplied");
|
|
8390
8390
|
this.id = e, this.type = t.type, this.rootNodeName = t.rootNodeName, this.touchPointNodeName = t.touchPointNodeName, this.visualResponses = {}, Object.keys(t.visualResponses).forEach((s) => {
|
|
8391
|
-
const i = new
|
|
8391
|
+
const i = new zc(t.visualResponses[s]);
|
|
8392
8392
|
this.visualResponses[s] = i;
|
|
8393
8393
|
}), this.gamepadIndices = Object.assign({}, t.gamepadIndices), this.values = {
|
|
8394
8394
|
state: G.ComponentState.DEFAULT,
|
|
@@ -8414,7 +8414,7 @@ class zc {
|
|
|
8414
8414
|
});
|
|
8415
8415
|
}
|
|
8416
8416
|
}
|
|
8417
|
-
class
|
|
8417
|
+
class Kc {
|
|
8418
8418
|
/**
|
|
8419
8419
|
* @param {Object} xrInputSource - The XRInputSource to build the MotionController around
|
|
8420
8420
|
* @param {Object} profile - The best matched profile description for the supplied xrInputSource
|
|
@@ -8427,7 +8427,7 @@ class jc {
|
|
|
8427
8427
|
throw new Error("No profile supplied");
|
|
8428
8428
|
this.xrInputSource = e, this.assetUrl = s, this.id = t.profileId, this.layoutDescription = t.layouts[e.handedness], this.components = {}, Object.keys(this.layoutDescription.components).forEach((i) => {
|
|
8429
8429
|
const n = this.layoutDescription.components[i];
|
|
8430
|
-
this.components[i] = new
|
|
8430
|
+
this.components[i] = new jc(i, n);
|
|
8431
8431
|
}), this.updateFromGamepad();
|
|
8432
8432
|
}
|
|
8433
8433
|
get gripSpace() {
|
|
@@ -8454,8 +8454,8 @@ class jc {
|
|
|
8454
8454
|
});
|
|
8455
8455
|
}
|
|
8456
8456
|
}
|
|
8457
|
-
const
|
|
8458
|
-
class
|
|
8457
|
+
const Yc = "https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles", Jc = "generic-trigger";
|
|
8458
|
+
class Wc extends ns {
|
|
8459
8459
|
/**
|
|
8460
8460
|
* Constructs a new XR controller model.
|
|
8461
8461
|
*/
|
|
@@ -8497,12 +8497,12 @@ class Jc extends ns {
|
|
|
8497
8497
|
}));
|
|
8498
8498
|
}
|
|
8499
8499
|
}
|
|
8500
|
-
function
|
|
8500
|
+
function Xc(a, e) {
|
|
8501
8501
|
Object.values(a.components).forEach((t) => {
|
|
8502
8502
|
const { type: s, touchPointNodeName: i, visualResponses: n } = t;
|
|
8503
8503
|
if (s === G.ComponentType.TOUCHPAD)
|
|
8504
8504
|
if (t.touchPointNode = e.getObjectByName(i), t.touchPointNode) {
|
|
8505
|
-
const o = new
|
|
8505
|
+
const o = new Xn(1e-3), r = new ke({ color: 255 }), l = new as(o, r);
|
|
8506
8506
|
t.touchPointNode.add(l);
|
|
8507
8507
|
} else
|
|
8508
8508
|
console.warn(`Could not find touch dot, ${t.touchPointNodeName}, in touchpad component ${t.id}`);
|
|
@@ -8522,12 +8522,12 @@ function Wc(a, e) {
|
|
|
8522
8522
|
});
|
|
8523
8523
|
});
|
|
8524
8524
|
}
|
|
8525
|
-
function
|
|
8526
|
-
|
|
8525
|
+
function vn(a, e) {
|
|
8526
|
+
Xc(a.motionController, e), a.envMap && e.traverse((t) => {
|
|
8527
8527
|
t.isMesh && (t.material.envMap = a.envMap, t.material.needsUpdate = !0);
|
|
8528
8528
|
}), a.add(e);
|
|
8529
8529
|
}
|
|
8530
|
-
class
|
|
8530
|
+
class Zc {
|
|
8531
8531
|
/**
|
|
8532
8532
|
* Constructs a new XR controller model factory.
|
|
8533
8533
|
*
|
|
@@ -8535,7 +8535,7 @@ class Xc {
|
|
|
8535
8535
|
* @param {?Function} [onLoad=null] - A callback that is executed when a controller model has been loaded.
|
|
8536
8536
|
*/
|
|
8537
8537
|
constructor(e = null, t = null) {
|
|
8538
|
-
this.gltfLoader = e, this.path =
|
|
8538
|
+
this.gltfLoader = e, this.path = Yc, this._assetCache = {}, this.onLoad = t, this.gltfLoader || (this.gltfLoader = new Ne());
|
|
8539
8539
|
}
|
|
8540
8540
|
/**
|
|
8541
8541
|
* Sets the path to the model repository.
|
|
@@ -8553,26 +8553,26 @@ class Xc {
|
|
|
8553
8553
|
* @return {XRControllerModel} The XR controller model.
|
|
8554
8554
|
*/
|
|
8555
8555
|
createControllerModel(e) {
|
|
8556
|
-
const t = new
|
|
8556
|
+
const t = new Wc();
|
|
8557
8557
|
let s = null;
|
|
8558
8558
|
return e.addEventListener("connected", (i) => {
|
|
8559
8559
|
const n = i.data;
|
|
8560
|
-
n.targetRayMode !== "tracked-pointer" || !n.gamepad || n.hand ||
|
|
8561
|
-
t.motionController = new
|
|
8560
|
+
n.targetRayMode !== "tracked-pointer" || !n.gamepad || n.hand || Oc(n, this.path, Jc).then(({ profile: o, assetPath: r }) => {
|
|
8561
|
+
t.motionController = new Kc(
|
|
8562
8562
|
n,
|
|
8563
8563
|
o,
|
|
8564
8564
|
r
|
|
8565
8565
|
);
|
|
8566
8566
|
const l = this._assetCache[t.motionController.assetUrl];
|
|
8567
8567
|
if (l)
|
|
8568
|
-
s = l.scene.clone(),
|
|
8568
|
+
s = l.scene.clone(), vn(t, s), this.onLoad && this.onLoad(s);
|
|
8569
8569
|
else {
|
|
8570
8570
|
if (!this.gltfLoader)
|
|
8571
8571
|
throw new Error("GLTFLoader not set.");
|
|
8572
8572
|
this.gltfLoader.setPath(""), this.gltfLoader.load(
|
|
8573
8573
|
t.motionController.assetUrl,
|
|
8574
8574
|
(c) => {
|
|
8575
|
-
this._assetCache[t.motionController.assetUrl] = c, s = c.scene.clone(),
|
|
8575
|
+
this._assetCache[t.motionController.assetUrl] = c, s = c.scene.clone(), vn(t, s), this.onLoad && this.onLoad(s);
|
|
8576
8576
|
},
|
|
8577
8577
|
null,
|
|
8578
8578
|
() => {
|
|
@@ -8588,7 +8588,7 @@ class Xc {
|
|
|
8588
8588
|
}), t;
|
|
8589
8589
|
}
|
|
8590
8590
|
}
|
|
8591
|
-
class
|
|
8591
|
+
class $c {
|
|
8592
8592
|
constructor(e, t) {
|
|
8593
8593
|
this.renderer = e, this.camera = t, this.controller1 = null, this.controller2 = null, this.controllerGrip1 = null, this.controllerGrip2 = null, this.controllers = [], this.controllerGrips = [], this.buttonStates = /* @__PURE__ */ new Map(), this.inputDeadzone = 0.15, this.turnSmoothingFactor = 0.1, this.lastTurnInput = 0, this.onSelectStart = null, this.onSelectEnd = null, this.onSqueezeStart = null, this.onSqueezeEnd = null, this.onModeToggle = null, this.onMovementStart = null, this.onMovementStop = null, this.handsActive = !1, this.handStates = {
|
|
8594
8594
|
left: { pinch: !1, fist: !1, direction: new m.Vector3() },
|
|
@@ -8646,7 +8646,7 @@ class Zc {
|
|
|
8646
8646
|
}
|
|
8647
8647
|
}
|
|
8648
8648
|
initControllers() {
|
|
8649
|
-
const e = new
|
|
8649
|
+
const e = new Zc();
|
|
8650
8650
|
for (let t = 0; t < 2; t++) {
|
|
8651
8651
|
const s = this.renderer.xr.getController(t), i = this.renderer.xr.getControllerGrip(t);
|
|
8652
8652
|
i.add(e.createControllerModel(i)), this.camera.parent.add(s), this.camera.parent.add(i), this.controllers.push(s), this.controllerGrips.push(i);
|
|
@@ -8770,7 +8770,7 @@ class Zc {
|
|
|
8770
8770
|
}), this.controller1 = null, this.controller2 = null, this.controllerGrip1 = null, this.controllerGrip2 = null, this.controllers = [], this.controllerGrips = [], this.buttonStates.clear();
|
|
8771
8771
|
}
|
|
8772
8772
|
}
|
|
8773
|
-
class
|
|
8773
|
+
class eA {
|
|
8774
8774
|
constructor(e, t) {
|
|
8775
8775
|
this.scene = e, this.camera = t, this.style = {
|
|
8776
8776
|
neutralColor: 14870768,
|
|
@@ -8959,7 +8959,7 @@ class $c {
|
|
|
8959
8959
|
this.lastSnapTurnTime = 0;
|
|
8960
8960
|
}
|
|
8961
8961
|
}
|
|
8962
|
-
class
|
|
8962
|
+
class tA {
|
|
8963
8963
|
constructor(e, t) {
|
|
8964
8964
|
this.camera = e, this.renderer = t, this.MOVE_SPEED = 2, this.TURN_SPEED = 1.5, this.FLY_SPEED = 1, this.currentSpeed = 0, this.targetSpeed = 0, this.currentBoostLevel = 0, this.targetBoostLevel = 0, this.SPEED_RAMP_RATE = 3, this.BOOST_RAMP_RATE = 6, this.handMoveActive = !1, this.handMoveBoost = !1, this.handMoveDirection = new m.Vector3(), this.isMoving = !1, this.inputDeadzone = 0.15, this.turnSmoothingFactor = 0.1, this.lastTurnInput = 0, this.comfortSettings = {
|
|
8965
8965
|
locomotionMode: "smooth",
|
|
@@ -9148,7 +9148,7 @@ class eA {
|
|
|
9148
9148
|
};
|
|
9149
9149
|
}
|
|
9150
9150
|
}
|
|
9151
|
-
class
|
|
9151
|
+
class sA {
|
|
9152
9152
|
constructor() {
|
|
9153
9153
|
this.soundEnabled = !1, this.audioContext = null, this._basePath = "./sound/", this.dpvSound = null, this.dpvHighSound = null, this.ambienceSound = null, this.currentMovementSound = null, this.currentBoostSound = null, this.currentAmbienceSound = null, this.baseGainNode = null, this.boostGainNode = null, this.ambienceGainNode = null, this.baseVolumeMultiplier = 1.52, this.boostVolumeMultiplier = 1.01, this.ambienceVolume = 0.1;
|
|
9154
9154
|
}
|
|
@@ -9283,7 +9283,7 @@ class tA {
|
|
|
9283
9283
|
this.dpvSound = null, this.dpvHighSound = null, this.ambienceSound = null, this.currentMovementSound = null, this.currentBoostSound = null, this.currentAmbienceSound = null, this.baseGainNode = null, this.boostGainNode = null, this.ambienceGainNode = null, this.soundEnabled = !1;
|
|
9284
9284
|
}
|
|
9285
9285
|
}
|
|
9286
|
-
class
|
|
9286
|
+
class iA {
|
|
9287
9287
|
/**
|
|
9288
9288
|
* Creates a new VRManager instance
|
|
9289
9289
|
*
|
|
@@ -9294,7 +9294,7 @@ class sA {
|
|
|
9294
9294
|
* @param {boolean} [enableAudio=false] - Enable VR audio system
|
|
9295
9295
|
*/
|
|
9296
9296
|
constructor(e, t, s, i = "./sound/", n = !1, o = null) {
|
|
9297
|
-
this.renderer = e, this.camera = t, this.scene = s, this.audioPath = i, this.enableAudio = n, this.container = o, this.vrCore = new
|
|
9297
|
+
this.renderer = e, this.camera = t, this.scene = s, this.audioPath = i, this.enableAudio = n, this.container = o, this.vrCore = new Nc(e, t, s, o), this.vrControllers = new $c(e, t), this.vrTeleport = new eA(s, t), this.vrLocomotion = new tA(t, e), this.vrAudio = this.enableAudio ? new sA() : null, this.isVRSupported = !1, this.isVRPresenting = !1, this.controller1 = null, this.controller2 = null, this.controllerGrip1 = null, this.controllerGrip2 = null, this.controllers = [], this.controllerGrips = [], this._preVRCameraState = {
|
|
9298
9298
|
target: null,
|
|
9299
9299
|
position: null,
|
|
9300
9300
|
zoom: null,
|
|
@@ -9562,7 +9562,7 @@ class sA {
|
|
|
9562
9562
|
return this.vrLocomotion.normalizeAngle(e);
|
|
9563
9563
|
}
|
|
9564
9564
|
}
|
|
9565
|
-
class
|
|
9565
|
+
class nA {
|
|
9566
9566
|
/**
|
|
9567
9567
|
* Constructs a new AR button.
|
|
9568
9568
|
*
|
|
@@ -9624,7 +9624,7 @@ class iA {
|
|
|
9624
9624
|
}
|
|
9625
9625
|
}
|
|
9626
9626
|
}
|
|
9627
|
-
class
|
|
9627
|
+
class oA {
|
|
9628
9628
|
constructor(e, t, s, i = null) {
|
|
9629
9629
|
this.renderer = e, this.camera = t, this.scene = s, this.container = i || document.body, this.isARSupported = !1, this.isARPresenting = !1, this.isQuest2 = !1, this.isQuest3 = !1, this.arButton = null, this.buttonObserver = null, this.onSessionStart = null, this.onSessionEnd = null;
|
|
9630
9630
|
}
|
|
@@ -9658,7 +9658,7 @@ class nA {
|
|
|
9658
9658
|
requiredFeatures: ["local"],
|
|
9659
9659
|
optionalFeatures: this.getOptionalFeatures()
|
|
9660
9660
|
};
|
|
9661
|
-
this.arButton =
|
|
9661
|
+
this.arButton = nA.createButton(this.renderer, e), this.arButton.innerHTML = '<span class="ar-icon">👁️</span>ENTER AR', this.arButton.className = "ar-button--glass ar-button-available", this.arButton.disabled = !1, this.arButton.style.cssText = `
|
|
9662
9662
|
position: fixed !important;
|
|
9663
9663
|
bottom: 140px !important;
|
|
9664
9664
|
left: 50% !important;
|
|
@@ -9745,8 +9745,8 @@ class nA {
|
|
|
9745
9745
|
this.buttonObserver && (this.buttonObserver.disconnect(), this.buttonObserver = null), this.arButton && this.arButton.parentNode && this.arButton.parentNode.removeChild(this.arButton), this.isQuest2 = !1, this.isQuest3 = !1, this.isARSupported = !1, this.isARPresenting = !1;
|
|
9746
9746
|
}
|
|
9747
9747
|
}
|
|
9748
|
-
const
|
|
9749
|
-
class
|
|
9748
|
+
const Mn = new P(), xn = new v();
|
|
9749
|
+
class Qn {
|
|
9750
9750
|
/**
|
|
9751
9751
|
* Constructs a new XR hand primitive model.
|
|
9752
9752
|
*
|
|
@@ -9759,9 +9759,9 @@ class xn {
|
|
|
9759
9759
|
constructor(e, t, s, i, n) {
|
|
9760
9760
|
this.controller = t, this.handModel = e, this.envMap = null;
|
|
9761
9761
|
let o;
|
|
9762
|
-
!n || !n.primitive || n.primitive === "sphere" ? o = new
|
|
9763
|
-
const r = new
|
|
9764
|
-
this.handMesh = new
|
|
9762
|
+
!n || !n.primitive || n.primitive === "sphere" ? o = new Xn(1, 10, 10) : n.primitive === "box" && (o = new Kr(1, 1, 1));
|
|
9763
|
+
const r = new ci();
|
|
9764
|
+
this.handMesh = new li(o, r, 30), this.handMesh.frustumCulled = !1, this.handMesh.instanceMatrix.setUsage(Yr), this.handMesh.castShadow = !0, this.handMesh.receiveShadow = !0, this.handModel.add(this.handMesh), this.joints = [
|
|
9765
9765
|
"wrist",
|
|
9766
9766
|
"thumb-metacarpal",
|
|
9767
9767
|
"thumb-phalanx-proximal",
|
|
@@ -9797,13 +9797,13 @@ class xn {
|
|
|
9797
9797
|
let s = 0;
|
|
9798
9798
|
for (let i = 0; i < this.joints.length; i++) {
|
|
9799
9799
|
const n = t[this.joints[i]];
|
|
9800
|
-
n.visible && (
|
|
9800
|
+
n.visible && (xn.setScalar(n.jointRadius || 8e-3), Mn.compose(n.position, n.quaternion, xn), this.handMesh.setMatrixAt(i, Mn), s++);
|
|
9801
9801
|
}
|
|
9802
9802
|
this.handMesh.count = s, this.handMesh.instanceMatrix.needsUpdate = !0;
|
|
9803
9803
|
}
|
|
9804
9804
|
}
|
|
9805
|
-
const
|
|
9806
|
-
class
|
|
9805
|
+
const rA = "https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/";
|
|
9806
|
+
class aA {
|
|
9807
9807
|
/**
|
|
9808
9808
|
* Constructs a new XR hand mesh model.
|
|
9809
9809
|
*
|
|
@@ -9815,7 +9815,7 @@ class rA {
|
|
|
9815
9815
|
* @param {?Function} [onLoad=null] - A callback that is executed when a controller model has been loaded.
|
|
9816
9816
|
*/
|
|
9817
9817
|
constructor(e, t, s, i, n = null, o = null) {
|
|
9818
|
-
this.controller = t, this.handModel = e, this.bones = [], n === null && (n = new Ne(), n.setPath(s ||
|
|
9818
|
+
this.controller = t, this.handModel = e, this.bones = [], n === null && (n = new Ne(), n.setPath(s || rA)), n.load(`${i}.glb`, (r) => {
|
|
9819
9819
|
const l = r.scene.children[0];
|
|
9820
9820
|
this.handModel.add(l);
|
|
9821
9821
|
const c = l.getObjectByProperty("type", "SkinnedMesh");
|
|
@@ -9868,7 +9868,7 @@ class rA {
|
|
|
9868
9868
|
}
|
|
9869
9869
|
}
|
|
9870
9870
|
}
|
|
9871
|
-
class
|
|
9871
|
+
class lA extends ns {
|
|
9872
9872
|
/**
|
|
9873
9873
|
* Constructs a new XR hand model.
|
|
9874
9874
|
*
|
|
@@ -9887,7 +9887,7 @@ class aA extends ns {
|
|
|
9887
9887
|
super.updateMatrixWorld(e), this.motionController && this.motionController.updateMesh();
|
|
9888
9888
|
}
|
|
9889
9889
|
}
|
|
9890
|
-
class
|
|
9890
|
+
class cA {
|
|
9891
9891
|
/**
|
|
9892
9892
|
* Constructs a new XR hand model factory.
|
|
9893
9893
|
*
|
|
@@ -9914,18 +9914,18 @@ class lA {
|
|
|
9914
9914
|
* @return {XRHandModel} The XR hand model.
|
|
9915
9915
|
*/
|
|
9916
9916
|
createHandModel(e, t) {
|
|
9917
|
-
const s = new
|
|
9917
|
+
const s = new lA(e);
|
|
9918
9918
|
return e.addEventListener("connected", (i) => {
|
|
9919
9919
|
const n = i.data;
|
|
9920
|
-
n.hand && !s.motionController && (s.xrInputSource = n, t === void 0 || t === "spheres" ? s.motionController = new
|
|
9920
|
+
n.hand && !s.motionController && (s.xrInputSource = n, t === void 0 || t === "spheres" ? s.motionController = new Qn(s, e, this.path, n.handedness, { primitive: "sphere" }) : t === "boxes" ? s.motionController = new Qn(s, e, this.path, n.handedness, { primitive: "box" }) : t === "mesh" && (s.motionController = new aA(s, e, this.path, n.handedness, this.gltfLoader, this.onLoad))), e.visible = !0;
|
|
9921
9921
|
}), e.addEventListener("disconnected", () => {
|
|
9922
9922
|
e.visible = !1;
|
|
9923
9923
|
}), s;
|
|
9924
9924
|
}
|
|
9925
9925
|
}
|
|
9926
|
-
class
|
|
9926
|
+
class AA {
|
|
9927
9927
|
constructor(e) {
|
|
9928
|
-
this.renderer = e, this.handModelFactory = new
|
|
9928
|
+
this.renderer = e, this.handModelFactory = new cA(), this.hand1 = null, this.hand2 = null, this.interactionEnabled = !0, this.dragging = !1, this.scaling = !1, this.rotating = !1, this.dragStartPos = new m.Vector3(), this.scaleStartDistance = 0, this.rotateStartAngle = 0, this.pinchIntent = {
|
|
9929
9929
|
hand1Start: 0,
|
|
9930
9930
|
hand2Start: 0,
|
|
9931
9931
|
delay: 100
|
|
@@ -10039,7 +10039,7 @@ class cA {
|
|
|
10039
10039
|
this.hand1 && this.hand1.clear(), this.hand2 && this.hand2.clear(), this.stop();
|
|
10040
10040
|
}
|
|
10041
10041
|
}
|
|
10042
|
-
class
|
|
10042
|
+
class hA extends yt {
|
|
10043
10043
|
constructor(e, t, s, i = {}, n = null) {
|
|
10044
10044
|
super(), this.renderer = e, this.camera = t, this.scene = s, this.config = {
|
|
10045
10045
|
enableHandTracking: !0,
|
|
@@ -10048,7 +10048,7 @@ class AA extends yt {
|
|
|
10048
10048
|
worldCubeSize: 1e3,
|
|
10049
10049
|
worldCubeOpacity: 0.1,
|
|
10050
10050
|
...i
|
|
10051
|
-
}, this.container = n, this.arCore = new
|
|
10051
|
+
}, this.container = n, this.arCore = new oA(e, t, s, n), this.handTracking = this.config.enableHandTracking ? new AA(e) : null, this.modelGroup = new m.Group(), this.modelGroup.name = "AR Model Group", this.scene.add(this.modelGroup), this.currentModel = null, this.pendingModel = null, this.pendingModelConfig = null, this.currentModelScale = this.config.defaultScale, this.worldCube = null, this.config.enableWorldCube && this.createWorldCube(), this.isARPresenting = !1, this.previousGestureType = null, this.init();
|
|
10052
10052
|
}
|
|
10053
10053
|
init() {
|
|
10054
10054
|
this.arCore.init(), this.handTracking && (this.handTracking.init(this.scene), this.handTracking.onGestureStart = (e) => {
|
|
@@ -10138,7 +10138,7 @@ class AA extends yt {
|
|
|
10138
10138
|
this.arCore && this.arCore.dispose(), this.handTracking && this.handTracking.dispose(), this.worldCube && (this.scene.remove(this.worldCube), this.worldCube.geometry.dispose(), this.worldCube.material.dispose()), this.modelGroup && this.scene.remove(this.modelGroup), this.isARPresenting = !1, this.currentModel = null;
|
|
10139
10139
|
}
|
|
10140
10140
|
}
|
|
10141
|
-
class
|
|
10141
|
+
class Tn {
|
|
10142
10142
|
/**
|
|
10143
10143
|
* Initialize debug commands with a BelowViewer instance
|
|
10144
10144
|
*
|
|
@@ -10312,7 +10312,7 @@ class Qn {
|
|
|
10312
10312
|
typeof window > "u" || (delete window.camera, delete window.scene, delete window.vertices, delete window.models, delete window.particles, delete window.vr, delete window.stereo, delete window.debugHelp, delete window.belowViewer);
|
|
10313
10313
|
}
|
|
10314
10314
|
}
|
|
10315
|
-
class
|
|
10315
|
+
class dA extends yt {
|
|
10316
10316
|
/**
|
|
10317
10317
|
* Creates a new BelowViewer instance
|
|
10318
10318
|
*
|
|
@@ -10416,7 +10416,7 @@ class hA extends yt {
|
|
|
10416
10416
|
}
|
|
10417
10417
|
init() {
|
|
10418
10418
|
try {
|
|
10419
|
-
this.initRenderer(), this.sceneManager = new
|
|
10419
|
+
this.initRenderer(), this.sceneManager = new Zr(this.config.scene), this.cameraManager = new ua(this.config.camera), this.modelLoader = new $(this.renderer), this.tilesetLoader = new Uc(this.renderer, this.cameraManager.camera), this.isConstrainedSafari = this.modelLoader?.isIOSWebKit || !1, this.initStereo(), this.renderer?.getPixelRatio ? this.originalPixelRatio = this.renderer.getPixelRatio() : typeof window < "u" && (this.originalPixelRatio = window.devicePixelRatio || 1), this.pixelRatioBeforeThrottle = this.originalPixelRatio, this.isVREnabled && this.initVR(), this.isAREnabled && this.initAR(), this.cameraManager.initControls(this.renderer.domElement), this.setupEventListeners(), this.startRenderLoop(), this.isInitialized = !0, typeof window < "u" && Tn.init(this), this.emit("initialized");
|
|
10420
10420
|
} catch (e) {
|
|
10421
10421
|
console.error("Failed to initialize BelowViewer:", e), this.emit("error", e);
|
|
10422
10422
|
}
|
|
@@ -10444,7 +10444,7 @@ class hA extends yt {
|
|
|
10444
10444
|
initVR() {
|
|
10445
10445
|
this.dolly = new m.Group(), this.dolly.add(this.cameraManager.camera), this.sceneManager.scene.add(this.dolly);
|
|
10446
10446
|
const e = this.config.audioPath || "./sound/", t = this.config.enableVRAudio === !0;
|
|
10447
|
-
this.vrManager = new
|
|
10447
|
+
this.vrManager = new iA(this.renderer, this.cameraManager.camera, this.sceneManager.scene, e, t, this.container), this.vrManager.setControls(this.cameraManager.controls), this.config.initialPositions && this.vrManager.setInitialPositions(this.config.initialPositions), this.vrManager.onModeToggle = () => {
|
|
10448
10448
|
this.emit("vr-mode-toggle");
|
|
10449
10449
|
}, this.vrManager.onMovementStart = () => {
|
|
10450
10450
|
this.emit("vr-movement-start");
|
|
@@ -10464,7 +10464,7 @@ class hA extends yt {
|
|
|
10464
10464
|
}
|
|
10465
10465
|
initAR() {
|
|
10466
10466
|
const e = this.config.ar?.settings || {};
|
|
10467
|
-
this.arManager = new
|
|
10467
|
+
this.arManager = new hA(
|
|
10468
10468
|
this.renderer,
|
|
10469
10469
|
this.cameraManager.camera,
|
|
10470
10470
|
this.sceneManager.scene,
|
|
@@ -10819,7 +10819,7 @@ class hA extends yt {
|
|
|
10819
10819
|
* @since 1.0.0
|
|
10820
10820
|
*/
|
|
10821
10821
|
dispose() {
|
|
10822
|
-
this.currentAbortController && this.currentAbortController.abort(), typeof window < "u" &&
|
|
10822
|
+
this.currentAbortController && this.currentAbortController.abort(), typeof window < "u" && Tn.cleanup(), this.vrManager && (this.vrManager.dispose(), this.vrManager = null), this.arManager && (this.arManager.dispose(), this.arManager = null), this.renderer && this.renderer.setAnimationLoop(null), this.loadedModels.forEach(({ model: e, tileset: t }) => {
|
|
10823
10823
|
e.parent && e.parent.remove(e), t && this.tilesetLoader && this.tilesetLoader.disposeTileset(t), Ms(e);
|
|
10824
10824
|
}), this.loadedModels = [], this.cameraManager && (this.cameraManager.dispose(), this.cameraManager = null), this.renderer && (this.renderer.dispose(), this.renderer.domElement && this.renderer.domElement.parentNode && this.renderer.domElement.parentNode.removeChild(this.renderer.domElement), this.renderer = null), this.modelLoader && (this.modelLoader.dispose(), this.modelLoader = null), this.tilesetLoader && (this.tilesetLoader.dispose(), this.tilesetLoader = null), window.removeEventListener("resize", this.onWindowResize.bind(this)), this.removeAllListeners(), this.isInitialized = !1;
|
|
10825
10825
|
}
|
|
@@ -10933,8 +10933,8 @@ class hA extends yt {
|
|
|
10933
10933
|
t && e.vr && this.vrManager ? this.vrManager.applyVRPositions(e) : !t && e.desktop && this.applyDesktopPositions(e.desktop);
|
|
10934
10934
|
}
|
|
10935
10935
|
}
|
|
10936
|
-
const
|
|
10937
|
-
class
|
|
10936
|
+
const Rn = new it(), Ht = new v();
|
|
10937
|
+
class tr extends Jr {
|
|
10938
10938
|
/**
|
|
10939
10939
|
* Constructs a new line segments geometry.
|
|
10940
10940
|
*/
|
|
@@ -11004,7 +11004,7 @@ class er extends Yr {
|
|
|
11004
11004
|
* @return {LineSegmentsGeometry} A reference to this geometry.
|
|
11005
11005
|
*/
|
|
11006
11006
|
fromMesh(e) {
|
|
11007
|
-
return this.fromWireframeGeometry(new
|
|
11007
|
+
return this.fromWireframeGeometry(new Wr(e.geometry)), this;
|
|
11008
11008
|
}
|
|
11009
11009
|
/**
|
|
11010
11010
|
* Setups this line segments geometry from the given line segments.
|
|
@@ -11020,7 +11020,7 @@ class er extends Yr {
|
|
|
11020
11020
|
computeBoundingBox() {
|
|
11021
11021
|
this.boundingBox === null && (this.boundingBox = new it());
|
|
11022
11022
|
const e = this.attributes.instanceStart, t = this.attributes.instanceEnd;
|
|
11023
|
-
e !== void 0 && t !== void 0 && (this.boundingBox.setFromBufferAttribute(e),
|
|
11023
|
+
e !== void 0 && t !== void 0 && (this.boundingBox.setFromBufferAttribute(e), Rn.setFromBufferAttribute(t), this.boundingBox.union(Rn));
|
|
11024
11024
|
}
|
|
11025
11025
|
computeBoundingSphere() {
|
|
11026
11026
|
this.boundingSphere === null && (this.boundingSphere = new Et()), this.boundingBox === null && this.computeBoundingBox();
|
|
@@ -11048,7 +11048,7 @@ Yt.line = {
|
|
|
11048
11048
|
// todo FIX - maybe change to totalSize
|
|
11049
11049
|
};
|
|
11050
11050
|
Kt.line = {
|
|
11051
|
-
uniforms:
|
|
11051
|
+
uniforms: Zn.merge([
|
|
11052
11052
|
Yt.common,
|
|
11053
11053
|
Yt.fog,
|
|
11054
11054
|
Yt.line
|
|
@@ -11431,7 +11431,7 @@ Kt.line = {
|
|
|
11431
11431
|
`
|
|
11432
11432
|
)
|
|
11433
11433
|
};
|
|
11434
|
-
class ss extends
|
|
11434
|
+
class ss extends Wn {
|
|
11435
11435
|
/**
|
|
11436
11436
|
* Constructs a new line segments geometry.
|
|
11437
11437
|
*
|
|
@@ -11444,7 +11444,7 @@ class ss extends Jn {
|
|
|
11444
11444
|
constructor(e) {
|
|
11445
11445
|
super({
|
|
11446
11446
|
type: "LineMaterial",
|
|
11447
|
-
uniforms:
|
|
11447
|
+
uniforms: Zn.clone(Kt.line.uniforms),
|
|
11448
11448
|
vertexShader: Kt.line.vertexShader,
|
|
11449
11449
|
fragmentShader: Kt.line.fragmentShader,
|
|
11450
11450
|
clipping: !0
|
|
@@ -11586,12 +11586,12 @@ class ss extends Jn {
|
|
|
11586
11586
|
this.defines && (e === !0 !== this.alphaToCoverage && (this.needsUpdate = !0), e === !0 ? this.defines.USE_ALPHA_TO_COVERAGE = "" : delete this.defines.USE_ALPHA_TO_COVERAGE);
|
|
11587
11587
|
}
|
|
11588
11588
|
}
|
|
11589
|
-
const Vs = new nt(),
|
|
11589
|
+
const Vs = new nt(), Dn = new v(), Ln = new v(), V = new nt(), O = new nt(), Ae = new nt(), Os = new v(), Hs = new P(), H = new Xr(), Fn = new v(), qt = new it(), zt = new Et(), he = new nt();
|
|
11590
11590
|
let de, Pe;
|
|
11591
|
-
function
|
|
11591
|
+
function kn(a, e, t) {
|
|
11592
11592
|
return he.set(0, 0, -e, 1).applyMatrix4(a.projectionMatrix), he.multiplyScalar(1 / he.w), he.x = Pe / t.width, he.y = Pe / t.height, he.applyMatrix4(a.projectionMatrixInverse), he.multiplyScalar(1 / he.w), Math.abs(Math.max(he.x, he.y));
|
|
11593
11593
|
}
|
|
11594
|
-
function
|
|
11594
|
+
function uA(a, e) {
|
|
11595
11595
|
const t = a.matrixWorld, s = a.geometry, i = s.attributes.instanceStart, n = s.attributes.instanceEnd, o = Math.min(s.instanceCount, i.count);
|
|
11596
11596
|
for (let r = 0, l = o; r < l; r++) {
|
|
11597
11597
|
H.start.fromBufferAttribute(i, r), H.end.fromBufferAttribute(n, r), H.applyMatrix4(t);
|
|
@@ -11608,7 +11608,7 @@ function dA(a, e) {
|
|
|
11608
11608
|
});
|
|
11609
11609
|
}
|
|
11610
11610
|
}
|
|
11611
|
-
function
|
|
11611
|
+
function gA(a, e, t) {
|
|
11612
11612
|
const s = e.projectionMatrix, n = a.material.resolution, o = a.matrixWorld, r = a.geometry, l = r.attributes.instanceStart, c = r.attributes.instanceEnd, A = Math.min(r.instanceCount, l.count), h = -e.near;
|
|
11613
11613
|
de.at(1, Ae), Ae.w = 1, Ae.applyMatrix4(e.matrixWorldInverse), Ae.applyMatrix4(s), Ae.multiplyScalar(1 / Ae.w), Ae.x *= n.x / 2, Ae.y *= n.y / 2, Ae.z = 0, Os.copy(Ae), Hs.multiplyMatrices(e.matrixWorldInverse, o);
|
|
11614
11614
|
for (let d = 0, u = A; d < u; d++) {
|
|
@@ -11623,8 +11623,8 @@ function uA(a, e, t) {
|
|
|
11623
11623
|
}
|
|
11624
11624
|
V.applyMatrix4(s), O.applyMatrix4(s), V.multiplyScalar(1 / V.w), O.multiplyScalar(1 / O.w), V.x *= n.x / 2, V.y *= n.y / 2, O.x *= n.x / 2, O.y *= n.y / 2, H.start.copy(V), H.start.z = 0, H.end.copy(O), H.end.z = 0;
|
|
11625
11625
|
const p = H.closestPointToPointParameter(Os, !0);
|
|
11626
|
-
H.at(p,
|
|
11627
|
-
const b = st.lerp(V.z, O.z, p), E = b >= -1 && b <= 1, C = Os.distanceTo(
|
|
11626
|
+
H.at(p, Fn);
|
|
11627
|
+
const b = st.lerp(V.z, O.z, p), E = b >= -1 && b <= 1, C = Os.distanceTo(Fn) < Pe * 0.5;
|
|
11628
11628
|
if (E && C) {
|
|
11629
11629
|
H.start.fromBufferAttribute(l, d), H.end.fromBufferAttribute(c, d), H.start.applyMatrix4(o), H.end.applyMatrix4(o);
|
|
11630
11630
|
const y = new v(), f = new v();
|
|
@@ -11641,14 +11641,14 @@ function uA(a, e, t) {
|
|
|
11641
11641
|
}
|
|
11642
11642
|
}
|
|
11643
11643
|
}
|
|
11644
|
-
class
|
|
11644
|
+
class pA extends as {
|
|
11645
11645
|
/**
|
|
11646
11646
|
* Constructs a new wide line.
|
|
11647
11647
|
*
|
|
11648
11648
|
* @param {LineSegmentsGeometry} [geometry] - The line geometry.
|
|
11649
11649
|
* @param {LineMaterial} [material] - The line material.
|
|
11650
11650
|
*/
|
|
11651
|
-
constructor(e = new
|
|
11651
|
+
constructor(e = new tr(), t = new ss({ color: Math.random() * 16777215 })) {
|
|
11652
11652
|
super(e, t), this.isLineSegments2 = !0, this.type = "LineSegments2";
|
|
11653
11653
|
}
|
|
11654
11654
|
/**
|
|
@@ -11661,7 +11661,7 @@ class gA extends as {
|
|
|
11661
11661
|
computeLineDistances() {
|
|
11662
11662
|
const e = this.geometry, t = e.attributes.instanceStart, s = e.attributes.instanceEnd, i = new Float32Array(2 * t.count);
|
|
11663
11663
|
for (let o = 0, r = 0, l = t.count; o < l; o++, r += 2)
|
|
11664
|
-
|
|
11664
|
+
Dn.fromBufferAttribute(t, o), Ln.fromBufferAttribute(s, o), i[r] = r === 0 ? 0 : i[r - 1], i[r + 1] = i[r] + Dn.distanceTo(Ln);
|
|
11665
11665
|
const n = new Xs(i, 2, 1);
|
|
11666
11666
|
return e.setAttribute("instanceDistanceStart", new Fe(n, 1, 0)), e.setAttribute("instanceDistanceEnd", new Fe(n, 1, 1)), this;
|
|
11667
11667
|
}
|
|
@@ -11683,7 +11683,7 @@ class gA extends as {
|
|
|
11683
11683
|
c = Pe * 0.5;
|
|
11684
11684
|
else {
|
|
11685
11685
|
const h = Math.max(i.near, zt.distanceToPoint(de.origin));
|
|
11686
|
-
c =
|
|
11686
|
+
c = kn(i, h, l.resolution);
|
|
11687
11687
|
}
|
|
11688
11688
|
if (zt.radius += c, de.intersectsSphere(zt) === !1)
|
|
11689
11689
|
return;
|
|
@@ -11693,16 +11693,16 @@ class gA extends as {
|
|
|
11693
11693
|
A = Pe * 0.5;
|
|
11694
11694
|
else {
|
|
11695
11695
|
const h = Math.max(i.near, qt.distanceToPoint(de.origin));
|
|
11696
|
-
A =
|
|
11696
|
+
A = kn(i, h, l.resolution);
|
|
11697
11697
|
}
|
|
11698
|
-
qt.expandByScalar(A), de.intersectsBox(qt) !== !1 && (s ?
|
|
11698
|
+
qt.expandByScalar(A), de.intersectsBox(qt) !== !1 && (s ? uA(this, t) : gA(this, i, t));
|
|
11699
11699
|
}
|
|
11700
11700
|
onBeforeRender(e) {
|
|
11701
11701
|
const t = this.material.uniforms;
|
|
11702
11702
|
t && t.resolution && (e.getViewport(Vs), this.material.uniforms.resolution.value.set(Vs.z, Vs.w));
|
|
11703
11703
|
}
|
|
11704
11704
|
}
|
|
11705
|
-
class oi extends
|
|
11705
|
+
class oi extends tr {
|
|
11706
11706
|
/**
|
|
11707
11707
|
* Constructs a new line geometry.
|
|
11708
11708
|
*/
|
|
@@ -11756,7 +11756,7 @@ class oi extends er {
|
|
|
11756
11756
|
return this.setPositions(t.attributes.position.array), this;
|
|
11757
11757
|
}
|
|
11758
11758
|
}
|
|
11759
|
-
class
|
|
11759
|
+
class _n extends pA {
|
|
11760
11760
|
/**
|
|
11761
11761
|
* Constructs a new wide line.
|
|
11762
11762
|
*
|
|
@@ -11767,7 +11767,7 @@ class kn extends gA {
|
|
|
11767
11767
|
super(e, t), this.isLine2 = !0, this.type = "Line2";
|
|
11768
11768
|
}
|
|
11769
11769
|
}
|
|
11770
|
-
class
|
|
11770
|
+
class fA {
|
|
11771
11771
|
/**
|
|
11772
11772
|
* Set the objects to use for raycasting during measurement
|
|
11773
11773
|
*
|
|
@@ -11971,7 +11971,7 @@ class pA {
|
|
|
11971
11971
|
this.desktopMeasurementPoints[1].position.x,
|
|
11972
11972
|
this.desktopMeasurementPoints[1].position.y,
|
|
11973
11973
|
this.desktopMeasurementPoints[1].position.z
|
|
11974
|
-
]), this.desktopMeasurementLine = new
|
|
11974
|
+
]), this.desktopMeasurementLine = new _n(e, this.desktopLineMaterial), this.desktopMeasurementLine.computeLineDistances(), this.scene.add(this.desktopMeasurementLine);
|
|
11975
11975
|
const t = this.desktopMeasurementPoints[0].position.distanceTo(this.desktopMeasurementPoints[1].position);
|
|
11976
11976
|
if (this.createMeasurementDisplay(t), this.measurementSprite) {
|
|
11977
11977
|
const s = new m.Vector3();
|
|
@@ -12121,7 +12121,7 @@ class pA {
|
|
|
12121
12121
|
t.x,
|
|
12122
12122
|
t.y,
|
|
12123
12123
|
t.z
|
|
12124
|
-
]), this.unifiedMeasurementLine = new
|
|
12124
|
+
]), this.unifiedMeasurementLine = new _n(s, this.desktopLineMaterial), this.unifiedMeasurementLine.computeLineDistances(), this.unifiedMeasurementLine.userData.isMeasurementLine = !0, this.scene.add(this.unifiedMeasurementLine);
|
|
12125
12125
|
const i = e.distanceTo(t);
|
|
12126
12126
|
this.createMeasurementDisplay(i);
|
|
12127
12127
|
const n = i * 100 <= 20 ? 0.125 : 0.5;
|
|
@@ -12309,7 +12309,7 @@ class pA {
|
|
|
12309
12309
|
}
|
|
12310
12310
|
}
|
|
12311
12311
|
}
|
|
12312
|
-
class
|
|
12312
|
+
class Ei {
|
|
12313
12313
|
constructor(e, t = {}) {
|
|
12314
12314
|
this.vrManager = e, this.isComfortMode = !1, this._iconRendered = !1, this.lastToggleAt = 0, this.options = {
|
|
12315
12315
|
containerId: t.containerId || "modelSelector",
|
|
@@ -12603,10 +12603,10 @@ class Ci {
|
|
|
12603
12603
|
this.vrManager = null;
|
|
12604
12604
|
}
|
|
12605
12605
|
static create(e, t = {}) {
|
|
12606
|
-
return new
|
|
12606
|
+
return new Ei(e, t);
|
|
12607
12607
|
}
|
|
12608
12608
|
}
|
|
12609
|
-
class
|
|
12609
|
+
class mA {
|
|
12610
12610
|
constructor(e) {
|
|
12611
12611
|
this.scene = e, this.particleBounds = {
|
|
12612
12612
|
min: new m.Vector3(-50, -25, -50),
|
|
@@ -12808,7 +12808,7 @@ class fA {
|
|
|
12808
12808
|
this.particles && (this.scene.remove(this.particles), this.particles.geometry && this.particles.geometry.dispose(), this.particles.material && this.particles.material.dispose(), this.particles = null);
|
|
12809
12809
|
}
|
|
12810
12810
|
}
|
|
12811
|
-
class
|
|
12811
|
+
class bA {
|
|
12812
12812
|
constructor(e) {
|
|
12813
12813
|
this.scene = e, this.controllerSpotlight = null, this.spotlightTarget = null, this.isQuest2 = !1, this.isQuest3 = !1, this.detectQuestDevice(), this.createSpotlight();
|
|
12814
12814
|
}
|
|
@@ -12915,7 +12915,7 @@ class mA {
|
|
|
12915
12915
|
this.controllerSpotlight && (this.scene.remove(this.controllerSpotlight), this.controllerSpotlight = null), this.spotlightTarget && (this.scene.remove(this.spotlightTarget), this.spotlightTarget = null);
|
|
12916
12916
|
}
|
|
12917
12917
|
}
|
|
12918
|
-
class
|
|
12918
|
+
class CA {
|
|
12919
12919
|
constructor(e) {
|
|
12920
12920
|
this.scene = e, this.overheadLight = null, this.clearModeDirectionalLight = null, this.clearModeHemisphereLight = null, this.isTransitioning = !1, this.currentMode = "survey", this.pendingAnimations = /* @__PURE__ */ new Set(), this.isDisposed = !1, this.initializeLighting();
|
|
12921
12921
|
}
|
|
@@ -13009,9 +13009,9 @@ class bA {
|
|
|
13009
13009
|
});
|
|
13010
13010
|
}
|
|
13011
13011
|
}
|
|
13012
|
-
class
|
|
13012
|
+
class EA {
|
|
13013
13013
|
constructor(e, t, s) {
|
|
13014
|
-
this.scene = e, this.renderer = t, this.camera = s, this.isDiveModeEnabled = !1, this.currentVRMode = null, this.lighting = new
|
|
13014
|
+
this.scene = e, this.renderer = t, this.camera = s, this.isDiveModeEnabled = !1, this.currentVRMode = null, this.lighting = new CA(e), this.particles = new mA(e), this.torch = new bA(e), this.isQuest2 = !1, this.isQuest3 = !1, this._fallbackHandedness = /* @__PURE__ */ new Map(), this.detectQuestDevice(), this.applyModeSettings();
|
|
13015
13015
|
}
|
|
13016
13016
|
/**
|
|
13017
13017
|
* Toggle between dive and survey modes
|
|
@@ -13202,7 +13202,7 @@ class CA {
|
|
|
13202
13202
|
this.lighting.dispose(), this.particles.dispose(), this.torch.dispose();
|
|
13203
13203
|
}
|
|
13204
13204
|
}
|
|
13205
|
-
class
|
|
13205
|
+
class yA extends yt {
|
|
13206
13206
|
/**
|
|
13207
13207
|
* @param {Object} options
|
|
13208
13208
|
* @param {HTMLElement} options.domElement - Element used for pointer lock
|
|
@@ -13310,7 +13310,12 @@ class EA extends yt {
|
|
|
13310
13310
|
this.pointerLocked && this.exitFlyMode();
|
|
13311
13311
|
}
|
|
13312
13312
|
}
|
|
13313
|
-
class
|
|
13313
|
+
class ri extends yt {
|
|
13314
|
+
static _isEditableTarget(e) {
|
|
13315
|
+
if (!(e instanceof HTMLElement)) return !1;
|
|
13316
|
+
const t = e.tagName;
|
|
13317
|
+
return t === "INPUT" || t === "SELECT" || t === "TEXTAREA" || e.isContentEditable;
|
|
13318
|
+
}
|
|
13314
13319
|
/**
|
|
13315
13320
|
* Creates a new ModelViewer instance
|
|
13316
13321
|
*
|
|
@@ -13365,7 +13370,7 @@ class PA extends yt {
|
|
|
13365
13370
|
...this.config.audioPath && { audioPath: this.config.audioPath },
|
|
13366
13371
|
...typeof this.config.enableVRAudio < "u" && { enableVRAudio: this.config.enableVRAudio }
|
|
13367
13372
|
};
|
|
13368
|
-
if (this.belowViewer = new
|
|
13373
|
+
if (this.belowViewer = new dA(this.container, e), this.setupEventForwarding(), this.setupRecoveryHandlers(), this.belowViewer.on("initialized", () => {
|
|
13369
13374
|
this.setupRecoveryHandlers(), this.setupFocusInteraction(), this._maybeAttachMeasurementSystem(), this._maybeAttachVRComfortGlyph(), this._maybeAttachDiveSystem(), this._maybeAttachScreenshotButton(), this._maybeAttachFullscreenButton(), this._maybeAttachFlyControls();
|
|
13370
13375
|
}), this.belowViewer.isInitialized && (this.setupRecoveryHandlers(), this.setupFocusInteraction(), this._maybeAttachMeasurementSystem(), this._maybeAttachVRComfortGlyph(), this._maybeAttachDiveSystem(), this._maybeAttachScreenshotButton(), this._maybeAttachFullscreenButton(), this._maybeAttachFlyControls()), Object.keys(this.config.models).length > 0 && (this.createUI(), this.populateDropdown(), this.config.autoLoadFirst)) {
|
|
13371
13376
|
const t = Object.keys(this.config.models)[0];
|
|
@@ -13374,7 +13379,7 @@ class PA extends yt {
|
|
|
13374
13379
|
}
|
|
13375
13380
|
_maybeAttachMeasurementSystem() {
|
|
13376
13381
|
if (!this.config.enableMeasurement || this.measurementSystem) return;
|
|
13377
|
-
this.measurementSystem = new
|
|
13382
|
+
this.measurementSystem = new fA({
|
|
13378
13383
|
scene: this.belowViewer.sceneManager.scene,
|
|
13379
13384
|
camera: this.belowViewer.cameraManager.camera,
|
|
13380
13385
|
renderer: this.belowViewer.renderer,
|
|
@@ -13418,7 +13423,7 @@ class PA extends yt {
|
|
|
13418
13423
|
}
|
|
13419
13424
|
async _maybeAttachVRComfortGlyph() {
|
|
13420
13425
|
if (!this.config.enableVRComfortGlyph || this.comfortGlyph || !this.belowViewer.vrManager || !this.belowViewer.vrManager.vrCore || (await this.belowViewer.vrManager.vrCore.checkVRSupported(), !this.belowViewer.vrManager.vrCore.isVRSupported)) return;
|
|
13421
|
-
this.comfortGlyph = new
|
|
13426
|
+
this.comfortGlyph = new Ei(this.belowViewer.vrManager, {
|
|
13422
13427
|
position: "bottom-right",
|
|
13423
13428
|
offsetX: 20,
|
|
13424
13429
|
offsetY: 70
|
|
@@ -13456,24 +13461,26 @@ class PA extends yt {
|
|
|
13456
13461
|
};
|
|
13457
13462
|
}
|
|
13458
13463
|
document.addEventListener("keydown", (i) => {
|
|
13459
|
-
i.code === "KeyC" && (i.ctrlKey || i.metaKey) && (i.preventDefault(), this.comfortGlyph && this.comfortGlyph.toggle());
|
|
13464
|
+
ri._isEditableTarget(i.target) || i.code === "KeyC" && (i.ctrlKey || i.metaKey) && (i.preventDefault(), this.comfortGlyph && this.comfortGlyph.toggle());
|
|
13460
13465
|
}), window.addEventListener("beforeunload", () => this.comfortGlyph && this.comfortGlyph.dispose());
|
|
13461
13466
|
}
|
|
13462
13467
|
_maybeAttachDiveSystem() {
|
|
13463
13468
|
if (!this.config.enableDiveSystem || this.diveSystem) return;
|
|
13464
|
-
this.diveSystem = new
|
|
13469
|
+
this.diveSystem = new EA(
|
|
13465
13470
|
this.belowViewer.sceneManager.scene,
|
|
13466
13471
|
this.belowViewer.renderer,
|
|
13467
13472
|
this.belowViewer.cameraManager.camera
|
|
13468
13473
|
), setTimeout(() => {
|
|
13469
13474
|
this.diveSystem.initializeToggleSwitch();
|
|
13470
13475
|
}, 100), document.addEventListener("keydown", (t) => {
|
|
13471
|
-
if (
|
|
13472
|
-
if (
|
|
13473
|
-
|
|
13474
|
-
|
|
13476
|
+
if (!ri._isEditableTarget(t.target)) {
|
|
13477
|
+
if (t.code === "KeyZ" && !t.ctrlKey && !t.metaKey && !t.altKey) {
|
|
13478
|
+
if (this.belowViewer?.arManager?.isActive?.())
|
|
13479
|
+
return;
|
|
13480
|
+
t.preventDefault(), this.diveSystem && this.diveSystem.toggleDiveMode();
|
|
13481
|
+
}
|
|
13482
|
+
t.code === "KeyH" && !t.ctrlKey && !t.metaKey && !t.altKey && (t.preventDefault(), this.takeScreenshot());
|
|
13475
13483
|
}
|
|
13476
|
-
t.code === "KeyH" && !t.ctrlKey && !t.metaKey && !t.altKey && (t.preventDefault(), this.takeScreenshot());
|
|
13477
13484
|
});
|
|
13478
13485
|
const e = (t) => {
|
|
13479
13486
|
if (this.diveSystem) {
|
|
@@ -13506,7 +13513,7 @@ class PA extends yt {
|
|
|
13506
13513
|
}
|
|
13507
13514
|
_maybeAttachFlyControls() {
|
|
13508
13515
|
if (!this.config.enableFlyControls || this.flyControls || !this.belowViewer?.cameraManager || !this.belowViewer?.renderer) return;
|
|
13509
|
-
this.flyControls = new
|
|
13516
|
+
this.flyControls = new yA({
|
|
13510
13517
|
domElement: this.belowViewer.renderer.domElement,
|
|
13511
13518
|
camera: this.belowViewer.cameraManager.camera,
|
|
13512
13519
|
controls: this.belowViewer.cameraManager.controls,
|
|
@@ -14423,16 +14430,16 @@ class PA extends yt {
|
|
|
14423
14430
|
}
|
|
14424
14431
|
}
|
|
14425
14432
|
export {
|
|
14426
|
-
|
|
14427
|
-
|
|
14433
|
+
dA as BelowViewer,
|
|
14434
|
+
ua as Camera,
|
|
14428
14435
|
cs as ConfigValidator,
|
|
14429
14436
|
yt as EventSystem,
|
|
14430
|
-
|
|
14431
|
-
|
|
14437
|
+
yA as FlyControls,
|
|
14438
|
+
_n as Line2,
|
|
14432
14439
|
oi as LineGeometry,
|
|
14433
14440
|
ss as LineMaterial,
|
|
14434
14441
|
$ as ModelLoader,
|
|
14435
|
-
|
|
14436
|
-
|
|
14437
|
-
|
|
14442
|
+
ri as ModelViewer,
|
|
14443
|
+
Zr as Scene,
|
|
14444
|
+
iA as VRManager
|
|
14438
14445
|
};
|