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.
Files changed (273) hide show
  1. package/lib/Animation-6Na1MCtM.cjs +1 -0
  2. package/lib/Animation-CELiTw3n.js +132 -0
  3. package/lib/Composed-DmLYTh1b.js +35 -0
  4. package/lib/Composed-Dx2hs-va.cjs +1 -0
  5. package/lib/{Damped-P4MkCGoY.js → Damped-Mx_FNNVz.js} +2 -5
  6. package/lib/Damped-loFiBsBy.cjs +1 -0
  7. package/lib/{Derived-kPJs5JC5.js → Derived-DlCvc0xQ.js} +1 -1
  8. package/lib/{Derived-B-g8dYgh.cjs → Derived-a6MDQEPY.cjs} +1 -1
  9. package/lib/ElementConstructor-CAZ2ra8m.cjs +1 -0
  10. package/lib/ElementConstructor-OYlPJf2L.js +366 -0
  11. package/lib/Resource-D3TQormz.cjs +1 -0
  12. package/lib/Resource-DIcoALGo.js +64 -0
  13. package/lib/{SourceManager-Q-PB-Rkh.js → SourceManager-Bz329f90.js} +1 -1
  14. package/lib/{SourceManager-vSlsMKUE.cjs → SourceManager-kxr5eUyL.cjs} +1 -1
  15. package/lib/Store-6s0YXK4o.cjs +1 -0
  16. package/lib/{Store-BQXXikps.js → Store-BI2xxXOA.js} +42 -42
  17. package/lib/Tweened-B_mclQ61.cjs +1 -0
  18. package/lib/Tweened-NE8M9onF.js +48 -0
  19. package/lib/{Viewport-DMB0dO-s.cjs → Viewport-CJeKnL5V.cjs} +1 -1
  20. package/lib/{Viewport-CFFhFKqX.js → Viewport-D9IL7kUQ.js} +1 -1
  21. package/lib/_createStore-Cf1MyeHa.cjs +1 -0
  22. package/lib/_createStore-Ck9bHolX.js +12 -0
  23. package/lib/accordion/AccordionElement.d.ts +5 -2
  24. package/lib/accordion/index.cjs +1 -1
  25. package/lib/accordion/index.js +141 -105
  26. package/lib/animation/Animation.d.ts +11 -19
  27. package/lib/animation/Damped.d.ts +4 -6
  28. package/lib/animation/Tweened.d.ts +2 -4
  29. package/lib/animation/index.cjs +1 -1
  30. package/lib/animation/index.js +3 -3
  31. package/lib/attribute/index.cjs +1 -1
  32. package/lib/attribute/index.d.ts +1 -1
  33. package/lib/attribute/index.js +31 -31
  34. package/lib/canvas/index.cjs +1 -1
  35. package/lib/canvas/index.d.ts +1 -1
  36. package/lib/canvas/index.js +29 -29
  37. package/lib/checkbox/index.cjs +1 -1
  38. package/lib/checkbox/index.js +20 -20
  39. package/lib/class-linked-status/index.cjs +1 -1
  40. package/lib/class-linked-status/index.js +1 -1
  41. package/lib/controls/AutoplayControls.d.ts +1 -1
  42. package/lib/controls/DragControls.d.ts +1 -1
  43. package/lib/controls/WheelControls.d.ts +1 -1
  44. package/lib/controls/index.cjs +1 -1
  45. package/lib/controls/index.js +3 -3
  46. package/lib/counter/index.d.ts +8 -0
  47. package/lib/{createStylesheet-DBCEbDjI.js → createStylesheet-CR_yi5tp.js} +1 -1
  48. package/lib/{createStylesheet-CqHU9_qv.cjs → createStylesheet-p23sZ7Ey.cjs} +1 -1
  49. package/lib/css-property/index.cjs +1 -1
  50. package/lib/css-property/index.d.ts +2 -1
  51. package/lib/css-property/index.js +36 -32
  52. package/lib/custom-element/index.d.ts +1 -4
  53. package/lib/dev/index.cjs +1 -1
  54. package/lib/dev/index.js +1 -1
  55. package/lib/device/index.cjs +1 -1
  56. package/lib/device/index.js +1 -1
  57. package/lib/element-constructor/ElementConstructor.d.ts +2 -2
  58. package/lib/element-constructor/index.cjs +1 -1
  59. package/lib/element-constructor/index.js +114 -113
  60. package/lib/en3/core/En3Raycaster.d.ts +20 -0
  61. package/lib/en3/core/En3View.d.ts +1 -1
  62. package/lib/en3/core/en3.d.ts +7 -3
  63. package/lib/en3/helpers/En3Controls.d.ts +5 -0
  64. package/lib/en3/helpers/En3GridHelper.d.ts +8 -0
  65. package/lib/en3/helpers/En3Object3dManager.d.ts +12 -0
  66. package/lib/en3/helpers/En3OrbitControls.d.ts +8 -0
  67. package/lib/en3/helpers/En3TransformControls.d.ts +8 -0
  68. package/lib/en3/helpers/index.cjs +1 -0
  69. package/lib/en3/helpers/index.d.ts +2 -0
  70. package/lib/en3/helpers/index.js +1165 -0
  71. package/lib/en3/index.cjs +1 -215
  72. package/lib/en3/index.d.ts +1 -19
  73. package/lib/en3/index.js +4 -4227
  74. package/lib/en3/libs/index.cjs +1 -0
  75. package/lib/en3/libs/index.d.ts +1 -0
  76. package/lib/en3/libs/index.js +201 -0
  77. package/lib/en3/loaders/_En3GLTFLoader.d.ts +12 -0
  78. package/lib/en3/loaders/_En3TextureLoader.d.ts +8 -0
  79. package/lib/en3/loaders/index.cjs +1 -0
  80. package/lib/en3/loaders/index.d.ts +3 -0
  81. package/lib/en3/loaders/index.js +1757 -0
  82. package/lib/en3/loaders/loaders.d.ts +13 -0
  83. package/lib/en3/misc/index.cjs +10 -0
  84. package/lib/en3/misc/index.d.ts +2 -0
  85. package/lib/en3/misc/index.js +115 -0
  86. package/lib/en3/objects/En3Clip.d.ts +1 -1
  87. package/lib/en3/objects/En3ClipHelpers.d.ts +1 -1
  88. package/lib/en3/objects/En3GLTF.d.ts +4 -3
  89. package/lib/en3/objects/En3Image.d.ts +1 -1
  90. package/lib/en3/objects/En3ImageLike.d.ts +3 -2
  91. package/lib/en3/objects/En3SourceConsumer.d.ts +1 -1
  92. package/lib/en3/objects/En3Video.d.ts +1 -1
  93. package/lib/en3/objects/fluid/Advection.d.ts +1 -1
  94. package/lib/en3/objects/fluid/Divergence.d.ts +1 -1
  95. package/lib/en3/objects/fluid/En3Fluid.d.ts +1 -1
  96. package/lib/en3/objects/fluid/En3FluidElement.d.ts +1 -1
  97. package/lib/en3/objects/fluid/ExternalForce.d.ts +1 -1
  98. package/lib/en3/objects/fluid/Poisson.d.ts +1 -1
  99. package/lib/en3/objects/fluid/Pressure.d.ts +1 -1
  100. package/lib/en3/objects/fluid/Simulation.d.ts +1 -1
  101. package/lib/en3/objects/fluid/Viscous.d.ts +1 -1
  102. package/lib/en3/objects/fluid/index.d.ts +0 -3
  103. package/lib/en3/objects/index.d.ts +7 -0
  104. package/lib/en3/utils/coverTexture.d.ts +1 -1
  105. package/lib/en3/utils/index.cjs +1 -0
  106. package/lib/en3/utils/index.d.ts +5 -0
  107. package/lib/en3/utils/index.js +43 -0
  108. package/lib/en3-C4mzaF6q.cjs +8 -0
  109. package/lib/en3-hbkN1OPu.js +343 -0
  110. package/lib/globals-DMjysUXI.js +8 -0
  111. package/lib/globals-bYKki-b9.cjs +1 -0
  112. package/lib/image/index.cjs +1 -1
  113. package/lib/image/index.js +1 -1
  114. package/lib/{index-BtsOv9u0.js → index-BAH_fO2N.js} +66 -66
  115. package/lib/index-D1LQUR-R.cjs +9 -0
  116. package/lib/instantiate-D19Uvc31.js +125 -0
  117. package/lib/instantiate-Db5gGSYG.cjs +1 -0
  118. package/lib/jsx/ComponentElement.d.ts +18 -0
  119. package/lib/jsx/globals.d.ts +13 -0
  120. package/lib/jsx/h.d.ts +7 -0
  121. package/lib/jsx/hooks/basic/_createStore.d.ts +4 -0
  122. package/lib/jsx/hooks/basic/attachInternals.d.ts +1 -0
  123. package/lib/jsx/hooks/basic/attachShadow.d.ts +1 -0
  124. package/lib/jsx/hooks/basic/attachStylesheet.d.ts +3 -0
  125. package/lib/jsx/hooks/basic/createContext.d.ts +2 -0
  126. package/lib/jsx/hooks/basic/onConnect.d.ts +3 -0
  127. package/lib/jsx/hooks/basic/onDisconnect.d.ts +3 -0
  128. package/lib/jsx/hooks/onAnimationFrame.cjs +1 -0
  129. package/lib/jsx/hooks/onAnimationFrame.d.ts +6 -0
  130. package/lib/jsx/hooks/onAnimationFrame.js +22 -0
  131. package/lib/jsx/hooks/onElementResize.cjs +1 -0
  132. package/lib/jsx/hooks/onElementResize.d.ts +5 -0
  133. package/lib/jsx/hooks/onElementResize.js +11 -0
  134. package/lib/jsx/hooks/onIntersection.cjs +1 -0
  135. package/lib/jsx/hooks/onIntersection.d.ts +5 -0
  136. package/lib/jsx/hooks/onIntersection.js +11 -0
  137. package/lib/jsx/hooks/onWindowResize.cjs +1 -0
  138. package/lib/jsx/hooks/onWindowResize.d.ts +3 -0
  139. package/lib/jsx/hooks/onWindowResize.js +8 -0
  140. package/lib/jsx/hooks/store/createArrayStore.d.ts +3 -0
  141. package/lib/jsx/hooks/store/createComposed.d.ts +3 -0
  142. package/lib/jsx/hooks/store/createDerived.d.ts +3 -0
  143. package/lib/jsx/hooks/store/createDerivedArray.d.ts +3 -0
  144. package/lib/jsx/hooks/store/createDerivedComponent.d.ts +3 -0
  145. package/lib/jsx/hooks/store/createDerivedComponents.d.ts +3 -0
  146. package/lib/jsx/hooks/store/createResource.d.ts +3 -0
  147. package/lib/jsx/hooks/store/createStore.d.ts +3 -0
  148. package/lib/jsx/hooks/store/index.cjs +1 -0
  149. package/lib/jsx/hooks/store/index.d.ts +7 -0
  150. package/lib/jsx/hooks/store/index.js +49 -0
  151. package/lib/jsx/hooks/watchAttribute.cjs +1 -0
  152. package/lib/jsx/hooks/watchAttribute.d.ts +6 -0
  153. package/lib/jsx/hooks/watchAttribute.js +17 -0
  154. package/lib/jsx/hooks/watchCSSProperty.cjs +1 -0
  155. package/lib/jsx/hooks/watchCSSProperty.d.ts +7 -0
  156. package/lib/jsx/hooks/watchCSSProperty.js +17 -0
  157. package/lib/jsx/index.cjs +1 -0
  158. package/lib/jsx/index.d.ts +13 -0
  159. package/lib/jsx/index.js +91 -0
  160. package/lib/jsx/instantiate.d.ts +5 -0
  161. package/lib/jsx/register.d.ts +1 -0
  162. package/lib/jsx/render.d.ts +6 -0
  163. package/lib/jsx/type.d.ts +188 -0
  164. package/lib/ladder/index.cjs +1 -1
  165. package/lib/ladder/index.d.ts +2 -0
  166. package/lib/ladder/index.js +84 -66
  167. package/lib/layout-box/index.cjs +1 -1
  168. package/lib/layout-box/index.d.ts +11 -2
  169. package/lib/layout-box/index.js +190 -164
  170. package/lib/media/index.cjs +1 -1
  171. package/lib/media/index.js +1 -1
  172. package/lib/modal/index.cjs +1 -1
  173. package/lib/modal/index.js +16 -16
  174. package/lib/morph/Morph.d.ts +2 -2
  175. package/lib/morph/index.cjs +1 -1
  176. package/lib/morph/index.d.ts +1 -1
  177. package/lib/morph/index.js +135 -143
  178. package/lib/notifier/index.d.ts +2 -2
  179. package/lib/notifier/index.js +3 -1
  180. package/lib/onConnect-DGP866cj.cjs +1 -0
  181. package/lib/onConnect-y5DrxJ9P.js +7 -0
  182. package/lib/pointer/Pointer.d.ts +1 -1
  183. package/lib/pointer/PointerElement.d.ts +1 -1
  184. package/lib/pointer/index.cjs +1 -1
  185. package/lib/pointer/index.js +3 -3
  186. package/lib/polyfills-CM4SCDTt.cjs +1 -0
  187. package/lib/polyfills-X6KXuHg-.js +33 -0
  188. package/lib/popover/PopoverButtonElement.d.ts +1 -1
  189. package/lib/popover/PopoverElement.d.ts +2 -2
  190. package/lib/popover/index.cjs +1 -1
  191. package/lib/popover/index.js +49 -49
  192. package/lib/router/Router.d.ts +11 -3
  193. package/lib/router/index.cjs +1 -1
  194. package/lib/router/index.d.ts +1 -1
  195. package/lib/router/index.js +185 -165
  196. package/lib/scroll/ScrollElement.d.ts +8 -25
  197. package/lib/scroll/ScrollSection.d.ts +23 -0
  198. package/lib/scroll/ScrollSegmentElement.d.ts +3 -3
  199. package/lib/scroll/ScrollUserElement.d.ts +1 -1
  200. package/lib/scroll/index.cjs +1 -1
  201. package/lib/scroll/index.js +87 -83
  202. package/lib/scroll-entries/index.d.ts +1 -1
  203. package/lib/select/SelectUserElement.d.ts +1 -1
  204. package/lib/select/index.cjs +1 -1
  205. package/lib/select/index.js +1 -1
  206. package/lib/sequence/index.cjs +1 -1
  207. package/lib/sequence/index.d.ts +1 -1
  208. package/lib/sequence/index.js +8 -8
  209. package/lib/slicer/SlicerElement.d.ts +2 -2
  210. package/lib/slicer/index.cjs +4 -4
  211. package/lib/slicer/index.js +31 -31
  212. package/lib/source/SourceElement.d.ts +2 -2
  213. package/lib/source/SourceManager.d.ts +1 -1
  214. package/lib/source/index.cjs +1 -1
  215. package/lib/source/index.js +2 -2
  216. package/lib/store/ArrayStore.d.ts +21 -0
  217. package/lib/store/Store.d.ts +1 -7
  218. package/lib/store/index.cjs +1 -1
  219. package/lib/store/index.d.ts +2 -2
  220. package/lib/store/index.js +65 -139
  221. package/lib/tags-BqJKcIve.js +485 -0
  222. package/lib/tags-ld5jemJw.cjs +1 -0
  223. package/lib/theme/index.cjs +1 -1
  224. package/lib/theme/index.js +2 -2
  225. package/lib/tweaker/TweakerBooleanManagerElement.d.ts +2 -2
  226. package/lib/tweaker/TweakerColorManagerElement.d.ts +2 -2
  227. package/lib/tweaker/TweakerElement.d.ts +1 -1
  228. package/lib/tweaker/TweakerFieldElement.d.ts +2 -2
  229. package/lib/tweaker/TweakerFolderElement.d.ts +5 -3
  230. package/lib/tweaker/TweakerLinkManagerElement.d.ts +2 -2
  231. package/lib/tweaker/TweakerNumberManagerElement.d.ts +4 -8
  232. package/lib/tweaker/TweakerSelectManagerElement.d.ts +2 -2
  233. package/lib/tweaker/TweakerStoreManagerElement.d.ts +7 -7
  234. package/lib/tweaker/TweakerStringManagerElement.d.ts +3 -5
  235. package/lib/tweaker/index.cjs +3 -3
  236. package/lib/tweaker/index.js +535 -412
  237. package/lib/tweaker/tweakerManagerConstructors.d.ts +2 -2
  238. package/lib/tweaker/tweakerStorage.d.ts +8 -1
  239. package/lib/url-C3dWnJQg.cjs +1 -0
  240. package/lib/url-DMNfW7uN.js +22 -0
  241. package/lib/utils/function.d.ts +2 -2
  242. package/lib/utils/index.cjs +1 -1
  243. package/lib/utils/index.d.ts +1 -0
  244. package/lib/utils/index.js +39 -34
  245. package/lib/utils/layout.d.ts +1 -1
  246. package/lib/utils/number.d.ts +1 -0
  247. package/lib/utils/url.d.ts +9 -0
  248. package/lib/video/index.cjs +1 -1
  249. package/lib/video/index.js +14 -14
  250. package/package.json +108 -12
  251. package/lib/Animation-DDHjrbtL.cjs +0 -1
  252. package/lib/Animation-Dq_05jlR.js +0 -217
  253. package/lib/Damped-l0mnlhar.cjs +0 -1
  254. package/lib/Store-C-1ruEIm.cjs +0 -1
  255. package/lib/Tweened-CwDC2zl8.js +0 -51
  256. package/lib/Tweened-DIt9j9B-.cjs +0 -1
  257. package/lib/animation/AnimationLink.d.ts +0 -13
  258. package/lib/en3/loaders/en3GLTFLoader.d.ts +0 -14
  259. package/lib/en3/loaders/en3TextureLoader.d.ts +0 -3
  260. package/lib/en3/test/En3HTML.d.ts +0 -10
  261. package/lib/index-Buf76Qoq.cjs +0 -9
  262. package/lib/polyfills-BA-CL_HF.js +0 -27
  263. package/lib/polyfills-DHs2SNbz.cjs +0 -1
  264. package/lib/resized/index.cjs +0 -1
  265. package/lib/resized/index.d.ts +0 -12
  266. package/lib/resized/index.js +0 -30
  267. package/lib/store/CumulativeResource.d.ts +0 -13
  268. package/lib/tags-CMPg9ETZ.js +0 -848
  269. package/lib/tags-Djb6mb1o.cjs +0 -1
  270. package/lib/tweaker/TweakerRangeManagerElement.d.ts +0 -11
  271. package/lib/en3/{loaders → core}/en3Cache.d.ts +0 -0
  272. package/lib/en3/{test → misc}/En3ModifiedMaterial.d.ts +0 -0
  273. package/lib/en3/{attachments → misc}/En3SourceManager.d.ts +2 -2
