aptechka 0.5.42 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Animation-6Na1MCtM.cjs +1 -0
- package/lib/Animation-CELiTw3n.js +132 -0
- package/lib/Composed-DmLYTh1b.js +35 -0
- package/lib/Composed-Dx2hs-va.cjs +1 -0
- package/lib/{Damped-P4MkCGoY.js → Damped-Mx_FNNVz.js} +2 -5
- package/lib/Damped-loFiBsBy.cjs +1 -0
- package/lib/{Derived-kPJs5JC5.js → Derived-DlCvc0xQ.js} +1 -1
- package/lib/{Derived-B-g8dYgh.cjs → Derived-a6MDQEPY.cjs} +1 -1
- package/lib/ElementConstructor-CAZ2ra8m.cjs +1 -0
- package/lib/ElementConstructor-OYlPJf2L.js +366 -0
- package/lib/Resource-D3TQormz.cjs +1 -0
- package/lib/Resource-DIcoALGo.js +64 -0
- package/lib/{SourceManager-Q-PB-Rkh.js → SourceManager-Bz329f90.js} +1 -1
- package/lib/{SourceManager-vSlsMKUE.cjs → SourceManager-kxr5eUyL.cjs} +1 -1
- package/lib/Store-6s0YXK4o.cjs +1 -0
- package/lib/{Store-BQXXikps.js → Store-BI2xxXOA.js} +42 -42
- package/lib/Tweened-B_mclQ61.cjs +1 -0
- package/lib/Tweened-NE8M9onF.js +48 -0
- package/lib/{Viewport-DMB0dO-s.cjs → Viewport-CJeKnL5V.cjs} +1 -1
- package/lib/{Viewport-CFFhFKqX.js → Viewport-D9IL7kUQ.js} +1 -1
- package/lib/_createStore-Cf1MyeHa.cjs +1 -0
- package/lib/_createStore-Ck9bHolX.js +12 -0
- package/lib/accordion/AccordionElement.d.ts +5 -2
- package/lib/accordion/index.cjs +1 -1
- package/lib/accordion/index.js +141 -105
- package/lib/animation/Animation.d.ts +11 -19
- package/lib/animation/Damped.d.ts +4 -6
- package/lib/animation/Tweened.d.ts +2 -4
- package/lib/animation/index.cjs +1 -1
- package/lib/animation/index.js +3 -3
- package/lib/attribute/index.cjs +1 -1
- package/lib/attribute/index.d.ts +1 -1
- package/lib/attribute/index.js +31 -31
- package/lib/canvas/index.cjs +1 -1
- package/lib/canvas/index.d.ts +1 -1
- package/lib/canvas/index.js +29 -29
- package/lib/checkbox/index.cjs +1 -1
- package/lib/checkbox/index.js +20 -20
- package/lib/class-linked-status/index.cjs +1 -1
- package/lib/class-linked-status/index.js +1 -1
- package/lib/controls/AutoplayControls.d.ts +1 -1
- package/lib/controls/DragControls.d.ts +1 -1
- package/lib/controls/WheelControls.d.ts +1 -1
- package/lib/controls/index.cjs +1 -1
- package/lib/controls/index.js +3 -3
- package/lib/counter/index.d.ts +8 -0
- package/lib/{createStylesheet-DBCEbDjI.js → createStylesheet-CR_yi5tp.js} +1 -1
- package/lib/{createStylesheet-CqHU9_qv.cjs → createStylesheet-p23sZ7Ey.cjs} +1 -1
- package/lib/css-property/index.cjs +1 -1
- package/lib/css-property/index.d.ts +2 -1
- package/lib/css-property/index.js +36 -32
- package/lib/custom-element/index.d.ts +1 -4
- package/lib/dev/index.cjs +1 -1
- package/lib/dev/index.js +1 -1
- package/lib/device/index.cjs +1 -1
- package/lib/device/index.js +1 -1
- package/lib/element-constructor/ElementConstructor.d.ts +2 -2
- package/lib/element-constructor/index.cjs +1 -1
- package/lib/element-constructor/index.js +114 -113
- package/lib/en3/core/En3Raycaster.d.ts +20 -0
- package/lib/en3/core/En3View.d.ts +1 -1
- package/lib/en3/core/en3.d.ts +7 -3
- package/lib/en3/helpers/En3Controls.d.ts +5 -0
- package/lib/en3/helpers/En3GridHelper.d.ts +8 -0
- package/lib/en3/helpers/En3Object3dManager.d.ts +12 -0
- package/lib/en3/helpers/En3OrbitControls.d.ts +8 -0
- package/lib/en3/helpers/En3TransformControls.d.ts +8 -0
- package/lib/en3/helpers/index.cjs +1 -0
- package/lib/en3/helpers/index.d.ts +2 -0
- package/lib/en3/helpers/index.js +1165 -0
- package/lib/en3/index.cjs +1 -215
- package/lib/en3/index.d.ts +1 -19
- package/lib/en3/index.js +4 -4227
- package/lib/en3/libs/index.cjs +1 -0
- package/lib/en3/libs/index.d.ts +1 -0
- package/lib/en3/libs/index.js +201 -0
- package/lib/en3/loaders/_En3GLTFLoader.d.ts +12 -0
- package/lib/en3/loaders/_En3TextureLoader.d.ts +8 -0
- package/lib/en3/loaders/index.cjs +1 -0
- package/lib/en3/loaders/index.d.ts +3 -0
- package/lib/en3/loaders/index.js +1757 -0
- package/lib/en3/loaders/loaders.d.ts +13 -0
- package/lib/en3/misc/index.cjs +10 -0
- package/lib/en3/misc/index.d.ts +2 -0
- package/lib/en3/misc/index.js +115 -0
- package/lib/en3/objects/En3Clip.d.ts +1 -1
- package/lib/en3/objects/En3ClipHelpers.d.ts +1 -1
- package/lib/en3/objects/En3GLTF.d.ts +4 -3
- package/lib/en3/objects/En3Image.d.ts +1 -1
- package/lib/en3/objects/En3ImageLike.d.ts +3 -2
- package/lib/en3/objects/En3SourceConsumer.d.ts +1 -1
- package/lib/en3/objects/En3Video.d.ts +1 -1
- package/lib/en3/objects/fluid/Advection.d.ts +1 -1
- package/lib/en3/objects/fluid/Divergence.d.ts +1 -1
- package/lib/en3/objects/fluid/En3Fluid.d.ts +1 -1
- package/lib/en3/objects/fluid/En3FluidElement.d.ts +1 -1
- package/lib/en3/objects/fluid/ExternalForce.d.ts +1 -1
- package/lib/en3/objects/fluid/Poisson.d.ts +1 -1
- package/lib/en3/objects/fluid/Pressure.d.ts +1 -1
- package/lib/en3/objects/fluid/Simulation.d.ts +1 -1
- package/lib/en3/objects/fluid/Viscous.d.ts +1 -1
- package/lib/en3/objects/fluid/index.d.ts +0 -3
- package/lib/en3/objects/index.d.ts +7 -0
- package/lib/en3/utils/coverTexture.d.ts +1 -1
- package/lib/en3/utils/index.cjs +1 -0
- package/lib/en3/utils/index.d.ts +5 -0
- package/lib/en3/utils/index.js +43 -0
- package/lib/en3-C4mzaF6q.cjs +8 -0
- package/lib/en3-hbkN1OPu.js +343 -0
- package/lib/globals-DMjysUXI.js +8 -0
- package/lib/globals-bYKki-b9.cjs +1 -0
- package/lib/image/index.cjs +1 -1
- package/lib/image/index.js +1 -1
- package/lib/{index-BtsOv9u0.js → index-BAH_fO2N.js} +66 -66
- package/lib/index-D1LQUR-R.cjs +9 -0
- package/lib/instantiate-D19Uvc31.js +125 -0
- package/lib/instantiate-Db5gGSYG.cjs +1 -0
- package/lib/jsx/ComponentElement.d.ts +18 -0
- package/lib/jsx/globals.d.ts +13 -0
- package/lib/jsx/h.d.ts +7 -0
- package/lib/jsx/hooks/basic/_createStore.d.ts +4 -0
- package/lib/jsx/hooks/basic/attachInternals.d.ts +1 -0
- package/lib/jsx/hooks/basic/attachShadow.d.ts +1 -0
- package/lib/jsx/hooks/basic/attachStylesheet.d.ts +3 -0
- package/lib/jsx/hooks/basic/createContext.d.ts +2 -0
- package/lib/jsx/hooks/basic/onConnect.d.ts +3 -0
- package/lib/jsx/hooks/basic/onDisconnect.d.ts +3 -0
- package/lib/jsx/hooks/onAnimationFrame.cjs +1 -0
- package/lib/jsx/hooks/onAnimationFrame.d.ts +6 -0
- package/lib/jsx/hooks/onAnimationFrame.js +22 -0
- package/lib/jsx/hooks/onElementResize.cjs +1 -0
- package/lib/jsx/hooks/onElementResize.d.ts +5 -0
- package/lib/jsx/hooks/onElementResize.js +11 -0
- package/lib/jsx/hooks/onIntersection.cjs +1 -0
- package/lib/jsx/hooks/onIntersection.d.ts +5 -0
- package/lib/jsx/hooks/onIntersection.js +11 -0
- package/lib/jsx/hooks/onWindowResize.cjs +1 -0
- package/lib/jsx/hooks/onWindowResize.d.ts +3 -0
- package/lib/jsx/hooks/onWindowResize.js +8 -0
- package/lib/jsx/hooks/store/createArrayStore.d.ts +3 -0
- package/lib/jsx/hooks/store/createComposed.d.ts +3 -0
- package/lib/jsx/hooks/store/createDerived.d.ts +3 -0
- package/lib/jsx/hooks/store/createDerivedArray.d.ts +3 -0
- package/lib/jsx/hooks/store/createDerivedComponent.d.ts +3 -0
- package/lib/jsx/hooks/store/createDerivedComponents.d.ts +3 -0
- package/lib/jsx/hooks/store/createResource.d.ts +3 -0
- package/lib/jsx/hooks/store/createStore.d.ts +3 -0
- package/lib/jsx/hooks/store/index.cjs +1 -0
- package/lib/jsx/hooks/store/index.d.ts +7 -0
- package/lib/jsx/hooks/store/index.js +49 -0
- package/lib/jsx/hooks/watchAttribute.cjs +1 -0
- package/lib/jsx/hooks/watchAttribute.d.ts +6 -0
- package/lib/jsx/hooks/watchAttribute.js +17 -0
- package/lib/jsx/hooks/watchCSSProperty.cjs +1 -0
- package/lib/jsx/hooks/watchCSSProperty.d.ts +7 -0
- package/lib/jsx/hooks/watchCSSProperty.js +17 -0
- package/lib/jsx/index.cjs +1 -0
- package/lib/jsx/index.d.ts +13 -0
- package/lib/jsx/index.js +91 -0
- package/lib/jsx/instantiate.d.ts +5 -0
- package/lib/jsx/register.d.ts +1 -0
- package/lib/jsx/render.d.ts +6 -0
- package/lib/jsx/type.d.ts +188 -0
- package/lib/ladder/index.cjs +1 -1
- package/lib/ladder/index.d.ts +2 -0
- package/lib/ladder/index.js +84 -66
- package/lib/layout-box/index.cjs +1 -1
- package/lib/layout-box/index.d.ts +11 -2
- package/lib/layout-box/index.js +190 -164
- package/lib/media/index.cjs +1 -1
- package/lib/media/index.js +1 -1
- package/lib/modal/index.cjs +1 -1
- package/lib/modal/index.js +16 -16
- package/lib/morph/Morph.d.ts +2 -2
- package/lib/morph/index.cjs +1 -1
- package/lib/morph/index.d.ts +1 -1
- package/lib/morph/index.js +135 -143
- package/lib/notifier/index.d.ts +2 -2
- package/lib/notifier/index.js +3 -1
- package/lib/onConnect-DGP866cj.cjs +1 -0
- package/lib/onConnect-y5DrxJ9P.js +7 -0
- package/lib/pointer/Pointer.d.ts +1 -1
- package/lib/pointer/PointerElement.d.ts +1 -1
- package/lib/pointer/index.cjs +1 -1
- package/lib/pointer/index.js +3 -3
- package/lib/polyfills-CM4SCDTt.cjs +1 -0
- package/lib/polyfills-X6KXuHg-.js +33 -0
- package/lib/popover/PopoverButtonElement.d.ts +1 -1
- package/lib/popover/PopoverElement.d.ts +2 -2
- package/lib/popover/index.cjs +1 -1
- package/lib/popover/index.js +49 -49
- package/lib/router/Router.d.ts +11 -3
- package/lib/router/index.cjs +1 -1
- package/lib/router/index.d.ts +1 -1
- package/lib/router/index.js +185 -165
- package/lib/scroll/ScrollElement.d.ts +8 -25
- package/lib/scroll/ScrollSection.d.ts +23 -0
- package/lib/scroll/ScrollSegmentElement.d.ts +3 -3
- package/lib/scroll/ScrollUserElement.d.ts +1 -1
- package/lib/scroll/index.cjs +1 -1
- package/lib/scroll/index.js +87 -83
- package/lib/scroll-entries/index.d.ts +1 -1
- package/lib/select/SelectUserElement.d.ts +1 -1
- package/lib/select/index.cjs +1 -1
- package/lib/select/index.js +1 -1
- package/lib/sequence/index.cjs +1 -1
- package/lib/sequence/index.d.ts +1 -1
- package/lib/sequence/index.js +8 -8
- package/lib/slicer/SlicerElement.d.ts +2 -2
- package/lib/slicer/index.cjs +4 -4
- package/lib/slicer/index.js +31 -31
- package/lib/source/SourceElement.d.ts +2 -2
- package/lib/source/SourceManager.d.ts +1 -1
- package/lib/source/index.cjs +1 -1
- package/lib/source/index.js +2 -2
- package/lib/store/ArrayStore.d.ts +21 -0
- package/lib/store/Store.d.ts +1 -7
- package/lib/store/index.cjs +1 -1
- package/lib/store/index.d.ts +2 -2
- package/lib/store/index.js +65 -139
- package/lib/tags-BqJKcIve.js +485 -0
- package/lib/tags-ld5jemJw.cjs +1 -0
- package/lib/theme/index.cjs +1 -1
- package/lib/theme/index.js +2 -2
- package/lib/tweaker/TweakerBooleanManagerElement.d.ts +2 -2
- package/lib/tweaker/TweakerColorManagerElement.d.ts +2 -2
- package/lib/tweaker/TweakerElement.d.ts +1 -1
- package/lib/tweaker/TweakerFieldElement.d.ts +2 -2
- package/lib/tweaker/TweakerFolderElement.d.ts +5 -3
- package/lib/tweaker/TweakerLinkManagerElement.d.ts +2 -2
- package/lib/tweaker/TweakerNumberManagerElement.d.ts +4 -8
- package/lib/tweaker/TweakerSelectManagerElement.d.ts +2 -2
- package/lib/tweaker/TweakerStoreManagerElement.d.ts +7 -7
- package/lib/tweaker/TweakerStringManagerElement.d.ts +3 -5
- package/lib/tweaker/index.cjs +3 -3
- package/lib/tweaker/index.js +535 -412
- package/lib/tweaker/tweakerManagerConstructors.d.ts +2 -2
- package/lib/tweaker/tweakerStorage.d.ts +8 -1
- package/lib/url-C3dWnJQg.cjs +1 -0
- package/lib/url-DMNfW7uN.js +22 -0
- package/lib/utils/function.d.ts +2 -2
- package/lib/utils/index.cjs +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +39 -34
- package/lib/utils/layout.d.ts +1 -1
- package/lib/utils/number.d.ts +1 -0
- package/lib/utils/url.d.ts +9 -0
- package/lib/video/index.cjs +1 -1
- package/lib/video/index.js +14 -14
- package/package.json +108 -12
- package/lib/Animation-DDHjrbtL.cjs +0 -1
- package/lib/Animation-Dq_05jlR.js +0 -217
- package/lib/Damped-l0mnlhar.cjs +0 -1
- package/lib/Store-C-1ruEIm.cjs +0 -1
- package/lib/Tweened-CwDC2zl8.js +0 -51
- package/lib/Tweened-DIt9j9B-.cjs +0 -1
- package/lib/animation/AnimationLink.d.ts +0 -13
- package/lib/en3/loaders/en3GLTFLoader.d.ts +0 -14
- package/lib/en3/loaders/en3TextureLoader.d.ts +0 -3
- package/lib/en3/test/En3HTML.d.ts +0 -10
- package/lib/index-Buf76Qoq.cjs +0 -9
- package/lib/polyfills-BA-CL_HF.js +0 -27
- package/lib/polyfills-DHs2SNbz.cjs +0 -1
- package/lib/resized/index.cjs +0 -1
- package/lib/resized/index.d.ts +0 -12
- package/lib/resized/index.js +0 -30
- package/lib/store/CumulativeResource.d.ts +0 -13
- package/lib/tags-CMPg9ETZ.js +0 -848
- package/lib/tags-Djb6mb1o.cjs +0 -1
- package/lib/tweaker/TweakerRangeManagerElement.d.ts +0 -11
- package/lib/en3/{loaders → core}/en3Cache.d.ts +0 -0
- package/lib/en3/{test → misc}/En3ModifiedMaterial.d.ts +0 -0
- package/lib/en3/{attachments → misc}/En3SourceManager.d.ts +2 -2
package/lib/en3/index.js
CHANGED
|
@@ -1,4229 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
var un = Object.getOwnPropertyDescriptors;
|
|
3
|
-
var Is = Object.getOwnPropertySymbols;
|
|
4
|
-
var dn = Object.prototype.hasOwnProperty, fn = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var gs = (a, A, e) => A in a ? hn(a, A, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[A] = e, nA = (a, A) => {
|
|
6
|
-
for (var e in A || (A = {}))
|
|
7
|
-
dn.call(A, e) && gs(a, e, A[e]);
|
|
8
|
-
if (Is)
|
|
9
|
-
for (var e of Is(A))
|
|
10
|
-
fn.call(A, e) && gs(a, e, A[e]);
|
|
11
|
-
return a;
|
|
12
|
-
}, He = (a, A) => ln(a, un(A));
|
|
13
|
-
var xt = (a, A, e) => {
|
|
14
|
-
if (!A.has(a))
|
|
15
|
-
throw TypeError("Cannot " + e);
|
|
16
|
-
};
|
|
17
|
-
var o = (a, A, e) => (xt(a, A, "read from private field"), e ? e.call(a) : A.get(a)), u = (a, A, e) => {
|
|
18
|
-
if (A.has(a))
|
|
19
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
20
|
-
A instanceof WeakSet ? A.add(a) : A.set(a, e);
|
|
21
|
-
}, f = (a, A, e, s) => (xt(a, A, "write to private field"), s ? s.call(a, e) : A.set(a, e), e);
|
|
22
|
-
var iA = (a, A, e) => (xt(a, A, "access private method"), e);
|
|
23
|
-
var zA = (a, A, e) => new Promise((s, t) => {
|
|
24
|
-
var n = (r) => {
|
|
25
|
-
try {
|
|
26
|
-
B(e.next(r));
|
|
27
|
-
} catch (C) {
|
|
28
|
-
t(C);
|
|
29
|
-
}
|
|
30
|
-
}, i = (r) => {
|
|
31
|
-
try {
|
|
32
|
-
B(e.throw(r));
|
|
33
|
-
} catch (C) {
|
|
34
|
-
t(C);
|
|
35
|
-
}
|
|
36
|
-
}, B = (r) => r.done ? s(r.value) : Promise.resolve(r.value).then(n, i);
|
|
37
|
-
B((e = e.apply(a, A)).next());
|
|
38
|
-
});
|
|
39
|
-
import { RESIZE_ORDER as Ts, TICK_ORDER as ns } from "../order/index.js";
|
|
40
|
-
import { windowResizer as xA } from "../window-resizer/index.js";
|
|
41
|
-
import { ticker as JA } from "../ticker/index.js";
|
|
42
|
-
import { g as Us } from "../dom-0S_WDL4g.js";
|
|
43
|
-
import * as Jt from "three";
|
|
44
|
-
import { Mesh as HA, OrthographicCamera as pt, PerspectiveCamera as Wt, Scene as bs, REVISION as Dn, WebGLRenderer as Fn, TextureLoader as Ns, TrianglesDrawMode as pn, TriangleFanDrawMode as jt, TriangleStripDrawMode as ks, Loader as is, LoaderUtils as ve, FileLoader as WA, Color as K, LinearSRGBColorSpace as j, SpotLight as Gn, PointLight as mn, DirectionalLight as Rn, MeshBasicMaterial as Ne, SRGBColorSpace as QA, MeshPhysicalMaterial as hA, Vector2 as EA, Matrix4 as ye, Vector3 as L, Quaternion as os, InstancedMesh as wn, InstancedBufferAttribute as yn, Object3D as rs, ImageBitmapLoader as Mn, BufferAttribute as Ae, InterleavedBuffer as Sn, InterleavedBufferAttribute as Ln, LinearFilter as Gt, LinearMipmapLinearFilter as Bs, RepeatWrapping as Zt, PointsMaterial as xn, Material as Ht, LineBasicMaterial as Jn, MeshStandardMaterial as Ks, DoubleSide as Hn, PropertyBinding as Tn, BufferGeometry as as, SkinnedMesh as Un, LineSegments as vs, Line as bn, LineLoop as Nn, Points as kn, Group as Oe, MathUtils as Kn, Skeleton as vn, AnimationClip as On, Bone as _n, InterpolateLinear as Os, ColorManagement as cs, NearestFilter as Pn, NearestMipmapNearestFilter as Yn, LinearMipmapNearestFilter as qn, NearestMipmapLinearFilter as Xn, ClampToEdgeWrapping as Vn, MirroredRepeatWrapping as Wn, InterpolateDiscrete as jn, FrontSide as Zn, Texture as Es, VectorKeyframeTrack as Qs, NumberKeyframeTrack as hs, QuaternionKeyframeTrack as ls, Box3 as zn, Sphere as $n, Interpolant as Ai, CompressedCubeTexture as ei, UnsignedByteType as q, CompressedArrayTexture as ti, CompressedTexture as _s, RGBAFormat as $A, RGBA_ASTC_4x4_Format as si, RGBA_BPTC_Format as ni, RGBA_ETC2_EAC_Format as ii, RGBA_PVRTC_4BPPV1_Format as oi, RGBA_S3TC_DXT5_Format as ri, RGB_ETC1_Format as Bi, RGB_ETC2_Format as ai, RGB_PVRTC_4BPPV1_Format as Ci, RGB_S3TC_DXT1_Format as Ii, FloatType as _e, HalfFloatType as Pe, DataTexture as gi, Data3DTexture as ci, DisplayP3ColorSpace as Ei, LinearDisplayP3ColorSpace as Qi, NoColorSpace as us, RGFormat as ke, RedFormat as Ke, RGBA_ASTC_6x6_Format as ds, Plane as ut, PlaneHelper as dt, Camera as hi, PlaneGeometry as St, RawShaderMaterial as Lt, AdditiveBlending as li, WebGLRenderTarget as ui, BoxGeometry as di, VideoTexture as fi } from "three";
|
|
45
|
-
import { LayoutBox as zt } from "../layout-box/index.js";
|
|
46
|
-
import { loading as Tt } from "../loading/index.js";
|
|
47
|
-
import { S as Di } from "../SourceManager-Q-PB-Rkh.js";
|
|
48
|
-
import { S as T } from "../Store-BQXXikps.js";
|
|
49
|
-
import { f as Fi } from "../easings-BKi40vHz.js";
|
|
50
|
-
import { d as pi } from "../function-C10DGppn.js";
|
|
51
|
-
import { T as Gi } from "../Tweened-CwDC2zl8.js";
|
|
52
|
-
import { d as mi } from "../Viewport-CFFhFKqX.js";
|
|
53
|
-
import { CustomElement as Ri, define as wi } from "../custom-element/index.js";
|
|
54
|
-
function Me(a) {
|
|
55
|
-
const A = (e) => {
|
|
56
|
-
e.dispose();
|
|
57
|
-
for (const s of Object.keys(e)) {
|
|
58
|
-
const t = e[s];
|
|
59
|
-
t && typeof t == "object" && "minFilter" in t && t.dispose();
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
a.traverse((e) => {
|
|
63
|
-
if (e instanceof HA) {
|
|
64
|
-
if (e.geometry.dispose(), !Array.isArray(e.material) && e.material.isMaterial)
|
|
65
|
-
A(e.material);
|
|
66
|
-
else if (Array.isArray(e.material))
|
|
67
|
-
for (const s of e.material)
|
|
68
|
-
A(s);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
var Ye, H, NA, fA, DA, te, FA, pA;
|
|
73
|
-
class fs {
|
|
74
|
-
constructor(A, e) {
|
|
75
|
-
u(this, Ye, void 0);
|
|
76
|
-
u(this, H, void 0);
|
|
77
|
-
u(this, NA, void 0);
|
|
78
|
-
u(this, fA, void 0);
|
|
79
|
-
u(this, DA, void 0);
|
|
80
|
-
u(this, te, void 0);
|
|
81
|
-
u(this, FA, void 0);
|
|
82
|
-
u(this, pA, void 0);
|
|
83
|
-
f(this, Ye, A), f(this, H, (e == null ? void 0 : e.cameraType) === "orthographic" ? new pt() : new Wt()), f(this, NA, new bs()), f(this, fA, []), f(this, DA, (e == null ? void 0 : e.cameraDistance) || 1e3), o(this, H).near = (e == null ? void 0 : e.cameraNear) || 1, o(this, H).far = (e == null ? void 0 : e.cameraFar) || 11e3, f(this, te, (e == null ? void 0 : e.cameraFov) || "auto"), f(this, FA, Us(e == null ? void 0 : e.sizeElement) || document.documentElement), this.beforeRenderCallback = e == null ? void 0 : e.beforeRender, f(this, pA, new zt(o(this, FA))), o(this, pA).onScale(() => {
|
|
84
|
-
this.resize();
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
get name() {
|
|
88
|
-
return o(this, Ye);
|
|
89
|
-
}
|
|
90
|
-
get camera() {
|
|
91
|
-
return o(this, H);
|
|
92
|
-
}
|
|
93
|
-
get scene() {
|
|
94
|
-
return o(this, NA);
|
|
95
|
-
}
|
|
96
|
-
get box() {
|
|
97
|
-
return o(this, pA);
|
|
98
|
-
}
|
|
99
|
-
get cameraDistance() {
|
|
100
|
-
return o(this, DA);
|
|
101
|
-
}
|
|
102
|
-
set cameraDistance(A) {
|
|
103
|
-
f(this, DA, A), this.resize();
|
|
104
|
-
}
|
|
105
|
-
get sizeElement() {
|
|
106
|
-
return o(this, FA);
|
|
107
|
-
}
|
|
108
|
-
get isClipped() {
|
|
109
|
-
return o(this, FA) !== w.containerElement;
|
|
110
|
-
}
|
|
111
|
-
resize() {
|
|
112
|
-
const { width: A, height: e } = o(this, pA);
|
|
113
|
-
o(this, H).position.z = o(this, DA), o(this, H) instanceof Wt ? (o(this, H).aspect = A / e, o(this, H).fov = o(this, te) === "auto" ? 2 * Math.atan(e / 2 / o(this, DA)) * (180 / Math.PI) : o(this, te)) : o(this, H) instanceof pt && (o(this, H).left = A / -2, o(this, H).right = A / 2, o(this, H).top = e / 2, o(this, H).bottom = e / -2), o(this, H).updateProjectionMatrix();
|
|
114
|
-
}
|
|
115
|
-
destroy() {
|
|
116
|
-
o(this, fA).forEach((A) => {
|
|
117
|
-
A.userData.box.destroy();
|
|
118
|
-
}), o(this, NA).clear(), Me(o(this, NA)), w.destroyView(this.name), o(this, pA).destroy();
|
|
119
|
-
}
|
|
120
|
-
attachToHTMLElement(A, e, s) {
|
|
121
|
-
const t = new zt(A, He(nA({}, s), {
|
|
122
|
-
containerElement: o(this, FA),
|
|
123
|
-
cartesian: !0,
|
|
124
|
-
scrollStep: !this.isClipped
|
|
125
|
-
}));
|
|
126
|
-
return t.bindObject(e), e.userData.box = t, o(this, fA).push(e), e;
|
|
127
|
-
}
|
|
128
|
-
detachFromHTMLElement(A) {
|
|
129
|
-
f(this, fA, o(this, fA).filter((e) => e === A ? (A.userData.box.destroy(), !1) : !0));
|
|
130
|
-
}
|
|
131
|
-
add(...A) {
|
|
132
|
-
const e = A[0], s = A[1], t = A[2];
|
|
133
|
-
return this.scene.add(e), s ? this.attachToHTMLElement(s, e, t) : e;
|
|
134
|
-
}
|
|
135
|
-
remove(A, e) {
|
|
136
|
-
this.scene.remove(A), e && this.detachFromHTMLElement(A);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
Ye = new WeakMap(), H = new WeakMap(), NA = new WeakMap(), fA = new WeakMap(), DA = new WeakMap(), te = new WeakMap(), FA = new WeakMap(), pA = new WeakMap();
|
|
140
|
-
const W = /* @__PURE__ */ new Map();
|
|
141
|
-
var mt, BA, x, k, se, ne, ie, qe, kA, Xe, Ve, We;
|
|
142
|
-
class yi {
|
|
143
|
-
constructor() {
|
|
144
|
-
u(this, mt, `https://unpkg.com/three@0.${Dn}.x`);
|
|
145
|
-
u(this, BA, null);
|
|
146
|
-
u(this, x, null);
|
|
147
|
-
u(this, k, /* @__PURE__ */ new Map());
|
|
148
|
-
u(this, se, 0);
|
|
149
|
-
u(this, ne, 0);
|
|
150
|
-
u(this, ie, 0);
|
|
151
|
-
u(this, qe, 2);
|
|
152
|
-
u(this, kA, !1);
|
|
153
|
-
u(this, Xe, !1);
|
|
154
|
-
u(this, Ve, () => {
|
|
155
|
-
var A;
|
|
156
|
-
f(this, se, o(this, BA).clientWidth), f(this, ne, o(this, BA).clientHeight), f(this, ie, Math.min(o(this, qe), devicePixelRatio || 1)), o(this, x).setPixelRatio(o(this, ie)), o(this, x).setSize(o(this, se), o(this, ne)), (A = this.onResize) == null || A.call(this);
|
|
157
|
-
});
|
|
158
|
-
u(this, We, () => {
|
|
159
|
-
o(this, x).setRenderTarget(null), o(this, k).forEach((A) => {
|
|
160
|
-
this.render(A);
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
get CDNVersion() {
|
|
165
|
-
return o(this, mt);
|
|
166
|
-
}
|
|
167
|
-
get containerElement() {
|
|
168
|
-
return o(this, BA);
|
|
169
|
-
}
|
|
170
|
-
get webglRenderer() {
|
|
171
|
-
return o(this, x);
|
|
172
|
-
}
|
|
173
|
-
get views() {
|
|
174
|
-
return o(this, k);
|
|
175
|
-
}
|
|
176
|
-
get view() {
|
|
177
|
-
return this.getView("default");
|
|
178
|
-
}
|
|
179
|
-
get width() {
|
|
180
|
-
return o(this, se);
|
|
181
|
-
}
|
|
182
|
-
get height() {
|
|
183
|
-
return o(this, ne);
|
|
184
|
-
}
|
|
185
|
-
get pixelRatio() {
|
|
186
|
-
return o(this, ie);
|
|
187
|
-
}
|
|
188
|
-
get cacheAssets() {
|
|
189
|
-
return o(this, Xe);
|
|
190
|
-
}
|
|
191
|
-
setup(A) {
|
|
192
|
-
if (o(this, kA)) {
|
|
193
|
-
console.warn("[en3.setup]: You are trying to setup en3 again.");
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
f(this, BA, Us(A == null ? void 0 : A.containerElement) || document.body), f(this, qe, (A == null ? void 0 : A.maxPixelRatio) || 2), f(this, x, new Fn(A == null ? void 0 : A.webGLRendererParameters)), o(this, x).domElement.style.cssText = `
|
|
197
|
-
position: fixed;
|
|
198
|
-
left: 0;
|
|
199
|
-
top: 0;
|
|
200
|
-
width: 100%;
|
|
201
|
-
height: 100%;
|
|
202
|
-
z-index: -1;
|
|
203
|
-
`, o(this, BA).append(o(this, x).domElement), o(this, k).set(
|
|
204
|
-
"default",
|
|
205
|
-
new fs("default", nA({
|
|
206
|
-
sizeElement: o(this, BA)
|
|
207
|
-
}, A == null ? void 0 : A.view))
|
|
208
|
-
), f(this, Xe, (A == null ? void 0 : A.cacheAssets) || !1), f(this, kA, !0), xA.subscribe(o(this, Ve), Ts.EN3), JA.subscribe(o(this, We), { order: ns.EN3 });
|
|
209
|
-
}
|
|
210
|
-
destroy() {
|
|
211
|
-
if (!o(this, kA)) {
|
|
212
|
-
console.warn(
|
|
213
|
-
"[en3.setup]: You are trying to destory en3 but it has not been initialized."
|
|
214
|
-
);
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
xA.unsubscribe(o(this, Ve)), JA.unsubscribe(o(this, We)), o(this, k).forEach((A) => {
|
|
218
|
-
A.destroy();
|
|
219
|
-
}), o(this, x).dispose(), o(this, x).domElement.remove(), f(this, x, null), f(this, kA, !1), W.forEach((A) => {
|
|
220
|
-
A.dispose();
|
|
221
|
-
}), W.clear();
|
|
222
|
-
}
|
|
223
|
-
createView(A, e) {
|
|
224
|
-
const s = o(this, k).size, t = new fs(A, e);
|
|
225
|
-
return o(this, k).set(A, t), s === 1 && o(this, x).setScissorTest(!0), t;
|
|
226
|
-
}
|
|
227
|
-
getView(A) {
|
|
228
|
-
return o(this, k).get(A);
|
|
229
|
-
}
|
|
230
|
-
destroyView(A) {
|
|
231
|
-
const e = o(this, k).get(A);
|
|
232
|
-
e && (o(this, k).delete(A), e.destroy(), o(this, k).size <= 1 && o(this, x).setScissorTest(!1));
|
|
233
|
-
}
|
|
234
|
-
render(A) {
|
|
235
|
-
var e;
|
|
236
|
-
if (o(this, k).size > 1 || this.view.isClipped) {
|
|
237
|
-
const s = A.box.left + A.box.CSSTranslation.x + A.box.scrollValue.x, t = w.height - A.box.height - A.box.top + A.box.CSSTranslation.y + A.box.scrollValue.y * -1;
|
|
238
|
-
o(this, x).setScissor(s, t, A.box.width, A.box.height), o(this, x).setViewport(
|
|
239
|
-
s,
|
|
240
|
-
t,
|
|
241
|
-
A.box.width,
|
|
242
|
-
A.box.height
|
|
243
|
-
);
|
|
244
|
-
}
|
|
245
|
-
(e = A.beforeRenderCallback) == null || e.call(A), o(this, x).render(A.scene, A.camera);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
mt = new WeakMap(), BA = new WeakMap(), x = new WeakMap(), k = new WeakMap(), se = new WeakMap(), ne = new WeakMap(), ie = new WeakMap(), qe = new WeakMap(), kA = new WeakMap(), Xe = new WeakMap(), Ve = new WeakMap(), We = new WeakMap();
|
|
249
|
-
const w = new yi(), jA = new Ns(), Mi = jA.load.bind(jA), Si = jA.loadAsync.bind(jA);
|
|
250
|
-
jA.load = (a, A, ...e) => {
|
|
251
|
-
if (w.cacheAssets && W.has(a)) {
|
|
252
|
-
const s = W.get(a);
|
|
253
|
-
return A == null || A(s.data), s.data;
|
|
254
|
-
}
|
|
255
|
-
return Mi(
|
|
256
|
-
a,
|
|
257
|
-
(s) => {
|
|
258
|
-
w.cacheAssets && W.set(a, {
|
|
259
|
-
data: s,
|
|
260
|
-
dispose: () => s.dispose()
|
|
261
|
-
}), A == null || A(s);
|
|
262
|
-
},
|
|
263
|
-
...e
|
|
264
|
-
);
|
|
265
|
-
};
|
|
266
|
-
jA.loadAsync = (a, ...A) => zA(void 0, null, function* () {
|
|
267
|
-
if (w.cacheAssets && W.has(a))
|
|
268
|
-
return W.get(a).data;
|
|
269
|
-
const e = yield Si(a, ...A);
|
|
270
|
-
return w.cacheAssets && W.set(a, {
|
|
271
|
-
data: e,
|
|
272
|
-
dispose: () => e.dispose()
|
|
273
|
-
}), e;
|
|
274
|
-
});
|
|
275
|
-
function Ds(a, A) {
|
|
276
|
-
if (A === pn)
|
|
277
|
-
return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), a;
|
|
278
|
-
if (A === jt || A === ks) {
|
|
279
|
-
let e = a.getIndex();
|
|
280
|
-
if (e === null) {
|
|
281
|
-
const i = [], B = a.getAttribute("position");
|
|
282
|
-
if (B !== void 0) {
|
|
283
|
-
for (let r = 0; r < B.count; r++)
|
|
284
|
-
i.push(r);
|
|
285
|
-
a.setIndex(i), e = a.getIndex();
|
|
286
|
-
} else
|
|
287
|
-
return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."), a;
|
|
288
|
-
}
|
|
289
|
-
const s = e.count - 2, t = [];
|
|
290
|
-
if (A === jt)
|
|
291
|
-
for (let i = 1; i <= s; i++)
|
|
292
|
-
t.push(e.getX(0)), t.push(e.getX(i)), t.push(e.getX(i + 1));
|
|
293
|
-
else
|
|
294
|
-
for (let i = 0; i < s; i++)
|
|
295
|
-
i % 2 === 0 ? (t.push(e.getX(i)), t.push(e.getX(i + 1)), t.push(e.getX(i + 2))) : (t.push(e.getX(i + 2)), t.push(e.getX(i + 1)), t.push(e.getX(i)));
|
|
296
|
-
t.length / 3 !== s && console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");
|
|
297
|
-
const n = a.clone();
|
|
298
|
-
return n.setIndex(t), n.clearGroups(), n;
|
|
299
|
-
} else
|
|
300
|
-
return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", A), a;
|
|
301
|
-
}
|
|
302
|
-
class Li extends is {
|
|
303
|
-
constructor(A) {
|
|
304
|
-
super(A), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(e) {
|
|
305
|
-
return new Ui(e);
|
|
306
|
-
}), this.register(function(e) {
|
|
307
|
-
return new Yi(e);
|
|
308
|
-
}), this.register(function(e) {
|
|
309
|
-
return new qi(e);
|
|
310
|
-
}), this.register(function(e) {
|
|
311
|
-
return new Xi(e);
|
|
312
|
-
}), this.register(function(e) {
|
|
313
|
-
return new Ni(e);
|
|
314
|
-
}), this.register(function(e) {
|
|
315
|
-
return new ki(e);
|
|
316
|
-
}), this.register(function(e) {
|
|
317
|
-
return new Ki(e);
|
|
318
|
-
}), this.register(function(e) {
|
|
319
|
-
return new vi(e);
|
|
320
|
-
}), this.register(function(e) {
|
|
321
|
-
return new Ti(e);
|
|
322
|
-
}), this.register(function(e) {
|
|
323
|
-
return new Oi(e);
|
|
324
|
-
}), this.register(function(e) {
|
|
325
|
-
return new bi(e);
|
|
326
|
-
}), this.register(function(e) {
|
|
327
|
-
return new Pi(e);
|
|
328
|
-
}), this.register(function(e) {
|
|
329
|
-
return new _i(e);
|
|
330
|
-
}), this.register(function(e) {
|
|
331
|
-
return new Ji(e);
|
|
332
|
-
}), this.register(function(e) {
|
|
333
|
-
return new Vi(e);
|
|
334
|
-
}), this.register(function(e) {
|
|
335
|
-
return new Wi(e);
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
load(A, e, s, t) {
|
|
339
|
-
const n = this;
|
|
340
|
-
let i;
|
|
341
|
-
if (this.resourcePath !== "")
|
|
342
|
-
i = this.resourcePath;
|
|
343
|
-
else if (this.path !== "") {
|
|
344
|
-
const C = ve.extractUrlBase(A);
|
|
345
|
-
i = ve.resolveURL(C, this.path);
|
|
346
|
-
} else
|
|
347
|
-
i = ve.extractUrlBase(A);
|
|
348
|
-
this.manager.itemStart(A);
|
|
349
|
-
const B = function(C) {
|
|
350
|
-
t ? t(C) : console.error(C), n.manager.itemError(A), n.manager.itemEnd(A);
|
|
351
|
-
}, r = new WA(this.manager);
|
|
352
|
-
r.setPath(this.path), r.setResponseType("arraybuffer"), r.setRequestHeader(this.requestHeader), r.setWithCredentials(this.withCredentials), r.load(A, function(C) {
|
|
353
|
-
try {
|
|
354
|
-
n.parse(C, i, function(g) {
|
|
355
|
-
e(g), n.manager.itemEnd(A);
|
|
356
|
-
}, B);
|
|
357
|
-
} catch (g) {
|
|
358
|
-
B(g);
|
|
359
|
-
}
|
|
360
|
-
}, s, B);
|
|
361
|
-
}
|
|
362
|
-
setDRACOLoader(A) {
|
|
363
|
-
return this.dracoLoader = A, this;
|
|
364
|
-
}
|
|
365
|
-
setDDSLoader() {
|
|
366
|
-
throw new Error(
|
|
367
|
-
'THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".'
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
setKTX2Loader(A) {
|
|
371
|
-
return this.ktx2Loader = A, this;
|
|
372
|
-
}
|
|
373
|
-
setMeshoptDecoder(A) {
|
|
374
|
-
return this.meshoptDecoder = A, this;
|
|
375
|
-
}
|
|
376
|
-
register(A) {
|
|
377
|
-
return this.pluginCallbacks.indexOf(A) === -1 && this.pluginCallbacks.push(A), this;
|
|
378
|
-
}
|
|
379
|
-
unregister(A) {
|
|
380
|
-
return this.pluginCallbacks.indexOf(A) !== -1 && this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A), 1), this;
|
|
381
|
-
}
|
|
382
|
-
parse(A, e, s, t) {
|
|
383
|
-
let n;
|
|
384
|
-
const i = {}, B = {}, r = new TextDecoder();
|
|
385
|
-
if (typeof A == "string")
|
|
386
|
-
n = JSON.parse(A);
|
|
387
|
-
else if (A instanceof ArrayBuffer)
|
|
388
|
-
if (r.decode(new Uint8Array(A, 0, 4)) === Ps) {
|
|
389
|
-
try {
|
|
390
|
-
i[m.KHR_BINARY_GLTF] = new ji(A);
|
|
391
|
-
} catch (I) {
|
|
392
|
-
t && t(I);
|
|
393
|
-
return;
|
|
394
|
-
}
|
|
395
|
-
n = JSON.parse(i[m.KHR_BINARY_GLTF].content);
|
|
396
|
-
} else
|
|
397
|
-
n = JSON.parse(r.decode(A));
|
|
398
|
-
else
|
|
399
|
-
n = A;
|
|
400
|
-
if (n.asset === void 0 || n.asset.version[0] < 2) {
|
|
401
|
-
t && t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));
|
|
402
|
-
return;
|
|
403
|
-
}
|
|
404
|
-
const C = new ao(n, {
|
|
405
|
-
path: e || this.resourcePath || "",
|
|
406
|
-
crossOrigin: this.crossOrigin,
|
|
407
|
-
requestHeader: this.requestHeader,
|
|
408
|
-
manager: this.manager,
|
|
409
|
-
ktx2Loader: this.ktx2Loader,
|
|
410
|
-
meshoptDecoder: this.meshoptDecoder
|
|
411
|
-
});
|
|
412
|
-
C.fileLoader.setRequestHeader(this.requestHeader);
|
|
413
|
-
for (let g = 0; g < this.pluginCallbacks.length; g++) {
|
|
414
|
-
const I = this.pluginCallbacks[g](C);
|
|
415
|
-
I.name || console.error("THREE.GLTFLoader: Invalid plugin found: missing name"), B[I.name] = I, i[I.name] = !0;
|
|
416
|
-
}
|
|
417
|
-
if (n.extensionsUsed)
|
|
418
|
-
for (let g = 0; g < n.extensionsUsed.length; ++g) {
|
|
419
|
-
const I = n.extensionsUsed[g], E = n.extensionsRequired || [];
|
|
420
|
-
switch (I) {
|
|
421
|
-
case m.KHR_MATERIALS_UNLIT:
|
|
422
|
-
i[I] = new Hi();
|
|
423
|
-
break;
|
|
424
|
-
case m.KHR_DRACO_MESH_COMPRESSION:
|
|
425
|
-
i[I] = new Zi(n, this.dracoLoader);
|
|
426
|
-
break;
|
|
427
|
-
case m.KHR_TEXTURE_TRANSFORM:
|
|
428
|
-
i[I] = new zi();
|
|
429
|
-
break;
|
|
430
|
-
case m.KHR_MESH_QUANTIZATION:
|
|
431
|
-
i[I] = new $i();
|
|
432
|
-
break;
|
|
433
|
-
default:
|
|
434
|
-
E.indexOf(I) >= 0 && B[I] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + I + '".');
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
C.setExtensions(i), C.setPlugins(B), C.parse(s, t);
|
|
438
|
-
}
|
|
439
|
-
parseAsync(A, e) {
|
|
440
|
-
const s = this;
|
|
441
|
-
return new Promise(function(t, n) {
|
|
442
|
-
s.parse(A, e, t, n);
|
|
443
|
-
});
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
function xi() {
|
|
447
|
-
let a = {};
|
|
448
|
-
return {
|
|
449
|
-
get: function(A) {
|
|
450
|
-
return a[A];
|
|
451
|
-
},
|
|
452
|
-
add: function(A, e) {
|
|
453
|
-
a[A] = e;
|
|
454
|
-
},
|
|
455
|
-
remove: function(A) {
|
|
456
|
-
delete a[A];
|
|
457
|
-
},
|
|
458
|
-
removeAll: function() {
|
|
459
|
-
a = {};
|
|
460
|
-
}
|
|
461
|
-
};
|
|
462
|
-
}
|
|
463
|
-
const m = {
|
|
464
|
-
KHR_BINARY_GLTF: "KHR_binary_glTF",
|
|
465
|
-
KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression",
|
|
466
|
-
KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual",
|
|
467
|
-
KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat",
|
|
468
|
-
KHR_MATERIALS_IOR: "KHR_materials_ior",
|
|
469
|
-
KHR_MATERIALS_SHEEN: "KHR_materials_sheen",
|
|
470
|
-
KHR_MATERIALS_SPECULAR: "KHR_materials_specular",
|
|
471
|
-
KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission",
|
|
472
|
-
KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence",
|
|
473
|
-
KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy",
|
|
474
|
-
KHR_MATERIALS_UNLIT: "KHR_materials_unlit",
|
|
475
|
-
KHR_MATERIALS_VOLUME: "KHR_materials_volume",
|
|
476
|
-
KHR_TEXTURE_BASISU: "KHR_texture_basisu",
|
|
477
|
-
KHR_TEXTURE_TRANSFORM: "KHR_texture_transform",
|
|
478
|
-
KHR_MESH_QUANTIZATION: "KHR_mesh_quantization",
|
|
479
|
-
KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength",
|
|
480
|
-
EXT_MATERIALS_BUMP: "EXT_materials_bump",
|
|
481
|
-
EXT_TEXTURE_WEBP: "EXT_texture_webp",
|
|
482
|
-
EXT_TEXTURE_AVIF: "EXT_texture_avif",
|
|
483
|
-
EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression",
|
|
484
|
-
EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing"
|
|
485
|
-
};
|
|
486
|
-
class Ji {
|
|
487
|
-
constructor(A) {
|
|
488
|
-
this.parser = A, this.name = m.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
|
|
489
|
-
}
|
|
490
|
-
_markDefs() {
|
|
491
|
-
const A = this.parser, e = this.parser.json.nodes || [];
|
|
492
|
-
for (let s = 0, t = e.length; s < t; s++) {
|
|
493
|
-
const n = e[s];
|
|
494
|
-
n.extensions && n.extensions[this.name] && n.extensions[this.name].light !== void 0 && A._addNodeRef(this.cache, n.extensions[this.name].light);
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
_loadLight(A) {
|
|
498
|
-
const e = this.parser, s = "light:" + A;
|
|
499
|
-
let t = e.cache.get(s);
|
|
500
|
-
if (t)
|
|
501
|
-
return t;
|
|
502
|
-
const n = e.json, r = ((n.extensions && n.extensions[this.name] || {}).lights || [])[A];
|
|
503
|
-
let C;
|
|
504
|
-
const g = new K(16777215);
|
|
505
|
-
r.color !== void 0 && g.setRGB(r.color[0], r.color[1], r.color[2], j);
|
|
506
|
-
const I = r.range !== void 0 ? r.range : 0;
|
|
507
|
-
switch (r.type) {
|
|
508
|
-
case "directional":
|
|
509
|
-
C = new Rn(g), C.target.position.set(0, 0, -1), C.add(C.target);
|
|
510
|
-
break;
|
|
511
|
-
case "point":
|
|
512
|
-
C = new mn(g), C.distance = I;
|
|
513
|
-
break;
|
|
514
|
-
case "spot":
|
|
515
|
-
C = new Gn(g), C.distance = I, r.spot = r.spot || {}, r.spot.innerConeAngle = r.spot.innerConeAngle !== void 0 ? r.spot.innerConeAngle : 0, r.spot.outerConeAngle = r.spot.outerConeAngle !== void 0 ? r.spot.outerConeAngle : Math.PI / 4, C.angle = r.spot.outerConeAngle, C.penumbra = 1 - r.spot.innerConeAngle / r.spot.outerConeAngle, C.target.position.set(0, 0, -1), C.add(C.target);
|
|
516
|
-
break;
|
|
517
|
-
default:
|
|
518
|
-
throw new Error("THREE.GLTFLoader: Unexpected light type: " + r.type);
|
|
519
|
-
}
|
|
520
|
-
return C.position.set(0, 0, 0), C.decay = 2, dA(C, r), r.intensity !== void 0 && (C.intensity = r.intensity), C.name = e.createUniqueName(r.name || "light_" + A), t = Promise.resolve(C), e.cache.add(s, t), t;
|
|
521
|
-
}
|
|
522
|
-
getDependency(A, e) {
|
|
523
|
-
if (A === "light")
|
|
524
|
-
return this._loadLight(e);
|
|
525
|
-
}
|
|
526
|
-
createNodeAttachment(A) {
|
|
527
|
-
const e = this, s = this.parser, n = s.json.nodes[A], B = (n.extensions && n.extensions[this.name] || {}).light;
|
|
528
|
-
return B === void 0 ? null : this._loadLight(B).then(function(r) {
|
|
529
|
-
return s._getNodeRef(e.cache, B, r);
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
class Hi {
|
|
534
|
-
constructor() {
|
|
535
|
-
this.name = m.KHR_MATERIALS_UNLIT;
|
|
536
|
-
}
|
|
537
|
-
getMaterialType() {
|
|
538
|
-
return Ne;
|
|
539
|
-
}
|
|
540
|
-
extendParams(A, e, s) {
|
|
541
|
-
const t = [];
|
|
542
|
-
A.color = new K(1, 1, 1), A.opacity = 1;
|
|
543
|
-
const n = e.pbrMetallicRoughness;
|
|
544
|
-
if (n) {
|
|
545
|
-
if (Array.isArray(n.baseColorFactor)) {
|
|
546
|
-
const i = n.baseColorFactor;
|
|
547
|
-
A.color.setRGB(i[0], i[1], i[2], j), A.opacity = i[3];
|
|
548
|
-
}
|
|
549
|
-
n.baseColorTexture !== void 0 && t.push(s.assignTexture(A, "map", n.baseColorTexture, QA));
|
|
550
|
-
}
|
|
551
|
-
return Promise.all(t);
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
class Ti {
|
|
555
|
-
constructor(A) {
|
|
556
|
-
this.parser = A, this.name = m.KHR_MATERIALS_EMISSIVE_STRENGTH;
|
|
557
|
-
}
|
|
558
|
-
extendMaterialParams(A, e) {
|
|
559
|
-
const t = this.parser.json.materials[A];
|
|
560
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
561
|
-
return Promise.resolve();
|
|
562
|
-
const n = t.extensions[this.name].emissiveStrength;
|
|
563
|
-
return n !== void 0 && (e.emissiveIntensity = n), Promise.resolve();
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
class Ui {
|
|
567
|
-
constructor(A) {
|
|
568
|
-
this.parser = A, this.name = m.KHR_MATERIALS_CLEARCOAT;
|
|
569
|
-
}
|
|
570
|
-
getMaterialType(A) {
|
|
571
|
-
const s = this.parser.json.materials[A];
|
|
572
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
573
|
-
}
|
|
574
|
-
extendMaterialParams(A, e) {
|
|
575
|
-
const s = this.parser, t = s.json.materials[A];
|
|
576
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
577
|
-
return Promise.resolve();
|
|
578
|
-
const n = [], i = t.extensions[this.name];
|
|
579
|
-
if (i.clearcoatFactor !== void 0 && (e.clearcoat = i.clearcoatFactor), i.clearcoatTexture !== void 0 && n.push(s.assignTexture(e, "clearcoatMap", i.clearcoatTexture)), i.clearcoatRoughnessFactor !== void 0 && (e.clearcoatRoughness = i.clearcoatRoughnessFactor), i.clearcoatRoughnessTexture !== void 0 && n.push(s.assignTexture(e, "clearcoatRoughnessMap", i.clearcoatRoughnessTexture)), i.clearcoatNormalTexture !== void 0 && (n.push(s.assignTexture(e, "clearcoatNormalMap", i.clearcoatNormalTexture)), i.clearcoatNormalTexture.scale !== void 0)) {
|
|
580
|
-
const B = i.clearcoatNormalTexture.scale;
|
|
581
|
-
e.clearcoatNormalScale = new EA(B, B);
|
|
582
|
-
}
|
|
583
|
-
return Promise.all(n);
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
class bi {
|
|
587
|
-
constructor(A) {
|
|
588
|
-
this.parser = A, this.name = m.KHR_MATERIALS_IRIDESCENCE;
|
|
589
|
-
}
|
|
590
|
-
getMaterialType(A) {
|
|
591
|
-
const s = this.parser.json.materials[A];
|
|
592
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
593
|
-
}
|
|
594
|
-
extendMaterialParams(A, e) {
|
|
595
|
-
const s = this.parser, t = s.json.materials[A];
|
|
596
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
597
|
-
return Promise.resolve();
|
|
598
|
-
const n = [], i = t.extensions[this.name];
|
|
599
|
-
return i.iridescenceFactor !== void 0 && (e.iridescence = i.iridescenceFactor), i.iridescenceTexture !== void 0 && n.push(s.assignTexture(e, "iridescenceMap", i.iridescenceTexture)), i.iridescenceIor !== void 0 && (e.iridescenceIOR = i.iridescenceIor), e.iridescenceThicknessRange === void 0 && (e.iridescenceThicknessRange = [100, 400]), i.iridescenceThicknessMinimum !== void 0 && (e.iridescenceThicknessRange[0] = i.iridescenceThicknessMinimum), i.iridescenceThicknessMaximum !== void 0 && (e.iridescenceThicknessRange[1] = i.iridescenceThicknessMaximum), i.iridescenceThicknessTexture !== void 0 && n.push(s.assignTexture(e, "iridescenceThicknessMap", i.iridescenceThicknessTexture)), Promise.all(n);
|
|
600
|
-
}
|
|
601
|
-
}
|
|
602
|
-
class Ni {
|
|
603
|
-
constructor(A) {
|
|
604
|
-
this.parser = A, this.name = m.KHR_MATERIALS_SHEEN;
|
|
605
|
-
}
|
|
606
|
-
getMaterialType(A) {
|
|
607
|
-
const s = this.parser.json.materials[A];
|
|
608
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
609
|
-
}
|
|
610
|
-
extendMaterialParams(A, e) {
|
|
611
|
-
const s = this.parser, t = s.json.materials[A];
|
|
612
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
613
|
-
return Promise.resolve();
|
|
614
|
-
const n = [];
|
|
615
|
-
e.sheenColor = new K(0, 0, 0), e.sheenRoughness = 0, e.sheen = 1;
|
|
616
|
-
const i = t.extensions[this.name];
|
|
617
|
-
if (i.sheenColorFactor !== void 0) {
|
|
618
|
-
const B = i.sheenColorFactor;
|
|
619
|
-
e.sheenColor.setRGB(B[0], B[1], B[2], j);
|
|
620
|
-
}
|
|
621
|
-
return i.sheenRoughnessFactor !== void 0 && (e.sheenRoughness = i.sheenRoughnessFactor), i.sheenColorTexture !== void 0 && n.push(s.assignTexture(e, "sheenColorMap", i.sheenColorTexture, QA)), i.sheenRoughnessTexture !== void 0 && n.push(s.assignTexture(e, "sheenRoughnessMap", i.sheenRoughnessTexture)), Promise.all(n);
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
class ki {
|
|
625
|
-
constructor(A) {
|
|
626
|
-
this.parser = A, this.name = m.KHR_MATERIALS_TRANSMISSION;
|
|
627
|
-
}
|
|
628
|
-
getMaterialType(A) {
|
|
629
|
-
const s = this.parser.json.materials[A];
|
|
630
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
631
|
-
}
|
|
632
|
-
extendMaterialParams(A, e) {
|
|
633
|
-
const s = this.parser, t = s.json.materials[A];
|
|
634
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
635
|
-
return Promise.resolve();
|
|
636
|
-
const n = [], i = t.extensions[this.name];
|
|
637
|
-
return i.transmissionFactor !== void 0 && (e.transmission = i.transmissionFactor), i.transmissionTexture !== void 0 && n.push(s.assignTexture(e, "transmissionMap", i.transmissionTexture)), Promise.all(n);
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
class Ki {
|
|
641
|
-
constructor(A) {
|
|
642
|
-
this.parser = A, this.name = m.KHR_MATERIALS_VOLUME;
|
|
643
|
-
}
|
|
644
|
-
getMaterialType(A) {
|
|
645
|
-
const s = this.parser.json.materials[A];
|
|
646
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
647
|
-
}
|
|
648
|
-
extendMaterialParams(A, e) {
|
|
649
|
-
const s = this.parser, t = s.json.materials[A];
|
|
650
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
651
|
-
return Promise.resolve();
|
|
652
|
-
const n = [], i = t.extensions[this.name];
|
|
653
|
-
e.thickness = i.thicknessFactor !== void 0 ? i.thicknessFactor : 0, i.thicknessTexture !== void 0 && n.push(s.assignTexture(e, "thicknessMap", i.thicknessTexture)), e.attenuationDistance = i.attenuationDistance || 1 / 0;
|
|
654
|
-
const B = i.attenuationColor || [1, 1, 1];
|
|
655
|
-
return e.attenuationColor = new K().setRGB(B[0], B[1], B[2], j), Promise.all(n);
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
class vi {
|
|
659
|
-
constructor(A) {
|
|
660
|
-
this.parser = A, this.name = m.KHR_MATERIALS_IOR;
|
|
661
|
-
}
|
|
662
|
-
getMaterialType(A) {
|
|
663
|
-
const s = this.parser.json.materials[A];
|
|
664
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
665
|
-
}
|
|
666
|
-
extendMaterialParams(A, e) {
|
|
667
|
-
const t = this.parser.json.materials[A];
|
|
668
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
669
|
-
return Promise.resolve();
|
|
670
|
-
const n = t.extensions[this.name];
|
|
671
|
-
return e.ior = n.ior !== void 0 ? n.ior : 1.5, Promise.resolve();
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
class Oi {
|
|
675
|
-
constructor(A) {
|
|
676
|
-
this.parser = A, this.name = m.KHR_MATERIALS_SPECULAR;
|
|
677
|
-
}
|
|
678
|
-
getMaterialType(A) {
|
|
679
|
-
const s = this.parser.json.materials[A];
|
|
680
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
681
|
-
}
|
|
682
|
-
extendMaterialParams(A, e) {
|
|
683
|
-
const s = this.parser, t = s.json.materials[A];
|
|
684
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
685
|
-
return Promise.resolve();
|
|
686
|
-
const n = [], i = t.extensions[this.name];
|
|
687
|
-
e.specularIntensity = i.specularFactor !== void 0 ? i.specularFactor : 1, i.specularTexture !== void 0 && n.push(s.assignTexture(e, "specularIntensityMap", i.specularTexture));
|
|
688
|
-
const B = i.specularColorFactor || [1, 1, 1];
|
|
689
|
-
return e.specularColor = new K().setRGB(B[0], B[1], B[2], j), i.specularColorTexture !== void 0 && n.push(s.assignTexture(e, "specularColorMap", i.specularColorTexture, QA)), Promise.all(n);
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
class _i {
|
|
693
|
-
constructor(A) {
|
|
694
|
-
this.parser = A, this.name = m.EXT_MATERIALS_BUMP;
|
|
695
|
-
}
|
|
696
|
-
getMaterialType(A) {
|
|
697
|
-
const s = this.parser.json.materials[A];
|
|
698
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
699
|
-
}
|
|
700
|
-
extendMaterialParams(A, e) {
|
|
701
|
-
const s = this.parser, t = s.json.materials[A];
|
|
702
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
703
|
-
return Promise.resolve();
|
|
704
|
-
const n = [], i = t.extensions[this.name];
|
|
705
|
-
return e.bumpScale = i.bumpFactor !== void 0 ? i.bumpFactor : 1, i.bumpTexture !== void 0 && n.push(s.assignTexture(e, "bumpMap", i.bumpTexture)), Promise.all(n);
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
class Pi {
|
|
709
|
-
constructor(A) {
|
|
710
|
-
this.parser = A, this.name = m.KHR_MATERIALS_ANISOTROPY;
|
|
711
|
-
}
|
|
712
|
-
getMaterialType(A) {
|
|
713
|
-
const s = this.parser.json.materials[A];
|
|
714
|
-
return !s.extensions || !s.extensions[this.name] ? null : hA;
|
|
715
|
-
}
|
|
716
|
-
extendMaterialParams(A, e) {
|
|
717
|
-
const s = this.parser, t = s.json.materials[A];
|
|
718
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
719
|
-
return Promise.resolve();
|
|
720
|
-
const n = [], i = t.extensions[this.name];
|
|
721
|
-
return i.anisotropyStrength !== void 0 && (e.anisotropy = i.anisotropyStrength), i.anisotropyRotation !== void 0 && (e.anisotropyRotation = i.anisotropyRotation), i.anisotropyTexture !== void 0 && n.push(s.assignTexture(e, "anisotropyMap", i.anisotropyTexture)), Promise.all(n);
|
|
722
|
-
}
|
|
723
|
-
}
|
|
724
|
-
class Yi {
|
|
725
|
-
constructor(A) {
|
|
726
|
-
this.parser = A, this.name = m.KHR_TEXTURE_BASISU;
|
|
727
|
-
}
|
|
728
|
-
loadTexture(A) {
|
|
729
|
-
const e = this.parser, s = e.json, t = s.textures[A];
|
|
730
|
-
if (!t.extensions || !t.extensions[this.name])
|
|
731
|
-
return null;
|
|
732
|
-
const n = t.extensions[this.name], i = e.options.ktx2Loader;
|
|
733
|
-
if (!i) {
|
|
734
|
-
if (s.extensionsRequired && s.extensionsRequired.indexOf(this.name) >= 0)
|
|
735
|
-
throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");
|
|
736
|
-
return null;
|
|
737
|
-
}
|
|
738
|
-
return e.loadTextureImage(A, n.source, i);
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
class qi {
|
|
742
|
-
constructor(A) {
|
|
743
|
-
this.parser = A, this.name = m.EXT_TEXTURE_WEBP, this.isSupported = null;
|
|
744
|
-
}
|
|
745
|
-
loadTexture(A) {
|
|
746
|
-
const e = this.name, s = this.parser, t = s.json, n = t.textures[A];
|
|
747
|
-
if (!n.extensions || !n.extensions[e])
|
|
748
|
-
return null;
|
|
749
|
-
const i = n.extensions[e], B = t.images[i.source];
|
|
750
|
-
let r = s.textureLoader;
|
|
751
|
-
if (B.uri) {
|
|
752
|
-
const C = s.options.manager.getHandler(B.uri);
|
|
753
|
-
C !== null && (r = C);
|
|
754
|
-
}
|
|
755
|
-
return this.detectSupport().then(function(C) {
|
|
756
|
-
if (C)
|
|
757
|
-
return s.loadTextureImage(A, i.source, r);
|
|
758
|
-
if (t.extensionsRequired && t.extensionsRequired.indexOf(e) >= 0)
|
|
759
|
-
throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");
|
|
760
|
-
return s.loadTexture(A);
|
|
761
|
-
});
|
|
762
|
-
}
|
|
763
|
-
detectSupport() {
|
|
764
|
-
return this.isSupported || (this.isSupported = new Promise(function(A) {
|
|
765
|
-
const e = new Image();
|
|
766
|
-
e.src = "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA", e.onload = e.onerror = function() {
|
|
767
|
-
A(e.height === 1);
|
|
768
|
-
};
|
|
769
|
-
})), this.isSupported;
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
class Xi {
|
|
773
|
-
constructor(A) {
|
|
774
|
-
this.parser = A, this.name = m.EXT_TEXTURE_AVIF, this.isSupported = null;
|
|
775
|
-
}
|
|
776
|
-
loadTexture(A) {
|
|
777
|
-
const e = this.name, s = this.parser, t = s.json, n = t.textures[A];
|
|
778
|
-
if (!n.extensions || !n.extensions[e])
|
|
779
|
-
return null;
|
|
780
|
-
const i = n.extensions[e], B = t.images[i.source];
|
|
781
|
-
let r = s.textureLoader;
|
|
782
|
-
if (B.uri) {
|
|
783
|
-
const C = s.options.manager.getHandler(B.uri);
|
|
784
|
-
C !== null && (r = C);
|
|
785
|
-
}
|
|
786
|
-
return this.detectSupport().then(function(C) {
|
|
787
|
-
if (C)
|
|
788
|
-
return s.loadTextureImage(A, i.source, r);
|
|
789
|
-
if (t.extensionsRequired && t.extensionsRequired.indexOf(e) >= 0)
|
|
790
|
-
throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");
|
|
791
|
-
return s.loadTexture(A);
|
|
792
|
-
});
|
|
793
|
-
}
|
|
794
|
-
detectSupport() {
|
|
795
|
-
return this.isSupported || (this.isSupported = new Promise(function(A) {
|
|
796
|
-
const e = new Image();
|
|
797
|
-
e.src = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=", e.onload = e.onerror = function() {
|
|
798
|
-
A(e.height === 1);
|
|
799
|
-
};
|
|
800
|
-
})), this.isSupported;
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
class Vi {
|
|
804
|
-
constructor(A) {
|
|
805
|
-
this.name = m.EXT_MESHOPT_COMPRESSION, this.parser = A;
|
|
806
|
-
}
|
|
807
|
-
loadBufferView(A) {
|
|
808
|
-
const e = this.parser.json, s = e.bufferViews[A];
|
|
809
|
-
if (s.extensions && s.extensions[this.name]) {
|
|
810
|
-
const t = s.extensions[this.name], n = this.parser.getDependency("buffer", t.buffer), i = this.parser.options.meshoptDecoder;
|
|
811
|
-
if (!i || !i.supported) {
|
|
812
|
-
if (e.extensionsRequired && e.extensionsRequired.indexOf(this.name) >= 0)
|
|
813
|
-
throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");
|
|
814
|
-
return null;
|
|
815
|
-
}
|
|
816
|
-
return n.then(function(B) {
|
|
817
|
-
const r = t.byteOffset || 0, C = t.byteLength || 0, g = t.count, I = t.byteStride, E = new Uint8Array(B, r, C);
|
|
818
|
-
return i.decodeGltfBufferAsync ? i.decodeGltfBufferAsync(g, I, E, t.mode, t.filter).then(function(Q) {
|
|
819
|
-
return Q.buffer;
|
|
820
|
-
}) : i.ready.then(function() {
|
|
821
|
-
const Q = new ArrayBuffer(g * I);
|
|
822
|
-
return i.decodeGltfBuffer(new Uint8Array(Q), g, I, E, t.mode, t.filter), Q;
|
|
823
|
-
});
|
|
824
|
-
});
|
|
825
|
-
} else
|
|
826
|
-
return null;
|
|
827
|
-
}
|
|
828
|
-
}
|
|
829
|
-
class Wi {
|
|
830
|
-
constructor(A) {
|
|
831
|
-
this.name = m.EXT_MESH_GPU_INSTANCING, this.parser = A;
|
|
832
|
-
}
|
|
833
|
-
createNodeMesh(A) {
|
|
834
|
-
const e = this.parser.json, s = e.nodes[A];
|
|
835
|
-
if (!s.extensions || !s.extensions[this.name] || s.mesh === void 0)
|
|
836
|
-
return null;
|
|
837
|
-
const t = e.meshes[s.mesh];
|
|
838
|
-
for (const C of t.primitives)
|
|
839
|
-
if (C.mode !== P.TRIANGLES && C.mode !== P.TRIANGLE_STRIP && C.mode !== P.TRIANGLE_FAN && C.mode !== void 0)
|
|
840
|
-
return null;
|
|
841
|
-
const i = s.extensions[this.name].attributes, B = [], r = {};
|
|
842
|
-
for (const C in i)
|
|
843
|
-
B.push(this.parser.getDependency("accessor", i[C]).then((g) => (r[C] = g, r[C])));
|
|
844
|
-
return B.length < 1 ? null : (B.push(this.parser.createNodeMesh(A)), Promise.all(B).then((C) => {
|
|
845
|
-
const g = C.pop(), I = g.isGroup ? g.children : [g], E = C[0].count, Q = [];
|
|
846
|
-
for (const l of I) {
|
|
847
|
-
const h = new ye(), c = new L(), d = new os(), D = new L(1, 1, 1), F = new wn(l.geometry, l.material, E);
|
|
848
|
-
for (let p = 0; p < E; p++)
|
|
849
|
-
r.TRANSLATION && c.fromBufferAttribute(r.TRANSLATION, p), r.ROTATION && d.fromBufferAttribute(r.ROTATION, p), r.SCALE && D.fromBufferAttribute(r.SCALE, p), F.setMatrixAt(p, h.compose(c, d, D));
|
|
850
|
-
for (const p in r)
|
|
851
|
-
if (p === "_COLOR_0") {
|
|
852
|
-
const R = r[p];
|
|
853
|
-
F.instanceColor = new yn(R.array, R.itemSize, R.normalized);
|
|
854
|
-
} else
|
|
855
|
-
p !== "TRANSLATION" && p !== "ROTATION" && p !== "SCALE" && l.geometry.setAttribute(p, r[p]);
|
|
856
|
-
rs.prototype.copy.call(F, l), this.parser.assignFinalMaterial(F), Q.push(F);
|
|
857
|
-
}
|
|
858
|
-
return g.isGroup ? (g.clear(), g.add(...Q), g) : Q[0];
|
|
859
|
-
}));
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
const Ps = "glTF", Te = 12, Fs = { JSON: 1313821514, BIN: 5130562 };
|
|
863
|
-
class ji {
|
|
864
|
-
constructor(A) {
|
|
865
|
-
this.name = m.KHR_BINARY_GLTF, this.content = null, this.body = null;
|
|
866
|
-
const e = new DataView(A, 0, Te), s = new TextDecoder();
|
|
867
|
-
if (this.header = {
|
|
868
|
-
magic: s.decode(new Uint8Array(A.slice(0, 4))),
|
|
869
|
-
version: e.getUint32(4, !0),
|
|
870
|
-
length: e.getUint32(8, !0)
|
|
871
|
-
}, this.header.magic !== Ps)
|
|
872
|
-
throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");
|
|
873
|
-
if (this.header.version < 2)
|
|
874
|
-
throw new Error("THREE.GLTFLoader: Legacy binary file detected.");
|
|
875
|
-
const t = this.header.length - Te, n = new DataView(A, Te);
|
|
876
|
-
let i = 0;
|
|
877
|
-
for (; i < t; ) {
|
|
878
|
-
const B = n.getUint32(i, !0);
|
|
879
|
-
i += 4;
|
|
880
|
-
const r = n.getUint32(i, !0);
|
|
881
|
-
if (i += 4, r === Fs.JSON) {
|
|
882
|
-
const C = new Uint8Array(A, Te + i, B);
|
|
883
|
-
this.content = s.decode(C);
|
|
884
|
-
} else if (r === Fs.BIN) {
|
|
885
|
-
const C = Te + i;
|
|
886
|
-
this.body = A.slice(C, C + B);
|
|
887
|
-
}
|
|
888
|
-
i += B;
|
|
889
|
-
}
|
|
890
|
-
if (this.content === null)
|
|
891
|
-
throw new Error("THREE.GLTFLoader: JSON content not found.");
|
|
892
|
-
}
|
|
893
|
-
}
|
|
894
|
-
class Zi {
|
|
895
|
-
constructor(A, e) {
|
|
896
|
-
if (!e)
|
|
897
|
-
throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
|
|
898
|
-
this.name = m.KHR_DRACO_MESH_COMPRESSION, this.json = A, this.dracoLoader = e, this.dracoLoader.preload();
|
|
899
|
-
}
|
|
900
|
-
decodePrimitive(A, e) {
|
|
901
|
-
const s = this.json, t = this.dracoLoader, n = A.extensions[this.name].bufferView, i = A.extensions[this.name].attributes, B = {}, r = {}, C = {};
|
|
902
|
-
for (const g in i) {
|
|
903
|
-
const I = $t[g] || g.toLowerCase();
|
|
904
|
-
B[I] = i[g];
|
|
905
|
-
}
|
|
906
|
-
for (const g in A.attributes) {
|
|
907
|
-
const I = $t[g] || g.toLowerCase();
|
|
908
|
-
if (i[g] !== void 0) {
|
|
909
|
-
const E = s.accessors[A.attributes[g]], Q = ee[E.componentType];
|
|
910
|
-
C[I] = Q.name, r[I] = E.normalized === !0;
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
return e.getDependency("bufferView", n).then(function(g) {
|
|
914
|
-
return new Promise(function(I, E) {
|
|
915
|
-
t.decodeDracoFile(g, function(Q) {
|
|
916
|
-
for (const l in Q.attributes) {
|
|
917
|
-
const h = Q.attributes[l], c = r[l];
|
|
918
|
-
c !== void 0 && (h.normalized = c);
|
|
919
|
-
}
|
|
920
|
-
I(Q);
|
|
921
|
-
}, B, C, j, E);
|
|
922
|
-
});
|
|
923
|
-
});
|
|
924
|
-
}
|
|
925
|
-
}
|
|
926
|
-
class zi {
|
|
927
|
-
constructor() {
|
|
928
|
-
this.name = m.KHR_TEXTURE_TRANSFORM;
|
|
929
|
-
}
|
|
930
|
-
extendTexture(A, e) {
|
|
931
|
-
return (e.texCoord === void 0 || e.texCoord === A.channel) && e.offset === void 0 && e.rotation === void 0 && e.scale === void 0 || (A = A.clone(), e.texCoord !== void 0 && (A.channel = e.texCoord), e.offset !== void 0 && A.offset.fromArray(e.offset), e.rotation !== void 0 && (A.rotation = e.rotation), e.scale !== void 0 && A.repeat.fromArray(e.scale), A.needsUpdate = !0), A;
|
|
932
|
-
}
|
|
933
|
-
}
|
|
934
|
-
class $i {
|
|
935
|
-
constructor() {
|
|
936
|
-
this.name = m.KHR_MESH_QUANTIZATION;
|
|
937
|
-
}
|
|
938
|
-
}
|
|
939
|
-
class Ys extends Ai {
|
|
940
|
-
constructor(A, e, s, t) {
|
|
941
|
-
super(A, e, s, t);
|
|
942
|
-
}
|
|
943
|
-
copySampleValue_(A) {
|
|
944
|
-
const e = this.resultBuffer, s = this.sampleValues, t = this.valueSize, n = A * t * 3 + t;
|
|
945
|
-
for (let i = 0; i !== t; i++)
|
|
946
|
-
e[i] = s[n + i];
|
|
947
|
-
return e;
|
|
948
|
-
}
|
|
949
|
-
interpolate_(A, e, s, t) {
|
|
950
|
-
const n = this.resultBuffer, i = this.sampleValues, B = this.valueSize, r = B * 2, C = B * 3, g = t - e, I = (s - e) / g, E = I * I, Q = E * I, l = A * C, h = l - C, c = -2 * Q + 3 * E, d = Q - E, D = 1 - c, F = d - E + I;
|
|
951
|
-
for (let p = 0; p !== B; p++) {
|
|
952
|
-
const R = i[h + p + B], y = i[h + p + r] * g, S = i[l + p + B], Z = i[l + p] * g;
|
|
953
|
-
n[p] = D * R + F * y + c * S + d * Z;
|
|
954
|
-
}
|
|
955
|
-
return n;
|
|
956
|
-
}
|
|
957
|
-
}
|
|
958
|
-
const Ao = new os();
|
|
959
|
-
class eo extends Ys {
|
|
960
|
-
interpolate_(A, e, s, t) {
|
|
961
|
-
const n = super.interpolate_(A, e, s, t);
|
|
962
|
-
return Ao.fromArray(n).normalize().toArray(n), n;
|
|
963
|
-
}
|
|
964
|
-
}
|
|
965
|
-
const P = {
|
|
966
|
-
FLOAT: 5126,
|
|
967
|
-
//FLOAT_MAT2: 35674,
|
|
968
|
-
FLOAT_MAT3: 35675,
|
|
969
|
-
FLOAT_MAT4: 35676,
|
|
970
|
-
FLOAT_VEC2: 35664,
|
|
971
|
-
FLOAT_VEC3: 35665,
|
|
972
|
-
FLOAT_VEC4: 35666,
|
|
973
|
-
LINEAR: 9729,
|
|
974
|
-
REPEAT: 10497,
|
|
975
|
-
SAMPLER_2D: 35678,
|
|
976
|
-
POINTS: 0,
|
|
977
|
-
LINES: 1,
|
|
978
|
-
LINE_LOOP: 2,
|
|
979
|
-
LINE_STRIP: 3,
|
|
980
|
-
TRIANGLES: 4,
|
|
981
|
-
TRIANGLE_STRIP: 5,
|
|
982
|
-
TRIANGLE_FAN: 6,
|
|
983
|
-
UNSIGNED_BYTE: 5121,
|
|
984
|
-
UNSIGNED_SHORT: 5123
|
|
985
|
-
}, ee = {
|
|
986
|
-
5120: Int8Array,
|
|
987
|
-
5121: Uint8Array,
|
|
988
|
-
5122: Int16Array,
|
|
989
|
-
5123: Uint16Array,
|
|
990
|
-
5125: Uint32Array,
|
|
991
|
-
5126: Float32Array
|
|
992
|
-
}, ps = {
|
|
993
|
-
9728: Pn,
|
|
994
|
-
9729: Gt,
|
|
995
|
-
9984: Yn,
|
|
996
|
-
9985: qn,
|
|
997
|
-
9986: Xn,
|
|
998
|
-
9987: Bs
|
|
999
|
-
}, Gs = {
|
|
1000
|
-
33071: Vn,
|
|
1001
|
-
33648: Wn,
|
|
1002
|
-
10497: Zt
|
|
1003
|
-
}, Ut = {
|
|
1004
|
-
SCALAR: 1,
|
|
1005
|
-
VEC2: 2,
|
|
1006
|
-
VEC3: 3,
|
|
1007
|
-
VEC4: 4,
|
|
1008
|
-
MAT2: 4,
|
|
1009
|
-
MAT3: 9,
|
|
1010
|
-
MAT4: 16
|
|
1011
|
-
}, $t = {
|
|
1012
|
-
POSITION: "position",
|
|
1013
|
-
NORMAL: "normal",
|
|
1014
|
-
TANGENT: "tangent",
|
|
1015
|
-
TEXCOORD_0: "uv",
|
|
1016
|
-
TEXCOORD_1: "uv1",
|
|
1017
|
-
TEXCOORD_2: "uv2",
|
|
1018
|
-
TEXCOORD_3: "uv3",
|
|
1019
|
-
COLOR_0: "color",
|
|
1020
|
-
WEIGHTS_0: "skinWeight",
|
|
1021
|
-
JOINTS_0: "skinIndex"
|
|
1022
|
-
}, uA = {
|
|
1023
|
-
scale: "scale",
|
|
1024
|
-
translation: "position",
|
|
1025
|
-
rotation: "quaternion",
|
|
1026
|
-
weights: "morphTargetInfluences"
|
|
1027
|
-
}, to = {
|
|
1028
|
-
CUBICSPLINE: void 0,
|
|
1029
|
-
// We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each
|
|
1030
|
-
// keyframe track will be initialized with a default interpolation type, then modified.
|
|
1031
|
-
LINEAR: Os,
|
|
1032
|
-
STEP: jn
|
|
1033
|
-
}, bt = {
|
|
1034
|
-
OPAQUE: "OPAQUE",
|
|
1035
|
-
MASK: "MASK",
|
|
1036
|
-
BLEND: "BLEND"
|
|
1037
|
-
};
|
|
1038
|
-
function so(a) {
|
|
1039
|
-
return a.DefaultMaterial === void 0 && (a.DefaultMaterial = new Ks({
|
|
1040
|
-
color: 16777215,
|
|
1041
|
-
emissive: 0,
|
|
1042
|
-
metalness: 1,
|
|
1043
|
-
roughness: 1,
|
|
1044
|
-
transparent: !1,
|
|
1045
|
-
depthTest: !0,
|
|
1046
|
-
side: Zn
|
|
1047
|
-
})), a.DefaultMaterial;
|
|
1048
|
-
}
|
|
1049
|
-
function UA(a, A, e) {
|
|
1050
|
-
for (const s in e.extensions)
|
|
1051
|
-
a[s] === void 0 && (A.userData.gltfExtensions = A.userData.gltfExtensions || {}, A.userData.gltfExtensions[s] = e.extensions[s]);
|
|
1052
|
-
}
|
|
1053
|
-
function dA(a, A) {
|
|
1054
|
-
A.extras !== void 0 && (typeof A.extras == "object" ? Object.assign(a.userData, A.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + A.extras));
|
|
1055
|
-
}
|
|
1056
|
-
function no(a, A, e) {
|
|
1057
|
-
let s = !1, t = !1, n = !1;
|
|
1058
|
-
for (let C = 0, g = A.length; C < g; C++) {
|
|
1059
|
-
const I = A[C];
|
|
1060
|
-
if (I.POSITION !== void 0 && (s = !0), I.NORMAL !== void 0 && (t = !0), I.COLOR_0 !== void 0 && (n = !0), s && t && n)
|
|
1061
|
-
break;
|
|
1062
|
-
}
|
|
1063
|
-
if (!s && !t && !n)
|
|
1064
|
-
return Promise.resolve(a);
|
|
1065
|
-
const i = [], B = [], r = [];
|
|
1066
|
-
for (let C = 0, g = A.length; C < g; C++) {
|
|
1067
|
-
const I = A[C];
|
|
1068
|
-
if (s) {
|
|
1069
|
-
const E = I.POSITION !== void 0 ? e.getDependency("accessor", I.POSITION) : a.attributes.position;
|
|
1070
|
-
i.push(E);
|
|
1071
|
-
}
|
|
1072
|
-
if (t) {
|
|
1073
|
-
const E = I.NORMAL !== void 0 ? e.getDependency("accessor", I.NORMAL) : a.attributes.normal;
|
|
1074
|
-
B.push(E);
|
|
1075
|
-
}
|
|
1076
|
-
if (n) {
|
|
1077
|
-
const E = I.COLOR_0 !== void 0 ? e.getDependency("accessor", I.COLOR_0) : a.attributes.color;
|
|
1078
|
-
r.push(E);
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
return Promise.all([
|
|
1082
|
-
Promise.all(i),
|
|
1083
|
-
Promise.all(B),
|
|
1084
|
-
Promise.all(r)
|
|
1085
|
-
]).then(function(C) {
|
|
1086
|
-
const g = C[0], I = C[1], E = C[2];
|
|
1087
|
-
return s && (a.morphAttributes.position = g), t && (a.morphAttributes.normal = I), n && (a.morphAttributes.color = E), a.morphTargetsRelative = !0, a;
|
|
1088
|
-
});
|
|
1089
|
-
}
|
|
1090
|
-
function io(a, A) {
|
|
1091
|
-
if (a.updateMorphTargets(), A.weights !== void 0)
|
|
1092
|
-
for (let e = 0, s = A.weights.length; e < s; e++)
|
|
1093
|
-
a.morphTargetInfluences[e] = A.weights[e];
|
|
1094
|
-
if (A.extras && Array.isArray(A.extras.targetNames)) {
|
|
1095
|
-
const e = A.extras.targetNames;
|
|
1096
|
-
if (a.morphTargetInfluences.length === e.length) {
|
|
1097
|
-
a.morphTargetDictionary = {};
|
|
1098
|
-
for (let s = 0, t = e.length; s < t; s++)
|
|
1099
|
-
a.morphTargetDictionary[e[s]] = s;
|
|
1100
|
-
} else
|
|
1101
|
-
console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
|
|
1102
|
-
}
|
|
1103
|
-
}
|
|
1104
|
-
function oo(a) {
|
|
1105
|
-
let A;
|
|
1106
|
-
const e = a.extensions && a.extensions[m.KHR_DRACO_MESH_COMPRESSION];
|
|
1107
|
-
if (e ? A = "draco:" + e.bufferView + ":" + e.indices + ":" + Nt(e.attributes) : A = a.indices + ":" + Nt(a.attributes) + ":" + a.mode, a.targets !== void 0)
|
|
1108
|
-
for (let s = 0, t = a.targets.length; s < t; s++)
|
|
1109
|
-
A += ":" + Nt(a.targets[s]);
|
|
1110
|
-
return A;
|
|
1111
|
-
}
|
|
1112
|
-
function Nt(a) {
|
|
1113
|
-
let A = "";
|
|
1114
|
-
const e = Object.keys(a).sort();
|
|
1115
|
-
for (let s = 0, t = e.length; s < t; s++)
|
|
1116
|
-
A += e[s] + ":" + a[e[s]] + ";";
|
|
1117
|
-
return A;
|
|
1118
|
-
}
|
|
1119
|
-
function As(a) {
|
|
1120
|
-
switch (a) {
|
|
1121
|
-
case Int8Array:
|
|
1122
|
-
return 1 / 127;
|
|
1123
|
-
case Uint8Array:
|
|
1124
|
-
return 1 / 255;
|
|
1125
|
-
case Int16Array:
|
|
1126
|
-
return 1 / 32767;
|
|
1127
|
-
case Uint16Array:
|
|
1128
|
-
return 1 / 65535;
|
|
1129
|
-
default:
|
|
1130
|
-
throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
|
|
1131
|
-
}
|
|
1132
|
-
}
|
|
1133
|
-
function ro(a) {
|
|
1134
|
-
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" : "image/png";
|
|
1135
|
-
}
|
|
1136
|
-
const Bo = new ye();
|
|
1137
|
-
class ao {
|
|
1138
|
-
constructor(A = {}, e = {}) {
|
|
1139
|
-
this.json = A, this.extensions = {}, this.plugins = {}, this.options = e, this.cache = new xi(), 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 = {};
|
|
1140
|
-
let s = !1, t = !1, n = -1;
|
|
1141
|
-
typeof navigator != "undefined" && (s = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === !0, t = navigator.userAgent.indexOf("Firefox") > -1, n = t ? navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1] : -1), typeof createImageBitmap == "undefined" || s || t && n < 98 ? this.textureLoader = new Ns(this.options.manager) : this.textureLoader = new Mn(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new WA(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
|
|
1142
|
-
}
|
|
1143
|
-
setExtensions(A) {
|
|
1144
|
-
this.extensions = A;
|
|
1145
|
-
}
|
|
1146
|
-
setPlugins(A) {
|
|
1147
|
-
this.plugins = A;
|
|
1148
|
-
}
|
|
1149
|
-
parse(A, e) {
|
|
1150
|
-
const s = this, t = this.json, n = this.extensions;
|
|
1151
|
-
this.cache.removeAll(), this.nodeCache = {}, this._invokeAll(function(i) {
|
|
1152
|
-
return i._markDefs && i._markDefs();
|
|
1153
|
-
}), Promise.all(this._invokeAll(function(i) {
|
|
1154
|
-
return i.beforeRoot && i.beforeRoot();
|
|
1155
|
-
})).then(function() {
|
|
1156
|
-
return Promise.all([
|
|
1157
|
-
s.getDependencies("scene"),
|
|
1158
|
-
s.getDependencies("animation"),
|
|
1159
|
-
s.getDependencies("camera")
|
|
1160
|
-
]);
|
|
1161
|
-
}).then(function(i) {
|
|
1162
|
-
const B = {
|
|
1163
|
-
scene: i[0][t.scene || 0],
|
|
1164
|
-
scenes: i[0],
|
|
1165
|
-
animations: i[1],
|
|
1166
|
-
cameras: i[2],
|
|
1167
|
-
asset: t.asset,
|
|
1168
|
-
parser: s,
|
|
1169
|
-
userData: {}
|
|
1170
|
-
};
|
|
1171
|
-
return UA(n, B, t), dA(B, t), Promise.all(s._invokeAll(function(r) {
|
|
1172
|
-
return r.afterRoot && r.afterRoot(B);
|
|
1173
|
-
})).then(function() {
|
|
1174
|
-
for (const r of B.scenes)
|
|
1175
|
-
r.updateMatrixWorld();
|
|
1176
|
-
A(B);
|
|
1177
|
-
});
|
|
1178
|
-
}).catch(e);
|
|
1179
|
-
}
|
|
1180
|
-
/**
|
|
1181
|
-
* Marks the special nodes/meshes in json for efficient parse.
|
|
1182
|
-
*/
|
|
1183
|
-
_markDefs() {
|
|
1184
|
-
const A = this.json.nodes || [], e = this.json.skins || [], s = this.json.meshes || [];
|
|
1185
|
-
for (let t = 0, n = e.length; t < n; t++) {
|
|
1186
|
-
const i = e[t].joints;
|
|
1187
|
-
for (let B = 0, r = i.length; B < r; B++)
|
|
1188
|
-
A[i[B]].isBone = !0;
|
|
1189
|
-
}
|
|
1190
|
-
for (let t = 0, n = A.length; t < n; t++) {
|
|
1191
|
-
const i = A[t];
|
|
1192
|
-
i.mesh !== void 0 && (this._addNodeRef(this.meshCache, i.mesh), i.skin !== void 0 && (s[i.mesh].isSkinnedMesh = !0)), i.camera !== void 0 && this._addNodeRef(this.cameraCache, i.camera);
|
|
1193
|
-
}
|
|
1194
|
-
}
|
|
1195
|
-
/**
|
|
1196
|
-
* Counts references to shared node / Object3D resources. These resources
|
|
1197
|
-
* can be reused, or "instantiated", at multiple nodes in the scene
|
|
1198
|
-
* hierarchy. Mesh, Camera, and Light instances are instantiated and must
|
|
1199
|
-
* be marked. Non-scenegraph resources (like Materials, Geometries, and
|
|
1200
|
-
* Textures) can be reused directly and are not marked here.
|
|
1201
|
-
*
|
|
1202
|
-
* Example: CesiumMilkTruck sample model reuses "Wheel" meshes.
|
|
1203
|
-
*/
|
|
1204
|
-
_addNodeRef(A, e) {
|
|
1205
|
-
e !== void 0 && (A.refs[e] === void 0 && (A.refs[e] = A.uses[e] = 0), A.refs[e]++);
|
|
1206
|
-
}
|
|
1207
|
-
/** Returns a reference to a shared resource, cloning it if necessary. */
|
|
1208
|
-
_getNodeRef(A, e, s) {
|
|
1209
|
-
if (A.refs[e] <= 1)
|
|
1210
|
-
return s;
|
|
1211
|
-
const t = s.clone(), n = (i, B) => {
|
|
1212
|
-
const r = this.associations.get(i);
|
|
1213
|
-
r != null && this.associations.set(B, r);
|
|
1214
|
-
for (const [C, g] of i.children.entries())
|
|
1215
|
-
n(g, B.children[C]);
|
|
1216
|
-
};
|
|
1217
|
-
return n(s, t), t.name += "_instance_" + A.uses[e]++, t;
|
|
1218
|
-
}
|
|
1219
|
-
_invokeOne(A) {
|
|
1220
|
-
const e = Object.values(this.plugins);
|
|
1221
|
-
e.push(this);
|
|
1222
|
-
for (let s = 0; s < e.length; s++) {
|
|
1223
|
-
const t = A(e[s]);
|
|
1224
|
-
if (t)
|
|
1225
|
-
return t;
|
|
1226
|
-
}
|
|
1227
|
-
return null;
|
|
1228
|
-
}
|
|
1229
|
-
_invokeAll(A) {
|
|
1230
|
-
const e = Object.values(this.plugins);
|
|
1231
|
-
e.unshift(this);
|
|
1232
|
-
const s = [];
|
|
1233
|
-
for (let t = 0; t < e.length; t++) {
|
|
1234
|
-
const n = A(e[t]);
|
|
1235
|
-
n && s.push(n);
|
|
1236
|
-
}
|
|
1237
|
-
return s;
|
|
1238
|
-
}
|
|
1239
|
-
/**
|
|
1240
|
-
* Requests the specified dependency asynchronously, with caching.
|
|
1241
|
-
* @param {string} type
|
|
1242
|
-
* @param {number} index
|
|
1243
|
-
* @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}
|
|
1244
|
-
*/
|
|
1245
|
-
getDependency(A, e) {
|
|
1246
|
-
const s = A + ":" + e;
|
|
1247
|
-
let t = this.cache.get(s);
|
|
1248
|
-
if (!t) {
|
|
1249
|
-
switch (A) {
|
|
1250
|
-
case "scene":
|
|
1251
|
-
t = this.loadScene(e);
|
|
1252
|
-
break;
|
|
1253
|
-
case "node":
|
|
1254
|
-
t = this._invokeOne(function(n) {
|
|
1255
|
-
return n.loadNode && n.loadNode(e);
|
|
1256
|
-
});
|
|
1257
|
-
break;
|
|
1258
|
-
case "mesh":
|
|
1259
|
-
t = this._invokeOne(function(n) {
|
|
1260
|
-
return n.loadMesh && n.loadMesh(e);
|
|
1261
|
-
});
|
|
1262
|
-
break;
|
|
1263
|
-
case "accessor":
|
|
1264
|
-
t = this.loadAccessor(e);
|
|
1265
|
-
break;
|
|
1266
|
-
case "bufferView":
|
|
1267
|
-
t = this._invokeOne(function(n) {
|
|
1268
|
-
return n.loadBufferView && n.loadBufferView(e);
|
|
1269
|
-
});
|
|
1270
|
-
break;
|
|
1271
|
-
case "buffer":
|
|
1272
|
-
t = this.loadBuffer(e);
|
|
1273
|
-
break;
|
|
1274
|
-
case "material":
|
|
1275
|
-
t = this._invokeOne(function(n) {
|
|
1276
|
-
return n.loadMaterial && n.loadMaterial(e);
|
|
1277
|
-
});
|
|
1278
|
-
break;
|
|
1279
|
-
case "texture":
|
|
1280
|
-
t = this._invokeOne(function(n) {
|
|
1281
|
-
return n.loadTexture && n.loadTexture(e);
|
|
1282
|
-
});
|
|
1283
|
-
break;
|
|
1284
|
-
case "skin":
|
|
1285
|
-
t = this.loadSkin(e);
|
|
1286
|
-
break;
|
|
1287
|
-
case "animation":
|
|
1288
|
-
t = this._invokeOne(function(n) {
|
|
1289
|
-
return n.loadAnimation && n.loadAnimation(e);
|
|
1290
|
-
});
|
|
1291
|
-
break;
|
|
1292
|
-
case "camera":
|
|
1293
|
-
t = this.loadCamera(e);
|
|
1294
|
-
break;
|
|
1295
|
-
default:
|
|
1296
|
-
if (t = this._invokeOne(function(n) {
|
|
1297
|
-
return n != this && n.getDependency && n.getDependency(A, e);
|
|
1298
|
-
}), !t)
|
|
1299
|
-
throw new Error("Unknown type: " + A);
|
|
1300
|
-
break;
|
|
1301
|
-
}
|
|
1302
|
-
this.cache.add(s, t);
|
|
1303
|
-
}
|
|
1304
|
-
return t;
|
|
1305
|
-
}
|
|
1306
|
-
/**
|
|
1307
|
-
* Requests all dependencies of the specified type asynchronously, with caching.
|
|
1308
|
-
* @param {string} type
|
|
1309
|
-
* @return {Promise<Array<Object>>}
|
|
1310
|
-
*/
|
|
1311
|
-
getDependencies(A) {
|
|
1312
|
-
let e = this.cache.get(A);
|
|
1313
|
-
if (!e) {
|
|
1314
|
-
const s = this, t = this.json[A + (A === "mesh" ? "es" : "s")] || [];
|
|
1315
|
-
e = Promise.all(t.map(function(n, i) {
|
|
1316
|
-
return s.getDependency(A, i);
|
|
1317
|
-
})), this.cache.add(A, e);
|
|
1318
|
-
}
|
|
1319
|
-
return e;
|
|
1320
|
-
}
|
|
1321
|
-
/**
|
|
1322
|
-
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
|
|
1323
|
-
* @param {number} bufferIndex
|
|
1324
|
-
* @return {Promise<ArrayBuffer>}
|
|
1325
|
-
*/
|
|
1326
|
-
loadBuffer(A) {
|
|
1327
|
-
const e = this.json.buffers[A], s = this.fileLoader;
|
|
1328
|
-
if (e.type && e.type !== "arraybuffer")
|
|
1329
|
-
throw new Error("THREE.GLTFLoader: " + e.type + " buffer type is not supported.");
|
|
1330
|
-
if (e.uri === void 0 && A === 0)
|
|
1331
|
-
return Promise.resolve(this.extensions[m.KHR_BINARY_GLTF].body);
|
|
1332
|
-
const t = this.options;
|
|
1333
|
-
return new Promise(function(n, i) {
|
|
1334
|
-
s.load(ve.resolveURL(e.uri, t.path), n, void 0, function() {
|
|
1335
|
-
i(new Error('THREE.GLTFLoader: Failed to load buffer "' + e.uri + '".'));
|
|
1336
|
-
});
|
|
1337
|
-
});
|
|
1338
|
-
}
|
|
1339
|
-
/**
|
|
1340
|
-
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
|
|
1341
|
-
* @param {number} bufferViewIndex
|
|
1342
|
-
* @return {Promise<ArrayBuffer>}
|
|
1343
|
-
*/
|
|
1344
|
-
loadBufferView(A) {
|
|
1345
|
-
const e = this.json.bufferViews[A];
|
|
1346
|
-
return this.getDependency("buffer", e.buffer).then(function(s) {
|
|
1347
|
-
const t = e.byteLength || 0, n = e.byteOffset || 0;
|
|
1348
|
-
return s.slice(n, n + t);
|
|
1349
|
-
});
|
|
1350
|
-
}
|
|
1351
|
-
/**
|
|
1352
|
-
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors
|
|
1353
|
-
* @param {number} accessorIndex
|
|
1354
|
-
* @return {Promise<BufferAttribute|InterleavedBufferAttribute>}
|
|
1355
|
-
*/
|
|
1356
|
-
loadAccessor(A) {
|
|
1357
|
-
const e = this, s = this.json, t = this.json.accessors[A];
|
|
1358
|
-
if (t.bufferView === void 0 && t.sparse === void 0) {
|
|
1359
|
-
const i = Ut[t.type], B = ee[t.componentType], r = t.normalized === !0, C = new B(t.count * i);
|
|
1360
|
-
return Promise.resolve(new Ae(C, i, r));
|
|
1361
|
-
}
|
|
1362
|
-
const n = [];
|
|
1363
|
-
return t.bufferView !== void 0 ? n.push(this.getDependency("bufferView", t.bufferView)) : n.push(null), t.sparse !== void 0 && (n.push(this.getDependency("bufferView", t.sparse.indices.bufferView)), n.push(this.getDependency("bufferView", t.sparse.values.bufferView))), Promise.all(n).then(function(i) {
|
|
1364
|
-
const B = i[0], r = Ut[t.type], C = ee[t.componentType], g = C.BYTES_PER_ELEMENT, I = g * r, E = t.byteOffset || 0, Q = t.bufferView !== void 0 ? s.bufferViews[t.bufferView].byteStride : void 0, l = t.normalized === !0;
|
|
1365
|
-
let h, c;
|
|
1366
|
-
if (Q && Q !== I) {
|
|
1367
|
-
const d = Math.floor(E / Q), D = "InterleavedBuffer:" + t.bufferView + ":" + t.componentType + ":" + d + ":" + t.count;
|
|
1368
|
-
let F = e.cache.get(D);
|
|
1369
|
-
F || (h = new C(B, d * Q, t.count * Q / g), F = new Sn(h, Q / g), e.cache.add(D, F)), c = new Ln(F, r, E % Q / g, l);
|
|
1370
|
-
} else
|
|
1371
|
-
B === null ? h = new C(t.count * r) : h = new C(B, E, t.count * r), c = new Ae(h, r, l);
|
|
1372
|
-
if (t.sparse !== void 0) {
|
|
1373
|
-
const d = Ut.SCALAR, D = ee[t.sparse.indices.componentType], F = t.sparse.indices.byteOffset || 0, p = t.sparse.values.byteOffset || 0, R = new D(i[1], F, t.sparse.count * d), y = new C(i[2], p, t.sparse.count * r);
|
|
1374
|
-
B !== null && (c = new Ae(c.array.slice(), c.itemSize, c.normalized));
|
|
1375
|
-
for (let S = 0, Z = R.length; S < Z; S++) {
|
|
1376
|
-
const N = R[S];
|
|
1377
|
-
if (c.setX(N, y[S * r]), r >= 2 && c.setY(N, y[S * r + 1]), r >= 3 && c.setZ(N, y[S * r + 2]), r >= 4 && c.setW(N, y[S * r + 3]), r >= 5)
|
|
1378
|
-
throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
|
|
1379
|
-
}
|
|
1380
|
-
}
|
|
1381
|
-
return c;
|
|
1382
|
-
});
|
|
1383
|
-
}
|
|
1384
|
-
/**
|
|
1385
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures
|
|
1386
|
-
* @param {number} textureIndex
|
|
1387
|
-
* @return {Promise<THREE.Texture|null>}
|
|
1388
|
-
*/
|
|
1389
|
-
loadTexture(A) {
|
|
1390
|
-
const e = this.json, s = this.options, n = e.textures[A].source, i = e.images[n];
|
|
1391
|
-
let B = this.textureLoader;
|
|
1392
|
-
if (i.uri) {
|
|
1393
|
-
const r = s.manager.getHandler(i.uri);
|
|
1394
|
-
r !== null && (B = r);
|
|
1395
|
-
}
|
|
1396
|
-
return this.loadTextureImage(A, n, B);
|
|
1397
|
-
}
|
|
1398
|
-
loadTextureImage(A, e, s) {
|
|
1399
|
-
const t = this, n = this.json, i = n.textures[A], B = n.images[e], r = (B.uri || B.bufferView) + ":" + i.sampler;
|
|
1400
|
-
if (this.textureCache[r])
|
|
1401
|
-
return this.textureCache[r];
|
|
1402
|
-
const C = this.loadImageSource(e, s).then(function(g) {
|
|
1403
|
-
g.flipY = !1, g.name = i.name || B.name || "", g.name === "" && typeof B.uri == "string" && B.uri.startsWith("data:image/") === !1 && (g.name = B.uri);
|
|
1404
|
-
const E = (n.samplers || {})[i.sampler] || {};
|
|
1405
|
-
return g.magFilter = ps[E.magFilter] || Gt, g.minFilter = ps[E.minFilter] || Bs, g.wrapS = Gs[E.wrapS] || Zt, g.wrapT = Gs[E.wrapT] || Zt, t.associations.set(g, { textures: A }), g;
|
|
1406
|
-
}).catch(function() {
|
|
1407
|
-
return null;
|
|
1408
|
-
});
|
|
1409
|
-
return this.textureCache[r] = C, C;
|
|
1410
|
-
}
|
|
1411
|
-
loadImageSource(A, e) {
|
|
1412
|
-
const s = this, t = this.json, n = this.options;
|
|
1413
|
-
if (this.sourceCache[A] !== void 0)
|
|
1414
|
-
return this.sourceCache[A].then((I) => I.clone());
|
|
1415
|
-
const i = t.images[A], B = self.URL || self.webkitURL;
|
|
1416
|
-
let r = i.uri || "", C = !1;
|
|
1417
|
-
if (i.bufferView !== void 0)
|
|
1418
|
-
r = s.getDependency("bufferView", i.bufferView).then(function(I) {
|
|
1419
|
-
C = !0;
|
|
1420
|
-
const E = new Blob([I], { type: i.mimeType });
|
|
1421
|
-
return r = B.createObjectURL(E), r;
|
|
1422
|
-
});
|
|
1423
|
-
else if (i.uri === void 0)
|
|
1424
|
-
throw new Error("THREE.GLTFLoader: Image " + A + " is missing URI and bufferView");
|
|
1425
|
-
const g = Promise.resolve(r).then(function(I) {
|
|
1426
|
-
return new Promise(function(E, Q) {
|
|
1427
|
-
let l = E;
|
|
1428
|
-
e.isImageBitmapLoader === !0 && (l = function(h) {
|
|
1429
|
-
const c = new Es(h);
|
|
1430
|
-
c.needsUpdate = !0, E(c);
|
|
1431
|
-
}), e.load(ve.resolveURL(I, n.path), l, void 0, Q);
|
|
1432
|
-
});
|
|
1433
|
-
}).then(function(I) {
|
|
1434
|
-
return C === !0 && B.revokeObjectURL(r), I.userData.mimeType = i.mimeType || ro(i.uri), I;
|
|
1435
|
-
}).catch(function(I) {
|
|
1436
|
-
throw console.error("THREE.GLTFLoader: Couldn't load texture", r), I;
|
|
1437
|
-
});
|
|
1438
|
-
return this.sourceCache[A] = g, g;
|
|
1439
|
-
}
|
|
1440
|
-
/**
|
|
1441
|
-
* Asynchronously assigns a texture to the given material parameters.
|
|
1442
|
-
* @param {Object} materialParams
|
|
1443
|
-
* @param {string} mapName
|
|
1444
|
-
* @param {Object} mapDef
|
|
1445
|
-
* @return {Promise<Texture>}
|
|
1446
|
-
*/
|
|
1447
|
-
assignTexture(A, e, s, t) {
|
|
1448
|
-
const n = this;
|
|
1449
|
-
return this.getDependency("texture", s.index).then(function(i) {
|
|
1450
|
-
if (!i)
|
|
1451
|
-
return null;
|
|
1452
|
-
if (s.texCoord !== void 0 && s.texCoord > 0 && (i = i.clone(), i.channel = s.texCoord), n.extensions[m.KHR_TEXTURE_TRANSFORM]) {
|
|
1453
|
-
const B = s.extensions !== void 0 ? s.extensions[m.KHR_TEXTURE_TRANSFORM] : void 0;
|
|
1454
|
-
if (B) {
|
|
1455
|
-
const r = n.associations.get(i);
|
|
1456
|
-
i = n.extensions[m.KHR_TEXTURE_TRANSFORM].extendTexture(i, B), n.associations.set(i, r);
|
|
1457
|
-
}
|
|
1458
|
-
}
|
|
1459
|
-
return t !== void 0 && (i.colorSpace = t), A[e] = i, i;
|
|
1460
|
-
});
|
|
1461
|
-
}
|
|
1462
|
-
/**
|
|
1463
|
-
* Assigns final material to a Mesh, Line, or Points instance. The instance
|
|
1464
|
-
* already has a material (generated from the glTF material options alone)
|
|
1465
|
-
* but reuse of the same glTF material may require multiple threejs materials
|
|
1466
|
-
* to accommodate different primitive types, defines, etc. New materials will
|
|
1467
|
-
* be created if necessary, and reused from a cache.
|
|
1468
|
-
* @param {Object3D} mesh Mesh, Line, or Points instance.
|
|
1469
|
-
*/
|
|
1470
|
-
assignFinalMaterial(A) {
|
|
1471
|
-
const e = A.geometry;
|
|
1472
|
-
let s = A.material;
|
|
1473
|
-
const t = e.attributes.tangent === void 0, n = e.attributes.color !== void 0, i = e.attributes.normal === void 0;
|
|
1474
|
-
if (A.isPoints) {
|
|
1475
|
-
const B = "PointsMaterial:" + s.uuid;
|
|
1476
|
-
let r = this.cache.get(B);
|
|
1477
|
-
r || (r = new xn(), Ht.prototype.copy.call(r, s), r.color.copy(s.color), r.map = s.map, r.sizeAttenuation = !1, this.cache.add(B, r)), s = r;
|
|
1478
|
-
} else if (A.isLine) {
|
|
1479
|
-
const B = "LineBasicMaterial:" + s.uuid;
|
|
1480
|
-
let r = this.cache.get(B);
|
|
1481
|
-
r || (r = new Jn(), Ht.prototype.copy.call(r, s), r.color.copy(s.color), r.map = s.map, this.cache.add(B, r)), s = r;
|
|
1482
|
-
}
|
|
1483
|
-
if (t || n || i) {
|
|
1484
|
-
let B = "ClonedMaterial:" + s.uuid + ":";
|
|
1485
|
-
t && (B += "derivative-tangents:"), n && (B += "vertex-colors:"), i && (B += "flat-shading:");
|
|
1486
|
-
let r = this.cache.get(B);
|
|
1487
|
-
r || (r = s.clone(), n && (r.vertexColors = !0), i && (r.flatShading = !0), t && (r.normalScale && (r.normalScale.y *= -1), r.clearcoatNormalScale && (r.clearcoatNormalScale.y *= -1)), this.cache.add(B, r), this.associations.set(r, this.associations.get(s))), s = r;
|
|
1488
|
-
}
|
|
1489
|
-
A.material = s;
|
|
1490
|
-
}
|
|
1491
|
-
getMaterialType() {
|
|
1492
|
-
return Ks;
|
|
1493
|
-
}
|
|
1494
|
-
/**
|
|
1495
|
-
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials
|
|
1496
|
-
* @param {number} materialIndex
|
|
1497
|
-
* @return {Promise<Material>}
|
|
1498
|
-
*/
|
|
1499
|
-
loadMaterial(A) {
|
|
1500
|
-
const e = this, s = this.json, t = this.extensions, n = s.materials[A];
|
|
1501
|
-
let i;
|
|
1502
|
-
const B = {}, r = n.extensions || {}, C = [];
|
|
1503
|
-
if (r[m.KHR_MATERIALS_UNLIT]) {
|
|
1504
|
-
const I = t[m.KHR_MATERIALS_UNLIT];
|
|
1505
|
-
i = I.getMaterialType(), C.push(I.extendParams(B, n, e));
|
|
1506
|
-
} else {
|
|
1507
|
-
const I = n.pbrMetallicRoughness || {};
|
|
1508
|
-
if (B.color = new K(1, 1, 1), B.opacity = 1, Array.isArray(I.baseColorFactor)) {
|
|
1509
|
-
const E = I.baseColorFactor;
|
|
1510
|
-
B.color.setRGB(E[0], E[1], E[2], j), B.opacity = E[3];
|
|
1511
|
-
}
|
|
1512
|
-
I.baseColorTexture !== void 0 && C.push(e.assignTexture(B, "map", I.baseColorTexture, QA)), B.metalness = I.metallicFactor !== void 0 ? I.metallicFactor : 1, B.roughness = I.roughnessFactor !== void 0 ? I.roughnessFactor : 1, I.metallicRoughnessTexture !== void 0 && (C.push(e.assignTexture(B, "metalnessMap", I.metallicRoughnessTexture)), C.push(e.assignTexture(B, "roughnessMap", I.metallicRoughnessTexture))), i = this._invokeOne(function(E) {
|
|
1513
|
-
return E.getMaterialType && E.getMaterialType(A);
|
|
1514
|
-
}), C.push(Promise.all(this._invokeAll(function(E) {
|
|
1515
|
-
return E.extendMaterialParams && E.extendMaterialParams(A, B);
|
|
1516
|
-
})));
|
|
1517
|
-
}
|
|
1518
|
-
n.doubleSided === !0 && (B.side = Hn);
|
|
1519
|
-
const g = n.alphaMode || bt.OPAQUE;
|
|
1520
|
-
if (g === bt.BLEND ? (B.transparent = !0, B.depthWrite = !1) : (B.transparent = !1, g === bt.MASK && (B.alphaTest = n.alphaCutoff !== void 0 ? n.alphaCutoff : 0.5)), n.normalTexture !== void 0 && i !== Ne && (C.push(e.assignTexture(B, "normalMap", n.normalTexture)), B.normalScale = new EA(1, 1), n.normalTexture.scale !== void 0)) {
|
|
1521
|
-
const I = n.normalTexture.scale;
|
|
1522
|
-
B.normalScale.set(I, I);
|
|
1523
|
-
}
|
|
1524
|
-
if (n.occlusionTexture !== void 0 && i !== Ne && (C.push(e.assignTexture(B, "aoMap", n.occlusionTexture)), n.occlusionTexture.strength !== void 0 && (B.aoMapIntensity = n.occlusionTexture.strength)), n.emissiveFactor !== void 0 && i !== Ne) {
|
|
1525
|
-
const I = n.emissiveFactor;
|
|
1526
|
-
B.emissive = new K().setRGB(I[0], I[1], I[2], j);
|
|
1527
|
-
}
|
|
1528
|
-
return n.emissiveTexture !== void 0 && i !== Ne && C.push(e.assignTexture(B, "emissiveMap", n.emissiveTexture, QA)), Promise.all(C).then(function() {
|
|
1529
|
-
const I = new i(B);
|
|
1530
|
-
return n.name && (I.name = n.name), dA(I, n), e.associations.set(I, { materials: A }), n.extensions && UA(t, I, n), I;
|
|
1531
|
-
});
|
|
1532
|
-
}
|
|
1533
|
-
/** When Object3D instances are targeted by animation, they need unique names. */
|
|
1534
|
-
createUniqueName(A) {
|
|
1535
|
-
const e = Tn.sanitizeNodeName(A || "");
|
|
1536
|
-
return e in this.nodeNamesUsed ? e + "_" + ++this.nodeNamesUsed[e] : (this.nodeNamesUsed[e] = 0, e);
|
|
1537
|
-
}
|
|
1538
|
-
/**
|
|
1539
|
-
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry
|
|
1540
|
-
*
|
|
1541
|
-
* Creates BufferGeometries from primitives.
|
|
1542
|
-
*
|
|
1543
|
-
* @param {Array<GLTF.Primitive>} primitives
|
|
1544
|
-
* @return {Promise<Array<BufferGeometry>>}
|
|
1545
|
-
*/
|
|
1546
|
-
loadGeometries(A) {
|
|
1547
|
-
const e = this, s = this.extensions, t = this.primitiveCache;
|
|
1548
|
-
function n(B) {
|
|
1549
|
-
return s[m.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(B, e).then(function(r) {
|
|
1550
|
-
return ms(r, B, e);
|
|
1551
|
-
});
|
|
1552
|
-
}
|
|
1553
|
-
const i = [];
|
|
1554
|
-
for (let B = 0, r = A.length; B < r; B++) {
|
|
1555
|
-
const C = A[B], g = oo(C), I = t[g];
|
|
1556
|
-
if (I)
|
|
1557
|
-
i.push(I.promise);
|
|
1558
|
-
else {
|
|
1559
|
-
let E;
|
|
1560
|
-
C.extensions && C.extensions[m.KHR_DRACO_MESH_COMPRESSION] ? E = n(C) : E = ms(new as(), C, e), t[g] = { primitive: C, promise: E }, i.push(E);
|
|
1561
|
-
}
|
|
1562
|
-
}
|
|
1563
|
-
return Promise.all(i);
|
|
1564
|
-
}
|
|
1565
|
-
/**
|
|
1566
|
-
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes
|
|
1567
|
-
* @param {number} meshIndex
|
|
1568
|
-
* @return {Promise<Group|Mesh|SkinnedMesh>}
|
|
1569
|
-
*/
|
|
1570
|
-
loadMesh(A) {
|
|
1571
|
-
const e = this, s = this.json, t = this.extensions, n = s.meshes[A], i = n.primitives, B = [];
|
|
1572
|
-
for (let r = 0, C = i.length; r < C; r++) {
|
|
1573
|
-
const g = i[r].material === void 0 ? so(this.cache) : this.getDependency("material", i[r].material);
|
|
1574
|
-
B.push(g);
|
|
1575
|
-
}
|
|
1576
|
-
return B.push(e.loadGeometries(i)), Promise.all(B).then(function(r) {
|
|
1577
|
-
const C = r.slice(0, r.length - 1), g = r[r.length - 1], I = [];
|
|
1578
|
-
for (let Q = 0, l = g.length; Q < l; Q++) {
|
|
1579
|
-
const h = g[Q], c = i[Q];
|
|
1580
|
-
let d;
|
|
1581
|
-
const D = C[Q];
|
|
1582
|
-
if (c.mode === P.TRIANGLES || c.mode === P.TRIANGLE_STRIP || c.mode === P.TRIANGLE_FAN || c.mode === void 0)
|
|
1583
|
-
d = n.isSkinnedMesh === !0 ? new Un(h, D) : new HA(h, D), d.isSkinnedMesh === !0 && d.normalizeSkinWeights(), c.mode === P.TRIANGLE_STRIP ? d.geometry = Ds(d.geometry, ks) : c.mode === P.TRIANGLE_FAN && (d.geometry = Ds(d.geometry, jt));
|
|
1584
|
-
else if (c.mode === P.LINES)
|
|
1585
|
-
d = new vs(h, D);
|
|
1586
|
-
else if (c.mode === P.LINE_STRIP)
|
|
1587
|
-
d = new bn(h, D);
|
|
1588
|
-
else if (c.mode === P.LINE_LOOP)
|
|
1589
|
-
d = new Nn(h, D);
|
|
1590
|
-
else if (c.mode === P.POINTS)
|
|
1591
|
-
d = new kn(h, D);
|
|
1592
|
-
else
|
|
1593
|
-
throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + c.mode);
|
|
1594
|
-
Object.keys(d.geometry.morphAttributes).length > 0 && io(d, n), d.name = e.createUniqueName(n.name || "mesh_" + A), dA(d, n), c.extensions && UA(t, d, c), e.assignFinalMaterial(d), I.push(d);
|
|
1595
|
-
}
|
|
1596
|
-
for (let Q = 0, l = I.length; Q < l; Q++)
|
|
1597
|
-
e.associations.set(I[Q], {
|
|
1598
|
-
meshes: A,
|
|
1599
|
-
primitives: Q
|
|
1600
|
-
});
|
|
1601
|
-
if (I.length === 1)
|
|
1602
|
-
return n.extensions && UA(t, I[0], n), I[0];
|
|
1603
|
-
const E = new Oe();
|
|
1604
|
-
n.extensions && UA(t, E, n), e.associations.set(E, { meshes: A });
|
|
1605
|
-
for (let Q = 0, l = I.length; Q < l; Q++)
|
|
1606
|
-
E.add(I[Q]);
|
|
1607
|
-
return E;
|
|
1608
|
-
});
|
|
1609
|
-
}
|
|
1610
|
-
/**
|
|
1611
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras
|
|
1612
|
-
* @param {number} cameraIndex
|
|
1613
|
-
* @return {Promise<THREE.Camera>}
|
|
1614
|
-
*/
|
|
1615
|
-
loadCamera(A) {
|
|
1616
|
-
let e;
|
|
1617
|
-
const s = this.json.cameras[A], t = s[s.type];
|
|
1618
|
-
if (!t) {
|
|
1619
|
-
console.warn("THREE.GLTFLoader: Missing camera parameters.");
|
|
1620
|
-
return;
|
|
1621
|
-
}
|
|
1622
|
-
return s.type === "perspective" ? e = new Wt(Kn.radToDeg(t.yfov), t.aspectRatio || 1, t.znear || 1, t.zfar || 2e6) : s.type === "orthographic" && (e = new pt(-t.xmag, t.xmag, t.ymag, -t.ymag, t.znear, t.zfar)), s.name && (e.name = this.createUniqueName(s.name)), dA(e, s), Promise.resolve(e);
|
|
1623
|
-
}
|
|
1624
|
-
/**
|
|
1625
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
|
|
1626
|
-
* @param {number} skinIndex
|
|
1627
|
-
* @return {Promise<Skeleton>}
|
|
1628
|
-
*/
|
|
1629
|
-
loadSkin(A) {
|
|
1630
|
-
const e = this.json.skins[A], s = [];
|
|
1631
|
-
for (let t = 0, n = e.joints.length; t < n; t++)
|
|
1632
|
-
s.push(this._loadNodeShallow(e.joints[t]));
|
|
1633
|
-
return e.inverseBindMatrices !== void 0 ? s.push(this.getDependency("accessor", e.inverseBindMatrices)) : s.push(null), Promise.all(s).then(function(t) {
|
|
1634
|
-
const n = t.pop(), i = t, B = [], r = [];
|
|
1635
|
-
for (let C = 0, g = i.length; C < g; C++) {
|
|
1636
|
-
const I = i[C];
|
|
1637
|
-
if (I) {
|
|
1638
|
-
B.push(I);
|
|
1639
|
-
const E = new ye();
|
|
1640
|
-
n !== null && E.fromArray(n.array, C * 16), r.push(E);
|
|
1641
|
-
} else
|
|
1642
|
-
console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', e.joints[C]);
|
|
1643
|
-
}
|
|
1644
|
-
return new vn(B, r);
|
|
1645
|
-
});
|
|
1646
|
-
}
|
|
1647
|
-
/**
|
|
1648
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations
|
|
1649
|
-
* @param {number} animationIndex
|
|
1650
|
-
* @return {Promise<AnimationClip>}
|
|
1651
|
-
*/
|
|
1652
|
-
loadAnimation(A) {
|
|
1653
|
-
const e = this.json, s = this, t = e.animations[A], n = t.name ? t.name : "animation_" + A, i = [], B = [], r = [], C = [], g = [];
|
|
1654
|
-
for (let I = 0, E = t.channels.length; I < E; I++) {
|
|
1655
|
-
const Q = t.channels[I], l = t.samplers[Q.sampler], h = Q.target, c = h.node, d = t.parameters !== void 0 ? t.parameters[l.input] : l.input, D = t.parameters !== void 0 ? t.parameters[l.output] : l.output;
|
|
1656
|
-
h.node !== void 0 && (i.push(this.getDependency("node", c)), B.push(this.getDependency("accessor", d)), r.push(this.getDependency("accessor", D)), C.push(l), g.push(h));
|
|
1657
|
-
}
|
|
1658
|
-
return Promise.all([
|
|
1659
|
-
Promise.all(i),
|
|
1660
|
-
Promise.all(B),
|
|
1661
|
-
Promise.all(r),
|
|
1662
|
-
Promise.all(C),
|
|
1663
|
-
Promise.all(g)
|
|
1664
|
-
]).then(function(I) {
|
|
1665
|
-
const E = I[0], Q = I[1], l = I[2], h = I[3], c = I[4], d = [];
|
|
1666
|
-
for (let D = 0, F = E.length; D < F; D++) {
|
|
1667
|
-
const p = E[D], R = Q[D], y = l[D], S = h[D], Z = c[D];
|
|
1668
|
-
if (p === void 0)
|
|
1669
|
-
continue;
|
|
1670
|
-
p.updateMatrix && p.updateMatrix();
|
|
1671
|
-
const N = s._createAnimationTracks(p, R, y, S, Z);
|
|
1672
|
-
if (N)
|
|
1673
|
-
for (let tA = 0; tA < N.length; tA++)
|
|
1674
|
-
d.push(N[tA]);
|
|
1675
|
-
}
|
|
1676
|
-
return new On(n, void 0, d);
|
|
1677
|
-
});
|
|
1678
|
-
}
|
|
1679
|
-
createNodeMesh(A) {
|
|
1680
|
-
const e = this.json, s = this, t = e.nodes[A];
|
|
1681
|
-
return t.mesh === void 0 ? null : s.getDependency("mesh", t.mesh).then(function(n) {
|
|
1682
|
-
const i = s._getNodeRef(s.meshCache, t.mesh, n);
|
|
1683
|
-
return t.weights !== void 0 && i.traverse(function(B) {
|
|
1684
|
-
if (B.isMesh)
|
|
1685
|
-
for (let r = 0, C = t.weights.length; r < C; r++)
|
|
1686
|
-
B.morphTargetInfluences[r] = t.weights[r];
|
|
1687
|
-
}), i;
|
|
1688
|
-
});
|
|
1689
|
-
}
|
|
1690
|
-
/**
|
|
1691
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy
|
|
1692
|
-
* @param {number} nodeIndex
|
|
1693
|
-
* @return {Promise<Object3D>}
|
|
1694
|
-
*/
|
|
1695
|
-
loadNode(A) {
|
|
1696
|
-
const e = this.json, s = this, t = e.nodes[A], n = s._loadNodeShallow(A), i = [], B = t.children || [];
|
|
1697
|
-
for (let C = 0, g = B.length; C < g; C++)
|
|
1698
|
-
i.push(s.getDependency("node", B[C]));
|
|
1699
|
-
const r = t.skin === void 0 ? Promise.resolve(null) : s.getDependency("skin", t.skin);
|
|
1700
|
-
return Promise.all([
|
|
1701
|
-
n,
|
|
1702
|
-
Promise.all(i),
|
|
1703
|
-
r
|
|
1704
|
-
]).then(function(C) {
|
|
1705
|
-
const g = C[0], I = C[1], E = C[2];
|
|
1706
|
-
E !== null && g.traverse(function(Q) {
|
|
1707
|
-
Q.isSkinnedMesh && Q.bind(E, Bo);
|
|
1708
|
-
});
|
|
1709
|
-
for (let Q = 0, l = I.length; Q < l; Q++)
|
|
1710
|
-
g.add(I[Q]);
|
|
1711
|
-
return g;
|
|
1712
|
-
});
|
|
1713
|
-
}
|
|
1714
|
-
// ._loadNodeShallow() parses a single node.
|
|
1715
|
-
// skin and child nodes are created and added in .loadNode() (no '_' prefix).
|
|
1716
|
-
_loadNodeShallow(A) {
|
|
1717
|
-
const e = this.json, s = this.extensions, t = this;
|
|
1718
|
-
if (this.nodeCache[A] !== void 0)
|
|
1719
|
-
return this.nodeCache[A];
|
|
1720
|
-
const n = e.nodes[A], i = n.name ? t.createUniqueName(n.name) : "", B = [], r = t._invokeOne(function(C) {
|
|
1721
|
-
return C.createNodeMesh && C.createNodeMesh(A);
|
|
1722
|
-
});
|
|
1723
|
-
return r && B.push(r), n.camera !== void 0 && B.push(t.getDependency("camera", n.camera).then(function(C) {
|
|
1724
|
-
return t._getNodeRef(t.cameraCache, n.camera, C);
|
|
1725
|
-
})), t._invokeAll(function(C) {
|
|
1726
|
-
return C.createNodeAttachment && C.createNodeAttachment(A);
|
|
1727
|
-
}).forEach(function(C) {
|
|
1728
|
-
B.push(C);
|
|
1729
|
-
}), this.nodeCache[A] = Promise.all(B).then(function(C) {
|
|
1730
|
-
let g;
|
|
1731
|
-
if (n.isBone === !0 ? g = new _n() : C.length > 1 ? g = new Oe() : C.length === 1 ? g = C[0] : g = new rs(), g !== C[0])
|
|
1732
|
-
for (let I = 0, E = C.length; I < E; I++)
|
|
1733
|
-
g.add(C[I]);
|
|
1734
|
-
if (n.name && (g.userData.name = n.name, g.name = i), dA(g, n), n.extensions && UA(s, g, n), n.matrix !== void 0) {
|
|
1735
|
-
const I = new ye();
|
|
1736
|
-
I.fromArray(n.matrix), g.applyMatrix4(I);
|
|
1737
|
-
} else
|
|
1738
|
-
n.translation !== void 0 && g.position.fromArray(n.translation), n.rotation !== void 0 && g.quaternion.fromArray(n.rotation), n.scale !== void 0 && g.scale.fromArray(n.scale);
|
|
1739
|
-
return t.associations.has(g) || t.associations.set(g, {}), t.associations.get(g).nodes = A, g;
|
|
1740
|
-
}), this.nodeCache[A];
|
|
1741
|
-
}
|
|
1742
|
-
/**
|
|
1743
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes
|
|
1744
|
-
* @param {number} sceneIndex
|
|
1745
|
-
* @return {Promise<Group>}
|
|
1746
|
-
*/
|
|
1747
|
-
loadScene(A) {
|
|
1748
|
-
const e = this.extensions, s = this.json.scenes[A], t = this, n = new Oe();
|
|
1749
|
-
s.name && (n.name = t.createUniqueName(s.name)), dA(n, s), s.extensions && UA(e, n, s);
|
|
1750
|
-
const i = s.nodes || [], B = [];
|
|
1751
|
-
for (let r = 0, C = i.length; r < C; r++)
|
|
1752
|
-
B.push(t.getDependency("node", i[r]));
|
|
1753
|
-
return Promise.all(B).then(function(r) {
|
|
1754
|
-
for (let g = 0, I = r.length; g < I; g++)
|
|
1755
|
-
n.add(r[g]);
|
|
1756
|
-
const C = (g) => {
|
|
1757
|
-
const I = /* @__PURE__ */ new Map();
|
|
1758
|
-
for (const [E, Q] of t.associations)
|
|
1759
|
-
(E instanceof Ht || E instanceof Es) && I.set(E, Q);
|
|
1760
|
-
return g.traverse((E) => {
|
|
1761
|
-
const Q = t.associations.get(E);
|
|
1762
|
-
Q != null && I.set(E, Q);
|
|
1763
|
-
}), I;
|
|
1764
|
-
};
|
|
1765
|
-
return t.associations = C(n), n;
|
|
1766
|
-
});
|
|
1767
|
-
}
|
|
1768
|
-
_createAnimationTracks(A, e, s, t, n) {
|
|
1769
|
-
const i = [], B = A.name ? A.name : A.uuid, r = [];
|
|
1770
|
-
uA[n.path] === uA.weights ? A.traverse(function(E) {
|
|
1771
|
-
E.morphTargetInfluences && r.push(E.name ? E.name : E.uuid);
|
|
1772
|
-
}) : r.push(B);
|
|
1773
|
-
let C;
|
|
1774
|
-
switch (uA[n.path]) {
|
|
1775
|
-
case uA.weights:
|
|
1776
|
-
C = hs;
|
|
1777
|
-
break;
|
|
1778
|
-
case uA.rotation:
|
|
1779
|
-
C = ls;
|
|
1780
|
-
break;
|
|
1781
|
-
case uA.position:
|
|
1782
|
-
case uA.scale:
|
|
1783
|
-
C = Qs;
|
|
1784
|
-
break;
|
|
1785
|
-
default:
|
|
1786
|
-
switch (s.itemSize) {
|
|
1787
|
-
case 1:
|
|
1788
|
-
C = hs;
|
|
1789
|
-
break;
|
|
1790
|
-
case 2:
|
|
1791
|
-
case 3:
|
|
1792
|
-
default:
|
|
1793
|
-
C = Qs;
|
|
1794
|
-
break;
|
|
1795
|
-
}
|
|
1796
|
-
break;
|
|
1797
|
-
}
|
|
1798
|
-
const g = t.interpolation !== void 0 ? to[t.interpolation] : Os, I = this._getArrayFromAccessor(s);
|
|
1799
|
-
for (let E = 0, Q = r.length; E < Q; E++) {
|
|
1800
|
-
const l = new C(
|
|
1801
|
-
r[E] + "." + uA[n.path],
|
|
1802
|
-
e.array,
|
|
1803
|
-
I,
|
|
1804
|
-
g
|
|
1805
|
-
);
|
|
1806
|
-
t.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(l), i.push(l);
|
|
1807
|
-
}
|
|
1808
|
-
return i;
|
|
1809
|
-
}
|
|
1810
|
-
_getArrayFromAccessor(A) {
|
|
1811
|
-
let e = A.array;
|
|
1812
|
-
if (A.normalized) {
|
|
1813
|
-
const s = As(e.constructor), t = new Float32Array(e.length);
|
|
1814
|
-
for (let n = 0, i = e.length; n < i; n++)
|
|
1815
|
-
t[n] = e[n] * s;
|
|
1816
|
-
e = t;
|
|
1817
|
-
}
|
|
1818
|
-
return e;
|
|
1819
|
-
}
|
|
1820
|
-
_createCubicSplineTrackInterpolant(A) {
|
|
1821
|
-
A.createInterpolant = function(s) {
|
|
1822
|
-
const t = this instanceof ls ? eo : Ys;
|
|
1823
|
-
return new t(this.times, this.values, this.getValueSize() / 3, s);
|
|
1824
|
-
}, A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
|
|
1825
|
-
}
|
|
1826
|
-
}
|
|
1827
|
-
function Co(a, A, e) {
|
|
1828
|
-
const s = A.attributes, t = new zn();
|
|
1829
|
-
if (s.POSITION !== void 0) {
|
|
1830
|
-
const B = e.json.accessors[s.POSITION], r = B.min, C = B.max;
|
|
1831
|
-
if (r !== void 0 && C !== void 0) {
|
|
1832
|
-
if (t.set(
|
|
1833
|
-
new L(r[0], r[1], r[2]),
|
|
1834
|
-
new L(C[0], C[1], C[2])
|
|
1835
|
-
), B.normalized) {
|
|
1836
|
-
const g = As(ee[B.componentType]);
|
|
1837
|
-
t.min.multiplyScalar(g), t.max.multiplyScalar(g);
|
|
1838
|
-
}
|
|
1839
|
-
} else {
|
|
1840
|
-
console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1841
|
-
return;
|
|
1842
|
-
}
|
|
1843
|
-
} else
|
|
1844
|
-
return;
|
|
1845
|
-
const n = A.targets;
|
|
1846
|
-
if (n !== void 0) {
|
|
1847
|
-
const B = new L(), r = new L();
|
|
1848
|
-
for (let C = 0, g = n.length; C < g; C++) {
|
|
1849
|
-
const I = n[C];
|
|
1850
|
-
if (I.POSITION !== void 0) {
|
|
1851
|
-
const E = e.json.accessors[I.POSITION], Q = E.min, l = E.max;
|
|
1852
|
-
if (Q !== void 0 && l !== void 0) {
|
|
1853
|
-
if (r.setX(Math.max(Math.abs(Q[0]), Math.abs(l[0]))), r.setY(Math.max(Math.abs(Q[1]), Math.abs(l[1]))), r.setZ(Math.max(Math.abs(Q[2]), Math.abs(l[2]))), E.normalized) {
|
|
1854
|
-
const h = As(ee[E.componentType]);
|
|
1855
|
-
r.multiplyScalar(h);
|
|
1856
|
-
}
|
|
1857
|
-
B.max(r);
|
|
1858
|
-
} else
|
|
1859
|
-
console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1860
|
-
}
|
|
1861
|
-
}
|
|
1862
|
-
t.expandByVector(B);
|
|
1863
|
-
}
|
|
1864
|
-
a.boundingBox = t;
|
|
1865
|
-
const i = new $n();
|
|
1866
|
-
t.getCenter(i.center), i.radius = t.min.distanceTo(t.max) / 2, a.boundingSphere = i;
|
|
1867
|
-
}
|
|
1868
|
-
function ms(a, A, e) {
|
|
1869
|
-
const s = A.attributes, t = [];
|
|
1870
|
-
function n(i, B) {
|
|
1871
|
-
return e.getDependency("accessor", i).then(function(r) {
|
|
1872
|
-
a.setAttribute(B, r);
|
|
1873
|
-
});
|
|
1874
|
-
}
|
|
1875
|
-
for (const i in s) {
|
|
1876
|
-
const B = $t[i] || i.toLowerCase();
|
|
1877
|
-
B in a.attributes || t.push(n(s[i], B));
|
|
1878
|
-
}
|
|
1879
|
-
if (A.indices !== void 0 && !a.index) {
|
|
1880
|
-
const i = e.getDependency("accessor", A.indices).then(function(B) {
|
|
1881
|
-
a.setIndex(B);
|
|
1882
|
-
});
|
|
1883
|
-
t.push(i);
|
|
1884
|
-
}
|
|
1885
|
-
return cs.workingColorSpace !== j && "COLOR_0" in s && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${cs.workingColorSpace}" not supported.`), dA(a, A), Co(a, A, e), Promise.all(t).then(function() {
|
|
1886
|
-
return A.targets !== void 0 ? no(a, A.targets, e) : a;
|
|
1887
|
-
});
|
|
1888
|
-
}
|
|
1889
|
-
const kt = /* @__PURE__ */ new WeakMap();
|
|
1890
|
-
class Io extends is {
|
|
1891
|
-
constructor(A) {
|
|
1892
|
-
super(A), this.decoderPath = "", this.decoderConfig = {}, this.decoderBinary = null, this.decoderPending = null, this.workerLimit = 4, this.workerPool = [], this.workerNextTaskID = 1, this.workerSourceURL = "", this.defaultAttributeIDs = {
|
|
1893
|
-
position: "POSITION",
|
|
1894
|
-
normal: "NORMAL",
|
|
1895
|
-
color: "COLOR",
|
|
1896
|
-
uv: "TEX_COORD"
|
|
1897
|
-
}, this.defaultAttributeTypes = {
|
|
1898
|
-
position: "Float32Array",
|
|
1899
|
-
normal: "Float32Array",
|
|
1900
|
-
color: "Float32Array",
|
|
1901
|
-
uv: "Float32Array"
|
|
1902
|
-
};
|
|
1903
|
-
}
|
|
1904
|
-
setDecoderPath(A) {
|
|
1905
|
-
return this.decoderPath = A, this;
|
|
1906
|
-
}
|
|
1907
|
-
setDecoderConfig(A) {
|
|
1908
|
-
return this.decoderConfig = A, this;
|
|
1909
|
-
}
|
|
1910
|
-
setWorkerLimit(A) {
|
|
1911
|
-
return this.workerLimit = A, this;
|
|
1912
|
-
}
|
|
1913
|
-
load(A, e, s, t) {
|
|
1914
|
-
const n = new WA(this.manager);
|
|
1915
|
-
n.setPath(this.path), n.setResponseType("arraybuffer"), n.setRequestHeader(this.requestHeader), n.setWithCredentials(this.withCredentials), n.load(A, (i) => {
|
|
1916
|
-
this.parse(i, e, t);
|
|
1917
|
-
}, s, t);
|
|
1918
|
-
}
|
|
1919
|
-
parse(A, e, s = () => {
|
|
1920
|
-
}) {
|
|
1921
|
-
this.decodeDracoFile(A, e, null, null, QA).catch(s);
|
|
1922
|
-
}
|
|
1923
|
-
decodeDracoFile(A, e, s, t, n = j, i = () => {
|
|
1924
|
-
}) {
|
|
1925
|
-
const B = {
|
|
1926
|
-
attributeIDs: s || this.defaultAttributeIDs,
|
|
1927
|
-
attributeTypes: t || this.defaultAttributeTypes,
|
|
1928
|
-
useUniqueIDs: !!s,
|
|
1929
|
-
vertexColorSpace: n
|
|
1930
|
-
};
|
|
1931
|
-
return this.decodeGeometry(A, B).then(e).catch(i);
|
|
1932
|
-
}
|
|
1933
|
-
decodeGeometry(A, e) {
|
|
1934
|
-
const s = JSON.stringify(e);
|
|
1935
|
-
if (kt.has(A)) {
|
|
1936
|
-
const r = kt.get(A);
|
|
1937
|
-
if (r.key === s)
|
|
1938
|
-
return r.promise;
|
|
1939
|
-
if (A.byteLength === 0)
|
|
1940
|
-
throw new Error(
|
|
1941
|
-
"THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred."
|
|
1942
|
-
);
|
|
1943
|
-
}
|
|
1944
|
-
let t;
|
|
1945
|
-
const n = this.workerNextTaskID++, i = A.byteLength, B = this._getWorker(n, i).then((r) => (t = r, new Promise((C, g) => {
|
|
1946
|
-
t._callbacks[n] = { resolve: C, reject: g }, t.postMessage({ type: "decode", id: n, taskConfig: e, buffer: A }, [A]);
|
|
1947
|
-
}))).then((r) => this._createGeometry(r.geometry));
|
|
1948
|
-
return B.catch(() => !0).then(() => {
|
|
1949
|
-
t && n && this._releaseTask(t, n);
|
|
1950
|
-
}), kt.set(A, {
|
|
1951
|
-
key: s,
|
|
1952
|
-
promise: B
|
|
1953
|
-
}), B;
|
|
1954
|
-
}
|
|
1955
|
-
_createGeometry(A) {
|
|
1956
|
-
const e = new as();
|
|
1957
|
-
A.index && e.setIndex(new Ae(A.index.array, 1));
|
|
1958
|
-
for (let s = 0; s < A.attributes.length; s++) {
|
|
1959
|
-
const t = A.attributes[s], n = t.name, i = t.array, B = t.itemSize, r = new Ae(i, B);
|
|
1960
|
-
n === "color" && (this._assignVertexColorSpace(r, t.vertexColorSpace), r.normalized = !(i instanceof Float32Array)), e.setAttribute(n, r);
|
|
1961
|
-
}
|
|
1962
|
-
return e;
|
|
1963
|
-
}
|
|
1964
|
-
_assignVertexColorSpace(A, e) {
|
|
1965
|
-
if (e !== QA)
|
|
1966
|
-
return;
|
|
1967
|
-
const s = new K();
|
|
1968
|
-
for (let t = 0, n = A.count; t < n; t++)
|
|
1969
|
-
s.fromBufferAttribute(A, t).convertSRGBToLinear(), A.setXYZ(t, s.r, s.g, s.b);
|
|
1970
|
-
}
|
|
1971
|
-
_loadLibrary(A, e) {
|
|
1972
|
-
const s = new WA(this.manager);
|
|
1973
|
-
return s.setPath(this.decoderPath), s.setResponseType(e), s.setWithCredentials(this.withCredentials), new Promise((t, n) => {
|
|
1974
|
-
s.load(A, t, void 0, n);
|
|
1975
|
-
});
|
|
1976
|
-
}
|
|
1977
|
-
preload() {
|
|
1978
|
-
return this._initDecoder(), this;
|
|
1979
|
-
}
|
|
1980
|
-
_initDecoder() {
|
|
1981
|
-
if (this.decoderPending)
|
|
1982
|
-
return this.decoderPending;
|
|
1983
|
-
const A = typeof WebAssembly != "object" || this.decoderConfig.type === "js", e = [];
|
|
1984
|
-
return A ? e.push(this._loadLibrary("draco_decoder.js", "text")) : (e.push(this._loadLibrary("draco_wasm_wrapper.js", "text")), e.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer"))), this.decoderPending = Promise.all(e).then((s) => {
|
|
1985
|
-
const t = s[0];
|
|
1986
|
-
A || (this.decoderConfig.wasmBinary = s[1]);
|
|
1987
|
-
const n = go.toString(), i = [
|
|
1988
|
-
"/* draco decoder */",
|
|
1989
|
-
t,
|
|
1990
|
-
"",
|
|
1991
|
-
"/* worker */",
|
|
1992
|
-
n.substring(n.indexOf("{") + 1, n.lastIndexOf("}"))
|
|
1993
|
-
].join(`
|
|
1994
|
-
`);
|
|
1995
|
-
this.workerSourceURL = URL.createObjectURL(new Blob([i]));
|
|
1996
|
-
}), this.decoderPending;
|
|
1997
|
-
}
|
|
1998
|
-
_getWorker(A, e) {
|
|
1999
|
-
return this._initDecoder().then(() => {
|
|
2000
|
-
if (this.workerPool.length < this.workerLimit) {
|
|
2001
|
-
const t = new Worker(this.workerSourceURL);
|
|
2002
|
-
t._callbacks = {}, t._taskCosts = {}, t._taskLoad = 0, t.postMessage({ type: "init", decoderConfig: this.decoderConfig }), t.onmessage = function(n) {
|
|
2003
|
-
const i = n.data;
|
|
2004
|
-
switch (i.type) {
|
|
2005
|
-
case "decode":
|
|
2006
|
-
t._callbacks[i.id].resolve(i);
|
|
2007
|
-
break;
|
|
2008
|
-
case "error":
|
|
2009
|
-
t._callbacks[i.id].reject(i);
|
|
2010
|
-
break;
|
|
2011
|
-
default:
|
|
2012
|
-
console.error('THREE.DRACOLoader: Unexpected message, "' + i.type + '"');
|
|
2013
|
-
}
|
|
2014
|
-
}, this.workerPool.push(t);
|
|
2015
|
-
} else
|
|
2016
|
-
this.workerPool.sort(function(t, n) {
|
|
2017
|
-
return t._taskLoad > n._taskLoad ? -1 : 1;
|
|
2018
|
-
});
|
|
2019
|
-
const s = this.workerPool[this.workerPool.length - 1];
|
|
2020
|
-
return s._taskCosts[A] = e, s._taskLoad += e, s;
|
|
2021
|
-
});
|
|
2022
|
-
}
|
|
2023
|
-
_releaseTask(A, e) {
|
|
2024
|
-
A._taskLoad -= A._taskCosts[e], delete A._callbacks[e], delete A._taskCosts[e];
|
|
2025
|
-
}
|
|
2026
|
-
debug() {
|
|
2027
|
-
console.log("Task load: ", this.workerPool.map((A) => A._taskLoad));
|
|
2028
|
-
}
|
|
2029
|
-
dispose() {
|
|
2030
|
-
for (let A = 0; A < this.workerPool.length; ++A)
|
|
2031
|
-
this.workerPool[A].terminate();
|
|
2032
|
-
return this.workerPool.length = 0, this.workerSourceURL !== "" && URL.revokeObjectURL(this.workerSourceURL), this;
|
|
2033
|
-
}
|
|
2034
|
-
}
|
|
2035
|
-
function go() {
|
|
2036
|
-
let a, A;
|
|
2037
|
-
onmessage = function(i) {
|
|
2038
|
-
const B = i.data;
|
|
2039
|
-
switch (B.type) {
|
|
2040
|
-
case "init":
|
|
2041
|
-
a = B.decoderConfig, A = new Promise(function(g) {
|
|
2042
|
-
a.onModuleLoaded = function(I) {
|
|
2043
|
-
g({ draco: I });
|
|
2044
|
-
}, DracoDecoderModule(a);
|
|
2045
|
-
});
|
|
2046
|
-
break;
|
|
2047
|
-
case "decode":
|
|
2048
|
-
const r = B.buffer, C = B.taskConfig;
|
|
2049
|
-
A.then((g) => {
|
|
2050
|
-
const I = g.draco, E = new I.Decoder();
|
|
2051
|
-
try {
|
|
2052
|
-
const Q = e(I, E, new Int8Array(r), C), l = Q.attributes.map((h) => h.array.buffer);
|
|
2053
|
-
Q.index && l.push(Q.index.array.buffer), self.postMessage({ type: "decode", id: B.id, geometry: Q }, l);
|
|
2054
|
-
} catch (Q) {
|
|
2055
|
-
console.error(Q), self.postMessage({ type: "error", id: B.id, error: Q.message });
|
|
2056
|
-
} finally {
|
|
2057
|
-
I.destroy(E);
|
|
2058
|
-
}
|
|
2059
|
-
});
|
|
2060
|
-
break;
|
|
2061
|
-
}
|
|
2062
|
-
};
|
|
2063
|
-
function e(i, B, r, C) {
|
|
2064
|
-
const g = C.attributeIDs, I = C.attributeTypes;
|
|
2065
|
-
let E, Q;
|
|
2066
|
-
const l = B.GetEncodedGeometryType(r);
|
|
2067
|
-
if (l === i.TRIANGULAR_MESH)
|
|
2068
|
-
E = new i.Mesh(), Q = B.DecodeArrayToMesh(r, r.byteLength, E);
|
|
2069
|
-
else if (l === i.POINT_CLOUD)
|
|
2070
|
-
E = new i.PointCloud(), Q = B.DecodeArrayToPointCloud(r, r.byteLength, E);
|
|
2071
|
-
else
|
|
2072
|
-
throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
|
|
2073
|
-
if (!Q.ok() || E.ptr === 0)
|
|
2074
|
-
throw new Error("THREE.DRACOLoader: Decoding failed: " + Q.error_msg());
|
|
2075
|
-
const h = { index: null, attributes: [] };
|
|
2076
|
-
for (const c in g) {
|
|
2077
|
-
const d = self[I[c]];
|
|
2078
|
-
let D, F;
|
|
2079
|
-
if (C.useUniqueIDs)
|
|
2080
|
-
F = g[c], D = B.GetAttributeByUniqueId(E, F);
|
|
2081
|
-
else {
|
|
2082
|
-
if (F = B.GetAttributeId(E, i[g[c]]), F === -1)
|
|
2083
|
-
continue;
|
|
2084
|
-
D = B.GetAttribute(E, F);
|
|
2085
|
-
}
|
|
2086
|
-
const p = t(i, B, E, c, d, D);
|
|
2087
|
-
c === "color" && (p.vertexColorSpace = C.vertexColorSpace), h.attributes.push(p);
|
|
2088
|
-
}
|
|
2089
|
-
return l === i.TRIANGULAR_MESH && (h.index = s(i, B, E)), i.destroy(E), h;
|
|
2090
|
-
}
|
|
2091
|
-
function s(i, B, r) {
|
|
2092
|
-
const g = r.num_faces() * 3, I = g * 4, E = i._malloc(I);
|
|
2093
|
-
B.GetTrianglesUInt32Array(r, I, E);
|
|
2094
|
-
const Q = new Uint32Array(i.HEAPF32.buffer, E, g).slice();
|
|
2095
|
-
return i._free(E), { array: Q, itemSize: 1 };
|
|
2096
|
-
}
|
|
2097
|
-
function t(i, B, r, C, g, I) {
|
|
2098
|
-
const E = I.num_components(), l = r.num_points() * E, h = l * g.BYTES_PER_ELEMENT, c = n(i, g), d = i._malloc(h);
|
|
2099
|
-
B.GetAttributeDataArrayForAllPoints(r, I, c, h, d);
|
|
2100
|
-
const D = new g(i.HEAPF32.buffer, d, l).slice();
|
|
2101
|
-
return i._free(d), {
|
|
2102
|
-
name: C,
|
|
2103
|
-
array: D,
|
|
2104
|
-
itemSize: E
|
|
2105
|
-
};
|
|
2106
|
-
}
|
|
2107
|
-
function n(i, B) {
|
|
2108
|
-
switch (B) {
|
|
2109
|
-
case Float32Array:
|
|
2110
|
-
return i.DT_FLOAT32;
|
|
2111
|
-
case Int8Array:
|
|
2112
|
-
return i.DT_INT8;
|
|
2113
|
-
case Int16Array:
|
|
2114
|
-
return i.DT_INT16;
|
|
2115
|
-
case Int32Array:
|
|
2116
|
-
return i.DT_INT32;
|
|
2117
|
-
case Uint8Array:
|
|
2118
|
-
return i.DT_UINT8;
|
|
2119
|
-
case Uint16Array:
|
|
2120
|
-
return i.DT_UINT16;
|
|
2121
|
-
case Uint32Array:
|
|
2122
|
-
return i.DT_UINT32;
|
|
2123
|
-
}
|
|
2124
|
-
}
|
|
2125
|
-
}
|
|
2126
|
-
class co {
|
|
2127
|
-
constructor(A = 4) {
|
|
2128
|
-
this.pool = A, this.queue = [], this.workers = [], this.workersResolve = [], this.workerStatus = 0;
|
|
2129
|
-
}
|
|
2130
|
-
_initWorker(A) {
|
|
2131
|
-
if (!this.workers[A]) {
|
|
2132
|
-
const e = this.workerCreator();
|
|
2133
|
-
e.addEventListener("message", this._onMessage.bind(this, A)), this.workers[A] = e;
|
|
2134
|
-
}
|
|
2135
|
-
}
|
|
2136
|
-
_getIdleWorker() {
|
|
2137
|
-
for (let A = 0; A < this.pool; A++)
|
|
2138
|
-
if (!(this.workerStatus & 1 << A))
|
|
2139
|
-
return A;
|
|
2140
|
-
return -1;
|
|
2141
|
-
}
|
|
2142
|
-
_onMessage(A, e) {
|
|
2143
|
-
const s = this.workersResolve[A];
|
|
2144
|
-
if (s && s(e), this.queue.length) {
|
|
2145
|
-
const { resolve: t, msg: n, transfer: i } = this.queue.shift();
|
|
2146
|
-
this.workersResolve[A] = t, this.workers[A].postMessage(n, i);
|
|
2147
|
-
} else
|
|
2148
|
-
this.workerStatus ^= 1 << A;
|
|
2149
|
-
}
|
|
2150
|
-
setWorkerCreator(A) {
|
|
2151
|
-
this.workerCreator = A;
|
|
2152
|
-
}
|
|
2153
|
-
setWorkerLimit(A) {
|
|
2154
|
-
this.pool = A;
|
|
2155
|
-
}
|
|
2156
|
-
postMessage(A, e) {
|
|
2157
|
-
return new Promise((s) => {
|
|
2158
|
-
const t = this._getIdleWorker();
|
|
2159
|
-
t !== -1 ? (this._initWorker(t), this.workerStatus |= 1 << t, this.workersResolve[t] = s, this.workers[t].postMessage(A, e)) : this.queue.push({ resolve: s, msg: A, transfer: e });
|
|
2160
|
-
});
|
|
2161
|
-
}
|
|
2162
|
-
dispose() {
|
|
2163
|
-
this.workers.forEach((A) => A.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
2164
|
-
}
|
|
2165
|
-
}
|
|
2166
|
-
const Eo = 0, Rs = 2, Qo = 1, ws = 2, ho = 0, lo = 1, uo = 10, fo = 0, qs = 9, Xs = 15, Vs = 16, Ws = 22, js = 37, Zs = 43, zs = 76, $s = 83, An = 97, en = 100, tn = 103, sn = 109, nn = 165, on = 166;
|
|
2167
|
-
class Do {
|
|
2168
|
-
constructor() {
|
|
2169
|
-
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;
|
|
2170
|
-
}
|
|
2171
|
-
}
|
|
2172
|
-
class Ue {
|
|
2173
|
-
constructor(A, e, s, t) {
|
|
2174
|
-
this._dataView = new DataView(A.buffer, A.byteOffset + e, s), this._littleEndian = t, this._offset = 0;
|
|
2175
|
-
}
|
|
2176
|
-
_nextUint8() {
|
|
2177
|
-
const A = this._dataView.getUint8(this._offset);
|
|
2178
|
-
return this._offset += 1, A;
|
|
2179
|
-
}
|
|
2180
|
-
_nextUint16() {
|
|
2181
|
-
const A = this._dataView.getUint16(this._offset, this._littleEndian);
|
|
2182
|
-
return this._offset += 2, A;
|
|
2183
|
-
}
|
|
2184
|
-
_nextUint32() {
|
|
2185
|
-
const A = this._dataView.getUint32(this._offset, this._littleEndian);
|
|
2186
|
-
return this._offset += 4, A;
|
|
2187
|
-
}
|
|
2188
|
-
_nextUint64() {
|
|
2189
|
-
const A = this._dataView.getUint32(this._offset, this._littleEndian) + 4294967296 * this._dataView.getUint32(this._offset + 4, this._littleEndian);
|
|
2190
|
-
return this._offset += 8, A;
|
|
2191
|
-
}
|
|
2192
|
-
_nextInt32() {
|
|
2193
|
-
const A = this._dataView.getInt32(this._offset, this._littleEndian);
|
|
2194
|
-
return this._offset += 4, A;
|
|
2195
|
-
}
|
|
2196
|
-
_skip(A) {
|
|
2197
|
-
return this._offset += A, this;
|
|
2198
|
-
}
|
|
2199
|
-
_scan(A, e = 0) {
|
|
2200
|
-
const s = this._offset;
|
|
2201
|
-
let t = 0;
|
|
2202
|
-
for (; this._dataView.getUint8(this._offset) !== e && t < A; )
|
|
2203
|
-
t++, this._offset++;
|
|
2204
|
-
return t < A && this._offset++, new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + s, t);
|
|
2205
|
-
}
|
|
2206
|
-
}
|
|
2207
|
-
const b = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
2208
|
-
function ys(a) {
|
|
2209
|
-
return typeof TextDecoder != "undefined" ? new TextDecoder().decode(a) : Buffer.from(a).toString("utf8");
|
|
2210
|
-
}
|
|
2211
|
-
function Fo(a) {
|
|
2212
|
-
const A = new Uint8Array(a.buffer, a.byteOffset, b.length);
|
|
2213
|
-
if (A[0] !== b[0] || A[1] !== b[1] || A[2] !== b[2] || A[3] !== b[3] || A[4] !== b[4] || A[5] !== b[5] || A[6] !== b[6] || A[7] !== b[7] || A[8] !== b[8] || A[9] !== b[9] || A[10] !== b[10] || A[11] !== b[11])
|
|
2214
|
-
throw new Error("Missing KTX 2.0 identifier.");
|
|
2215
|
-
const e = new Do(), s = 17 * Uint32Array.BYTES_PER_ELEMENT, t = new Ue(a, b.length, s, !0);
|
|
2216
|
-
e.vkFormat = t._nextUint32(), e.typeSize = t._nextUint32(), e.pixelWidth = t._nextUint32(), e.pixelHeight = t._nextUint32(), e.pixelDepth = t._nextUint32(), e.layerCount = t._nextUint32(), e.faceCount = t._nextUint32();
|
|
2217
|
-
const n = t._nextUint32();
|
|
2218
|
-
e.supercompressionScheme = t._nextUint32();
|
|
2219
|
-
const i = t._nextUint32(), B = t._nextUint32(), r = t._nextUint32(), C = t._nextUint32(), g = t._nextUint64(), I = t._nextUint64(), E = new Ue(a, b.length + s, 3 * n * 8, !0);
|
|
2220
|
-
for (let U = 0; U < n; U++)
|
|
2221
|
-
e.levels.push({ levelData: new Uint8Array(a.buffer, a.byteOffset + E._nextUint64(), E._nextUint64()), uncompressedByteLength: E._nextUint64() });
|
|
2222
|
-
const Q = new Ue(a, i, B, !0), l = { vendorId: Q._skip(4)._nextUint16(), descriptorType: Q._nextUint16(), versionNumber: Q._nextUint16(), descriptorBlockSize: Q._nextUint16(), colorModel: Q._nextUint8(), colorPrimaries: Q._nextUint8(), transferFunction: Q._nextUint8(), flags: Q._nextUint8(), texelBlockDimension: [Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8()], bytesPlane: [Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8()], samples: [] }, h = (l.descriptorBlockSize / 4 - 6) / 4;
|
|
2223
|
-
for (let U = 0; U < h; U++) {
|
|
2224
|
-
const v = { bitOffset: Q._nextUint16(), bitLength: Q._nextUint8(), channelType: Q._nextUint8(), samplePosition: [Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
|
|
2225
|
-
64 & v.channelType ? (v.sampleLower = Q._nextInt32(), v.sampleUpper = Q._nextInt32()) : (v.sampleLower = Q._nextUint32(), v.sampleUpper = Q._nextUint32()), l.samples[U] = v;
|
|
2226
|
-
}
|
|
2227
|
-
e.dataFormatDescriptor.length = 0, e.dataFormatDescriptor.push(l);
|
|
2228
|
-
const c = new Ue(a, r, C, !0);
|
|
2229
|
-
for (; c._offset < C; ) {
|
|
2230
|
-
const U = c._nextUint32(), v = c._scan(U), Je = ys(v), sA = c._scan(U - v.byteLength);
|
|
2231
|
-
e.keyValue[Je] = Je.match(/^ktx/i) ? ys(sA) : sA, c._offset % 4 && c._skip(4 - c._offset % 4);
|
|
2232
|
-
}
|
|
2233
|
-
if (I <= 0)
|
|
2234
|
-
return e;
|
|
2235
|
-
const d = new Ue(a, g, I, !0), D = d._nextUint16(), F = d._nextUint16(), p = d._nextUint32(), R = d._nextUint32(), y = d._nextUint32(), S = d._nextUint32(), Z = [];
|
|
2236
|
-
for (let U = 0; U < n; U++)
|
|
2237
|
-
Z.push({ imageFlags: d._nextUint32(), rgbSliceByteOffset: d._nextUint32(), rgbSliceByteLength: d._nextUint32(), alphaSliceByteOffset: d._nextUint32(), alphaSliceByteLength: d._nextUint32() });
|
|
2238
|
-
const N = g + d._offset, tA = N + p, xe = tA + R, Qt = xe + y, TA = new Uint8Array(a.buffer, a.byteOffset + N, p), ht = new Uint8Array(a.buffer, a.byteOffset + tA, R), lA = new Uint8Array(a.buffer, a.byteOffset + xe, y), lt = new Uint8Array(a.buffer, a.byteOffset + Qt, S);
|
|
2239
|
-
return e.globalData = { endpointCount: D, selectorCount: F, imageDescs: Z, endpointsData: TA, selectorsData: ht, tablesData: lA, extendedData: lt }, e;
|
|
2240
|
-
}
|
|
2241
|
-
let Kt, oA, es;
|
|
2242
|
-
const vt = { env: { emscripten_notify_memory_growth: function(a) {
|
|
2243
|
-
es = new Uint8Array(oA.exports.memory.buffer);
|
|
2244
|
-
} } };
|
|
2245
|
-
class po {
|
|
2246
|
-
init() {
|
|
2247
|
-
return Kt || (Kt = typeof fetch != "undefined" ? fetch("data:application/wasm;base64," + Ms).then((A) => A.arrayBuffer()).then((A) => WebAssembly.instantiate(A, vt)).then(this._init) : WebAssembly.instantiate(Buffer.from(Ms, "base64"), vt).then(this._init), Kt);
|
|
2248
|
-
}
|
|
2249
|
-
_init(A) {
|
|
2250
|
-
oA = A.instance, vt.env.emscripten_notify_memory_growth(0);
|
|
2251
|
-
}
|
|
2252
|
-
decode(A, e = 0) {
|
|
2253
|
-
if (!oA)
|
|
2254
|
-
throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
2255
|
-
const s = A.byteLength, t = oA.exports.malloc(s);
|
|
2256
|
-
es.set(A, t), e = e || Number(oA.exports.ZSTD_findDecompressedSize(t, s));
|
|
2257
|
-
const n = oA.exports.malloc(e), i = oA.exports.ZSTD_decompress(n, e, t, s), B = es.slice(n, n + i);
|
|
2258
|
-
return oA.exports.free(t), oA.exports.free(n), B;
|
|
2259
|
-
}
|
|
2260
|
-
}
|
|
2261
|
-
const Ms = "AGFzbQEAAAABpQEVYAF/AX9gAn9/AGADf39/AX9gBX9/f39/AX9gAX8AYAJ/fwF/YAR/f39/AX9gA39/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gAn9/AX5gAn5+AX5gAABgBX9/f39/AGAGf39/f39/AGAIf39/f39/f38AYAl/f39/f39/f38AYAABf2AIf39/f39/f38Bf2ANf39/f39/f39/f39/fwF/YAF/AX4CJwEDZW52H2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgABANpaAEFAAAFAgEFCwACAQABAgIFBQcAAwABDgsBAQcAEhMHAAUBDAQEAAANBwQCAgYCBAgDAwMDBgEACQkHBgICAAYGAgQUBwYGAwIGAAMCAQgBBwUGCgoEEQAEBAEIAwgDBQgDEA8IAAcABAUBcAECAgUEAQCAAgYJAX8BQaCgwAILB2AHBm1lbW9yeQIABm1hbGxvYwAoBGZyZWUAJgxaU1REX2lzRXJyb3IAaBlaU1REX2ZpbmREZWNvbXByZXNzZWRTaXplAFQPWlNURF9kZWNvbXByZXNzAEoGX3N0YXJ0ACQJBwEAQQELASQKussBaA8AIAAgACgCBCABajYCBAsZACAAKAIAIAAoAgRBH3F0QQAgAWtBH3F2CwgAIABBiH9LC34BBH9BAyEBIAAoAgQiA0EgTQRAIAAoAggiASAAKAIQTwRAIAAQDQ8LIAAoAgwiAiABRgRAQQFBAiADQSBJGw8LIAAgASABIAJrIANBA3YiBCABIARrIAJJIgEbIgJrIgQ2AgggACADIAJBA3RrNgIEIAAgBCgAADYCAAsgAQsUAQF/IAAgARACIQIgACABEAEgAgv3AQECfyACRQRAIABCADcCACAAQQA2AhAgAEIANwIIQbh/DwsgACABNgIMIAAgAUEEajYCECACQQRPBEAgACABIAJqIgFBfGoiAzYCCCAAIAMoAAA2AgAgAUF/ai0AACIBBEAgAEEIIAEQFGs2AgQgAg8LIABBADYCBEF/DwsgACABNgIIIAAgAS0AACIDNgIAIAJBfmoiBEEBTQRAIARBAWtFBEAgACABLQACQRB0IANyIgM2AgALIAAgAS0AAUEIdCADajYCAAsgASACakF/ai0AACIBRQRAIABBADYCBEFsDwsgAEEoIAEQFCACQQN0ams2AgQgAgsWACAAIAEpAAA3AAAgACABKQAINwAICy8BAX8gAUECdEGgHWooAgAgACgCAEEgIAEgACgCBGprQR9xdnEhAiAAIAEQASACCyEAIAFCz9bTvtLHq9lCfiAAfEIfiUKHla+vmLbem55/fgsdAQF/IAAoAgggACgCDEYEfyAAKAIEQSBGBUEACwuCBAEDfyACQYDAAE8EQCAAIAEgAhBnIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsMACAAIAEpAAA3AAALQQECfyAAKAIIIgEgACgCEEkEQEEDDwsgACAAKAIEIgJBB3E2AgQgACABIAJBA3ZrIgE2AgggACABKAAANgIAQQALDAAgACABKAIANgAAC/cCAQJ/AkAgACABRg0AAkAgASACaiAASwRAIAAgAmoiBCABSw0BCyAAIAEgAhALDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAAhAwwDCyAAQQNxRQRAIAAhAwwCCyAAIQMDQCACRQ0EIAMgAS0AADoAACABQQFqIQEgAkF/aiECIANBAWoiA0EDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", Ot = /* @__PURE__ */ new WeakMap();
|
|
2262
|
-
let _t = 0, Pt;
|
|
2263
|
-
class eA extends is {
|
|
2264
|
-
constructor(A) {
|
|
2265
|
-
super(A), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new co(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER != "undefined" && console.warn(
|
|
2266
|
-
'THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.'
|
|
2267
|
-
);
|
|
2268
|
-
}
|
|
2269
|
-
setTranscoderPath(A) {
|
|
2270
|
-
return this.transcoderPath = A, this;
|
|
2271
|
-
}
|
|
2272
|
-
setWorkerLimit(A) {
|
|
2273
|
-
return this.workerPool.setWorkerLimit(A), this;
|
|
2274
|
-
}
|
|
2275
|
-
detectSupportAsync(A) {
|
|
2276
|
-
return zA(this, null, function* () {
|
|
2277
|
-
return this.workerConfig = {
|
|
2278
|
-
astcSupported: yield A.hasFeatureAsync("texture-compression-astc"),
|
|
2279
|
-
etc1Supported: yield A.hasFeatureAsync("texture-compression-etc1"),
|
|
2280
|
-
etc2Supported: yield A.hasFeatureAsync("texture-compression-etc2"),
|
|
2281
|
-
dxtSupported: yield A.hasFeatureAsync("texture-compression-bc"),
|
|
2282
|
-
bptcSupported: yield A.hasFeatureAsync("texture-compression-bptc"),
|
|
2283
|
-
pvrtcSupported: yield A.hasFeatureAsync("texture-compression-pvrtc")
|
|
2284
|
-
}, this;
|
|
2285
|
-
});
|
|
2286
|
-
}
|
|
2287
|
-
detectSupport(A) {
|
|
2288
|
-
return A.isWebGPURenderer === !0 ? this.workerConfig = {
|
|
2289
|
-
astcSupported: A.hasFeature("texture-compression-astc"),
|
|
2290
|
-
etc1Supported: A.hasFeature("texture-compression-etc1"),
|
|
2291
|
-
etc2Supported: A.hasFeature("texture-compression-etc2"),
|
|
2292
|
-
dxtSupported: A.hasFeature("texture-compression-bc"),
|
|
2293
|
-
bptcSupported: A.hasFeature("texture-compression-bptc"),
|
|
2294
|
-
pvrtcSupported: A.hasFeature("texture-compression-pvrtc")
|
|
2295
|
-
} : (this.workerConfig = {
|
|
2296
|
-
astcSupported: A.extensions.has("WEBGL_compressed_texture_astc"),
|
|
2297
|
-
etc1Supported: A.extensions.has("WEBGL_compressed_texture_etc1"),
|
|
2298
|
-
etc2Supported: A.extensions.has("WEBGL_compressed_texture_etc"),
|
|
2299
|
-
dxtSupported: A.extensions.has("WEBGL_compressed_texture_s3tc"),
|
|
2300
|
-
bptcSupported: A.extensions.has("EXT_texture_compression_bptc"),
|
|
2301
|
-
pvrtcSupported: A.extensions.has("WEBGL_compressed_texture_pvrtc") || A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")
|
|
2302
|
-
}, this.workerConfig.etc1Supported = !1), this;
|
|
2303
|
-
}
|
|
2304
|
-
init() {
|
|
2305
|
-
if (!this.transcoderPending) {
|
|
2306
|
-
const A = new WA(this.manager);
|
|
2307
|
-
A.setPath(this.transcoderPath), A.setWithCredentials(this.withCredentials);
|
|
2308
|
-
const e = A.loadAsync("basis_transcoder.js"), s = new WA(this.manager);
|
|
2309
|
-
s.setPath(this.transcoderPath), s.setResponseType("arraybuffer"), s.setWithCredentials(this.withCredentials);
|
|
2310
|
-
const t = s.loadAsync("basis_transcoder.wasm");
|
|
2311
|
-
this.transcoderPending = Promise.all([e, t]).then(([n, i]) => {
|
|
2312
|
-
const B = eA.BasisWorker.toString(), r = [
|
|
2313
|
-
"/* constants */",
|
|
2314
|
-
"let _EngineFormat = " + JSON.stringify(eA.EngineFormat),
|
|
2315
|
-
"let _TranscoderFormat = " + JSON.stringify(eA.TranscoderFormat),
|
|
2316
|
-
"let _BasisFormat = " + JSON.stringify(eA.BasisFormat),
|
|
2317
|
-
"/* basis_transcoder.js */",
|
|
2318
|
-
n,
|
|
2319
|
-
"/* worker */",
|
|
2320
|
-
B.substring(B.indexOf("{") + 1, B.lastIndexOf("}"))
|
|
2321
|
-
].join(`
|
|
2322
|
-
`);
|
|
2323
|
-
this.workerSourceURL = URL.createObjectURL(new Blob([r])), this.transcoderBinary = i, this.workerPool.setWorkerCreator(() => {
|
|
2324
|
-
const C = new Worker(this.workerSourceURL), g = this.transcoderBinary.slice(0);
|
|
2325
|
-
return C.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: g }, [g]), C;
|
|
2326
|
-
});
|
|
2327
|
-
}), _t > 0 && console.warn(
|
|
2328
|
-
"THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."
|
|
2329
|
-
), _t++;
|
|
2330
|
-
}
|
|
2331
|
-
return this.transcoderPending;
|
|
2332
|
-
}
|
|
2333
|
-
load(A, e, s, t) {
|
|
2334
|
-
if (this.workerConfig === null)
|
|
2335
|
-
throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2336
|
-
const n = new WA(this.manager);
|
|
2337
|
-
n.setResponseType("arraybuffer"), n.setWithCredentials(this.withCredentials), n.load(A, (i) => {
|
|
2338
|
-
if (Ot.has(i))
|
|
2339
|
-
return Ot.get(i).promise.then(e).catch(t);
|
|
2340
|
-
this._createTexture(i).then((B) => e ? e(B) : null).catch(t);
|
|
2341
|
-
}, s, t);
|
|
2342
|
-
}
|
|
2343
|
-
_createTextureFrom(A, e) {
|
|
2344
|
-
const { faces: s, width: t, height: n, format: i, type: B, error: r, dfdFlags: C } = A;
|
|
2345
|
-
if (B === "error")
|
|
2346
|
-
return Promise.reject(r);
|
|
2347
|
-
let g;
|
|
2348
|
-
if (e.faceCount === 6)
|
|
2349
|
-
g = new ei(s, i, q);
|
|
2350
|
-
else {
|
|
2351
|
-
const I = s[0].mipmaps;
|
|
2352
|
-
g = e.layerCount > 1 ? new ti(I, t, n, e.layerCount, i, q) : new _s(I, t, n, i, q);
|
|
2353
|
-
}
|
|
2354
|
-
return g.minFilter = s[0].mipmaps.length === 1 ? Gt : Bs, g.magFilter = Gt, g.generateMipmaps = !1, g.needsUpdate = !0, g.colorSpace = rn(e), g.premultiplyAlpha = !!(C & Qo), g;
|
|
2355
|
-
}
|
|
2356
|
-
/**
|
|
2357
|
-
* @param {ArrayBuffer} buffer
|
|
2358
|
-
* @param {object?} config
|
|
2359
|
-
* @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
|
|
2360
|
-
*/
|
|
2361
|
-
_createTexture(s) {
|
|
2362
|
-
return zA(this, arguments, function* (A, e = {}) {
|
|
2363
|
-
const t = Fo(new Uint8Array(A));
|
|
2364
|
-
if (t.vkFormat !== fo)
|
|
2365
|
-
return mo(t);
|
|
2366
|
-
const n = e, i = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: A, taskConfig: n }, [A])).then((B) => this._createTextureFrom(B.data, t));
|
|
2367
|
-
return Ot.set(A, { promise: i }), i;
|
|
2368
|
-
});
|
|
2369
|
-
}
|
|
2370
|
-
dispose() {
|
|
2371
|
-
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), _t--, this;
|
|
2372
|
-
}
|
|
2373
|
-
}
|
|
2374
|
-
eA.BasisFormat = {
|
|
2375
|
-
ETC1S: 0,
|
|
2376
|
-
UASTC_4x4: 1
|
|
2377
|
-
};
|
|
2378
|
-
eA.TranscoderFormat = {
|
|
2379
|
-
ETC1: 0,
|
|
2380
|
-
ETC2: 1,
|
|
2381
|
-
BC1: 2,
|
|
2382
|
-
BC3: 3,
|
|
2383
|
-
BC4: 4,
|
|
2384
|
-
BC5: 5,
|
|
2385
|
-
BC7_M6_OPAQUE_ONLY: 6,
|
|
2386
|
-
BC7_M5: 7,
|
|
2387
|
-
PVRTC1_4_RGB: 8,
|
|
2388
|
-
PVRTC1_4_RGBA: 9,
|
|
2389
|
-
ASTC_4x4: 10,
|
|
2390
|
-
ATC_RGB: 11,
|
|
2391
|
-
ATC_RGBA_INTERPOLATED_ALPHA: 12,
|
|
2392
|
-
RGBA32: 13,
|
|
2393
|
-
RGB565: 14,
|
|
2394
|
-
BGR565: 15,
|
|
2395
|
-
RGBA4444: 16
|
|
2396
|
-
};
|
|
2397
|
-
eA.EngineFormat = {
|
|
2398
|
-
RGBAFormat: $A,
|
|
2399
|
-
RGBA_ASTC_4x4_Format: si,
|
|
2400
|
-
RGBA_BPTC_Format: ni,
|
|
2401
|
-
RGBA_ETC2_EAC_Format: ii,
|
|
2402
|
-
RGBA_PVRTC_4BPPV1_Format: oi,
|
|
2403
|
-
RGBA_S3TC_DXT5_Format: ri,
|
|
2404
|
-
RGB_ETC1_Format: Bi,
|
|
2405
|
-
RGB_ETC2_Format: ai,
|
|
2406
|
-
RGB_PVRTC_4BPPV1_Format: Ci,
|
|
2407
|
-
RGB_S3TC_DXT1_Format: Ii
|
|
2408
|
-
};
|
|
2409
|
-
eA.BasisWorker = function() {
|
|
2410
|
-
let a, A, e;
|
|
2411
|
-
const s = _EngineFormat, t = _TranscoderFormat, n = _BasisFormat;
|
|
2412
|
-
self.addEventListener("message", function(l) {
|
|
2413
|
-
const h = l.data;
|
|
2414
|
-
switch (h.type) {
|
|
2415
|
-
case "init":
|
|
2416
|
-
a = h.config, i(h.transcoderBinary);
|
|
2417
|
-
break;
|
|
2418
|
-
case "transcode":
|
|
2419
|
-
A.then(() => {
|
|
2420
|
-
try {
|
|
2421
|
-
const { faces: c, buffers: d, width: D, height: F, hasAlpha: p, format: R, dfdFlags: y } = B(h.buffer);
|
|
2422
|
-
self.postMessage({ type: "transcode", id: h.id, faces: c, width: D, height: F, hasAlpha: p, format: R, dfdFlags: y }, d);
|
|
2423
|
-
} catch (c) {
|
|
2424
|
-
console.error(c), self.postMessage({ type: "error", id: h.id, error: c.message });
|
|
2425
|
-
}
|
|
2426
|
-
});
|
|
2427
|
-
break;
|
|
2428
|
-
}
|
|
2429
|
-
});
|
|
2430
|
-
function i(l) {
|
|
2431
|
-
A = new Promise((h) => {
|
|
2432
|
-
e = { wasmBinary: l, onRuntimeInitialized: h }, BASIS(e);
|
|
2433
|
-
}).then(() => {
|
|
2434
|
-
e.initializeBasis(), e.KTX2File === void 0 && console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.");
|
|
2435
|
-
});
|
|
2436
|
-
}
|
|
2437
|
-
function B(l) {
|
|
2438
|
-
const h = new e.KTX2File(new Uint8Array(l));
|
|
2439
|
-
function c() {
|
|
2440
|
-
h.close(), h.delete();
|
|
2441
|
-
}
|
|
2442
|
-
if (!h.isValid())
|
|
2443
|
-
throw c(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
|
|
2444
|
-
const d = h.isUASTC() ? n.UASTC_4x4 : n.ETC1S, D = h.getWidth(), F = h.getHeight(), p = h.getLayers() || 1, R = h.getLevels(), y = h.getFaces(), S = h.getHasAlpha(), Z = h.getDFDFlags(), { transcoderFormat: N, engineFormat: tA } = I(d, D, F, S);
|
|
2445
|
-
if (!D || !F || !R)
|
|
2446
|
-
throw c(), new Error("THREE.KTX2Loader: Invalid texture");
|
|
2447
|
-
if (!h.startTranscoding())
|
|
2448
|
-
throw c(), new Error("THREE.KTX2Loader: .startTranscoding failed");
|
|
2449
|
-
const xe = [], Qt = [];
|
|
2450
|
-
for (let TA = 0; TA < y; TA++) {
|
|
2451
|
-
const ht = [];
|
|
2452
|
-
for (let lA = 0; lA < R; lA++) {
|
|
2453
|
-
const lt = [];
|
|
2454
|
-
let U, v;
|
|
2455
|
-
for (let sA = 0; sA < p; sA++) {
|
|
2456
|
-
const ZA = h.getImageLevelInfo(lA, sA, TA);
|
|
2457
|
-
TA === 0 && lA === 0 && sA === 0 && (ZA.origWidth % 4 !== 0 || ZA.origHeight % 4 !== 0) && console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), R > 1 ? (U = ZA.origWidth, v = ZA.origHeight) : (U = ZA.width, v = ZA.height);
|
|
2458
|
-
const Cs = new Uint8Array(h.getImageTranscodedSizeInBytes(lA, sA, 0, N));
|
|
2459
|
-
if (!h.transcodeImage(Cs, lA, sA, TA, N, 0, -1, -1))
|
|
2460
|
-
throw c(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
2461
|
-
lt.push(Cs);
|
|
2462
|
-
}
|
|
2463
|
-
const Je = Q(lt);
|
|
2464
|
-
ht.push({ data: Je, width: U, height: v }), Qt.push(Je.buffer);
|
|
2465
|
-
}
|
|
2466
|
-
xe.push({ mipmaps: ht, width: D, height: F, format: tA });
|
|
2467
|
-
}
|
|
2468
|
-
return c(), { faces: xe, buffers: Qt, width: D, height: F, hasAlpha: S, format: tA, dfdFlags: Z };
|
|
2469
|
-
}
|
|
2470
|
-
const r = [
|
|
2471
|
-
{
|
|
2472
|
-
if: "astcSupported",
|
|
2473
|
-
basisFormat: [n.UASTC_4x4],
|
|
2474
|
-
transcoderFormat: [t.ASTC_4x4, t.ASTC_4x4],
|
|
2475
|
-
engineFormat: [s.RGBA_ASTC_4x4_Format, s.RGBA_ASTC_4x4_Format],
|
|
2476
|
-
priorityETC1S: 1 / 0,
|
|
2477
|
-
priorityUASTC: 1,
|
|
2478
|
-
needsPowerOfTwo: !1
|
|
2479
|
-
},
|
|
2480
|
-
{
|
|
2481
|
-
if: "bptcSupported",
|
|
2482
|
-
basisFormat: [n.ETC1S, n.UASTC_4x4],
|
|
2483
|
-
transcoderFormat: [t.BC7_M5, t.BC7_M5],
|
|
2484
|
-
engineFormat: [s.RGBA_BPTC_Format, s.RGBA_BPTC_Format],
|
|
2485
|
-
priorityETC1S: 3,
|
|
2486
|
-
priorityUASTC: 2,
|
|
2487
|
-
needsPowerOfTwo: !1
|
|
2488
|
-
},
|
|
2489
|
-
{
|
|
2490
|
-
if: "dxtSupported",
|
|
2491
|
-
basisFormat: [n.ETC1S, n.UASTC_4x4],
|
|
2492
|
-
transcoderFormat: [t.BC1, t.BC3],
|
|
2493
|
-
engineFormat: [s.RGB_S3TC_DXT1_Format, s.RGBA_S3TC_DXT5_Format],
|
|
2494
|
-
priorityETC1S: 4,
|
|
2495
|
-
priorityUASTC: 5,
|
|
2496
|
-
needsPowerOfTwo: !1
|
|
2497
|
-
},
|
|
2498
|
-
{
|
|
2499
|
-
if: "etc2Supported",
|
|
2500
|
-
basisFormat: [n.ETC1S, n.UASTC_4x4],
|
|
2501
|
-
transcoderFormat: [t.ETC1, t.ETC2],
|
|
2502
|
-
engineFormat: [s.RGB_ETC2_Format, s.RGBA_ETC2_EAC_Format],
|
|
2503
|
-
priorityETC1S: 1,
|
|
2504
|
-
priorityUASTC: 3,
|
|
2505
|
-
needsPowerOfTwo: !1
|
|
2506
|
-
},
|
|
2507
|
-
{
|
|
2508
|
-
if: "etc1Supported",
|
|
2509
|
-
basisFormat: [n.ETC1S, n.UASTC_4x4],
|
|
2510
|
-
transcoderFormat: [t.ETC1],
|
|
2511
|
-
engineFormat: [s.RGB_ETC1_Format],
|
|
2512
|
-
priorityETC1S: 2,
|
|
2513
|
-
priorityUASTC: 4,
|
|
2514
|
-
needsPowerOfTwo: !1
|
|
2515
|
-
},
|
|
2516
|
-
{
|
|
2517
|
-
if: "pvrtcSupported",
|
|
2518
|
-
basisFormat: [n.ETC1S, n.UASTC_4x4],
|
|
2519
|
-
transcoderFormat: [t.PVRTC1_4_RGB, t.PVRTC1_4_RGBA],
|
|
2520
|
-
engineFormat: [s.RGB_PVRTC_4BPPV1_Format, s.RGBA_PVRTC_4BPPV1_Format],
|
|
2521
|
-
priorityETC1S: 5,
|
|
2522
|
-
priorityUASTC: 6,
|
|
2523
|
-
needsPowerOfTwo: !0
|
|
2524
|
-
}
|
|
2525
|
-
], C = r.sort(function(l, h) {
|
|
2526
|
-
return l.priorityETC1S - h.priorityETC1S;
|
|
2527
|
-
}), g = r.sort(function(l, h) {
|
|
2528
|
-
return l.priorityUASTC - h.priorityUASTC;
|
|
2529
|
-
});
|
|
2530
|
-
function I(l, h, c, d) {
|
|
2531
|
-
let D, F;
|
|
2532
|
-
const p = l === n.ETC1S ? C : g;
|
|
2533
|
-
for (let R = 0; R < p.length; R++) {
|
|
2534
|
-
const y = p[R];
|
|
2535
|
-
if (a[y.if] && y.basisFormat.includes(l) && !(d && y.transcoderFormat.length < 2) && !(y.needsPowerOfTwo && !(E(h) && E(c))))
|
|
2536
|
-
return D = y.transcoderFormat[d ? 1 : 0], F = y.engineFormat[d ? 1 : 0], { transcoderFormat: D, engineFormat: F };
|
|
2537
|
-
}
|
|
2538
|
-
return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."), D = t.RGBA32, F = s.RGBAFormat, { transcoderFormat: D, engineFormat: F };
|
|
2539
|
-
}
|
|
2540
|
-
function E(l) {
|
|
2541
|
-
return l <= 2 ? !0 : (l & l - 1) === 0 && l !== 0;
|
|
2542
|
-
}
|
|
2543
|
-
function Q(l) {
|
|
2544
|
-
if (l.length === 1)
|
|
2545
|
-
return l[0];
|
|
2546
|
-
let h = 0;
|
|
2547
|
-
for (let D = 0; D < l.length; D++) {
|
|
2548
|
-
const F = l[D];
|
|
2549
|
-
h += F.byteLength;
|
|
2550
|
-
}
|
|
2551
|
-
const c = new Uint8Array(h);
|
|
2552
|
-
let d = 0;
|
|
2553
|
-
for (let D = 0; D < l.length; D++) {
|
|
2554
|
-
const F = l[D];
|
|
2555
|
-
c.set(F, d), d += F.byteLength;
|
|
2556
|
-
}
|
|
2557
|
-
return c;
|
|
2558
|
-
}
|
|
2559
|
-
};
|
|
2560
|
-
const Go = /* @__PURE__ */ new Set([$A, ke, Ke]), Yt = {
|
|
2561
|
-
[sn]: $A,
|
|
2562
|
-
[An]: $A,
|
|
2563
|
-
[js]: $A,
|
|
2564
|
-
[Zs]: $A,
|
|
2565
|
-
[tn]: ke,
|
|
2566
|
-
[$s]: ke,
|
|
2567
|
-
[Vs]: ke,
|
|
2568
|
-
[Ws]: ke,
|
|
2569
|
-
[en]: Ke,
|
|
2570
|
-
[zs]: Ke,
|
|
2571
|
-
[Xs]: Ke,
|
|
2572
|
-
[qs]: Ke,
|
|
2573
|
-
[on]: ds,
|
|
2574
|
-
[nn]: ds
|
|
2575
|
-
}, qt = {
|
|
2576
|
-
[sn]: _e,
|
|
2577
|
-
[An]: Pe,
|
|
2578
|
-
[js]: q,
|
|
2579
|
-
[Zs]: q,
|
|
2580
|
-
[tn]: _e,
|
|
2581
|
-
[$s]: Pe,
|
|
2582
|
-
[Vs]: q,
|
|
2583
|
-
[Ws]: q,
|
|
2584
|
-
[en]: _e,
|
|
2585
|
-
[zs]: Pe,
|
|
2586
|
-
[Xs]: q,
|
|
2587
|
-
[qs]: q,
|
|
2588
|
-
[on]: q,
|
|
2589
|
-
[nn]: q
|
|
2590
|
-
};
|
|
2591
|
-
function mo(a) {
|
|
2592
|
-
return zA(this, null, function* () {
|
|
2593
|
-
const { vkFormat: A } = a;
|
|
2594
|
-
if (Yt[A] === void 0)
|
|
2595
|
-
throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
2596
|
-
let e;
|
|
2597
|
-
a.supercompressionScheme === Rs && (Pt || (Pt = new Promise((n) => zA(this, null, function* () {
|
|
2598
|
-
const i = new po();
|
|
2599
|
-
yield i.init(), n(i);
|
|
2600
|
-
}))), e = yield Pt);
|
|
2601
|
-
const s = [];
|
|
2602
|
-
for (let n = 0; n < a.levels.length; n++) {
|
|
2603
|
-
const i = Math.max(1, a.pixelWidth >> n), B = Math.max(1, a.pixelHeight >> n), r = a.pixelDepth ? Math.max(1, a.pixelDepth >> n) : 0, C = a.levels[n];
|
|
2604
|
-
let g;
|
|
2605
|
-
if (a.supercompressionScheme === Eo)
|
|
2606
|
-
g = C.levelData;
|
|
2607
|
-
else if (a.supercompressionScheme === Rs)
|
|
2608
|
-
g = e.decode(C.levelData, C.uncompressedByteLength);
|
|
2609
|
-
else
|
|
2610
|
-
throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
2611
|
-
let I;
|
|
2612
|
-
qt[A] === _e ? I = new Float32Array(
|
|
2613
|
-
g.buffer,
|
|
2614
|
-
g.byteOffset,
|
|
2615
|
-
g.byteLength / Float32Array.BYTES_PER_ELEMENT
|
|
2616
|
-
) : qt[A] === Pe ? I = new Uint16Array(
|
|
2617
|
-
g.buffer,
|
|
2618
|
-
g.byteOffset,
|
|
2619
|
-
g.byteLength / Uint16Array.BYTES_PER_ELEMENT
|
|
2620
|
-
) : I = g, s.push({
|
|
2621
|
-
data: I,
|
|
2622
|
-
width: i,
|
|
2623
|
-
height: B,
|
|
2624
|
-
depth: r
|
|
2625
|
-
});
|
|
2626
|
-
}
|
|
2627
|
-
let t;
|
|
2628
|
-
if (Go.has(Yt[A]))
|
|
2629
|
-
t = a.pixelDepth === 0 ? new gi(s[0].data, a.pixelWidth, a.pixelHeight) : new ci(s[0].data, a.pixelWidth, a.pixelHeight, a.pixelDepth);
|
|
2630
|
-
else {
|
|
2631
|
-
if (a.pixelDepth > 0)
|
|
2632
|
-
throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
2633
|
-
t = new _s(s, a.pixelWidth, a.pixelHeight);
|
|
2634
|
-
}
|
|
2635
|
-
return t.mipmaps = s, t.type = qt[A], t.format = Yt[A], t.colorSpace = rn(a), t.needsUpdate = !0, Promise.resolve(t);
|
|
2636
|
-
});
|
|
2637
|
-
}
|
|
2638
|
-
function rn(a) {
|
|
2639
|
-
const A = a.dataFormatDescriptor[0];
|
|
2640
|
-
return A.colorPrimaries === lo ? A.transferFunction === ws ? QA : j : A.colorPrimaries === uo ? A.transferFunction === ws ? Ei : Qi : A.colorPrimaries === ho ? us : (console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`), us);
|
|
2641
|
-
}
|
|
2642
|
-
let ft;
|
|
2643
|
-
const Ro = () => {
|
|
2644
|
-
if (ft)
|
|
2645
|
-
return ft;
|
|
2646
|
-
const a = "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", A = "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", e = new Uint8Array([
|
|
2647
|
-
0,
|
|
2648
|
-
97,
|
|
2649
|
-
115,
|
|
2650
|
-
109,
|
|
2651
|
-
1,
|
|
2652
|
-
0,
|
|
2653
|
-
0,
|
|
2654
|
-
0,
|
|
2655
|
-
1,
|
|
2656
|
-
4,
|
|
2657
|
-
1,
|
|
2658
|
-
96,
|
|
2659
|
-
0,
|
|
2660
|
-
0,
|
|
2661
|
-
3,
|
|
2662
|
-
3,
|
|
2663
|
-
2,
|
|
2664
|
-
0,
|
|
2665
|
-
0,
|
|
2666
|
-
5,
|
|
2667
|
-
3,
|
|
2668
|
-
1,
|
|
2669
|
-
0,
|
|
2670
|
-
1,
|
|
2671
|
-
12,
|
|
2672
|
-
1,
|
|
2673
|
-
0,
|
|
2674
|
-
10,
|
|
2675
|
-
22,
|
|
2676
|
-
2,
|
|
2677
|
-
12,
|
|
2678
|
-
0,
|
|
2679
|
-
65,
|
|
2680
|
-
0,
|
|
2681
|
-
65,
|
|
2682
|
-
0,
|
|
2683
|
-
65,
|
|
2684
|
-
0,
|
|
2685
|
-
252,
|
|
2686
|
-
10,
|
|
2687
|
-
0,
|
|
2688
|
-
0,
|
|
2689
|
-
11,
|
|
2690
|
-
7,
|
|
2691
|
-
0,
|
|
2692
|
-
65,
|
|
2693
|
-
0,
|
|
2694
|
-
253,
|
|
2695
|
-
15,
|
|
2696
|
-
26,
|
|
2697
|
-
11
|
|
2698
|
-
]), s = new Uint8Array([
|
|
2699
|
-
32,
|
|
2700
|
-
0,
|
|
2701
|
-
65,
|
|
2702
|
-
253,
|
|
2703
|
-
3,
|
|
2704
|
-
1,
|
|
2705
|
-
2,
|
|
2706
|
-
34,
|
|
2707
|
-
4,
|
|
2708
|
-
106,
|
|
2709
|
-
6,
|
|
2710
|
-
5,
|
|
2711
|
-
11,
|
|
2712
|
-
8,
|
|
2713
|
-
7,
|
|
2714
|
-
20,
|
|
2715
|
-
13,
|
|
2716
|
-
33,
|
|
2717
|
-
12,
|
|
2718
|
-
16,
|
|
2719
|
-
128,
|
|
2720
|
-
9,
|
|
2721
|
-
116,
|
|
2722
|
-
64,
|
|
2723
|
-
19,
|
|
2724
|
-
113,
|
|
2725
|
-
127,
|
|
2726
|
-
15,
|
|
2727
|
-
10,
|
|
2728
|
-
21,
|
|
2729
|
-
22,
|
|
2730
|
-
14,
|
|
2731
|
-
255,
|
|
2732
|
-
66,
|
|
2733
|
-
24,
|
|
2734
|
-
54,
|
|
2735
|
-
136,
|
|
2736
|
-
107,
|
|
2737
|
-
18,
|
|
2738
|
-
23,
|
|
2739
|
-
192,
|
|
2740
|
-
26,
|
|
2741
|
-
114,
|
|
2742
|
-
118,
|
|
2743
|
-
132,
|
|
2744
|
-
17,
|
|
2745
|
-
77,
|
|
2746
|
-
101,
|
|
2747
|
-
130,
|
|
2748
|
-
144,
|
|
2749
|
-
27,
|
|
2750
|
-
87,
|
|
2751
|
-
131,
|
|
2752
|
-
44,
|
|
2753
|
-
45,
|
|
2754
|
-
74,
|
|
2755
|
-
156,
|
|
2756
|
-
154,
|
|
2757
|
-
70,
|
|
2758
|
-
167
|
|
2759
|
-
]);
|
|
2760
|
-
if (typeof WebAssembly != "object")
|
|
2761
|
-
return {
|
|
2762
|
-
supported: !1
|
|
2763
|
-
};
|
|
2764
|
-
let t = a;
|
|
2765
|
-
WebAssembly.validate(e) && (t = A);
|
|
2766
|
-
let n;
|
|
2767
|
-
const i = WebAssembly.instantiate(B(t), {}).then((I) => {
|
|
2768
|
-
n = I.instance, n.exports.__wasm_call_ctors();
|
|
2769
|
-
});
|
|
2770
|
-
function B(I) {
|
|
2771
|
-
const E = new Uint8Array(I.length);
|
|
2772
|
-
for (let l = 0; l < I.length; ++l) {
|
|
2773
|
-
const h = I.charCodeAt(l);
|
|
2774
|
-
E[l] = h > 96 ? h - 71 : h > 64 ? h - 65 : h > 47 ? h + 4 : h > 46 ? 63 : 62;
|
|
2775
|
-
}
|
|
2776
|
-
let Q = 0;
|
|
2777
|
-
for (let l = 0; l < I.length; ++l)
|
|
2778
|
-
E[Q++] = E[l] < 60 ? s[E[l]] : (E[l] - 60) * 64 + E[++l];
|
|
2779
|
-
return E.buffer.slice(0, Q);
|
|
2780
|
-
}
|
|
2781
|
-
function r(I, E, Q, l, h, c) {
|
|
2782
|
-
const d = n.exports.sbrk, D = Q + 3 & -4, F = d(D * l), p = d(h.length), R = new Uint8Array(n.exports.memory.buffer);
|
|
2783
|
-
R.set(h, p);
|
|
2784
|
-
const y = I(F, Q, l, p, h.length);
|
|
2785
|
-
if (y === 0 && c && c(F, D, l), E.set(R.subarray(F, F + Q * l)), d(F - d(0)), y !== 0)
|
|
2786
|
-
throw new Error(`Malformed buffer data: ${y}`);
|
|
2787
|
-
}
|
|
2788
|
-
const C = {
|
|
2789
|
-
// legacy index-based enums for glTF
|
|
2790
|
-
0: "",
|
|
2791
|
-
1: "meshopt_decodeFilterOct",
|
|
2792
|
-
2: "meshopt_decodeFilterQuat",
|
|
2793
|
-
3: "meshopt_decodeFilterExp",
|
|
2794
|
-
// string-based enums for glTF
|
|
2795
|
-
NONE: "",
|
|
2796
|
-
OCTAHEDRAL: "meshopt_decodeFilterOct",
|
|
2797
|
-
QUATERNION: "meshopt_decodeFilterQuat",
|
|
2798
|
-
EXPONENTIAL: "meshopt_decodeFilterExp"
|
|
2799
|
-
}, g = {
|
|
2800
|
-
// legacy index-based enums for glTF
|
|
2801
|
-
0: "meshopt_decodeVertexBuffer",
|
|
2802
|
-
1: "meshopt_decodeIndexBuffer",
|
|
2803
|
-
2: "meshopt_decodeIndexSequence",
|
|
2804
|
-
// string-based enums for glTF
|
|
2805
|
-
ATTRIBUTES: "meshopt_decodeVertexBuffer",
|
|
2806
|
-
TRIANGLES: "meshopt_decodeIndexBuffer",
|
|
2807
|
-
INDICES: "meshopt_decodeIndexSequence"
|
|
2808
|
-
};
|
|
2809
|
-
return ft = {
|
|
2810
|
-
ready: i,
|
|
2811
|
-
supported: !0,
|
|
2812
|
-
decodeVertexBuffer(I, E, Q, l, h) {
|
|
2813
|
-
r(
|
|
2814
|
-
n.exports.meshopt_decodeVertexBuffer,
|
|
2815
|
-
I,
|
|
2816
|
-
E,
|
|
2817
|
-
Q,
|
|
2818
|
-
l,
|
|
2819
|
-
n.exports[C[h]]
|
|
2820
|
-
);
|
|
2821
|
-
},
|
|
2822
|
-
decodeIndexBuffer(I, E, Q, l) {
|
|
2823
|
-
r(n.exports.meshopt_decodeIndexBuffer, I, E, Q, l);
|
|
2824
|
-
},
|
|
2825
|
-
decodeIndexSequence(I, E, Q, l) {
|
|
2826
|
-
r(n.exports.meshopt_decodeIndexSequence, I, E, Q, l);
|
|
2827
|
-
},
|
|
2828
|
-
decodeGltfBuffer(I, E, Q, l, h, c) {
|
|
2829
|
-
r(
|
|
2830
|
-
n.exports[g[h]],
|
|
2831
|
-
I,
|
|
2832
|
-
E,
|
|
2833
|
-
Q,
|
|
2834
|
-
l,
|
|
2835
|
-
n.exports[C[c]]
|
|
2836
|
-
);
|
|
2837
|
-
}
|
|
2838
|
-
}, ft;
|
|
2839
|
-
};
|
|
2840
|
-
var oe, je, Ze, ze;
|
|
2841
|
-
class wo {
|
|
2842
|
-
constructor() {
|
|
2843
|
-
u(this, oe, new Li());
|
|
2844
|
-
u(this, je, new Io().setDecoderPath(
|
|
2845
|
-
`${w.CDNVersion}/examples/jsm/libs/draco/gltf/`
|
|
2846
|
-
));
|
|
2847
|
-
u(this, Ze, new eA().setTranscoderPath(
|
|
2848
|
-
`${w.CDNVersion}/examples/jsm/libs/basis/`
|
|
2849
|
-
));
|
|
2850
|
-
u(this, ze, !1);
|
|
2851
|
-
o(this, oe).setCrossOrigin("anonymous").setDRACOLoader(o(this, je)).setMeshoptDecoder(Ro);
|
|
2852
|
-
}
|
|
2853
|
-
get gltfLoader() {
|
|
2854
|
-
return o(this, oe);
|
|
2855
|
-
}
|
|
2856
|
-
get dracoLoader() {
|
|
2857
|
-
return o(this, je);
|
|
2858
|
-
}
|
|
2859
|
-
get ktx2Loader() {
|
|
2860
|
-
return o(this, Ze);
|
|
2861
|
-
}
|
|
2862
|
-
load(...A) {
|
|
2863
|
-
o(this, ze) || (o(this, oe).setKTX2Loader(
|
|
2864
|
-
o(this, Ze).detectSupport(w.webglRenderer)
|
|
2865
|
-
), f(this, ze, !0));
|
|
2866
|
-
const [e, s, ...t] = A;
|
|
2867
|
-
if (w.cacheAssets && W.has(e)) {
|
|
2868
|
-
const n = W.get(e).data;
|
|
2869
|
-
s(n);
|
|
2870
|
-
} else
|
|
2871
|
-
this.gltfLoader.load(
|
|
2872
|
-
e,
|
|
2873
|
-
(n) => {
|
|
2874
|
-
w.cacheAssets && W.set(e, {
|
|
2875
|
-
data: n,
|
|
2876
|
-
dispose: () => {
|
|
2877
|
-
n.cameras.forEach((i) => Me(i)), n.scenes.forEach((i) => {
|
|
2878
|
-
Me(i);
|
|
2879
|
-
});
|
|
2880
|
-
}
|
|
2881
|
-
}), s(n);
|
|
2882
|
-
},
|
|
2883
|
-
...t
|
|
2884
|
-
);
|
|
2885
|
-
}
|
|
2886
|
-
}
|
|
2887
|
-
oe = new WeakMap(), je = new WeakMap(), Ze = new WeakMap(), ze = new WeakMap();
|
|
2888
|
-
const yo = new wo();
|
|
2889
|
-
var aA, J, CA, $e;
|
|
2890
|
-
class dr {
|
|
2891
|
-
constructor(A, e) {
|
|
2892
|
-
u(this, aA, void 0);
|
|
2893
|
-
u(this, J, void 0);
|
|
2894
|
-
u(this, CA, []);
|
|
2895
|
-
u(this, $e, () => {
|
|
2896
|
-
const A = o(this, J).left - o(this, aA).box.left, e = o(this, J).top - o(this, aA).box.top;
|
|
2897
|
-
let s = 0, t = 0;
|
|
2898
|
-
o(this, aA).isClipped || (s = o(this, J).position.x - o(this, J).left, t = o(this, J).position.y - o(this, J).top);
|
|
2899
|
-
const n = o(this, aA).box.width - o(this, J).scale.x, i = A - n, B = o(this, aA).box.height - o(this, J).scale.y, r = e - B;
|
|
2900
|
-
o(this, CA)[0].constant = o(this, J).scale.y / 2 + t * -1 - B / 2 - r, o(this, CA)[1].constant = o(this, J).scale.y / 2 + t + B / 2 + r, o(this, CA)[2].constant = o(this, J).scale.x / 2 + s + n / 2 + i, o(this, CA)[3].constant = o(this, J).scale.x / 2 + s * -1 - n / 2 - i;
|
|
2901
|
-
});
|
|
2902
|
-
f(this, aA, w.getView((e == null ? void 0 : e.viewName) || "default")), f(this, J, new zt(A, { cartesian: !1 }));
|
|
2903
|
-
const s = (e == null ? void 0 : e.scale) || 1;
|
|
2904
|
-
f(this, CA, [
|
|
2905
|
-
new ut(new L(0, -1 * s, 0)),
|
|
2906
|
-
new ut(new L(0, 1 * s, 0)),
|
|
2907
|
-
new ut(new L(-1 * s, 0, 0)),
|
|
2908
|
-
new ut(new L(1 * s, 0, 0))
|
|
2909
|
-
]), JA.subscribe(o(this, $e), { order: ns.LAYOUT_BOX });
|
|
2910
|
-
}
|
|
2911
|
-
get planes() {
|
|
2912
|
-
return o(this, CA);
|
|
2913
|
-
}
|
|
2914
|
-
get layoutBox() {
|
|
2915
|
-
return o(this, J);
|
|
2916
|
-
}
|
|
2917
|
-
destroy() {
|
|
2918
|
-
JA.unsubscribe(o(this, $e)), o(this, J).destroy();
|
|
2919
|
-
}
|
|
2920
|
-
}
|
|
2921
|
-
aA = new WeakMap(), J = new WeakMap(), CA = new WeakMap(), $e = new WeakMap();
|
|
2922
|
-
class fr extends Oe {
|
|
2923
|
-
constructor(A, e = 500) {
|
|
2924
|
-
super(), this.add(new dt(A.planes[0], e, 16711680)), this.add(new dt(A.planes[1], e, 16711680)), this.add(new dt(A.planes[2], e, 16711680)), this.add(new dt(A.planes[3], e, 16711680));
|
|
2925
|
-
}
|
|
2926
|
-
}
|
|
2927
|
-
var re, KA, Be, At, et, GA, ae, tt;
|
|
2928
|
-
class Bn extends Di {
|
|
2929
|
-
constructor(e) {
|
|
2930
|
-
super(e);
|
|
2931
|
-
u(this, re, new T(null));
|
|
2932
|
-
u(this, KA, new T(void 0));
|
|
2933
|
-
u(this, Be, void 0);
|
|
2934
|
-
u(this, At, void 0);
|
|
2935
|
-
u(this, et, void 0);
|
|
2936
|
-
u(this, GA, void 0);
|
|
2937
|
-
u(this, ae, !1);
|
|
2938
|
-
u(this, tt, () => {
|
|
2939
|
-
if (!(o(this, GA) && !o(this, ae)) && (this.current !== this.previous && (o(this, re).current = null), this.current)) {
|
|
2940
|
-
const e = o(this, et) ? this.current.url : this.current.name + this.current.extension;
|
|
2941
|
-
o(this, GA) || Tt.setTotal(e, 1), o(this, KA).current = "start", o(this, At).load(
|
|
2942
|
-
e,
|
|
2943
|
-
(s) => {
|
|
2944
|
-
var t;
|
|
2945
|
-
o(this, re).current = ((t = this.processData) == null ? void 0 : t.call(this, s)) || s, o(this, KA).current = "complete", o(this, GA) || Tt.setLoaded(e, 1);
|
|
2946
|
-
},
|
|
2947
|
-
void 0,
|
|
2948
|
-
() => {
|
|
2949
|
-
o(this, GA) || (o(this, KA).current = "error", Tt.setError(e, e));
|
|
2950
|
-
}
|
|
2951
|
-
);
|
|
2952
|
-
}
|
|
2953
|
-
});
|
|
2954
|
-
f(this, Be, e.consumer), f(this, At, e.loader), f(this, et, e.keepSourceParameters || !1), f(this, GA, e.lazy || !1), this.subscribe(o(this, tt)), o(this, Be).addEventListener("added", () => {
|
|
2955
|
-
this.connect();
|
|
2956
|
-
}), o(this, Be).addEventListener("removed", () => {
|
|
2957
|
-
this.disconnect();
|
|
2958
|
-
});
|
|
2959
|
-
}
|
|
2960
|
-
/**
|
|
2961
|
-
* Resource store.
|
|
2962
|
-
*/
|
|
2963
|
-
get data() {
|
|
2964
|
-
return o(this, re);
|
|
2965
|
-
}
|
|
2966
|
-
/**
|
|
2967
|
-
* Loading store.
|
|
2968
|
-
*/
|
|
2969
|
-
get loading() {
|
|
2970
|
-
return o(this, KA);
|
|
2971
|
-
}
|
|
2972
|
-
/**
|
|
2973
|
-
* Calling this method will start loading the resource.
|
|
2974
|
-
*/
|
|
2975
|
-
lazyLoad() {
|
|
2976
|
-
o(this, ae) || (f(this, ae, !0), o(this, tt).call(this));
|
|
2977
|
-
}
|
|
2978
|
-
}
|
|
2979
|
-
re = new WeakMap(), KA = new WeakMap(), Be = new WeakMap(), At = new WeakMap(), et = new WeakMap(), GA = new WeakMap(), ae = new WeakMap(), tt = new WeakMap();
|
|
2980
|
-
var vA;
|
|
2981
|
-
class Dr extends Oe {
|
|
2982
|
-
constructor(e) {
|
|
2983
|
-
super();
|
|
2984
|
-
u(this, vA, void 0);
|
|
2985
|
-
f(this, vA, new Bn(nA({
|
|
2986
|
-
loader: yo,
|
|
2987
|
-
consumer: this
|
|
2988
|
-
}, e))), o(this, vA).processData = (s) => {
|
|
2989
|
-
if (w.cacheAssets) {
|
|
2990
|
-
const t = nA({}, s);
|
|
2991
|
-
return t.scene = s.scene.clone(!0), t.scenes = s.scenes.map((n) => s.scene === n ? t.scene : n.clone(!0)), t;
|
|
2992
|
-
}
|
|
2993
|
-
return s;
|
|
2994
|
-
}, o(this, vA).data.subscribe((s) => {
|
|
2995
|
-
s.current ? this.add(...s.current.scene.children) : this.children.forEach((t) => {
|
|
2996
|
-
this.remove(t), Me(t);
|
|
2997
|
-
});
|
|
2998
|
-
});
|
|
2999
|
-
}
|
|
3000
|
-
get sourceManager() {
|
|
3001
|
-
return o(this, vA);
|
|
3002
|
-
}
|
|
3003
|
-
}
|
|
3004
|
-
vA = new WeakMap();
|
|
3005
|
-
const Se = `attribute vec3 position;
|
|
3006
|
-
uniform vec2 px;
|
|
3007
|
-
uniform vec2 boundarySpace;
|
|
3008
|
-
varying vec2 uv;
|
|
3009
|
-
|
|
3010
|
-
precision highp float;
|
|
3011
|
-
|
|
3012
|
-
void main(){
|
|
3013
|
-
vec3 pos = position;
|
|
3014
|
-
vec2 scale = 1.0 - boundarySpace * 2.0;
|
|
3015
|
-
pos.xy = pos.xy * scale;
|
|
3016
|
-
uv = vec2(0.5)+(pos.xy)*0.5;
|
|
3017
|
-
gl_Position = vec4(pos, 1.0);
|
|
3018
|
-
}`, Mo = `precision highp float;
|
|
3019
|
-
uniform vec3 backgroundColor;
|
|
3020
|
-
uniform float backgroundOpacity;
|
|
3021
|
-
uniform vec3 fluidColor;
|
|
3022
|
-
uniform float fluidOpacity;
|
|
3023
|
-
uniform float backgroundMixThreshold;
|
|
3024
|
-
uniform sampler2D velocity;
|
|
3025
|
-
varying vec2 uv;
|
|
3026
|
-
|
|
3027
|
-
void main(){
|
|
3028
|
-
vec2 vel = texture2D(velocity, uv).xy;
|
|
3029
|
-
|
|
3030
|
-
float len = length(vel);
|
|
3031
|
-
|
|
3032
|
-
vel = vel * 0.5 + 0.5;
|
|
3033
|
-
|
|
3034
|
-
vec4 backgroundColorA = mix(vec4(vec3(0.0,0.0,0.0), backgroundOpacity), vec4(backgroundColor, backgroundOpacity), backgroundMixThreshold);
|
|
3035
|
-
vec4 fluidColorA = vec4(fluidColor, fluidOpacity);
|
|
3036
|
-
vec4 finalColor = mix(backgroundColorA, fluidColorA, len);
|
|
3037
|
-
|
|
3038
|
-
gl_FragColor = finalColor;
|
|
3039
|
-
}`, So = `attribute vec3 position;
|
|
3040
|
-
varying vec2 uv;
|
|
3041
|
-
uniform vec2 px;
|
|
3042
|
-
|
|
3043
|
-
precision highp float;
|
|
3044
|
-
|
|
3045
|
-
void main(){
|
|
3046
|
-
vec3 pos = position;
|
|
3047
|
-
uv = 0.5 + pos.xy * 0.5;
|
|
3048
|
-
vec2 n = sign(pos.xy);
|
|
3049
|
-
pos.xy = abs(pos.xy) - px * 1.0;
|
|
3050
|
-
pos.xy *= n;
|
|
3051
|
-
gl_Position = vec4(pos, 1.0);
|
|
3052
|
-
}`, Ss = `precision highp float;
|
|
3053
|
-
uniform sampler2D velocity;
|
|
3054
|
-
uniform float dt;
|
|
3055
|
-
uniform bool isBFECC;
|
|
3056
|
-
// uniform float uvScale;
|
|
3057
|
-
uniform vec2 fboSize;
|
|
3058
|
-
uniform vec2 px;
|
|
3059
|
-
varying vec2 uv;
|
|
3060
|
-
|
|
3061
|
-
void main(){
|
|
3062
|
-
vec2 ratio = max(fboSize.x, fboSize.y) / fboSize;
|
|
3063
|
-
|
|
3064
|
-
if(isBFECC == false){
|
|
3065
|
-
vec2 vel = texture2D(velocity, uv).xy;
|
|
3066
|
-
vec2 uv2 = uv - vel * dt * ratio;
|
|
3067
|
-
vec2 newVel = texture2D(velocity, uv2).xy;
|
|
3068
|
-
gl_FragColor = vec4(newVel, 0.0, 0.0);
|
|
3069
|
-
} else {
|
|
3070
|
-
vec2 spot_new = uv;
|
|
3071
|
-
vec2 vel_old = texture2D(velocity, uv).xy;
|
|
3072
|
-
// back trace
|
|
3073
|
-
vec2 spot_old = spot_new - vel_old * dt * ratio;
|
|
3074
|
-
vec2 vel_new1 = texture2D(velocity, spot_old).xy;
|
|
3075
|
-
|
|
3076
|
-
// forward trace
|
|
3077
|
-
vec2 spot_new2 = spot_old + vel_new1 * dt * ratio;
|
|
3078
|
-
|
|
3079
|
-
vec2 error = spot_new2 - spot_new;
|
|
3080
|
-
|
|
3081
|
-
vec2 spot_new3 = spot_new - error / 2.0;
|
|
3082
|
-
vec2 vel_2 = texture2D(velocity, spot_new3).xy;
|
|
3083
|
-
|
|
3084
|
-
// back trace 2
|
|
3085
|
-
vec2 spot_old2 = spot_new3 - vel_2 * dt * ratio;
|
|
3086
|
-
// gl_FragColor = vec4(spot_old2, 0.0, 0.0);
|
|
3087
|
-
vec2 newVel2 = texture2D(velocity, spot_old2).xy;
|
|
3088
|
-
gl_FragColor = vec4(newVel2, 0.0, 0.0);
|
|
3089
|
-
}
|
|
3090
|
-
}`;
|
|
3091
|
-
var mA, OA, st, nt, it, ot, _A;
|
|
3092
|
-
class Le {
|
|
3093
|
-
constructor(A) {
|
|
3094
|
-
u(this, mA, null);
|
|
3095
|
-
u(this, OA, null);
|
|
3096
|
-
u(this, st, null);
|
|
3097
|
-
u(this, nt, null);
|
|
3098
|
-
u(this, it, null);
|
|
3099
|
-
u(this, ot, void 0);
|
|
3100
|
-
u(this, _A, {});
|
|
3101
|
-
var e;
|
|
3102
|
-
if (f(this, ot, A.material), (e = A.material) != null && e.uniforms)
|
|
3103
|
-
for (const s in A.material.uniforms)
|
|
3104
|
-
o(this, _A)[s] = { value: A.material.uniforms[s] };
|
|
3105
|
-
this.output = A.output;
|
|
3106
|
-
}
|
|
3107
|
-
get scene() {
|
|
3108
|
-
return o(this, mA);
|
|
3109
|
-
}
|
|
3110
|
-
get camera() {
|
|
3111
|
-
return o(this, OA);
|
|
3112
|
-
}
|
|
3113
|
-
get uniforms() {
|
|
3114
|
-
return o(this, _A);
|
|
3115
|
-
}
|
|
3116
|
-
update(...A) {
|
|
3117
|
-
w.webglRenderer.setRenderTarget(this.output), w.webglRenderer.render(o(this, mA), o(this, OA)), w.webglRenderer.setRenderTarget(null);
|
|
3118
|
-
}
|
|
3119
|
-
dispose() {
|
|
3120
|
-
Me(o(this, OA)), Me(o(this, mA));
|
|
3121
|
-
}
|
|
3122
|
-
init(...A) {
|
|
3123
|
-
f(this, mA, new bs()), f(this, OA, new hi()), Object.keys(o(this, _A)).length && (f(this, st, new St(2, 2)), f(this, nt, new Lt(He(nA({}, o(this, ot)), {
|
|
3124
|
-
uniforms: o(this, _A)
|
|
3125
|
-
}))), f(this, it, new HA(o(this, st), o(this, nt))), o(this, mA).add(o(this, it)));
|
|
3126
|
-
}
|
|
3127
|
-
}
|
|
3128
|
-
mA = new WeakMap(), OA = new WeakMap(), st = new WeakMap(), nt = new WeakMap(), it = new WeakMap(), ot = new WeakMap(), _A = new WeakMap();
|
|
3129
|
-
var Ce, Rt, an;
|
|
3130
|
-
class Lo extends Le {
|
|
3131
|
-
constructor(e) {
|
|
3132
|
-
super({
|
|
3133
|
-
material: {
|
|
3134
|
-
vertexShader: Se,
|
|
3135
|
-
fragmentShader: Ss,
|
|
3136
|
-
uniforms: {
|
|
3137
|
-
boundarySpace: e.cellScale,
|
|
3138
|
-
px: e.cellScale,
|
|
3139
|
-
fboSize: e.fboSize,
|
|
3140
|
-
velocity: e.src.texture,
|
|
3141
|
-
dt: e.dt,
|
|
3142
|
-
isBFECC: e.BFECC
|
|
3143
|
-
}
|
|
3144
|
-
},
|
|
3145
|
-
output: e.dst
|
|
3146
|
-
});
|
|
3147
|
-
u(this, Rt);
|
|
3148
|
-
u(this, Ce, null);
|
|
3149
|
-
this.init();
|
|
3150
|
-
}
|
|
3151
|
-
update(e) {
|
|
3152
|
-
this.uniforms.dt.value = e.dt, o(this, Ce).visible = e.isBounce, this.uniforms.isBFECC.value = e.BFECC, super.update();
|
|
3153
|
-
}
|
|
3154
|
-
init() {
|
|
3155
|
-
super.init(), iA(this, Rt, an).call(this);
|
|
3156
|
-
}
|
|
3157
|
-
}
|
|
3158
|
-
Ce = new WeakMap(), Rt = new WeakSet(), an = function() {
|
|
3159
|
-
const e = new as(), s = new Float32Array([
|
|
3160
|
-
// left
|
|
3161
|
-
-1,
|
|
3162
|
-
-1,
|
|
3163
|
-
0,
|
|
3164
|
-
-1,
|
|
3165
|
-
1,
|
|
3166
|
-
0,
|
|
3167
|
-
// top
|
|
3168
|
-
-1,
|
|
3169
|
-
1,
|
|
3170
|
-
0,
|
|
3171
|
-
1,
|
|
3172
|
-
1,
|
|
3173
|
-
0,
|
|
3174
|
-
// right
|
|
3175
|
-
1,
|
|
3176
|
-
1,
|
|
3177
|
-
0,
|
|
3178
|
-
1,
|
|
3179
|
-
-1,
|
|
3180
|
-
0,
|
|
3181
|
-
// bottom
|
|
3182
|
-
1,
|
|
3183
|
-
-1,
|
|
3184
|
-
0,
|
|
3185
|
-
-1,
|
|
3186
|
-
-1,
|
|
3187
|
-
0
|
|
3188
|
-
]);
|
|
3189
|
-
e.setAttribute("position", new Ae(s, 3));
|
|
3190
|
-
const t = new Lt({
|
|
3191
|
-
vertexShader: So,
|
|
3192
|
-
fragmentShader: Ss,
|
|
3193
|
-
uniforms: this.uniforms
|
|
3194
|
-
});
|
|
3195
|
-
f(this, Ce, new vs(e, t)), this.scene.add(o(this, Ce));
|
|
3196
|
-
};
|
|
3197
|
-
const xo = `precision highp float;
|
|
3198
|
-
|
|
3199
|
-
attribute vec3 position;
|
|
3200
|
-
attribute vec2 uv;
|
|
3201
|
-
uniform vec2 center;
|
|
3202
|
-
uniform vec2 scale;
|
|
3203
|
-
uniform vec2 px;
|
|
3204
|
-
varying vec2 vUv;
|
|
3205
|
-
|
|
3206
|
-
void main(){
|
|
3207
|
-
vec2 pos = position.xy * scale * 2.0 * px + center;
|
|
3208
|
-
vUv = uv;
|
|
3209
|
-
gl_Position = vec4(pos, 0.0, 1.0);
|
|
3210
|
-
}
|
|
3211
|
-
`, Jo = `precision highp float;
|
|
3212
|
-
|
|
3213
|
-
uniform vec2 force;
|
|
3214
|
-
uniform vec2 center;
|
|
3215
|
-
uniform vec2 scale;
|
|
3216
|
-
uniform vec2 px;
|
|
3217
|
-
varying vec2 vUv;
|
|
3218
|
-
|
|
3219
|
-
void main(){
|
|
3220
|
-
vec2 circle = (vUv - 0.5) * 2.0;
|
|
3221
|
-
float d = 1.0-min(length(circle), 1.0);
|
|
3222
|
-
d *= d;
|
|
3223
|
-
gl_FragColor = vec4(force * d, 0, 1);
|
|
3224
|
-
}
|
|
3225
|
-
`;
|
|
3226
|
-
var X, V, RA, Ie;
|
|
3227
|
-
class Ho {
|
|
3228
|
-
constructor() {
|
|
3229
|
-
u(this, X, void 0);
|
|
3230
|
-
u(this, V, void 0);
|
|
3231
|
-
u(this, RA, void 0);
|
|
3232
|
-
u(this, Ie, void 0);
|
|
3233
|
-
this.disabled = !1, f(this, X, new Jt.Vector2()), f(this, V, new Jt.Vector2()), f(this, RA, new Jt.Vector2()), f(this, Ie, (A) => {
|
|
3234
|
-
this.disabled || this.updateCoords(A.clientX, A.clientY);
|
|
3235
|
-
});
|
|
3236
|
-
}
|
|
3237
|
-
init() {
|
|
3238
|
-
document.body.addEventListener(
|
|
3239
|
-
"pointermove",
|
|
3240
|
-
o(this, Ie),
|
|
3241
|
-
!1
|
|
3242
|
-
);
|
|
3243
|
-
}
|
|
3244
|
-
dispose() {
|
|
3245
|
-
document.body.removeEventListener(
|
|
3246
|
-
"pointermove",
|
|
3247
|
-
o(this, Ie),
|
|
3248
|
-
!1
|
|
3249
|
-
);
|
|
3250
|
-
}
|
|
3251
|
-
get coords() {
|
|
3252
|
-
return o(this, X);
|
|
3253
|
-
}
|
|
3254
|
-
get diff() {
|
|
3255
|
-
return o(this, RA);
|
|
3256
|
-
}
|
|
3257
|
-
updateCoords(A = 0, e = 0) {
|
|
3258
|
-
o(this, X).set(A / w.width * 2 - 1, -(e / w.height) * 2 + 1), Math.abs(o(this, X).x - o(this, V).x) > 0.2 && (o(this, V).copy(o(this, X)), o(this, RA).subVectors(o(this, X), o(this, V)));
|
|
3259
|
-
}
|
|
3260
|
-
update() {
|
|
3261
|
-
o(this, RA).subVectors(o(this, X), o(this, V)), o(this, V).copy(o(this, X)), o(this, V).x === 0 && o(this, V).y === 0 && o(this, RA).set(0, 0);
|
|
3262
|
-
}
|
|
3263
|
-
}
|
|
3264
|
-
X = new WeakMap(), V = new WeakMap(), RA = new WeakMap(), Ie = new WeakMap();
|
|
3265
|
-
const bA = new Ho();
|
|
3266
|
-
var ge;
|
|
3267
|
-
class To extends Le {
|
|
3268
|
-
constructor(e) {
|
|
3269
|
-
super({
|
|
3270
|
-
output: e.dst
|
|
3271
|
-
});
|
|
3272
|
-
u(this, ge, null);
|
|
3273
|
-
this.init(e);
|
|
3274
|
-
}
|
|
3275
|
-
update(e) {
|
|
3276
|
-
const s = bA.diff.x / 2 * e.pointerForce, t = bA.diff.y / 2 * e.pointerForce, n = e.pointerSize * e.cellScale.x, i = e.pointerSize * e.cellScale.y, B = Math.min(
|
|
3277
|
-
Math.max(
|
|
3278
|
-
bA.coords.x,
|
|
3279
|
-
-1 + n + e.cellScale.x * 2
|
|
3280
|
-
),
|
|
3281
|
-
1 - n - e.cellScale.x * 2
|
|
3282
|
-
), r = Math.min(
|
|
3283
|
-
Math.max(
|
|
3284
|
-
bA.coords.y,
|
|
3285
|
-
-1 + i + e.cellScale.y * 2
|
|
3286
|
-
),
|
|
3287
|
-
1 - i - e.cellScale.y * 2
|
|
3288
|
-
), C = o(this, ge).material.uniforms;
|
|
3289
|
-
C.force.value.set(s, t), C.center.value.set(B, r), C.scale.value.set(e.pointerSize, e.pointerSize), super.update();
|
|
3290
|
-
}
|
|
3291
|
-
init(e) {
|
|
3292
|
-
super.init();
|
|
3293
|
-
const s = new St(1, 1), t = new Lt({
|
|
3294
|
-
vertexShader: xo,
|
|
3295
|
-
fragmentShader: Jo,
|
|
3296
|
-
blending: li,
|
|
3297
|
-
uniforms: {
|
|
3298
|
-
px: {
|
|
3299
|
-
value: e.cellScale
|
|
3300
|
-
},
|
|
3301
|
-
force: {
|
|
3302
|
-
value: new EA(0, 0)
|
|
3303
|
-
},
|
|
3304
|
-
center: {
|
|
3305
|
-
value: new EA(0, 0)
|
|
3306
|
-
},
|
|
3307
|
-
scale: {
|
|
3308
|
-
value: new EA(e.pointerSize, e.pointerSize)
|
|
3309
|
-
}
|
|
3310
|
-
}
|
|
3311
|
-
});
|
|
3312
|
-
f(this, ge, new HA(s, t)), this.scene.add(o(this, ge));
|
|
3313
|
-
}
|
|
3314
|
-
}
|
|
3315
|
-
ge = new WeakMap();
|
|
3316
|
-
const Uo = `precision highp float;
|
|
3317
|
-
uniform sampler2D velocity;
|
|
3318
|
-
uniform sampler2D velocity_new;
|
|
3319
|
-
uniform float v;
|
|
3320
|
-
uniform vec2 px;
|
|
3321
|
-
uniform float dt;
|
|
3322
|
-
|
|
3323
|
-
varying vec2 uv;
|
|
3324
|
-
|
|
3325
|
-
void main(){
|
|
3326
|
-
// poisson equation
|
|
3327
|
-
vec2 old = texture2D(velocity, uv).xy;
|
|
3328
|
-
vec2 new0 = texture2D(velocity_new, uv + vec2(px.x * 2.0, 0)).xy;
|
|
3329
|
-
vec2 new1 = texture2D(velocity_new, uv - vec2(px.x * 2.0, 0)).xy;
|
|
3330
|
-
vec2 new2 = texture2D(velocity_new, uv + vec2(0, px.y * 2.0)).xy;
|
|
3331
|
-
vec2 new3 = texture2D(velocity_new, uv - vec2(0, px.y * 2.0)).xy;
|
|
3332
|
-
|
|
3333
|
-
vec2 new = 4.0 * old + v * dt * (new0 + new1 + new2 + new3);
|
|
3334
|
-
new /= 4.0 * (1.0 + v * dt);
|
|
3335
|
-
|
|
3336
|
-
gl_FragColor = vec4(new, 0.0, 0.0);
|
|
3337
|
-
}
|
|
3338
|
-
`;
|
|
3339
|
-
var ce, Ee;
|
|
3340
|
-
class bo extends Le {
|
|
3341
|
-
constructor(e) {
|
|
3342
|
-
super({
|
|
3343
|
-
material: {
|
|
3344
|
-
vertexShader: Se,
|
|
3345
|
-
fragmentShader: Uo,
|
|
3346
|
-
uniforms: {
|
|
3347
|
-
boundarySpace: e.boundarySpace,
|
|
3348
|
-
velocity: e.src.texture,
|
|
3349
|
-
velocity_new: e.dst_.texture,
|
|
3350
|
-
v: e.viscous,
|
|
3351
|
-
px: e.cellScale,
|
|
3352
|
-
dt: e.dt
|
|
3353
|
-
}
|
|
3354
|
-
},
|
|
3355
|
-
output: e.dst
|
|
3356
|
-
});
|
|
3357
|
-
u(this, ce, void 0);
|
|
3358
|
-
u(this, Ee, void 0);
|
|
3359
|
-
f(this, ce, e.dst_), f(this, Ee, e.dst), this.init();
|
|
3360
|
-
}
|
|
3361
|
-
update(e) {
|
|
3362
|
-
let s = null, t = null;
|
|
3363
|
-
this.uniforms.v.value = e.viscous;
|
|
3364
|
-
for (var n = 0; n < e.iterations; n++)
|
|
3365
|
-
n % 2 == 0 ? (s = o(this, ce), t = o(this, Ee)) : (s = o(this, Ee), t = o(this, ce)), this.uniforms.velocity_new.value = s.texture, this.output = t, this.uniforms.dt.value = e.dt, super.update();
|
|
3366
|
-
return t;
|
|
3367
|
-
}
|
|
3368
|
-
}
|
|
3369
|
-
ce = new WeakMap(), Ee = new WeakMap();
|
|
3370
|
-
const No = `precision highp float;
|
|
3371
|
-
uniform sampler2D velocity;
|
|
3372
|
-
uniform float dt;
|
|
3373
|
-
uniform vec2 px;
|
|
3374
|
-
varying vec2 uv;
|
|
3375
|
-
|
|
3376
|
-
void main(){
|
|
3377
|
-
float x0 = texture2D(velocity, uv-vec2(px.x, 0)).x;
|
|
3378
|
-
float x1 = texture2D(velocity, uv+vec2(px.x, 0)).x;
|
|
3379
|
-
float y0 = texture2D(velocity, uv-vec2(0, px.y)).y;
|
|
3380
|
-
float y1 = texture2D(velocity, uv+vec2(0, px.y)).y;
|
|
3381
|
-
float divergence = (x1-x0 + y1-y0) / 2.0;
|
|
3382
|
-
|
|
3383
|
-
gl_FragColor = vec4(divergence / dt);
|
|
3384
|
-
}
|
|
3385
|
-
`;
|
|
3386
|
-
class ko extends Le {
|
|
3387
|
-
constructor(A) {
|
|
3388
|
-
super({
|
|
3389
|
-
material: {
|
|
3390
|
-
vertexShader: Se,
|
|
3391
|
-
fragmentShader: No,
|
|
3392
|
-
uniforms: {
|
|
3393
|
-
boundarySpace: A.boundarySpace,
|
|
3394
|
-
velocity: A.src.texture,
|
|
3395
|
-
px: A.cellScale,
|
|
3396
|
-
dt: A.dt
|
|
3397
|
-
}
|
|
3398
|
-
},
|
|
3399
|
-
output: A.dst
|
|
3400
|
-
}), this.init();
|
|
3401
|
-
}
|
|
3402
|
-
update(A) {
|
|
3403
|
-
this.uniforms.velocity.value = A.vel.texture, super.update();
|
|
3404
|
-
}
|
|
3405
|
-
}
|
|
3406
|
-
const Ko = `precision highp float;
|
|
3407
|
-
uniform sampler2D pressure;
|
|
3408
|
-
uniform sampler2D divergence;
|
|
3409
|
-
uniform vec2 px;
|
|
3410
|
-
varying vec2 uv;
|
|
3411
|
-
|
|
3412
|
-
void main(){
|
|
3413
|
-
// poisson equation
|
|
3414
|
-
float p0 = texture2D(pressure, uv+vec2(px.x * 2.0, 0)).r;
|
|
3415
|
-
float p1 = texture2D(pressure, uv-vec2(px.x * 2.0, 0)).r;
|
|
3416
|
-
float p2 = texture2D(pressure, uv+vec2(0, px.y * 2.0 )).r;
|
|
3417
|
-
float p3 = texture2D(pressure, uv-vec2(0, px.y * 2.0 )).r;
|
|
3418
|
-
float div = texture2D(divergence, uv).r;
|
|
3419
|
-
|
|
3420
|
-
float newP = (p0 + p1 + p2 + p3) / 4.0 - div;
|
|
3421
|
-
gl_FragColor = vec4(newP);
|
|
3422
|
-
}
|
|
3423
|
-
`;
|
|
3424
|
-
var Qe, he;
|
|
3425
|
-
class vo extends Le {
|
|
3426
|
-
constructor(e) {
|
|
3427
|
-
super({
|
|
3428
|
-
material: {
|
|
3429
|
-
vertexShader: Se,
|
|
3430
|
-
fragmentShader: Ko,
|
|
3431
|
-
uniforms: {
|
|
3432
|
-
boundarySpace: e.boundarySpace,
|
|
3433
|
-
pressure: e.dst_.texture,
|
|
3434
|
-
divergence: e.src.texture,
|
|
3435
|
-
px: e.cellScale
|
|
3436
|
-
}
|
|
3437
|
-
},
|
|
3438
|
-
output: e.dst
|
|
3439
|
-
});
|
|
3440
|
-
u(this, Qe, void 0);
|
|
3441
|
-
u(this, he, void 0);
|
|
3442
|
-
f(this, Qe, e.dst_), f(this, he, e.dst), this.init();
|
|
3443
|
-
}
|
|
3444
|
-
update(e) {
|
|
3445
|
-
let s = null, t = null;
|
|
3446
|
-
for (var n = 0; n < e.iterations; n++)
|
|
3447
|
-
n % 2 == 0 ? (s = o(this, Qe), t = o(this, he)) : (s = o(this, he), t = o(this, Qe)), this.uniforms.pressure.value = s.texture, this.output = t, super.update();
|
|
3448
|
-
return t;
|
|
3449
|
-
}
|
|
3450
|
-
}
|
|
3451
|
-
Qe = new WeakMap(), he = new WeakMap();
|
|
3452
|
-
const Oo = `precision highp float;
|
|
3453
|
-
uniform sampler2D pressure;
|
|
3454
|
-
uniform sampler2D velocity;
|
|
3455
|
-
uniform vec2 px;
|
|
3456
|
-
uniform float dt;
|
|
3457
|
-
varying vec2 uv;
|
|
3458
|
-
|
|
3459
|
-
void main(){
|
|
3460
|
-
float step = 1.0;
|
|
3461
|
-
|
|
3462
|
-
float p0 = texture2D(pressure, uv+vec2(px.x * step, 0)).r;
|
|
3463
|
-
float p1 = texture2D(pressure, uv-vec2(px.x * step, 0)).r;
|
|
3464
|
-
float p2 = texture2D(pressure, uv+vec2(0, px.y * step)).r;
|
|
3465
|
-
float p3 = texture2D(pressure, uv-vec2(0, px.y * step)).r;
|
|
3466
|
-
|
|
3467
|
-
vec2 v = texture2D(velocity, uv).xy;
|
|
3468
|
-
vec2 gradP = vec2(p0 - p1, p2 - p3) * 0.5;
|
|
3469
|
-
v = v - gradP * dt;
|
|
3470
|
-
gl_FragColor = vec4(v, 0.0, 1.0);
|
|
3471
|
-
}
|
|
3472
|
-
`;
|
|
3473
|
-
class _o extends Le {
|
|
3474
|
-
constructor(A) {
|
|
3475
|
-
super({
|
|
3476
|
-
material: {
|
|
3477
|
-
vertexShader: Se,
|
|
3478
|
-
fragmentShader: Oo,
|
|
3479
|
-
uniforms: {
|
|
3480
|
-
boundarySpace: A.boundarySpace,
|
|
3481
|
-
pressure: A.srcP.texture,
|
|
3482
|
-
velocity: A.srcV.texture,
|
|
3483
|
-
px: A.cellScale,
|
|
3484
|
-
dt: A.dt
|
|
3485
|
-
}
|
|
3486
|
-
},
|
|
3487
|
-
output: A.dst
|
|
3488
|
-
}), this.init();
|
|
3489
|
-
}
|
|
3490
|
-
update(A) {
|
|
3491
|
-
this.uniforms.velocity.value = A.vel.texture, this.uniforms.pressure.value = A.pressure.texture, super.update();
|
|
3492
|
-
}
|
|
3493
|
-
}
|
|
3494
|
-
var G, M, IA, Y, gA, le, rt, ue, de, fe, De, Bt, ts, wt, Cn, yt, In;
|
|
3495
|
-
class Po {
|
|
3496
|
-
constructor() {
|
|
3497
|
-
u(this, Bt);
|
|
3498
|
-
u(this, wt);
|
|
3499
|
-
u(this, yt);
|
|
3500
|
-
u(this, G, {
|
|
3501
|
-
isViscous: new T(!1, {
|
|
3502
|
-
passport: {
|
|
3503
|
-
name: "Fluid.Вязкость.Активна",
|
|
3504
|
-
manager: {
|
|
3505
|
-
type: "boolean"
|
|
3506
|
-
}
|
|
3507
|
-
}
|
|
3508
|
-
}),
|
|
3509
|
-
viscous: new T(30, {
|
|
3510
|
-
passport: {
|
|
3511
|
-
name: "Fluid.Вязкость.Величина",
|
|
3512
|
-
manager: {
|
|
3513
|
-
type: "range",
|
|
3514
|
-
min: 0,
|
|
3515
|
-
max: 500
|
|
3516
|
-
}
|
|
3517
|
-
}
|
|
3518
|
-
}),
|
|
3519
|
-
iterationsViscous: new T(16, {
|
|
3520
|
-
passport: {
|
|
3521
|
-
name: "Fluid.Вязкость.Количество итераций",
|
|
3522
|
-
manager: {
|
|
3523
|
-
type: "range",
|
|
3524
|
-
min: 1,
|
|
3525
|
-
max: 32,
|
|
3526
|
-
step: 1
|
|
3527
|
-
}
|
|
3528
|
-
}
|
|
3529
|
-
}),
|
|
3530
|
-
pointerForce: new T(20, {
|
|
3531
|
-
passport: {
|
|
3532
|
-
name: "Fluid.Курсор.Сила",
|
|
3533
|
-
manager: {
|
|
3534
|
-
type: "range",
|
|
3535
|
-
min: 1,
|
|
3536
|
-
max: 200,
|
|
3537
|
-
step: 1
|
|
3538
|
-
}
|
|
3539
|
-
}
|
|
3540
|
-
}),
|
|
3541
|
-
pointerSize: new T(100, {
|
|
3542
|
-
passport: {
|
|
3543
|
-
name: "Fluid.Курсор.Размер",
|
|
3544
|
-
manager: {
|
|
3545
|
-
type: "range",
|
|
3546
|
-
min: 10,
|
|
3547
|
-
max: 200,
|
|
3548
|
-
step: 1
|
|
3549
|
-
}
|
|
3550
|
-
}
|
|
3551
|
-
}),
|
|
3552
|
-
dt: new T(0.014, {
|
|
3553
|
-
passport: {
|
|
3554
|
-
name: "Fluid.Скорость",
|
|
3555
|
-
manager: {
|
|
3556
|
-
type: "range",
|
|
3557
|
-
min: 1e-3,
|
|
3558
|
-
max: 0.1,
|
|
3559
|
-
step: 1e-3
|
|
3560
|
-
}
|
|
3561
|
-
}
|
|
3562
|
-
}),
|
|
3563
|
-
iterationsPoisson: new T(16, {
|
|
3564
|
-
passport: {
|
|
3565
|
-
name: "Fluid.Poisson",
|
|
3566
|
-
manager: {
|
|
3567
|
-
type: "range",
|
|
3568
|
-
min: 1,
|
|
3569
|
-
max: 32,
|
|
3570
|
-
step: 1
|
|
3571
|
-
}
|
|
3572
|
-
}
|
|
3573
|
-
}),
|
|
3574
|
-
resolution: new T(0.5, {
|
|
3575
|
-
passport: {
|
|
3576
|
-
name: "Fluid.Разрешение",
|
|
3577
|
-
manager: {
|
|
3578
|
-
type: "range",
|
|
3579
|
-
min: 0.1,
|
|
3580
|
-
max: 1
|
|
3581
|
-
}
|
|
3582
|
-
}
|
|
3583
|
-
}),
|
|
3584
|
-
isBounce: new T(!1, {
|
|
3585
|
-
passport: {
|
|
3586
|
-
name: "Fluid.Bounce",
|
|
3587
|
-
manager: {
|
|
3588
|
-
type: "boolean"
|
|
3589
|
-
}
|
|
3590
|
-
}
|
|
3591
|
-
}),
|
|
3592
|
-
BFECC: new T(!0, {
|
|
3593
|
-
passport: {
|
|
3594
|
-
name: "Fluid.BFECC",
|
|
3595
|
-
manager: {
|
|
3596
|
-
type: "boolean"
|
|
3597
|
-
}
|
|
3598
|
-
}
|
|
3599
|
-
})
|
|
3600
|
-
});
|
|
3601
|
-
u(this, M, {
|
|
3602
|
-
vel0: null,
|
|
3603
|
-
vel1: null,
|
|
3604
|
-
velViscous0: null,
|
|
3605
|
-
velViscous1: null,
|
|
3606
|
-
div: null,
|
|
3607
|
-
pressure0: null,
|
|
3608
|
-
pressure1: null
|
|
3609
|
-
});
|
|
3610
|
-
u(this, IA, new EA());
|
|
3611
|
-
u(this, Y, new EA());
|
|
3612
|
-
u(this, gA, new EA());
|
|
3613
|
-
u(this, le, null);
|
|
3614
|
-
u(this, rt, null);
|
|
3615
|
-
u(this, ue, null);
|
|
3616
|
-
u(this, de, null);
|
|
3617
|
-
u(this, fe, null);
|
|
3618
|
-
u(this, De, null);
|
|
3619
|
-
this.init();
|
|
3620
|
-
}
|
|
3621
|
-
get parameters() {
|
|
3622
|
-
return o(this, G);
|
|
3623
|
-
}
|
|
3624
|
-
get fbos() {
|
|
3625
|
-
return o(this, M);
|
|
3626
|
-
}
|
|
3627
|
-
resize() {
|
|
3628
|
-
iA(this, Bt, ts).call(this);
|
|
3629
|
-
for (let A in this.fbos)
|
|
3630
|
-
o(this, M)[A].setSize(
|
|
3631
|
-
o(this, IA).x,
|
|
3632
|
-
o(this, IA).y
|
|
3633
|
-
);
|
|
3634
|
-
}
|
|
3635
|
-
update() {
|
|
3636
|
-
o(this, G).isBounce.current ? o(this, gA).set(0, 0) : o(this, gA).copy(o(this, Y)), o(this, le).update({
|
|
3637
|
-
BFECC: o(this, G).BFECC.current,
|
|
3638
|
-
dt: o(this, G).dt.current,
|
|
3639
|
-
isBounce: o(this, G).isBounce.current
|
|
3640
|
-
}), o(this, rt).update({
|
|
3641
|
-
pointerSize: o(this, G).pointerSize.current,
|
|
3642
|
-
pointerForce: o(this, G).pointerForce.current,
|
|
3643
|
-
cellScale: o(this, Y)
|
|
3644
|
-
});
|
|
3645
|
-
let A = o(this, M).vel1;
|
|
3646
|
-
o(this, G).isViscous.current && (A = o(this, ue).update({
|
|
3647
|
-
viscous: o(this, G).viscous.current,
|
|
3648
|
-
iterations: o(this, G).iterationsViscous.current,
|
|
3649
|
-
dt: o(this, G).dt.current
|
|
3650
|
-
})), o(this, de).update({ vel: A });
|
|
3651
|
-
const e = o(this, fe).update({
|
|
3652
|
-
iterations: o(this, G).iterationsPoisson.current
|
|
3653
|
-
});
|
|
3654
|
-
o(this, De).update({ vel: A, pressure: e });
|
|
3655
|
-
}
|
|
3656
|
-
dispose() {
|
|
3657
|
-
o(this, le).dispose(), o(this, ue).dispose(), o(this, de).dispose(), o(this, fe).dispose(), o(this, De).dispose();
|
|
3658
|
-
for (const A in o(this, M))
|
|
3659
|
-
o(this, M)[A].dispose();
|
|
3660
|
-
for (const A in o(this, G))
|
|
3661
|
-
o(this, G)[A].close();
|
|
3662
|
-
}
|
|
3663
|
-
init() {
|
|
3664
|
-
iA(this, Bt, ts).call(this), iA(this, wt, Cn).call(this), iA(this, yt, In).call(this), setTimeout(() => {
|
|
3665
|
-
o(this, G).isViscous.subscribe(() => {
|
|
3666
|
-
}), o(this, G).viscous.subscribe(() => {
|
|
3667
|
-
}), o(this, G).iterationsViscous.subscribe(() => {
|
|
3668
|
-
}), o(this, G).pointerSize.subscribe(() => {
|
|
3669
|
-
}), o(this, G).pointerForce.subscribe(() => {
|
|
3670
|
-
}), o(this, G).dt.subscribe(() => {
|
|
3671
|
-
}), o(this, G).resolution.subscribe(() => {
|
|
3672
|
-
this.resize();
|
|
3673
|
-
}), o(this, G).iterationsPoisson.subscribe(() => {
|
|
3674
|
-
}), o(this, G).isBounce.subscribe(() => {
|
|
3675
|
-
}), o(this, G).BFECC.subscribe(() => {
|
|
3676
|
-
});
|
|
3677
|
-
});
|
|
3678
|
-
}
|
|
3679
|
-
}
|
|
3680
|
-
G = new WeakMap(), M = new WeakMap(), IA = new WeakMap(), Y = new WeakMap(), gA = new WeakMap(), le = new WeakMap(), rt = new WeakMap(), ue = new WeakMap(), de = new WeakMap(), fe = new WeakMap(), De = new WeakMap(), Bt = new WeakSet(), ts = function() {
|
|
3681
|
-
const A = Math.round(o(this, G).resolution.current * w.width), e = Math.round(o(this, G).resolution.current * w.height), s = 1 / A, t = 1 / e;
|
|
3682
|
-
o(this, Y).set(s, t), o(this, IA).set(A, e);
|
|
3683
|
-
}, wt = new WeakSet(), Cn = function() {
|
|
3684
|
-
const A = mi.isApple ? Pe : _e;
|
|
3685
|
-
for (let e in o(this, M))
|
|
3686
|
-
o(this, M)[e] = new ui(
|
|
3687
|
-
o(this, IA).x,
|
|
3688
|
-
o(this, IA).y,
|
|
3689
|
-
{
|
|
3690
|
-
type: A
|
|
3691
|
-
}
|
|
3692
|
-
);
|
|
3693
|
-
}, yt = new WeakSet(), In = function() {
|
|
3694
|
-
f(this, le, new Lo({
|
|
3695
|
-
cellScale: o(this, Y),
|
|
3696
|
-
fboSize: o(this, IA),
|
|
3697
|
-
dt: o(this, G).dt.current,
|
|
3698
|
-
src: o(this, M).vel0,
|
|
3699
|
-
dst: o(this, M).vel1,
|
|
3700
|
-
BFECC: o(this, G).BFECC.current
|
|
3701
|
-
})), f(this, rt, new To({
|
|
3702
|
-
cellScale: o(this, Y),
|
|
3703
|
-
pointerSize: o(this, G).pointerSize.current,
|
|
3704
|
-
dst: o(this, M).vel1
|
|
3705
|
-
})), f(this, ue, new bo({
|
|
3706
|
-
cellScale: o(this, Y),
|
|
3707
|
-
boundarySpace: o(this, gA),
|
|
3708
|
-
viscous: o(this, G).viscous.current,
|
|
3709
|
-
src: o(this, M).vel1,
|
|
3710
|
-
dst: o(this, M).velViscous1,
|
|
3711
|
-
dst_: o(this, M).velViscous0,
|
|
3712
|
-
dt: o(this, G).dt.current
|
|
3713
|
-
})), f(this, de, new ko({
|
|
3714
|
-
cellScale: o(this, Y),
|
|
3715
|
-
boundarySpace: o(this, gA),
|
|
3716
|
-
src: o(this, M).velViscous0,
|
|
3717
|
-
dst: o(this, M).div,
|
|
3718
|
-
dt: o(this, G).dt.current
|
|
3719
|
-
})), f(this, fe, new vo({
|
|
3720
|
-
cellScale: o(this, Y),
|
|
3721
|
-
boundarySpace: o(this, gA),
|
|
3722
|
-
src: o(this, M).div,
|
|
3723
|
-
dst: o(this, M).pressure1,
|
|
3724
|
-
dst_: o(this, M).pressure0
|
|
3725
|
-
})), f(this, De, new _o({
|
|
3726
|
-
cellScale: o(this, Y),
|
|
3727
|
-
boundarySpace: o(this, gA),
|
|
3728
|
-
srcP: o(this, M).pressure0,
|
|
3729
|
-
srcV: o(this, M).velViscous0,
|
|
3730
|
-
dst: o(this, M).vel0,
|
|
3731
|
-
dt: o(this, G).dt.current
|
|
3732
|
-
}));
|
|
3733
|
-
};
|
|
3734
|
-
var wA, PA, YA, yA, qA, MA, XA, Fe, pe, Ge, me, Re;
|
|
3735
|
-
class Yo extends HA {
|
|
3736
|
-
constructor() {
|
|
3737
|
-
super();
|
|
3738
|
-
u(this, wA, void 0);
|
|
3739
|
-
u(this, PA, void 0);
|
|
3740
|
-
u(this, YA, void 0);
|
|
3741
|
-
u(this, yA, void 0);
|
|
3742
|
-
u(this, qA, void 0);
|
|
3743
|
-
u(this, MA, void 0);
|
|
3744
|
-
u(this, XA, void 0);
|
|
3745
|
-
u(this, Fe, void 0);
|
|
3746
|
-
u(this, pe, void 0);
|
|
3747
|
-
u(this, Ge, void 0);
|
|
3748
|
-
u(this, me, void 0);
|
|
3749
|
-
u(this, Re, void 0);
|
|
3750
|
-
this.colorTweenDuration = 1e3, f(this, PA, new T("#000000", {
|
|
3751
|
-
passport: {
|
|
3752
|
-
name: "Fluid.Цвета.Фон.Цвет",
|
|
3753
|
-
manager: {
|
|
3754
|
-
type: "color"
|
|
3755
|
-
}
|
|
3756
|
-
}
|
|
3757
|
-
})), f(this, YA, new T(1, {
|
|
3758
|
-
passport: {
|
|
3759
|
-
name: "Fluid.Цвета.Фон.Порог",
|
|
3760
|
-
manager: {
|
|
3761
|
-
type: "range"
|
|
3762
|
-
}
|
|
3763
|
-
}
|
|
3764
|
-
})), f(this, yA, new T(1, {
|
|
3765
|
-
passport: {
|
|
3766
|
-
name: "Fluid.Цвета.Фон.Прозрачность",
|
|
3767
|
-
manager: {
|
|
3768
|
-
type: "range"
|
|
3769
|
-
}
|
|
3770
|
-
}
|
|
3771
|
-
})), f(this, qA, new T("#ffffff", {
|
|
3772
|
-
passport: {
|
|
3773
|
-
name: "Fluid.Цвета.Жидкость.Цвет",
|
|
3774
|
-
manager: {
|
|
3775
|
-
type: "color"
|
|
3776
|
-
}
|
|
3777
|
-
}
|
|
3778
|
-
})), f(this, MA, new T(1, {
|
|
3779
|
-
passport: {
|
|
3780
|
-
name: "Fluid.Цвета.Жидкость.Прозрачность",
|
|
3781
|
-
manager: {
|
|
3782
|
-
type: "range"
|
|
3783
|
-
}
|
|
3784
|
-
}
|
|
3785
|
-
})), f(this, XA, new Gi(0, {
|
|
3786
|
-
easing: Fi,
|
|
3787
|
-
min: 0,
|
|
3788
|
-
max: 1,
|
|
3789
|
-
duration: this.colorTweenDuration
|
|
3790
|
-
})), f(this, Fe, new K()), f(this, pe, new K()), f(this, Ge, new K()), f(this, me, new K()), f(this, Re, pi(() => {
|
|
3791
|
-
o(this, XA).reset(), o(this, XA).set(1);
|
|
3792
|
-
}, 0)), f(this, wA, new Po()), bA.init(), this.geometry = new St(2, 2), this.material = new Lt({
|
|
3793
|
-
vertexShader: Se,
|
|
3794
|
-
fragmentShader: Mo,
|
|
3795
|
-
transparent: !0,
|
|
3796
|
-
uniforms: {
|
|
3797
|
-
velocity: {
|
|
3798
|
-
value: o(this, wA).fbos.vel0.texture
|
|
3799
|
-
},
|
|
3800
|
-
backgroundColor: {
|
|
3801
|
-
value: o(this, pe)
|
|
3802
|
-
},
|
|
3803
|
-
backgroundOpacity: {
|
|
3804
|
-
value: o(this, yA).current
|
|
3805
|
-
},
|
|
3806
|
-
fluidColor: {
|
|
3807
|
-
value: o(this, Fe)
|
|
3808
|
-
},
|
|
3809
|
-
fluidOpacity: {
|
|
3810
|
-
value: o(this, MA).current
|
|
3811
|
-
},
|
|
3812
|
-
backgroundMixThreshold: {
|
|
3813
|
-
value: 0
|
|
3814
|
-
},
|
|
3815
|
-
opacity: {
|
|
3816
|
-
value: 1
|
|
3817
|
-
},
|
|
3818
|
-
boundarySpace: {
|
|
3819
|
-
value: new EA(0, 0)
|
|
3820
|
-
}
|
|
3821
|
-
}
|
|
3822
|
-
}), o(this, PA).subscribe((e) => {
|
|
3823
|
-
f(this, me, new K(e.current)), o(this, Re).call(this);
|
|
3824
|
-
}), o(this, qA).subscribe((e) => {
|
|
3825
|
-
f(this, Ge, new K(e.current)), o(this, Re).call(this);
|
|
3826
|
-
}), o(this, yA).subscribe((e) => {
|
|
3827
|
-
this.material.uniforms.backgroundOpacity.value = e.current;
|
|
3828
|
-
}), o(this, MA).subscribe((e) => {
|
|
3829
|
-
this.material.uniforms.fluidOpacity.value = e.current;
|
|
3830
|
-
}), o(this, YA).subscribe((e) => {
|
|
3831
|
-
this.material.uniforms.backgroundMixThreshold.value = e.current;
|
|
3832
|
-
}), o(this, XA).subscribe((e) => {
|
|
3833
|
-
o(this, pe).lerp(o(this, me), e.current), o(this, Fe).lerp(o(this, Ge), e.current);
|
|
3834
|
-
});
|
|
3835
|
-
}
|
|
3836
|
-
get backgroundColor() {
|
|
3837
|
-
return o(this, PA);
|
|
3838
|
-
}
|
|
3839
|
-
get backgroundMixThreshold() {
|
|
3840
|
-
return o(this, YA);
|
|
3841
|
-
}
|
|
3842
|
-
get backgroundOpacity() {
|
|
3843
|
-
return o(this, yA);
|
|
3844
|
-
}
|
|
3845
|
-
get fluidColor() {
|
|
3846
|
-
return o(this, qA);
|
|
3847
|
-
}
|
|
3848
|
-
get fluidOpacity() {
|
|
3849
|
-
return o(this, MA);
|
|
3850
|
-
}
|
|
3851
|
-
resize() {
|
|
3852
|
-
o(this, wA).resize();
|
|
3853
|
-
}
|
|
3854
|
-
update() {
|
|
3855
|
-
bA.update(), o(this, wA).update();
|
|
3856
|
-
}
|
|
3857
|
-
dispose() {
|
|
3858
|
-
bA.dispose(), o(this, wA).dispose(), o(this, PA).close(), o(this, yA).close(), o(this, qA).close(), o(this, MA).close(), o(this, YA).close();
|
|
3859
|
-
}
|
|
3860
|
-
}
|
|
3861
|
-
wA = new WeakMap(), PA = new WeakMap(), YA = new WeakMap(), yA = new WeakMap(), qA = new WeakMap(), MA = new WeakMap(), XA = new WeakMap(), Fe = new WeakMap(), pe = new WeakMap(), Ge = new WeakMap(), me = new WeakMap(), Re = new WeakMap();
|
|
3862
|
-
var qo = Object.defineProperty, Xo = Object.getOwnPropertyDescriptor, Vo = (a, A, e, s) => {
|
|
3863
|
-
for (var t = s > 1 ? void 0 : s ? Xo(A, e) : A, n = a.length - 1, i; n >= 0; n--)
|
|
3864
|
-
(i = a[n]) && (t = (s ? i(A, e, t) : i(t)) || t);
|
|
3865
|
-
return s && t && qo(A, e, t), t;
|
|
3866
|
-
}, gn = (a, A, e) => {
|
|
3867
|
-
if (!A.has(a))
|
|
3868
|
-
throw TypeError("Cannot " + e);
|
|
3869
|
-
}, z = (a, A, e) => (gn(a, A, "read from private field"), e ? e.call(a) : A.get(a)), Xt = (a, A, e) => {
|
|
3870
|
-
if (A.has(a))
|
|
3871
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
3872
|
-
A instanceof WeakSet ? A.add(a) : A.set(a, e);
|
|
3873
|
-
}, Wo = (a, A, e, s) => (gn(a, A, "write to private field"), s ? s.call(a, e) : A.set(a, e), e), rA, Dt, Ft;
|
|
3874
|
-
let Ls = class extends Ri {
|
|
3875
|
-
constructor() {
|
|
3876
|
-
super(...arguments), Xt(this, rA, null), Xt(this, Dt, () => {
|
|
3877
|
-
z(this, rA).resize();
|
|
3878
|
-
}), Xt(this, Ft, () => {
|
|
3879
|
-
w.width && z(this, rA).update();
|
|
3880
|
-
});
|
|
3881
|
-
}
|
|
3882
|
-
get fluid() {
|
|
3883
|
-
return z(this, rA);
|
|
3884
|
-
}
|
|
3885
|
-
connectedCallback() {
|
|
3886
|
-
Wo(this, rA, new Yo()), w.view.add(z(this, rA)), xA.subscribe(z(this, Dt)), JA.subscribe(z(this, Ft));
|
|
3887
|
-
}
|
|
3888
|
-
disconnectedCallback() {
|
|
3889
|
-
w.view.remove(z(this, rA)), z(this, rA).dispose(), xA.unsubscribe(z(this, Dt)), JA.unsubscribe(z(this, Ft));
|
|
3890
|
-
}
|
|
3891
|
-
};
|
|
3892
|
-
rA = /* @__PURE__ */ new WeakMap();
|
|
3893
|
-
Dt = /* @__PURE__ */ new WeakMap();
|
|
3894
|
-
Ft = /* @__PURE__ */ new WeakMap();
|
|
3895
|
-
Ls = Vo([
|
|
3896
|
-
wi("en3-fluid")
|
|
3897
|
-
], Ls);
|
|
3898
|
-
function cn(a, A, e) {
|
|
3899
|
-
const s = A.x, t = A.y, n = e || a.image.width / a.image.height;
|
|
3900
|
-
let i = 0, B = 0, r = a.offset.x, C = a.offset.y, g = a.rotation, I = a.center.x, E = a.center.y;
|
|
3901
|
-
s / t > n ? (i = 1, B = t / s * n) : (B = 1, i = s / t / n), a.matrix.setUvTransform(r, C, i, B, g, I, E);
|
|
3902
|
-
}
|
|
3903
|
-
const be = new L();
|
|
3904
|
-
function _(a, A, e, s, t, n) {
|
|
3905
|
-
const i = 2 * Math.PI * t / 4, B = Math.max(n - 2 * t, 0), r = Math.PI / 4;
|
|
3906
|
-
be.copy(A), be[s] = 0, be.normalize();
|
|
3907
|
-
const C = 0.5 * i / (i + B), g = 1 - be.angleTo(a) / r;
|
|
3908
|
-
return Math.sign(be[e]) === 1 ? g * C : B / (i + B) + C + C * (1 - g);
|
|
3909
|
-
}
|
|
3910
|
-
class jo extends di {
|
|
3911
|
-
constructor(A = 1, e = 1, s = 1, t = 2, n = 0.1) {
|
|
3912
|
-
if (t = t * 2 + 1, n = Math.min(A / 2, e / 2, s / 2, n), super(1, 1, 1, t, t, t), t === 1)
|
|
3913
|
-
return;
|
|
3914
|
-
const i = this.toNonIndexed();
|
|
3915
|
-
this.index = null, this.attributes.position = i.attributes.position, this.attributes.normal = i.attributes.normal, this.attributes.uv = i.attributes.uv;
|
|
3916
|
-
const B = new L(), r = new L(), C = new L(A, e, s).divideScalar(2).subScalar(n), g = this.attributes.position.array, I = this.attributes.normal.array, E = this.attributes.uv.array, Q = g.length / 6, l = new L(), h = 0.5 / t;
|
|
3917
|
-
for (let c = 0, d = 0; c < g.length; c += 3, d += 2)
|
|
3918
|
-
switch (B.fromArray(g, c), r.copy(B), r.x -= Math.sign(r.x) * h, r.y -= Math.sign(r.y) * h, r.z -= Math.sign(r.z) * h, r.normalize(), g[c + 0] = C.x * Math.sign(B.x) + r.x * n, g[c + 1] = C.y * Math.sign(B.y) + r.y * n, g[c + 2] = C.z * Math.sign(B.z) + r.z * n, I[c + 0] = r.x, I[c + 1] = r.y, I[c + 2] = r.z, Math.floor(c / Q)) {
|
|
3919
|
-
case 0:
|
|
3920
|
-
l.set(1, 0, 0), E[d + 0] = _(l, r, "z", "y", n, s), E[d + 1] = 1 - _(l, r, "y", "z", n, e);
|
|
3921
|
-
break;
|
|
3922
|
-
case 1:
|
|
3923
|
-
l.set(-1, 0, 0), E[d + 0] = 1 - _(l, r, "z", "y", n, s), E[d + 1] = 1 - _(l, r, "y", "z", n, e);
|
|
3924
|
-
break;
|
|
3925
|
-
case 2:
|
|
3926
|
-
l.set(0, 1, 0), E[d + 0] = 1 - _(l, r, "x", "z", n, A), E[d + 1] = _(l, r, "z", "x", n, s);
|
|
3927
|
-
break;
|
|
3928
|
-
case 3:
|
|
3929
|
-
l.set(0, -1, 0), E[d + 0] = 1 - _(l, r, "x", "z", n, A), E[d + 1] = 1 - _(l, r, "z", "x", n, s);
|
|
3930
|
-
break;
|
|
3931
|
-
case 4:
|
|
3932
|
-
l.set(0, 0, 1), E[d + 0] = 1 - _(l, r, "x", "y", n, A), E[d + 1] = 1 - _(l, r, "y", "x", n, e);
|
|
3933
|
-
break;
|
|
3934
|
-
case 5:
|
|
3935
|
-
l.set(0, 0, -1), E[d + 0] = _(l, r, "x", "y", n, A), E[d + 1] = 1 - _(l, r, "y", "x", n, e);
|
|
3936
|
-
break;
|
|
3937
|
-
}
|
|
3938
|
-
}
|
|
3939
|
-
}
|
|
3940
|
-
var cA, we, VA;
|
|
3941
|
-
class En extends HA {
|
|
3942
|
-
constructor(e) {
|
|
3943
|
-
super(
|
|
3944
|
-
e.round ? new jo(
|
|
3945
|
-
e.width,
|
|
3946
|
-
e.height,
|
|
3947
|
-
1,
|
|
3948
|
-
e.segments,
|
|
3949
|
-
e.round
|
|
3950
|
-
) : new St(
|
|
3951
|
-
e.width,
|
|
3952
|
-
e.height,
|
|
3953
|
-
e.segments,
|
|
3954
|
-
e.segments
|
|
3955
|
-
),
|
|
3956
|
-
e.material
|
|
3957
|
-
);
|
|
3958
|
-
u(this, cA, void 0);
|
|
3959
|
-
u(this, we, void 0);
|
|
3960
|
-
u(this, VA, () => {
|
|
3961
|
-
o(this, cA).data.current && o(this, we) === "cover" && this.onCoverResize(o(this, cA).data.current);
|
|
3962
|
-
});
|
|
3963
|
-
f(this, cA, new Bn(nA({
|
|
3964
|
-
consumer: this
|
|
3965
|
-
}, e))), f(this, we, e.fit), this.addEventListener("added", () => {
|
|
3966
|
-
xA.subscribe(o(this, VA));
|
|
3967
|
-
}), this.addEventListener("removed", () => {
|
|
3968
|
-
xA.unsubscribe(o(this, VA));
|
|
3969
|
-
}), o(this, cA).processData = (s) => w.cacheAssets ? s.clone() : s, o(this, cA).data.subscribe((s) => {
|
|
3970
|
-
!s.current && s.previous ? s.previous.dispose() : s.current && this.material && (o(this, we) && (s.current.matrixAutoUpdate = !1), s.current.colorSpace = QA, s.current.center.set(0.5, 0.5), this.material.map = s.current, this.material.needsUpdate = !0, o(this, VA).call(this));
|
|
3971
|
-
});
|
|
3972
|
-
}
|
|
3973
|
-
get sourceManager() {
|
|
3974
|
-
return o(this, cA);
|
|
3975
|
-
}
|
|
3976
|
-
updateTexture() {
|
|
3977
|
-
o(this, VA).call(this);
|
|
3978
|
-
}
|
|
3979
|
-
onCoverResize(e) {
|
|
3980
|
-
cn(e, {
|
|
3981
|
-
x: this.scale.x,
|
|
3982
|
-
y: this.scale.y
|
|
3983
|
-
});
|
|
3984
|
-
}
|
|
3985
|
-
}
|
|
3986
|
-
cA = new WeakMap(), we = new WeakMap(), VA = new WeakMap();
|
|
3987
|
-
class Fr extends En {
|
|
3988
|
-
constructor(A) {
|
|
3989
|
-
super(He(nA({}, A), {
|
|
3990
|
-
loader: jA
|
|
3991
|
-
}));
|
|
3992
|
-
}
|
|
3993
|
-
}
|
|
3994
|
-
class Zo {
|
|
3995
|
-
load(...A) {
|
|
3996
|
-
const e = A[0], s = A[1], t = A[3], n = document.createElement("video");
|
|
3997
|
-
n.src = e, n.onloadeddata = () => {
|
|
3998
|
-
s(new fi(n)), n.onerror = null, n.onloadeddata = null;
|
|
3999
|
-
}, n.onerror = () => {
|
|
4000
|
-
t == null || t(e), n.onerror = null, n.onloadeddata = null;
|
|
4001
|
-
};
|
|
4002
|
-
}
|
|
4003
|
-
}
|
|
4004
|
-
var at, Ct, It;
|
|
4005
|
-
class pr extends En {
|
|
4006
|
-
constructor(e) {
|
|
4007
|
-
super(He(nA({}, e), {
|
|
4008
|
-
loader: new Zo()
|
|
4009
|
-
}));
|
|
4010
|
-
u(this, at, void 0);
|
|
4011
|
-
u(this, Ct, void 0);
|
|
4012
|
-
u(this, It, void 0);
|
|
4013
|
-
f(this, at, e.autoplay || !1), f(this, Ct, e.muted || !1), f(this, It, e.loop || !1), this.sourceManager.data.subscribe((s) => {
|
|
4014
|
-
if (s.current) {
|
|
4015
|
-
const t = s.current.image;
|
|
4016
|
-
o(this, Ct) && (t.muted = !0), o(this, It) && (t.loop = !0), o(this, at) && t.play();
|
|
4017
|
-
}
|
|
4018
|
-
});
|
|
4019
|
-
}
|
|
4020
|
-
onCoverResize(e) {
|
|
4021
|
-
const s = e.image;
|
|
4022
|
-
cn(
|
|
4023
|
-
e,
|
|
4024
|
-
{
|
|
4025
|
-
x: this.scale.x,
|
|
4026
|
-
y: this.scale.y
|
|
4027
|
-
},
|
|
4028
|
-
s.videoWidth / s.videoHeight
|
|
4029
|
-
);
|
|
4030
|
-
}
|
|
4031
|
-
}
|
|
4032
|
-
at = new WeakMap(), Ct = new WeakMap(), It = new WeakMap();
|
|
4033
|
-
function Gr(a, A) {
|
|
4034
|
-
a.traverse((e) => {
|
|
4035
|
-
e instanceof HA && A(e);
|
|
4036
|
-
});
|
|
4037
|
-
}
|
|
4038
|
-
function mr(a, A) {
|
|
4039
|
-
a.traverse((e) => {
|
|
4040
|
-
e instanceof HA && e.material && (Array.isArray(e.material) ? e.material : [e.material]).forEach(A);
|
|
4041
|
-
});
|
|
4042
|
-
}
|
|
4043
|
-
const Vt = new L(), zo = new L();
|
|
4044
|
-
function Rr(a, A = "default") {
|
|
4045
|
-
const e = w.getView(A), { width: s, height: t } = w, n = s / t;
|
|
4046
|
-
a instanceof L ? Vt.copy(a) : Vt.set(...a);
|
|
4047
|
-
const i = e.camera.getWorldPosition(zo).distanceTo(Vt);
|
|
4048
|
-
if (e.camera instanceof pt)
|
|
4049
|
-
return {
|
|
4050
|
-
width: s / e.camera.zoom,
|
|
4051
|
-
height: t / e.camera.zoom,
|
|
4052
|
-
factor: 1,
|
|
4053
|
-
distance: i,
|
|
4054
|
-
aspect: n
|
|
4055
|
-
};
|
|
4056
|
-
{
|
|
4057
|
-
const B = e.camera.fov * Math.PI / 180, r = 2 * Math.tan(B / 2) * i, C = r * (s / t);
|
|
4058
|
-
return { width: C, height: r, factor: s / C, distance: i, aspect: n };
|
|
4059
|
-
}
|
|
4060
|
-
}
|
|
4061
|
-
const xs = new L(), $o = new os(), Js = new L();
|
|
4062
|
-
class Ar extends rs {
|
|
4063
|
-
constructor(A = document.createElement("div")) {
|
|
4064
|
-
super(), this.isCSS3DObject = !0, this.element = A, this.element.style.position = "absolute", this.element.style.pointerEvents = "auto", this.element.style.userSelect = "none", this.element.setAttribute("draggable", !1), this.addEventListener("removed", function() {
|
|
4065
|
-
this.traverse(function(e) {
|
|
4066
|
-
e.element instanceof Element && e.element.parentNode !== null && e.element.parentNode.removeChild(e.element);
|
|
4067
|
-
});
|
|
4068
|
-
});
|
|
4069
|
-
}
|
|
4070
|
-
copy(A, e) {
|
|
4071
|
-
return super.copy(A, e), this.element = A.element.cloneNode(!0), this;
|
|
4072
|
-
}
|
|
4073
|
-
}
|
|
4074
|
-
const $ = new ye(), er = new ye();
|
|
4075
|
-
class tr {
|
|
4076
|
-
constructor(A = {}) {
|
|
4077
|
-
const e = this;
|
|
4078
|
-
let s, t, n, i;
|
|
4079
|
-
const B = {
|
|
4080
|
-
camera: { style: "" },
|
|
4081
|
-
objects: /* @__PURE__ */ new WeakMap()
|
|
4082
|
-
}, r = A.element !== void 0 ? A.element : document.createElement("div");
|
|
4083
|
-
r.style.overflow = "hidden", this.domElement = r;
|
|
4084
|
-
const C = document.createElement("div");
|
|
4085
|
-
C.style.transformOrigin = "0 0", C.style.pointerEvents = "none", r.appendChild(C);
|
|
4086
|
-
const g = document.createElement("div");
|
|
4087
|
-
g.style.transformStyle = "preserve-3d", C.appendChild(g), this.getSize = function() {
|
|
4088
|
-
return {
|
|
4089
|
-
width: s,
|
|
4090
|
-
height: t
|
|
4091
|
-
};
|
|
4092
|
-
}, this.render = function(h, c) {
|
|
4093
|
-
const d = c.projectionMatrix.elements[5] * i;
|
|
4094
|
-
c.view && c.view.enabled ? (C.style.transform = `translate( ${-c.view.offsetX * (s / c.view.width)}px, ${-c.view.offsetY * (t / c.view.height)}px )`, C.style.transform += `scale( ${c.view.fullWidth / c.view.width}, ${c.view.fullHeight / c.view.height} )`) : C.style.transform = "", h.matrixWorldAutoUpdate === !0 && h.updateMatrixWorld(), c.parent === null && c.matrixWorldAutoUpdate === !0 && c.updateMatrixWorld();
|
|
4095
|
-
let D, F;
|
|
4096
|
-
c.isOrthographicCamera && (D = -(c.right + c.left) / 2, F = (c.top + c.bottom) / 2);
|
|
4097
|
-
const p = c.view && c.view.enabled ? c.view.height / c.view.fullHeight : 1, R = c.isOrthographicCamera ? `scale( ${p} )scale(` + d + ")translate(" + I(D) + "px," + I(F) + "px)" + E(c.matrixWorldInverse) : `scale( ${p} )translateZ(` + d + "px)" + E(c.matrixWorldInverse), S = (c.isPerspectiveCamera ? "perspective(" + d + "px) " : "") + R + "translate(" + n + "px," + i + "px)";
|
|
4098
|
-
B.camera.style !== S && (g.style.transform = S, B.camera.style = S), l(h, h, c);
|
|
4099
|
-
}, this.setSize = function(h, c) {
|
|
4100
|
-
s = h, t = c, n = s / 2, i = t / 2, r.style.width = h + "px", r.style.height = c + "px", C.style.width = h + "px", C.style.height = c + "px", g.style.width = h + "px", g.style.height = c + "px";
|
|
4101
|
-
};
|
|
4102
|
-
function I(h) {
|
|
4103
|
-
return Math.abs(h) < 1e-10 ? 0 : h;
|
|
4104
|
-
}
|
|
4105
|
-
function E(h) {
|
|
4106
|
-
const c = h.elements;
|
|
4107
|
-
return "matrix3d(" + I(c[0]) + "," + I(-c[1]) + "," + I(c[2]) + "," + I(c[3]) + "," + I(c[4]) + "," + I(-c[5]) + "," + I(c[6]) + "," + I(c[7]) + "," + I(c[8]) + "," + I(-c[9]) + "," + I(c[10]) + "," + I(c[11]) + "," + I(c[12]) + "," + I(-c[13]) + "," + I(c[14]) + "," + I(c[15]) + ")";
|
|
4108
|
-
}
|
|
4109
|
-
function Q(h) {
|
|
4110
|
-
const c = h.elements;
|
|
4111
|
-
return "translate(-50%,-50%)" + ("matrix3d(" + I(c[0]) + "," + I(c[1]) + "," + I(c[2]) + "," + I(c[3]) + "," + I(-c[4]) + "," + I(-c[5]) + "," + I(-c[6]) + "," + I(-c[7]) + "," + I(c[8]) + "," + I(c[9]) + "," + I(c[10]) + "," + I(c[11]) + "," + I(c[12]) + "," + I(c[13]) + "," + I(c[14]) + "," + I(c[15]) + ")");
|
|
4112
|
-
}
|
|
4113
|
-
function l(h, c, d, D) {
|
|
4114
|
-
if (h.isCSS3DObject) {
|
|
4115
|
-
const F = h.visible === !0 && h.layers.test(d.layers) === !0;
|
|
4116
|
-
if (h.element.style.display = F === !0 ? "" : "none", F === !0) {
|
|
4117
|
-
h.onBeforeRender(e, c, d);
|
|
4118
|
-
let p;
|
|
4119
|
-
h.isCSS3DSprite ? ($.copy(d.matrixWorldInverse), $.transpose(), h.rotation2D !== 0 && $.multiply(er.makeRotationZ(h.rotation2D)), h.matrixWorld.decompose(xs, $o, Js), $.setPosition(xs), $.scale(Js), $.elements[3] = 0, $.elements[7] = 0, $.elements[11] = 0, $.elements[15] = 1, p = Q($)) : p = Q(h.matrixWorld);
|
|
4120
|
-
const R = h.element, y = B.objects.get(h);
|
|
4121
|
-
if (y === void 0 || y.style !== p) {
|
|
4122
|
-
R.style.transform = p;
|
|
4123
|
-
const S = { style: p };
|
|
4124
|
-
B.objects.set(h, S);
|
|
4125
|
-
}
|
|
4126
|
-
R.parentNode !== g && g.appendChild(R), h.onAfterRender(e, c, d);
|
|
4127
|
-
}
|
|
4128
|
-
}
|
|
4129
|
-
for (let F = 0, p = h.children.length; F < p; F++)
|
|
4130
|
-
l(h.children[F], c, d);
|
|
4131
|
-
}
|
|
4132
|
-
}
|
|
4133
|
-
}
|
|
4134
|
-
var AA, Mt, Qn, gt, ct;
|
|
4135
|
-
const O = class O extends Ar {
|
|
4136
|
-
static destroy() {
|
|
4137
|
-
xA.unsubscribe(o(this, ct)), JA.unsubscribe(o(this, gt)), f(this, AA, null);
|
|
4138
|
-
}
|
|
4139
|
-
constructor(A) {
|
|
4140
|
-
var e;
|
|
4141
|
-
super(A.element), o(O, AA) || iA(e = O, Mt, Qn).call(e);
|
|
4142
|
-
}
|
|
4143
|
-
};
|
|
4144
|
-
AA = new WeakMap(), Mt = new WeakSet(), Qn = function() {
|
|
4145
|
-
f(O, AA, new tr()), o(O, AA).domElement.style.cssText = `
|
|
4146
|
-
position: fixed;
|
|
4147
|
-
left: 0;
|
|
4148
|
-
top: 0;
|
|
4149
|
-
width: 100%;
|
|
4150
|
-
height: 100%;
|
|
4151
|
-
z-index: 1;
|
|
4152
|
-
pointer-events: none;
|
|
4153
|
-
overflow: hidden;
|
|
4154
|
-
`, w.containerElement.prepend(o(O, AA).domElement), xA.subscribe(o(this, ct), Ts.EN3 + 1), JA.subscribe(o(this, gt), { order: ns.EN3 + 1 });
|
|
4155
|
-
}, gt = new WeakMap(), ct = new WeakMap(), u(O, Mt), u(O, AA, null), u(O, gt, () => {
|
|
4156
|
-
o(O, AA).render(w.view.scene, w.view.camera);
|
|
4157
|
-
}), u(O, ct, () => {
|
|
4158
|
-
o(O, AA).setSize(w.width, w.height);
|
|
4159
|
-
});
|
|
4160
|
-
let Hs = O;
|
|
4161
|
-
var SA, LA, Et, ss;
|
|
4162
|
-
class wr {
|
|
4163
|
-
constructor(A) {
|
|
4164
|
-
u(this, Et);
|
|
4165
|
-
u(this, SA, void 0);
|
|
4166
|
-
u(this, LA, void 0);
|
|
4167
|
-
f(this, SA, A.material), f(this, LA, A.uniforms || {}), o(this, SA).userData.uniforms = o(this, LA);
|
|
4168
|
-
let e;
|
|
4169
|
-
const s = () => {
|
|
4170
|
-
e == null || e();
|
|
4171
|
-
};
|
|
4172
|
-
o(this, SA).addEventListener("dispose", s), o(this, SA).onBeforeCompile = (t) => {
|
|
4173
|
-
var n;
|
|
4174
|
-
e == null || e();
|
|
4175
|
-
for (const i in o(this, LA))
|
|
4176
|
-
t.uniforms[i] = o(this, LA)[i];
|
|
4177
|
-
A.vertextDeclarations && (t.vertexShader = `
|
|
4178
|
-
${A.vertextDeclarations}
|
|
4179
|
-
${t.vertexShader}
|
|
4180
|
-
`), A.fragmentDeclarations && (t.fragmentShader = `
|
|
4181
|
-
${A.fragmentDeclarations}
|
|
4182
|
-
${t.fragmentShader}
|
|
4183
|
-
`), iA(this, Et, ss).call(this, t, "vertex", A), iA(this, Et, ss).call(this, t, "fragment", A), e = (n = A.onReady) == null ? void 0 : n.call(A, this), A.log && (console.log("VERTEX SHADER: ", t.vertexShader), console.log("FRAGMENT SHADER: ", t.fragmentShader));
|
|
4184
|
-
};
|
|
4185
|
-
}
|
|
4186
|
-
get material() {
|
|
4187
|
-
return o(this, SA);
|
|
4188
|
-
}
|
|
4189
|
-
get uniforms() {
|
|
4190
|
-
return o(this, LA);
|
|
4191
|
-
}
|
|
4192
|
-
}
|
|
4193
|
-
SA = new WeakMap(), LA = new WeakMap(), Et = new WeakSet(), ss = function(A, e, s) {
|
|
4194
|
-
const t = e === "vertex" ? "vertexChunk" : "fragmentChunk", n = e === "vertex" ? "vertexShader" : "fragmentShader";
|
|
4195
|
-
s[t] && (s[t].replace ? A[n] = A[n].replace(
|
|
4196
|
-
`#include <${s[t].replace}>`,
|
|
4197
|
-
s[t].content
|
|
4198
|
-
) : s[t].update && (A[n] = A[n].replace(
|
|
4199
|
-
`#include <${s[t].update}>`,
|
|
4200
|
-
`
|
|
4201
|
-
#include <${s[t].update}>
|
|
4202
|
-
${s[t].content}
|
|
4203
|
-
`
|
|
4204
|
-
)));
|
|
4205
|
-
};
|
|
1
|
+
import { E as n, e as s, a as o } from "../en3-hbkN1OPu.js";
|
|
4206
2
|
export {
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
Ls as En3FluidElement,
|
|
4211
|
-
Dr as En3GLTF,
|
|
4212
|
-
Hs as En3HTML,
|
|
4213
|
-
Fr as En3Image,
|
|
4214
|
-
En as En3ImageLike,
|
|
4215
|
-
wr as En3ModifiedMaterial,
|
|
4216
|
-
Bn as En3SourceManager,
|
|
4217
|
-
pr as En3Video,
|
|
4218
|
-
fs as En3View,
|
|
4219
|
-
cn as coverTexture,
|
|
4220
|
-
Me as dispose,
|
|
4221
|
-
w as en3,
|
|
4222
|
-
W as en3Cache,
|
|
4223
|
-
bA as en3FluidPointer,
|
|
4224
|
-
yo as en3GLTFLoader,
|
|
4225
|
-
jA as en3TextureLoader,
|
|
4226
|
-
Rr as getCurrentViewport,
|
|
4227
|
-
mr as traverseMaterials,
|
|
4228
|
-
Gr as traverseMeshes
|
|
3
|
+
n as En3View,
|
|
4
|
+
s as en3,
|
|
5
|
+
o as en3Cache
|
|
4229
6
|
};
|