package/lib/en3/index.js CHANGED
@@ -1,4229 +1,6 @@
1
- var hn = Object.defineProperty, ln = Object.defineProperties;
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 = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGIgsQAw0BIAVBQGsgAiAKaiICIAkQBiILEAMNASAFQShqIAIgCWoiAiAHEAYiCxADDQEgBUEQaiACIAdqIAMgDGsQBiILEAMNASAAIAFqIg9BfWohECAEQQRqIQZBASELIAAgAUEDakECdiIDaiIMIANqIgIgA2oiDiEDIAIhBCAMIQcDQCALIAMgEElxBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgCS0AAyELIAcgBiAFQUBrIAgQAkECdGoiCS8BADsAACAFQUBrIAktAAIQASAJLQADIQogBCAGIAVBKGogCBACQQJ0aiIJLwEAOwAAIAVBKGogCS0AAhABIAktAAMhCSADIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgDS0AAyENIAAgC2oiCyAGIAVB2ABqIAgQAkECdGoiAC8BADsAACAFQdgAaiAALQACEAEgAC0AAyEAIAcgCmoiCiAGIAVBQGsgCBACQQJ0aiIHLwEAOwAAIAVBQGsgBy0AAhABIActAAMhByAEIAlqIgkgBiAFQShqIAgQAkECdGoiBC8BADsAACAFQShqIAQtAAIQASAELQADIQQgAyANaiIDIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgACALaiEAIAcgCmohByAEIAlqIQQgAyANLQADaiEDIAVB2ABqEA0gBUFAaxANciAFQShqEA1yIAVBEGoQDXJFIQsMAQsLIAQgDksgByACS3INAEFsIQsgACAMSw0BIAxBfWohCQNAQQAgACAJSSAFQdgAahAEGwRAIAAgBiAFQdgAaiAIEAJBAnRqIgovAQA7AAAgBUHYAGogCi0AAhABIAAgCi0AA2oiACAGIAVB2ABqIAgQAkECdGoiCi8BADsAACAFQdgAaiAKLQACEAEgACAKLQADaiEADAEFIAxBfmohCgNAIAVB2ABqEAQgACAKS3JFBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgACAJLQADaiEADAELCwNAIAAgCk0EQCAAIAYgBUHYAGogCBACQQJ0aiIJLwEAOwAAIAVB2ABqIAktAAIQASAAIAktAANqIQAMAQsLAkAgACAMTw0AIAAgBiAFQdgAaiAIEAIiAEECdGoiDC0AADoAACAMLQADQQFGBEAgBUHYAGogDC0AAhABDAELIAUoAlxBH0sNACAFQdgAaiAGIABBAnRqLQACEAEgBSgCXEEhSQ0AIAVBIDYCXAsgAkF9aiEMA0BBACAHIAxJIAVBQGsQBBsEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiIAIAYgBUFAayAIEAJBAnRqIgcvAQA7AAAgBUFAayAHLQACEAEgACAHLQADaiEHDAEFIAJBfmohDANAIAVBQGsQBCAHIAxLckUEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwNAIAcgDE0EQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwJAIAcgAk8NACAHIAYgBUFAayAIEAIiAEECdGoiAi0AADoAACACLQADQQFGBEAgBUFAayACLQACEAEMAQsgBSgCREEfSw0AIAVBQGsgBiAAQQJ0ai0AAhABIAUoAkRBIUkNACAFQSA2AkQLIA5BfWohAgNAQQAgBCACSSAFQShqEAQbBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2oiACAGIAVBKGogCBACQQJ0aiIELwEAOwAAIAVBKGogBC0AAhABIAAgBC0AA2ohBAwBBSAOQX5qIQIDQCAFQShqEAQgBCACS3JFBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsDQCAEIAJNBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsCQCAEIA5PDQAgBCAGIAVBKGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBKGogAi0AAhABDAELIAUoAixBH0sNACAFQShqIAYgAEECdGotAAIQASAFKAIsQSFJDQAgBUEgNgIsCwNAQQAgAyAQSSAFQRBqEAQbBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2oiACAGIAVBEGogCBACQQJ0aiICLwEAOwAAIAVBEGogAi0AAhABIAAgAi0AA2ohAwwBBSAPQX5qIQIDQCAFQRBqEAQgAyACS3JFBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsDQCADIAJNBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsCQCADIA9PDQAgAyAGIAVBEGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBEGogAi0AAhABDAELIAUoAhRBH0sNACAFQRBqIAYgAEECdGotAAIQASAFKAIUQSFJDQAgBUEgNgIUCyABQWwgBUHYAGoQCiAFQUBrEApxIAVBKGoQCnEgBUEQahAKcRshCwwJCwAACwALAAALAAsAAAsACwAACwALQWwhCwsgBUHwAGokACALC7UEAQ5/IwBBEGsiBiQAIAZBBGogABAOQVQhBQJAIARB3AtJDQAgBi0ABCEHIANB8ARqQQBB7AAQECEIIAdBDEsNACADQdwJaiIJIAggBkEIaiAGQQxqIAEgAhAxIhAQA0UEQCAGKAIMIgQgB0sNASADQdwFaiEPIANBpAVqIREgAEEEaiESIANBqAVqIQEgBCEFA0AgBSICQX9qIQUgCCACQQJ0aigCAEUNAAsgAkEBaiEOQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgASALaiAKNgIAIAVBAWohBSAKIAxqIQoMAQsLIAEgCjYCAEEAIQUgBigCCCELA0AgBSALRkUEQCABIAUgCWotAAAiDEECdGoiDSANKAIAIg1BAWo2AgAgDyANQQF0aiINIAw6AAEgDSAFOgAAIAVBAWohBQwBCwtBACEBIANBADYCqAUgBEF/cyAHaiEJQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgAyALaiABNgIAIAwgBSAJanQgAWohASAFQQFqIQUMAQsLIAcgBEEBaiIBIAJrIgRrQQFqIQgDQEEBIQUgBCAIT0UEQANAIAUgDk9FBEAgBUECdCIJIAMgBEE0bGpqIAMgCWooAgAgBHY2AgAgBUEBaiEFDAELCyAEQQFqIQQMAQsLIBIgByAPIAogESADIAIgARBkIAZBAToABSAGIAc6AAYgACAGKAIENgIACyAQIQULIAZBEGokACAFC8ENAQt/IwBB8ABrIgUkAEFsIQkCQCADQQpJDQAgAi8AACEKIAIvAAIhDCACLwAEIQYgBUEIaiAEEA4CQCADIAYgCiAMampBBmoiDUkNACAFLQAKIQcgBUHYAGogAkEGaiICIAoQBiIJEAMNASAFQUBrIAIgCmoiAiAMEAYiCRADDQEgBUEoaiACIAxqIgIgBhAGIgkQAw0BIAVBEGogAiAGaiADIA1rEAYiCRADDQEgACABaiIOQX1qIQ8gBEEEaiEGQQEhCSAAIAFBA2pBAnYiAmoiCiACaiIMIAJqIg0hAyAMIQQgCiECA0AgCSADIA9JcQRAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAACAGIAVBQGsgBxACQQF0aiIILQAAIQsgBUFAayAILQABEAEgAiALOgAAIAYgBUEoaiAHEAJBAXRqIggtAAAhCyAFQShqIAgtAAEQASAEIAs6AAAgBiAFQRBqIAcQAkEBdGoiCC0AACELIAVBEGogCC0AARABIAMgCzoAACAGIAVB2ABqIAcQAkEBdGoiCC0AACELIAVB2ABqIAgtAAEQASAAIAs6AAEgBiAFQUBrIAcQAkEBdGoiCC0AACELIAVBQGsgCC0AARABIAIgCzoAASAGIAVBKGogBxACQQF0aiIILQAAIQsgBUEoaiAILQABEAEgBCALOgABIAYgBUEQaiAHEAJBAXRqIggtAAAhCyAFQRBqIAgtAAEQASADIAs6AAEgA0ECaiEDIARBAmohBCACQQJqIQIgAEECaiEAIAkgBUHYAGoQDUVxIAVBQGsQDUVxIAVBKGoQDUVxIAVBEGoQDUVxIQkMAQsLIAQgDUsgAiAMS3INAEFsIQkgACAKSw0BIApBfWohCQNAIAVB2ABqEAQgACAJT3JFBEAgBiAFQdgAaiAHEAJBAXRqIggtAAAhCyAFQdgAaiAILQABEAEgACALOgAAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAASAAQQJqIQAMAQsLA0AgBUHYAGoQBCAAIApPckUEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCwNAIAAgCkkEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCyAMQX1qIQADQCAFQUBrEAQgAiAAT3JFBEAgBiAFQUBrIAcQAkEBdGoiCi0AACEJIAVBQGsgCi0AARABIAIgCToAACAGIAVBQGsgBxACQQF0aiIKLQAAIQkgBUFAayAKLQABEAEgAiAJOgABIAJBAmohAgwBCwsDQCAFQUBrEAQgAiAMT3JFBEAgBiAFQUBrIAcQAkEBdGoiAC0AACEKIAVBQGsgAC0AARABIAIgCjoAACACQQFqIQIMAQsLA0AgAiAMSQRAIAYgBUFAayAHEAJBAXRqIgAtAAAhCiAFQUBrIAAtAAEQASACIAo6AAAgAkEBaiECDAELCyANQX1qIQADQCAFQShqEAQgBCAAT3JFBEAgBiAFQShqIAcQAkEBdGoiAi0AACEKIAVBKGogAi0AARABIAQgCjoAACAGIAVBKGogBxACQQF0aiICLQAAIQogBUEoaiACLQABEAEgBCAKOgABIARBAmohBAwBCwsDQCAFQShqEAQgBCANT3JFBEAgBiAFQShqIAcQAkEBdGoiAC0AACECIAVBKGogAC0AARABIAQgAjoAACAEQQFqIQQMAQsLA0AgBCANSQRAIAYgBUEoaiAHEAJBAXRqIgAtAAAhAiAFQShqIAAtAAEQASAEIAI6AAAgBEEBaiEEDAELCwNAIAVBEGoQBCADIA9PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIAYgBUEQaiAHEAJBAXRqIgAtAAAhAiAFQRBqIAAtAAEQASADIAI6AAEgA0ECaiEDDAELCwNAIAVBEGoQBCADIA5PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIANBAWohAwwBCwsDQCADIA5JBEAgBiAFQRBqIAcQAkEBdGoiAC0AACECIAVBEGogAC0AARABIAMgAjoAACADQQFqIQMMAQsLIAFBbCAFQdgAahAKIAVBQGsQCnEgBUEoahAKcSAFQRBqEApxGyEJDAELQWwhCQsgBUHwAGokACAJC8oCAQR/IwBBIGsiBSQAIAUgBBAOIAUtAAIhByAFQQhqIAIgAxAGIgIQA0UEQCAEQQRqIQIgACABaiIDQX1qIQQDQCAFQQhqEAQgACAET3JFBEAgAiAFQQhqIAcQAkEBdGoiBi0AACEIIAVBCGogBi0AARABIAAgCDoAACACIAVBCGogBxACQQF0aiIGLQAAIQggBUEIaiAGLQABEAEgACAIOgABIABBAmohAAwBCwsDQCAFQQhqEAQgACADT3JFBEAgAiAFQQhqIAcQAkEBdGoiBC0AACEGIAVBCGogBC0AARABIAAgBjoAACAAQQFqIQAMAQsLA0AgACADT0UEQCACIAVBCGogBxACQQF0aiIELQAAIQYgBUEIaiAELQABEAEgACAGOgAAIABBAWohAAwBCwsgAUFsIAVBCGoQChshAgsgBUEgaiQAIAILtgMBCX8jAEEQayIGJAAgBkEANgIMIAZBADYCCEFUIQQCQAJAIANBQGsiDCADIAZBCGogBkEMaiABIAIQMSICEAMNACAGQQRqIAAQDiAGKAIMIgcgBi0ABEEBaksNASAAQQRqIQogBkEAOgAFIAYgBzoABiAAIAYoAgQ2AgAgB0EBaiEJQQEhBANAIAQgCUkEQCADIARBAnRqIgEoAgAhACABIAU2AgAgACAEQX9qdCAFaiEFIARBAWohBAwBCwsgB0EBaiEHQQAhBSAGKAIIIQkDQCAFIAlGDQEgAyAFIAxqLQAAIgRBAnRqIgBBASAEdEEBdSILIAAoAgAiAWoiADYCACAHIARrIQhBACEEAkAgC0EDTQRAA0AgBCALRg0CIAogASAEakEBdGoiACAIOgABIAAgBToAACAEQQFqIQQMAAALAAsDQCABIABPDQEgCiABQQF0aiIEIAg6AAEgBCAFOgAAIAQgCDoAAyAEIAU6AAIgBCAIOgAFIAQgBToABCAEIAg6AAcgBCAFOgAGIAFBBGohAQwAAAsACyAFQQFqIQUMAAALAAsgAiEECyAGQRBqJAAgBAutAQECfwJAQYQgKAIAIABHIAAoAgBBAXYiAyABa0F4aiICQXhxQQhHcgR/IAIFIAMQJ0UNASACQQhqC0EQSQ0AIAAgACgCACICQQFxIAAgAWpBD2pBeHEiASAAa0EBdHI2AgAgASAANgIEIAEgASgCAEEBcSAAIAJBAXZqIAFrIgJBAXRyNgIAQYQgIAEgAkH/////B3FqQQRqQYQgKAIAIABGGyABNgIAIAEQJQsLygIBBX8CQAJAAkAgAEEIIABBCEsbZ0EfcyAAaUEBR2oiAUEESSAAIAF2cg0AIAFBAnRB/B5qKAIAIgJFDQADQCACQXhqIgMoAgBBAXZBeGoiBSAATwRAIAIgBUEIIAVBCEsbZ0Efc0ECdEGAH2oiASgCAEYEQCABIAIoAgQ2AgALDAMLIARBHksNASAEQQFqIQQgAigCBCICDQALC0EAIQMgAUEgTw0BA0AgAUECdEGAH2ooAgAiAkUEQCABQR5LIQIgAUEBaiEBIAJFDQEMAwsLIAIgAkF4aiIDKAIAQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgBGBEAgASACKAIENgIACwsgAigCACIBBEAgASACKAIENgIECyACKAIEIgEEQCABIAIoAgA2AgALIAMgAygCAEEBcjYCACADIAAQNwsgAwvhCwINfwV+IwBB8ABrIgckACAHIAAoAvDhASIINgJcIAEgAmohDSAIIAAoAoDiAWohDwJAAkAgBUUEQCABIQQMAQsgACgCxOABIRAgACgCwOABIREgACgCvOABIQ4gAEEBNgKM4QFBACEIA0AgCEEDRwRAIAcgCEECdCICaiAAIAJqQazQAWooAgA2AkQgCEEBaiEIDAELC0FsIQwgB0EYaiADIAQQBhADDQEgB0EsaiAHQRhqIAAoAgAQEyAHQTRqIAdBGGogACgCCBATIAdBPGogB0EYaiAAKAIEEBMgDUFgaiESIAEhBEEAIQwDQCAHKAIwIAcoAixBA3RqKQIAIhRCEIinQf8BcSEIIAcoAkAgBygCPEEDdGopAgAiFUIQiKdB/wFxIQsgBygCOCAHKAI0QQN0aikCACIWQiCIpyEJIBVCIIghFyAUQiCIpyECAkAgFkIQiKdB/wFxIgNBAk8EQAJAIAZFIANBGUlyRQRAIAkgB0EYaiADQSAgBygCHGsiCiAKIANLGyIKEAUgAyAKayIDdGohCSAHQRhqEAQaIANFDQEgB0EYaiADEAUgCWohCQwBCyAHQRhqIAMQBSAJaiEJIAdBGGoQBBoLIAcpAkQhGCAHIAk2AkQgByAYNwNIDAELAkAgA0UEQCACBEAgBygCRCEJDAMLIAcoAkghCQwBCwJAAkAgB0EYakEBEAUgCSACRWpqIgNBA0YEQCAHKAJEQX9qIgMgA0VqIQkMAQsgA0ECdCAHaigCRCIJIAlFaiEJIANBAUYNAQsgByAHKAJINgJMCwsgByAHKAJENgJIIAcgCTYCRAsgF6chAyALBEAgB0EYaiALEAUgA2ohAwsgCCALakEUTwRAIAdBGGoQBBoLIAgEQCAHQRhqIAgQBSACaiECCyAHQRhqEAQaIAcgB0EYaiAUQhiIp0H/AXEQCCAUp0H//wNxajYCLCAHIAdBGGogFUIYiKdB/wFxEAggFadB//8DcWo2AjwgB0EYahAEGiAHIAdBGGogFkIYiKdB/wFxEAggFqdB//8DcWo2AjQgByACNgJgIAcoAlwhCiAHIAk2AmggByADNgJkAkACQAJAIAQgAiADaiILaiASSw0AIAIgCmoiEyAPSw0AIA0gBGsgC0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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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
- dr as En3Clip,
4208
- fr as En3ClipHelpers,
4209
- Yo as En3Fluid,
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
  };