@minicode-dev/chat 0.1.11 → 0.1.13

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 (33) hide show
  1. package/README.md +102 -6
  2. package/assets/sounds/effects/avalanche.mp3 +0 -0
  3. package/dist/chunks/{TanksGameCard-B47ZQcSr.js → TanksGameCard-GrqmdwJ7.js} +2 -2
  4. package/dist/chunks/{TanksGameCard-B47ZQcSr.js.map → TanksGameCard-GrqmdwJ7.js.map} +1 -1
  5. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js +1225 -0
  6. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js.map +1 -0
  7. package/dist/chunks/{WebRtcLab-lijo_Rta.js → WebRtcLab-ClRSYt4E.js} +2 -2
  8. package/dist/chunks/{WebRtcLab-lijo_Rta.js.map → WebRtcLab-ClRSYt4E.js.map} +1 -1
  9. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js +1878 -0
  10. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js.map +1 -0
  11. package/dist/chunks/createLiveScene-819NWv84.js +365 -0
  12. package/dist/chunks/createLiveScene-819NWv84.js.map +1 -0
  13. package/dist/chunks/createPeerLink-DBVs_yvQ.js +1136 -0
  14. package/dist/chunks/createPeerLink-DBVs_yvQ.js.map +1 -0
  15. package/dist/chunks/{createTankScene-CV7Brxmt.js → createTankScene-6asWHKFf.js} +120 -119
  16. package/dist/chunks/{createTankScene-CV7Brxmt.js.map → createTankScene-6asWHKFf.js.map} +1 -1
  17. package/dist/chunks/fx-BNJvJYOu.js +871 -0
  18. package/dist/chunks/fx-BNJvJYOu.js.map +1 -0
  19. package/dist/chunks/tank-DIn6Jyt8.js +605 -0
  20. package/dist/chunks/tank-DIn6Jyt8.js.map +1 -0
  21. package/dist/index.js +1581 -1184
  22. package/dist/index.js.map +1 -1
  23. package/dist/styles.css +1 -1
  24. package/index.d.ts +23 -3
  25. package/package.json +1 -1
  26. package/dist/chunks/TanksLiveGameCard-BNJqWt1z.js +0 -915
  27. package/dist/chunks/TanksLiveGameCard-BNJqWt1z.js.map +0 -1
  28. package/dist/chunks/createLiveScene-CJQtq54t.js +0 -364
  29. package/dist/chunks/createLiveScene-CJQtq54t.js.map +0 -1
  30. package/dist/chunks/createPeerLink-CL7VZuHS.js +0 -480
  31. package/dist/chunks/createPeerLink-CL7VZuHS.js.map +0 -1
  32. package/dist/chunks/fx-BHsl4S_J.js +0 -1470
  33. package/dist/chunks/fx-BHsl4S_J.js.map +0 -1
@@ -0,0 +1,1878 @@
1
+ import { i as e, n as t, o as n, r, t as i } from "./tank-DIn6Jyt8.js";
2
+ import { AdditiveBlending as a, AmbientLight as o, Box3 as s, BoxGeometry as c, BufferAttribute as l, BufferGeometry as u, CanvasTexture as d, CircleGeometry as f, Color as p, CylinderGeometry as m, DirectionalLight as h, DoubleSide as g, DynamicDrawUsage as _, Euler as v, ExtrudeGeometry as y, Float32BufferAttribute as b, Group as x, InstancedMesh as S, Matrix3 as C, Matrix4 as w, MeshBasicMaterial as T, MeshLambertMaterial as E, MeshStandardMaterial as D, NormalBlending as O, PerspectiveCamera as k, PlaneGeometry as A, PointLight as ee, Points as j, Quaternion as te, Scene as ne, ShaderMaterial as re, Shape as M, SphereGeometry as ie, Sprite as N, SpriteMaterial as P, Vector2 as ae, Vector3 as F, WebGLRenderer as oe } from "three";
3
+ import { mergeBufferGeometries as I } from "three/examples/jsm/utils/BufferGeometryUtils.js";
4
+ // src/effects/avalanche/models/money.js
5
+ var L = Math.PI * 2, R = {
6
+ length: 1,
7
+ width: .45,
8
+ thickness: .02
9
+ }, se = .35, ce = {
10
+ radius: .32,
11
+ thickness: .08
12
+ }, z = "Georgia, \"Times New Roman\", serif", le = "#1f5a32", ue = [
13
+ "#d9a93a",
14
+ "#8e5bd1",
15
+ "#d64545",
16
+ "#3b8fd9"
17
+ ], de = [.502, 1], fe = [0, .49];
18
+ function pe(e, t) {
19
+ let n = null;
20
+ return typeof document < "u" ? (n = document.createElement("canvas"), n.width = e, n.height = t) : typeof OffscreenCanvas < "u" && (n = new OffscreenCanvas(e, t)), n?.getContext("2d") || null;
21
+ }
22
+ function B(e, t, n, r) {
23
+ [
24
+ ["rgba(90, 55, 0, 0.7)", t],
25
+ ["rgba(255, 248, 210, 0.9)", -t],
26
+ [n, 0]
27
+ ].forEach(([t, n]) => {
28
+ e.save(), e.translate(n, n), r(t), e.restore();
29
+ });
30
+ }
31
+ function me(e, t, n, r, i) {
32
+ e.beginPath();
33
+ for (let a = 0; a < 10; a += 1) {
34
+ let o = a % 2 ? i : r, s = a / 10 * L - Math.PI / 2;
35
+ e.lineTo(t + Math.cos(s) * o, n + Math.sin(s) * o);
36
+ }
37
+ e.closePath();
38
+ }
39
+ function V(e, t, n, r, i) {
40
+ for (let a = 0; a < 10; a += 1) {
41
+ let o = a / 10 * (L / i);
42
+ e.beginPath();
43
+ for (let a = 0; a <= 120; a += 1) {
44
+ let s = a / 120 * L, c = r * (.7 + .3 * Math.sin(i * s + o));
45
+ e.lineTo(t + Math.cos(s) * c, n + Math.sin(s) * c * .92);
46
+ }
47
+ e.stroke();
48
+ }
49
+ }
50
+ function he(e, t, n) {
51
+ let r = t / 2, i = n / 2, a = e.createLinearGradient(0, 0, t, n);
52
+ a.addColorStop(0, "#b2d7a3"), a.addColorStop(.5, "#93c385"), a.addColorStop(1, "#acd39c"), e.fillStyle = a, e.fillRect(0, 0, t, n), e.lineWidth = 1, e.strokeStyle = "rgba(40, 110, 60, 0.28)";
53
+ for (let r = 0; r < 7; r += 1) [28, n - 28].forEach((n) => {
54
+ e.beginPath();
55
+ for (let i = 0; i <= t; i += 4) e.lineTo(i, n + Math.sin(i * .045 + r * .9) * 7);
56
+ e.stroke();
57
+ });
58
+ V(e, t * .2, i, 62, 9), V(e, t * .8, i, 62, 12), e.strokeStyle = le, e.lineWidth = 8, e.strokeRect(7, 7, t - 14, n - 14), e.lineWidth = 2, e.strokeRect(17, 17, t - 34, n - 34), e.save(), e.beginPath(), e.ellipse(r, i, 58, 70, 0, 0, L);
59
+ let o = e.createRadialGradient(r, i - 12, 6, r, i, 74);
60
+ o.addColorStop(0, "#dcefd3"), o.addColorStop(1, "#94c486"), e.fillStyle = o, e.fill(), e.clip(), e.strokeStyle = "rgba(31, 90, 50, 0.22)", e.lineWidth = 1;
61
+ for (let t = r - 60; t <= r + 60; t += 4) e.beginPath(), e.moveTo(t, i - 72), e.lineTo(t, i + 72), e.stroke();
62
+ e.fillStyle = "rgba(31, 90, 50, 0.78)", e.beginPath(), e.arc(r, i - 16, 20, 0, L), e.fill(), e.beginPath(), e.ellipse(r, i + 50, 42, 40, 0, Math.PI, L), e.fill(), e.restore(), e.strokeStyle = le, e.lineWidth = 4, e.beginPath(), e.ellipse(r, i, 58, 70, 0, 0, L), e.stroke(), e.lineWidth = 1.5, e.beginPath(), e.ellipse(r, i, 63, 75, 0, 0, L), e.stroke(), e.textAlign = "center", e.textBaseline = "middle", e.lineJoin = "round", [[
63
+ "$",
64
+ t * .2,
65
+ i + 4,
66
+ 120
67
+ ], [
68
+ "100",
69
+ t * .8,
70
+ i + 2,
71
+ 56
72
+ ]].forEach(([t, n, r, i]) => {
73
+ e.font = `bold ${i}px ${z}`, e.lineWidth = 6, e.strokeStyle = "#d6ebcd", e.strokeText(t, n, r), e.fillStyle = le, e.fillText(t, n, r);
74
+ }), e.font = `bold 24px ${z}`, [
75
+ [52, 40],
76
+ [t - 52, 40],
77
+ [52, n - 40],
78
+ [t - 52, n - 40]
79
+ ].forEach(([t, n]) => {
80
+ e.beginPath(), e.ellipse(t, n, 31, 16, 0, 0, L), e.fillStyle = "#cfe6c4", e.fill(), e.lineWidth = 1.5, e.strokeStyle = le, e.stroke(), e.fillStyle = le, e.fillText("100", t, n + 1);
81
+ }), e.font = `bold 14px ${z}`, e.fillText("★ AVALANCHA ★", r, 30), e.fillText("CIEN", r, n - 29), e.font = `12px ${z}`, e.fillStyle = "#a8323a", e.textAlign = "left", e.fillText("AV 7000 2026", 90, 44), e.textAlign = "right", e.fillText("AV 7000 2026", t - 90, n - 44);
82
+ }
83
+ function ge(e, t, n) {
84
+ e.fillStyle = "#d9eacf", e.fillRect(0, 0, t, n);
85
+ let r = n / 36;
86
+ for (let n = 0; n < 36; n += 1) e.fillStyle = n % 5 == 2 ? "#76ad69" : n % 2 ? "#b7d5aa" : "#cbe2bf", e.fillRect(0, n * r + r * .55, t, Math.max(1, r * .35));
87
+ }
88
+ function _e(e) {
89
+ let t = e ? 256 : 512, n = pe(t, t);
90
+ if (!n) return null;
91
+ n.save(), n.scale(t / 512, t / 2 / 230), he(n, 512, 230), n.restore(), n.save(), n.translate(0, t / 2), ge(n, t, t / 2), n.restore();
92
+ let r = new d(n.canvas);
93
+ return r.anisotropy = e ? 1 : 4, r;
94
+ }
95
+ function ve(e) {
96
+ let t = e ? 128 : 256, n = pe(t, t);
97
+ if (!n) return null;
98
+ let r = t / 2, i = t / 128;
99
+ for (let e = 0; e < 96; e += 1) {
100
+ let t = e / 96 * L;
101
+ n.fillStyle = e % 2 ? "#f0c24a" : "#9c6c10", n.beginPath(), n.moveTo(r, r), n.arc(r, r, r * 1.5, t, t + L / 96 + .01), n.fill();
102
+ }
103
+ let a = n.createRadialGradient(r * .75, r * .7, r * .05, r, r, r * .9);
104
+ return a.addColorStop(0, "#fff3b8"), a.addColorStop(.5, "#f5c84a"), a.addColorStop(1, "#c08a14"), n.fillStyle = a, n.beginPath(), n.arc(r, r, r * .88, 0, L), n.fill(), B(n, i, "#e9b93c", (e) => {
105
+ n.strokeStyle = e, n.lineWidth = r * .05, n.beginPath(), n.arc(r, r, r * .84, 0, L), n.stroke();
106
+ }), B(n, i * .6, "#efc24a", (e) => {
107
+ n.fillStyle = e, n.beginPath();
108
+ for (let e = 0; e < 30; e += 1) {
109
+ let t = e / 30 * L, i = r + Math.cos(t) * r * .74, a = r + Math.sin(t) * r * .74;
110
+ n.moveTo(i + r * .03, a), n.arc(i, a, r * .03, 0, L);
111
+ }
112
+ n.fill();
113
+ }), B(n, i * 1.5, "#f6cd52", (e) => {
114
+ n.fillStyle = e, me(n, r, r, r * .62, r * .3), n.fill();
115
+ }), B(n, i, "#c99418", (e) => {
116
+ n.fillStyle = e, n.font = `bold ${Math.round(r * .5)}px ${z}`, n.textAlign = "center", n.textBaseline = "middle", n.fillText("$", r, r * 1.03);
117
+ }), new d(n.canvas);
118
+ }
119
+ function ye(e) {
120
+ let t = e.attributes.normal, n = e.attributes.uv;
121
+ for (let e = 0; e < n.count; e += 1) {
122
+ let [r, i] = Math.abs(t.getY(e)) > .5 ? de : fe;
123
+ n.setY(e, r + n.getY(e) * (i - r));
124
+ }
125
+ }
126
+ function be(e) {
127
+ let { length: t, width: n, thickness: r } = R, i = new c(t, r, n, e ? 4 : 8, 1, 1);
128
+ ye(i);
129
+ let a = i.attributes.position;
130
+ for (let e = 0; e < a.count; e += 1) {
131
+ let n = a.getX(e) / (t / 2);
132
+ a.setY(e, a.getY(e) + n * n * .05);
133
+ }
134
+ return i.computeVertexNormals(), i.center(), i;
135
+ }
136
+ function xe() {
137
+ let e = new c(R.length, se, R.width);
138
+ return ye(e), e;
139
+ }
140
+ function Se(e) {
141
+ let t = e ? 16 : 24, n = new m(ce.radius, ce.radius, ce.thickness, t, 1), r = n.attributes.position, i = n.attributes.uv;
142
+ for (let e = 0; e < (t + 1) * 2; e += 1) i.setXY(e, .5 + .47 * (r.getZ(e) / ce.radius), .5 + .47 * (r.getX(e) / ce.radius));
143
+ return n;
144
+ }
145
+ function Ce({ lowPower: e = !1 } = {}) {
146
+ let t = (t, n = {}) => e ? new E(t) : new D({
147
+ roughness: .8,
148
+ metalness: 0,
149
+ ...t,
150
+ ...n
151
+ }), n = _e(e), r = ve(e), i = () => t({
152
+ color: n ? 12109491 : 9421439,
153
+ map: n
154
+ }), a = t({
155
+ color: r ? 16777215 : 16762941,
156
+ map: r,
157
+ emissive: e ? 5914124 : 9069592,
158
+ emissiveMap: r
159
+ }, {
160
+ metalness: .85,
161
+ roughness: .25
162
+ });
163
+ return [
164
+ {
165
+ kind: "bill",
166
+ parts: [{
167
+ geometry: be(e),
168
+ material: i()
169
+ }],
170
+ radius: .45,
171
+ mass: .05,
172
+ bounce: .12,
173
+ friction: .6,
174
+ drag: .85,
175
+ count: 60,
176
+ countLow: 30
177
+ },
178
+ {
179
+ kind: "stack",
180
+ parts: [{
181
+ geometry: xe(),
182
+ material: i()
183
+ }, {
184
+ geometry: new c(.2, .362, R.width + .012),
185
+ material: t({ color: 16777215 }, { roughness: .6 }),
186
+ tinted: !0
187
+ }],
188
+ palette: ue.map((e) => new p(e)),
189
+ radius: .52,
190
+ mass: .8,
191
+ bounce: .22,
192
+ friction: .7,
193
+ drag: .12,
194
+ count: 12,
195
+ countLow: 6
196
+ },
197
+ {
198
+ kind: "coin",
199
+ parts: [{
200
+ geometry: Se(e),
201
+ material: a
202
+ }],
203
+ radius: .32,
204
+ mass: .3,
205
+ bounce: .65,
206
+ friction: .35,
207
+ drag: .04,
208
+ count: 50,
209
+ countLow: 24
210
+ }
211
+ ];
212
+ }
213
+ // src/effects/avalanche/models/cars.js
214
+ var we = [
215
+ "#ff2b3d",
216
+ "#ffd23f",
217
+ "#2f6bff",
218
+ "#7be22c",
219
+ "#ff7a1a",
220
+ "#ff4fb0",
221
+ "#f5f6f8"
222
+ ], H = {
223
+ tire: "#1b1c21",
224
+ rim: "#cfd5de",
225
+ hub: "#3a3d45",
226
+ chrome: "#dfe4ec",
227
+ dark: "#2a2c33",
228
+ black: "#111216",
229
+ white: "#f4f4f6",
230
+ head: "#fff2bf",
231
+ tail: "#ff1f3a"
232
+ }, Te = [
233
+ "body",
234
+ "glass",
235
+ "wheels",
236
+ "trim",
237
+ "lights"
238
+ ];
239
+ function Ee(e) {
240
+ let t = e.index ? e.toNonIndexed() : e;
241
+ return t.deleteAttribute("uv"), t;
242
+ }
243
+ function U(e, t) {
244
+ let n = Ee(e), r = new p(t), i = new Float32Array(n.attributes.position.count * 3);
245
+ for (let e = 0; e < i.length; e += 3) r.toArray(i, e);
246
+ return n.setAttribute("color", new b(i, 3)), n;
247
+ }
248
+ function De(e, t, n, r, i = r.bevel) {
249
+ let a = Math.max(.01, t - n * 2);
250
+ return new y(e, {
251
+ depth: a,
252
+ bevelEnabled: !0,
253
+ bevelThickness: n,
254
+ bevelSize: n,
255
+ bevelSegments: i,
256
+ curveSegments: r.curve
257
+ }).translate(0, 0, -a / 2);
258
+ }
259
+ function W(e, t, n, r, i, a, o, s = .025) {
260
+ if (e.low || !s || s * 2.5 > Math.min(t, n, r)) return new c(t, n, r).translate(i, a, o);
261
+ let l = t / 2 - s, u = n / 2 - s, d = new M();
262
+ return d.moveTo(-l, -u), d.lineTo(l, -u), d.lineTo(l, u), d.lineTo(-l, u), De(d, r, s, e, 1).translate(i, a, o);
263
+ }
264
+ function Oe(e, t, n, r, i, a, o) {
265
+ let s = new m(e, e, t, n);
266
+ return r === "x" ? s.rotateZ(Math.PI / 2) : r === "z" && s.rotateX(Math.PI / 2), s.translate(i, a, o);
267
+ }
268
+ function ke(e) {
269
+ let t = new M();
270
+ return e.forEach((e, n) => {
271
+ if (e.arch) {
272
+ let [n, r, i, a] = e.arch, o = Math.asin((r - a) / i);
273
+ t.absarc(n, r, i, Math.PI + o, -o, !0);
274
+ } else e.q ? t.quadraticCurveTo(...e.q) : n === 0 ? t.moveTo(...e) : t.lineTo(...e);
275
+ }), t;
276
+ }
277
+ function Ae(e, t, n) {
278
+ n.forEach(({ x: n, r, w: i, z: a }) => {
279
+ [-1, 1].forEach((o) => {
280
+ let s = o * a;
281
+ t.wheels.push(U(Oe(r, i, e.radial, "z", n, r, s), H.tire));
282
+ let c = [[
283
+ r * .6,
284
+ e.radial,
285
+ H.rim,
286
+ .004
287
+ ]];
288
+ e.low || c.push([
289
+ r * .2,
290
+ 6,
291
+ H.hub,
292
+ .008
293
+ ]), c.forEach(([e, a, c, l]) => {
294
+ let u = new f(e, a);
295
+ o < 0 && u.rotateY(Math.PI), t.wheels.push(U(u.translate(n, r, s + o * (i / 2 + l)), c));
296
+ });
297
+ });
298
+ });
299
+ }
300
+ function je(e) {
301
+ let t = {
302
+ body: [],
303
+ glass: [],
304
+ wheels: [],
305
+ trim: [],
306
+ lights: []
307
+ };
308
+ return t.body.push(De(ke([
309
+ [-1.06, .16],
310
+ { arch: [
311
+ -.72,
312
+ .22,
313
+ .31,
314
+ .16
315
+ ] },
316
+ { arch: [
317
+ .76,
318
+ .22,
319
+ .31,
320
+ .16
321
+ ] },
322
+ [1.1, .16],
323
+ { q: [
324
+ 1.15,
325
+ .17,
326
+ 1.15,
327
+ .26
328
+ ] },
329
+ { q: [
330
+ 1.14,
331
+ .38,
332
+ 1,
333
+ .4
334
+ ] },
335
+ [.42, .46],
336
+ [-.7, .48],
337
+ { q: [
338
+ -1.06,
339
+ .49,
340
+ -1.1,
341
+ .38
342
+ ] },
343
+ [-1.11, .22],
344
+ { q: [
345
+ -1.11,
346
+ .16,
347
+ -1.06,
348
+ .16
349
+ ] }
350
+ ]), .9, .05, e)), t.glass.push(De(ke([
351
+ [.4, .46],
352
+ [.02, .74],
353
+ [-.42, .74],
354
+ [-.86, .47]
355
+ ]), .76, .03, e)), t.body.push(W(e, .5, .06, .8, -.2, .79, 0, .02)), t.body.push(W(e, .16, .05, .86, -1.05, .6, 0, .02)), e.low || [-1, 1].forEach((n) => t.body.push(W(e, .08, .05, .07, .32, .54, n * .475, 0))), Ae(e, t, [{
356
+ x: .76,
357
+ r: .22,
358
+ w: .2,
359
+ z: .4
360
+ }, {
361
+ x: -.72,
362
+ r: .22,
363
+ w: .2,
364
+ z: .4
365
+ }]), t.trim.push(U(W(e, .1, .1, .92, 1.17, .17, 0, .03), H.dark), U(W(e, .1, .1, .92, -1.15, .18, 0, .03), H.dark), U(W(e, .04, .07, .44, 1.2, .27, 0, 0), H.black)), [-1, 1].forEach((n) => {
366
+ t.trim.push(U(W(e, .05, .12, .05, -1.03, .53, n * .3, 0), H.dark)), e.low || t.trim.push(U(Oe(.035, .1, 8, "x", -1.17, .1, n * .22), H.chrome)), t.lights.push(U(W(e, .06, .06, .2, 1.18, .35, n * .29, 0), H.head), U(W(e, .04, .06, .24, -1.17, .36, n * .27, 0), H.tail));
367
+ }), t;
368
+ }
369
+ function Me(e) {
370
+ let t = {
371
+ body: [],
372
+ glass: [],
373
+ wheels: [],
374
+ trim: [],
375
+ lights: []
376
+ };
377
+ return t.body.push(De(ke([
378
+ [-1.12, .17],
379
+ { arch: [
380
+ -.74,
381
+ .25,
382
+ .34,
383
+ .17
384
+ ] },
385
+ { arch: [
386
+ .8,
387
+ .22,
388
+ .31,
389
+ .17
390
+ ] },
391
+ [1.15, .17],
392
+ [1.18, .21],
393
+ [1.18, .44],
394
+ [1.13, .5],
395
+ [-1.1, .5],
396
+ [-1.15, .46],
397
+ [-1.15, .22]
398
+ ]), .96, .05, e)), t.glass.push(De(ke([
399
+ [.28, .47],
400
+ [-.02, .76],
401
+ [-.58, .76],
402
+ [-.8, .47]
403
+ ]), .8, .03, e)), t.body.push(W(e, .62, .06, .86, -.3, .8, 0, .02), W(e, .34, .08, .3, .62, .58, 0, .025), W(e, .2, .05, 1, -1.04, .75, 0, .02)), Ae(e, t, [{
404
+ x: .8,
405
+ r: .22,
406
+ w: .2,
407
+ z: .4
408
+ }, {
409
+ x: -.74,
410
+ r: .25,
411
+ w: .26,
412
+ z: .39
413
+ }]), t.trim.push(U(W(e, .06, .08, 1, 1.23, .2, 0, .02), H.chrome), U(W(e, .06, .08, 1, -1.23, .2, 0, .02), H.chrome), U(W(e, .03, .16, .62, 1.235, .33, 0, 0), H.black), U(W(e, .03, .05, .22, .79, .59, 0, 0), H.black)), [-1, 1].forEach((n) => {
414
+ t.trim.push(U(W(e, .82, .012, .08, .71, .553, n * .08, 0), H.black), U(W(e, .6, .012, .08, -.3, .833, n * .08, 0), H.black), U(W(e, .3, .012, .08, -.98, .553, n * .08, 0), H.black), U(W(e, .06, .18, .06, -1.04, .64, n * .34, 0), H.dark)), e.low || t.trim.push(U(Oe(.04, .12, 8, "x", -1.2, .12, n * .3), H.chrome)), t.lights.push(U(Oe(.065, .03, e.low ? 6 : 10, "x", 1.245, .34, n * .37), H.head), U(W(e, .03, .07, .3, -1.215, .4, n * .26, 0), H.tail));
415
+ }), t;
416
+ }
417
+ function Ne(e) {
418
+ let t = {
419
+ body: [],
420
+ glass: [],
421
+ wheels: [],
422
+ trim: [],
423
+ lights: []
424
+ }, n = De(ke([
425
+ [-.96, .12],
426
+ [1.14, .12],
427
+ [1.14, .17],
428
+ [.55, .3],
429
+ [.2, .36],
430
+ [.14, .4],
431
+ [-.16, .4],
432
+ [-.24, .54],
433
+ [-.4, .56],
434
+ [-.96, .3]
435
+ ]), .44, .04, e), r = n.attributes.position;
436
+ for (let e = 0; e < r.count; e += 1) {
437
+ let t = r.getX(e), n = t > .35 ? 1 - .55 * Math.min(1, (t - .35) / .85) : t < -.5 ? 1 - .3 * Math.min(1, (-.5 - t) / .5) : 1;
438
+ r.setZ(e, r.getZ(e) * n);
439
+ }
440
+ return n.computeVertexNormals(), t.body.push(n, W(e, .6, .2, .76, -.12, .24, 0, .05), W(e, .22, .04, 1, 1.12, .07, 0, .015), W(e, .24, .05, .84, -.98, .71, 0, .02)), t.glass.push(W(e, .04, .045, .15, .08, .49, 0, 0)), Ae(e, t, [{
441
+ x: .82,
442
+ r: .2,
443
+ w: .17,
444
+ z: .415
445
+ }, {
446
+ x: -.74,
447
+ r: .24,
448
+ w: .24,
449
+ z: .38
450
+ }]), t.trim.push(U(new ie(.12, e.low ? 8 : 10, e.low ? 6 : 8).translate(-.03, .47, 0), H.white), U(W(e, .06, .36, .05, -.94, .52, 0, 0), H.dark), U(W(e, .03, .06, .08, -.25, .56, 0, 0), H.black)), [-1, 1].forEach((n) => {
451
+ t.trim.push(U(W(e, .24, .12, .025, 1.14, .1, n * .5, 0), H.dark), U(W(e, .3, .24, .025, -.98, .64, n * .43, 0), H.dark), U(W(e, .04, .03, .2, .82, .2, n * .24, 0), H.dark), U(W(e, .04, .03, .1, -.74, .24, n * .23, 0), H.dark));
452
+ }), e.low || t.trim.push(U(Oe(.03, .08, 8, "x", -1, .28, 0), H.chrome)), t.lights.push(U(W(e, .03, .06, .1, -1.015, .2, 0, 0), H.tail)), t;
453
+ }
454
+ function Pe(e) {
455
+ let t = (t, n) => e ? new E(t) : new D({
456
+ ...t,
457
+ ...n
458
+ });
459
+ return {
460
+ body: t({ color: 16777215 }, {
461
+ roughness: .28,
462
+ metalness: .3
463
+ }),
464
+ glass: t({ color: 1844790 }, {
465
+ roughness: .12,
466
+ metalness: .6
467
+ }),
468
+ wheels: t({
469
+ color: 16777215,
470
+ vertexColors: !0
471
+ }, {
472
+ roughness: .75,
473
+ metalness: .15
474
+ }),
475
+ trim: t({
476
+ color: 16777215,
477
+ vertexColors: !0
478
+ }, {
479
+ roughness: .35,
480
+ metalness: .55
481
+ }),
482
+ lights: new T({
483
+ color: 16777215,
484
+ vertexColors: !0,
485
+ toneMapped: !1
486
+ })
487
+ };
488
+ }
489
+ function Fe(e, t, n, r, i) {
490
+ let a = Te.filter((e) => t[e].length).map((n) => {
491
+ let r = I(t[n].map(Ee));
492
+ if (!r) throw Error(`avalanche cars: cannot merge ${e}.${n}`);
493
+ return r.computeBoundingBox(), {
494
+ name: n,
495
+ geometry: r
496
+ };
497
+ }), o = new s();
498
+ a.forEach(({ geometry: e }) => o.union(e.boundingBox));
499
+ let c = o.getCenter(new F()), l = o.getSize(new F());
500
+ return a.forEach(({ geometry: e }) => {
501
+ e.translate(-c.x, -c.y, -c.z), e.computeBoundingSphere();
502
+ }), {
503
+ kind: e,
504
+ parts: a.map(({ name: e, geometry: t }) => ({
505
+ geometry: t,
506
+ material: n[e],
507
+ tinted: e === "body"
508
+ })),
509
+ palette: r,
510
+ radius: Math.cbrt(l.x * l.y * l.z * 3 / (4 * Math.PI)),
511
+ ...i
512
+ };
513
+ }
514
+ function Ie({ lowPower: e = !1 } = {}) {
515
+ let t = {
516
+ low: e,
517
+ curve: e ? 3 : 5,
518
+ bevel: e ? 1 : 2,
519
+ radial: e ? 8 : 14
520
+ }, n = Pe(e), r = we.map((e) => new p(e)), i = {
521
+ count: 10,
522
+ countLow: 6
523
+ };
524
+ return [
525
+ Fe("car", je(t), n, r, {
526
+ mass: 3,
527
+ bounce: .35,
528
+ friction: .6,
529
+ drag: .04,
530
+ ...i
531
+ }),
532
+ Fe("car-muscle", Me(t), n, r, {
533
+ mass: 3.4,
534
+ bounce: .3,
535
+ friction: .62,
536
+ drag: .04,
537
+ ...i
538
+ }),
539
+ Fe("car-racer", Ne(t), n, r, {
540
+ mass: 2.6,
541
+ bounce: .4,
542
+ friction: .55,
543
+ drag: .05,
544
+ ...i
545
+ })
546
+ ];
547
+ }
548
+ // src/effects/avalanche/models/tanks.js
549
+ var Le = ["green", "red"], Re = .62, ze = .1, Be = new F(2.95, 1.1, 1.6), Ve = 1.2, He = .74, Ue = new p("#3b3b3e"), We = new p("#1b1b1d"), Ge = (e) => e <= .0031308 ? e * 12.92 : 1.055 * e ** (1 / 2.4) - .055;
550
+ function Ke() {
551
+ return {
552
+ p: [],
553
+ n: [],
554
+ c: []
555
+ };
556
+ }
557
+ function G(e, t, n, r, { srgb: i = !0, capY: a = Infinity } = {}) {
558
+ let o = t.attributes.position, s = t.attributes.normal, c = t.attributes.color, l = new C().getNormalMatrix(n), u = new F();
559
+ for (let t = 0; t < o.count; t += 1) {
560
+ u.fromBufferAttribute(o, t);
561
+ let d = u.y <= a;
562
+ if (u.applyMatrix4(n), d && r.expandByPoint(u), e.p.push(u.x, u.y, u.z), u.fromBufferAttribute(s, t).applyMatrix3(l).normalize(), e.n.push(u.x, u.y, u.z), c) {
563
+ let n = c.getX(t), r = c.getY(t), a = c.getZ(t);
564
+ i ? e.c.push(Ge(n), Ge(r), Ge(a)) : e.c.push(n, r, a);
565
+ } else e.c.push(1, 1, 1);
566
+ }
567
+ }
568
+ function qe(e, t, n) {
569
+ let r = new Float32Array(e.p);
570
+ for (let e = 0; e < r.length; e += 3) r[e] = (r[e] - t.x) * n, r[e + 1] = (r[e + 1] - t.y) * n, r[e + 2] = (r[e + 2] - t.z) * n;
571
+ let i = new u();
572
+ return i.setAttribute("position", new l(r, 3)), i.setAttribute("normal", new l(new Float32Array(e.n), 3)), i.setAttribute("color", new l(new Float32Array(e.c), 3)), i.computeBoundingSphere(), i;
573
+ }
574
+ function Je(t) {
575
+ let n = e[0], r = e[5], i = e[6], a = .38, o = [[n.x, 0], [e[4].x, 0]], s = (e, t, n, r, i) => {
576
+ for (let s = 0; s <= i; s += 1) {
577
+ let c = n + (r - n) * s / i;
578
+ o.push([e + Math.cos(c) * a, t + Math.sin(c) * a]);
579
+ }
580
+ };
581
+ s(r.x, r.y, -2, Math.PI / 2, 6), s(i.x, i.y, Math.PI / 2, Math.PI + 2, 6), o.push(o[0]);
582
+ let c = [], d = [], f = [], p = Math.abs(n.z), m = 0;
583
+ for (let e = 0; e < o.length - 1; e += 1) {
584
+ let [n, r] = o[e], [i, a] = o[e + 1], s = Math.hypot(i - n, a - r);
585
+ if (s < 1e-6) continue;
586
+ let l = (a - r) / s, u = -(i - n) / s, h = Math.max(1, Math.round(s / t));
587
+ for (let e = 0; e < h; e += 1, m += 1) {
588
+ let t = e / h, o = (e + 1) / h, s = n + (i - n) * t, g = r + (a - r) * t - .03, _ = n + (i - n) * o, v = r + (a - r) * o - .03, y = m % 2 ? We : Ue;
589
+ for (let e of [-1, 1]) {
590
+ let t = e * p - He / 2, n = e * p + He / 2, r = [
591
+ [
592
+ s,
593
+ g,
594
+ t
595
+ ],
596
+ [
597
+ _,
598
+ v,
599
+ t
600
+ ],
601
+ [
602
+ _,
603
+ v,
604
+ n
605
+ ],
606
+ [
607
+ s,
608
+ g,
609
+ t
610
+ ],
611
+ [
612
+ _,
613
+ v,
614
+ n
615
+ ],
616
+ [
617
+ s,
618
+ g,
619
+ n
620
+ ]
621
+ ];
622
+ for (let e of r) c.push(e[0], e[1], e[2]), d.push(l, u, 0), f.push(y.r, y.g, y.b);
623
+ }
624
+ }
625
+ }
626
+ let h = new u();
627
+ return h.setAttribute("position", new l(new Float32Array(c), 3)), h.setAttribute("normal", new l(new Float32Array(d), 3)), h.setAttribute("color", new l(new Float32Array(f), 3)), h;
628
+ }
629
+ function Ye(e, t, n) {
630
+ return e ? new E(t) : new D({
631
+ ...t,
632
+ ...n
633
+ });
634
+ }
635
+ function Xe({ lowPower: a = !1 } = {}) {
636
+ let o = n(), c = Je(a ? .2 : .12), l = new s(), u = new w(), d = new w().makeTranslation(r.x, r.y, r.z), f = new w().compose(r.clone().add(i), new te().setFromAxisAngle(new F(0, 0, 1), ze), new F(Re, 1, 1)), m = Ke();
637
+ G(m, o.hull, u, l), G(m, o.turret, d, l, { capY: Ve });
638
+ let h = Ke();
639
+ G(h, o.hullAccent, u, l), G(h, o.turretAccent, d, l, { capY: Ve });
640
+ let _ = Ke();
641
+ G(_, c, u, l, { srgb: !1 });
642
+ let v = new w(), y = new te();
643
+ for (let t of e) {
644
+ let n = t.r / e[0].r;
645
+ v.compose(new F(t.x, t.y, t.z), y, new F(n, n, n)), G(_, o.wheel, v, l);
646
+ }
647
+ let b = Ke();
648
+ G(b, o.gun, f, l);
649
+ let x = Ke();
650
+ G(x, o.lamps, u, l), o.dispose(), c.dispose();
651
+ let S = l.getSize(new F()), C = l.getCenter(new F()), E = Math.min(Be.x / S.x, Be.y / S.y, Be.z / S.z), D = Ye(a, {
652
+ vertexColors: !0,
653
+ color: 16777215
654
+ }, {
655
+ roughness: .62,
656
+ metalness: .18,
657
+ flatShading: !0
658
+ }), O = Ye(a, {
659
+ vertexColors: !0,
660
+ side: g
661
+ }, {
662
+ roughness: .8,
663
+ metalness: .2
664
+ }), k = Ye(a, {
665
+ vertexColors: !0,
666
+ color: "#7a7f88"
667
+ }, {
668
+ roughness: .4,
669
+ metalness: .45
670
+ }), A = new T({ color: new p(1.35, 1.35, 1.35) }), ee = new T({ color: "#fff1c2" });
671
+ return [{
672
+ kind: "tank",
673
+ parts: [
674
+ {
675
+ geometry: qe(m, C, E),
676
+ material: D,
677
+ tinted: !0
678
+ },
679
+ {
680
+ geometry: qe(h, C, E),
681
+ material: A,
682
+ tinted: !0
683
+ },
684
+ {
685
+ geometry: qe(_, C, E),
686
+ material: O
687
+ },
688
+ {
689
+ geometry: qe(b, C, E),
690
+ material: k
691
+ },
692
+ {
693
+ geometry: qe(x, C, E),
694
+ material: ee
695
+ }
696
+ ],
697
+ palette: Le.map((e) => t[e].tint.clone().convertLinearToSRGB()),
698
+ radius: .85,
699
+ mass: 5,
700
+ bounce: .2,
701
+ friction: .8,
702
+ drag: .04,
703
+ count: 6,
704
+ countLow: 4
705
+ }];
706
+ }
707
+ // src/effects/avalanche/models/confetti.js
708
+ var Ze = [
709
+ "#ff4d8d",
710
+ "#ffd23f",
711
+ "#3ddc97",
712
+ "#4cc9f0",
713
+ "#9b5de5",
714
+ "#ff7b29",
715
+ "#f15bb5",
716
+ "#ffffff"
717
+ ], Qe = [
718
+ "#ffcf4a",
719
+ "#ffd23f",
720
+ "#ffe08a",
721
+ "#ffb627",
722
+ "#ff4d8d",
723
+ "#4cc9f0"
724
+ ], $e = (e) => e.map((e) => new p(e));
725
+ function et(e, t, n = {}) {
726
+ return e ? new E(t) : new D({
727
+ roughness: .4,
728
+ metalness: .25,
729
+ ...t,
730
+ ...n
731
+ });
732
+ }
733
+ function tt() {
734
+ let e = new A(.13, .2, 1, 4), t = e.attributes.position;
735
+ for (let e = 0; e < t.count; e += 1) {
736
+ let n = t.getY(e) / .1;
737
+ t.setZ(e, .035 * n * n);
738
+ }
739
+ return e.computeVertexNormals(), e.center(), e;
740
+ }
741
+ function nt(e) {
742
+ let t = e ? 48 : 84, n = 1.3, r = new Float32Array((t + 1) * 6), i = new Float32Array((t + 1) * 6), a = [];
743
+ for (let e = 0; e <= t; e += 1) {
744
+ let o = e / t, s = o * 3.5 * Math.PI * 2, c = .14 + .06 * o, l = Math.cos(s), u = Math.sin(s), d = o * n - n / 2, f = .02 * Math.sin(s * .5);
745
+ for (let t = 0; t < 2; t += 1) {
746
+ let n = (e * 2 + t) * 3;
747
+ r[n] = l * c, r[n + 1] = d + (t ? 1 : -1) * .055 * .5 + f, r[n + 2] = u * c, i[n] = l, i[n + 2] = u;
748
+ }
749
+ if (e < t) {
750
+ let t = e * 2;
751
+ a.push(t, t + 1, t + 2, t + 1, t + 3, t + 2);
752
+ }
753
+ }
754
+ let o = new u();
755
+ return o.setAttribute("position", new l(r, 3)), o.setAttribute("normal", new l(i, 3)), o.setIndex(a), o.center(), o;
756
+ }
757
+ function rt() {
758
+ let e = new M();
759
+ for (let t = 0; t < 10; t += 1) {
760
+ let n = t % 2 ? .15 : .35, r = t / 10 * Math.PI * 2 + Math.PI / 2, i = Math.cos(r) * n, a = Math.sin(r) * n;
761
+ t ? e.lineTo(i, a) : e.moveTo(i, a);
762
+ }
763
+ let t = new y(e, {
764
+ depth: .08,
765
+ bevelEnabled: !0,
766
+ bevelThickness: .03,
767
+ bevelSize: .02,
768
+ bevelSegments: 1
769
+ });
770
+ return t.center(), t;
771
+ }
772
+ function it({ lowPower: e = !1 } = {}) {
773
+ let t = tt(), n = nt(e), r = rt(), i = new f(.075, e ? 8 : 12);
774
+ return [
775
+ t,
776
+ n,
777
+ r,
778
+ i
779
+ ].forEach((e) => e.computeBoundingSphere()), [
780
+ {
781
+ kind: "confetti",
782
+ parts: [{
783
+ geometry: t,
784
+ material: et(e, {
785
+ color: 16777215,
786
+ side: g
787
+ }, {
788
+ metalness: .35,
789
+ roughness: .4
790
+ }),
791
+ tinted: !0
792
+ }],
793
+ palette: $e(Ze),
794
+ radius: .12,
795
+ mass: .02,
796
+ bounce: .1,
797
+ friction: .8,
798
+ drag: .92,
799
+ count: 500,
800
+ countLow: 200
801
+ },
802
+ {
803
+ kind: "streamer",
804
+ parts: [{
805
+ geometry: n,
806
+ material: et(e, {
807
+ color: 16777215,
808
+ side: g
809
+ }, {
810
+ metalness: .3,
811
+ roughness: .45
812
+ }),
813
+ tinted: !0
814
+ }],
815
+ palette: $e(Ze),
816
+ radius: .4,
817
+ mass: .03,
818
+ bounce: .12,
819
+ friction: .75,
820
+ drag: .85,
821
+ count: 40,
822
+ countLow: 16
823
+ },
824
+ {
825
+ kind: "star",
826
+ parts: [{
827
+ geometry: r,
828
+ material: et(e, {
829
+ color: 16777215,
830
+ emissive: 2758656
831
+ }, {
832
+ metalness: .6,
833
+ roughness: .25
834
+ }),
835
+ tinted: !0
836
+ }],
837
+ palette: $e(Qe),
838
+ radius: .35,
839
+ mass: .06,
840
+ bounce: .25,
841
+ friction: .55,
842
+ drag: .5,
843
+ count: 40,
844
+ countLow: 20
845
+ },
846
+ {
847
+ kind: "spark",
848
+ parts: [{
849
+ geometry: i,
850
+ material: et(e, {
851
+ color: 16777215,
852
+ emissive: 3351040,
853
+ side: g
854
+ }, {
855
+ metalness: .5,
856
+ roughness: .25
857
+ }),
858
+ tinted: !0
859
+ }],
860
+ palette: $e(Qe),
861
+ radius: .08,
862
+ mass: .015,
863
+ bounce: .1,
864
+ friction: .8,
865
+ drag: .9,
866
+ count: 160,
867
+ countLow: 60
868
+ }
869
+ ];
870
+ }
871
+ // src/effects/avalanche/physics.js
872
+ var at = 1 / 30, ot = 6, st = .1, ct = 6, lt = 6, ut = .3, dt = 7, ft = 10, pt = 60, mt = 1.2, ht = 4, gt = .15, _t = 1.5, vt = .3, yt = .6, bt = .3, xt = .03, St = .1, Ct = .01, wt = .2, Tt = .08, Et = 3, Dt = .8, Ot = .15, kt = .4, At = 14, jt = .3, Mt = .35, Nt = 18, Pt = 5, Ft = .9, It = 2.5, Lt = 3, Rt = 64, zt = 40;
873
+ Object.freeze({
874
+ DT_MAX: at,
875
+ MAX_SUBSTEPS: ot,
876
+ LIGHT_MASS: st,
877
+ DEFAULT_TTL: ct,
878
+ DRAG_K: lt,
879
+ AIR_SPIN_DAMP: ut,
880
+ CONTACT_SPIN_DAMP: dt,
881
+ FLOOR_FRICTION: ft,
882
+ SETTLE_K: pt,
883
+ BOUNCE_MIN: mt,
884
+ IMPACT_SPEED: ht,
885
+ IMPACT_GAP: gt,
886
+ WAKE_SPEED: _t,
887
+ SLEEP_SPEED: vt,
888
+ SLEEP_SPIN: yt,
889
+ SLEEP_TIME: bt,
890
+ FADE_IN: Ot,
891
+ FADE_OUT: kt,
892
+ FLUTTER: At,
893
+ SWEEP_WIND: Nt,
894
+ SWEEP_LIFT: Pt,
895
+ WIND_TAU: Ft,
896
+ WALL_OPEN_TIME: It,
897
+ OUT_MARGIN: Lt
898
+ });
899
+ var K = (e, t) => typeof e == "number" && Number.isFinite(e) ? e : t, q = (e, t, n) => e < t ? t : e > n ? n : e;
900
+ function Bt() {
901
+ return {
902
+ id: 0,
903
+ kind: "",
904
+ x: 0,
905
+ y: 0,
906
+ z: 0,
907
+ vx: 0,
908
+ vy: 0,
909
+ vz: 0,
910
+ qx: 0,
911
+ qy: 0,
912
+ qz: 0,
913
+ qw: 1,
914
+ wx: 0,
915
+ wy: 0,
916
+ wz: 0,
917
+ radius: .5,
918
+ mass: 1,
919
+ age: 0,
920
+ ttl: ct,
921
+ scale: 0,
922
+ landed: !1,
923
+ alive: !1,
924
+ asleep: !1,
925
+ bounce: .3,
926
+ friction: .5,
927
+ drag: .05,
928
+ hx: 0,
929
+ hy: 0,
930
+ hz: 0,
931
+ variant: 0,
932
+ data: null,
933
+ light: !1,
934
+ invMass: 1,
935
+ cr: .5,
936
+ sup: !1,
937
+ restT: 0,
938
+ impactT: -1e9,
939
+ phase: 0,
940
+ kx: 1,
941
+ ky: 1,
942
+ kz: 1,
943
+ px: 0,
944
+ py: 0,
945
+ pz: 0,
946
+ floor: !1
947
+ };
948
+ }
949
+ function Vt({ gravity: e = -26, floorY: t = -5.5, left: n = -8, right: r = 8, maxBodies: i = 400, zMin: a = -2, zMax: o = 2, impactSpeed: s = ht, lightImpacts: c = !1, random: l = Math.random } = {}) {
950
+ let u = Math.max(1, Math.floor(K(i, 400))), d = K(e, -26), f = Math.min(K(a, -2), K(o, 2)), p = Math.max(K(a, -2), K(o, 2)), m = K(s, ht), h = K(t, -5.5), g = K(n, -8), _ = K(r, 8);
951
+ if (_ < g) {
952
+ let e = g;
953
+ g = _, _ = e;
954
+ }
955
+ let v = [], y = [], b = [], x = new Int32Array(u), S = new Int32Array(u), C = new Int32Array(u), w = new Int32Array(u), T = /* @__PURE__ */ new Int32Array(4096), E = 1, D = 0, O = 0, k = 0, A = 0, ee = 1;
956
+ function j(e) {
957
+ e.asleep = !1, e.restT = 0;
958
+ }
959
+ function te(e, t) {
960
+ if (!(t < m || e.light && !c || !b.length) && !(D - e.impactT < gt)) {
961
+ e.impactT = D;
962
+ for (let n = 0; n < b.length; n++) try {
963
+ b[n](e, t);
964
+ } catch {}
965
+ }
966
+ }
967
+ function ne(e, t) {
968
+ let n = e.vx, r = e.vy + d * t, i = e.vz, a = e.drag, o = e.landed;
969
+ if (a > jt && !o && (n += Math.sin(e.age * 3.3 + e.phase) * At * a * t), a > 0) {
970
+ let e = a * lt * t, o = 1 / (1 + e);
971
+ n = (n + e * O) * o, r = (r + e * k) * o, i *= o;
972
+ }
973
+ if (o) {
974
+ let r = 1 / (1 + e.friction * ft * t);
975
+ n *= r, i *= r;
976
+ }
977
+ e.vx = n, e.vy = r, e.vz = i, e.x += n * t, e.y += r * t, e.z += i * t;
978
+ let s = e.wx, c = e.wy, l = e.wz, u = e.qx, f = e.qy, p = e.qz, m = e.qw;
979
+ if (o) {
980
+ let n = 2 * (u * f + m * p), r = 1 - 2 * (u * u + p * p), i = 2 * (f * p - m * u), a = Math.abs(n) * e.kx, o = Math.abs(r) * e.ky, d = Math.abs(i) * e.kz, h, g, _;
981
+ o >= a && o >= d ? (_ = r < 0 ? -1 : 1, h = 2 * (u * f - m * p), g = 2 * (f * p + m * u)) : a >= d ? (_ = n < 0 ? -1 : 1, h = 1 - 2 * (f * f + p * p), g = 2 * (u * p - m * f)) : (_ = i < 0 ? -1 : 1, h = 2 * (u * p + m * f), g = 1 - 2 * (u * u + f * f));
982
+ let v = pt * t * _;
983
+ s -= g * v, l += h * v;
984
+ let y = 1 / (1 + dt * t);
985
+ s *= y, c *= y, l *= y;
986
+ } else if (s !== 0 || c !== 0 || l !== 0) {
987
+ let e = 1 / (1 + ut * t);
988
+ s *= e, c *= e, l *= e;
989
+ }
990
+ if (e.wx = s, e.wy = c, e.wz = l, s !== 0 || c !== 0 || l !== 0) {
991
+ let n = .5 * t, r = u + n * (s * m + c * p - l * f), i = f + n * (c * m + l * u - s * p), a = p + n * (l * m + s * f - c * u), o = m - n * (s * u + c * f + l * p), d = Math.sqrt(r * r + i * i + a * a + o * o);
992
+ if (d > 1e-9) {
993
+ let t = 1 / d;
994
+ e.qx = r * t, e.qy = i * t, e.qz = a * t, e.qw = o * t;
995
+ } else e.qx = 0, e.qy = 0, e.qz = 0, e.qw = 1;
996
+ }
997
+ }
998
+ function re(e) {
999
+ let t = e.cr, n = t;
1000
+ if (e.hx > 0) {
1001
+ let r = e.qx, i = e.qy, a = e.qz, o = e.qw, s = 2 * (r * i + o * a), c = 1 - 2 * (r * r + a * a), l = 2 * (i * a - o * r);
1002
+ n = (e.hx * Math.abs(s) + e.hy * Math.abs(c) + e.hz * Math.abs(l)) * (t / e.radius);
1003
+ }
1004
+ if (n += h, e.floor = e.y <= n + xt, e.floor && (e.sup = !0, e.y < n && (e.y = n, e.vy < 0))) {
1005
+ let t = -e.vy;
1006
+ if (t > mt) {
1007
+ e.vy = t * e.bounce;
1008
+ let n = t * Mt;
1009
+ e.wx += (l() - .5) * n, e.wz += (l() - .5) * n - e.vx * .3 / e.radius;
1010
+ } else e.vy = 0;
1011
+ t >= m && te(e, t);
1012
+ }
1013
+ A <= 0 ? e.x - t < g ? (e.x = g + t, e.vx < 0 && (e.vx = e.vx < -1.2 ? -e.vx * (.25 + .5 * e.bounce) : 0)) : e.x + t > _ && (e.x = _ - t, e.vx > 0 && (e.vx = e.vx > mt ? -e.vx * (.25 + .5 * e.bounce) : 0)) : (e.x - t > _ + Lt || e.x + t < g - Lt) && (e.alive = !1), e.z < f ? (e.z = f, e.vz < 0 && (e.vz *= -.3)) : e.z > p && (e.z = p, e.vz > 0 && (e.vz *= -.3)), (e.y < h - 20 || e.x !== e.x || e.y !== e.y || e.z !== e.z || e.qw !== e.qw) && (e.alive = !1);
1014
+ }
1015
+ function M(e, t) {
1016
+ if (e.asleep) {
1017
+ e.sup || j(e);
1018
+ return;
1019
+ }
1020
+ if (!e.sup) {
1021
+ e.restT = 0;
1022
+ return;
1023
+ }
1024
+ let n = e.x - e.px, r = e.y - e.py, i = e.z - e.pz, a = (n * n + r * r + i * i) / (t * t), o = e.wx * e.wx + e.wy * e.wy + e.wz * e.wz;
1025
+ a < vt * vt && o < yt * yt ? (e.restT += t, e.restT >= bt && (e.asleep = !0, e.vx = 0, e.vy = 0, e.vz = 0, e.wx = 0, e.wy = 0, e.wz = 0)) : e.restT = 0;
1026
+ }
1027
+ function ie(e, t) {
1028
+ let n = t.x - e.x, r = t.y - e.y, i = t.z - e.z, a = e.cr + t.cr, o = a + xt, s = n * n + r * r + i * i;
1029
+ if (s >= o * o) return;
1030
+ let c = Math.sqrt(s), u = 0, d = 1, f = 0;
1031
+ if (c > 1e-6) {
1032
+ let e = 1 / c;
1033
+ u = n * e, d = r * e, f = i * e;
1034
+ } else c = 0;
1035
+ if (d > St ? t.sup = !0 : d < -.1 && (e.sup = !0), e.asleep && t.asleep) return;
1036
+ let p = a - c;
1037
+ if (p <= 0) return;
1038
+ let h = (t.vx - e.vx) * u + (t.vy - e.vy) * d + (t.vz - e.vz) * f;
1039
+ (-h > _t || p > Tt * a) && (e.asleep && j(e), t.asleep && j(t));
1040
+ let g = e.asleep ? 0 : e.invMass, _ = t.asleep ? 0 : t.invMass;
1041
+ if (g + _ <= 0) return;
1042
+ let v = g, y = _;
1043
+ if (d > St && e.floor ? v = 0 : d < -.1 && t.floor && (y = 0), v + y <= 0 && (v = g, y = _), h < 0) {
1044
+ let n = -h;
1045
+ n < Et && (g = v, _ = y);
1046
+ let r = g + _, i = e.vx * e.vx + e.vy * e.vy + e.vz * e.vz > t.vx * t.vx + t.vy * t.vy + t.vz * t.vz ? e : t, a = (1 + (n > mt ? e.bounce < t.bounce ? e.bounce : t.bounce : 0)) * n / r;
1047
+ e.vx -= u * a * g, e.vy -= d * a * g, e.vz -= f * a * g, t.vx += u * a * _, t.vy += d * a * _, t.vz += f * a * _;
1048
+ let o = t.vx - e.vx, s = t.vy - e.vy, c = t.vz - e.vz, p = o * u + s * d + c * f;
1049
+ o -= p * u, s -= p * d, c -= p * f;
1050
+ let b = Math.sqrt(o * o + s * s + c * c);
1051
+ if (b > 1e-6) {
1052
+ let n = (e.friction + t.friction) * .5, i = b / r;
1053
+ i > n * a && (i = n * a);
1054
+ let l = i / b;
1055
+ e.vx += o * l * g, e.vy += s * l * g, e.vz += c * l * g, t.vx -= o * l * _, t.vy -= s * l * _, t.vz -= c * l * _;
1056
+ }
1057
+ if (n > mt * 2) {
1058
+ let e = n * Mt * .5;
1059
+ i.wx += (l() - .5) * e, i.wz += (l() - .5) * e;
1060
+ }
1061
+ n >= m && te(i, n);
1062
+ }
1063
+ if (p > Ct) {
1064
+ let n = v / (v + y);
1065
+ v > 0 && y > 0 && (n = n < wt ? wt : n > .8 ? .8 : n);
1066
+ let r = (p - Ct) * Dt, i = r * n, a = r - i;
1067
+ e.x -= u * i, e.y -= d * i, e.z -= f * i, t.x += u * a, t.y += d * a, t.z += f * a;
1068
+ }
1069
+ }
1070
+ function N(e, t) {
1071
+ let n = 1 / Math.max(2 * t + xt, .25), r = g - Lt - t, i = h - t - 1, a = q(Math.ceil((_ - g + 2 * (Lt + t)) * n), 1, Rt), o = q(Math.ceil(zt * n), 1, Rt);
1072
+ T.fill(-1, 0, a * o);
1073
+ for (let t = 0; t < e; t++) {
1074
+ let e = v[x[t]];
1075
+ if (!e.alive) {
1076
+ C[t] = -1;
1077
+ continue;
1078
+ }
1079
+ let s = q(Math.floor((e.x - r) * n), 0, a - 1), c = q(Math.floor((e.y - i) * n), 0, o - 1);
1080
+ C[t] = s, w[t] = c;
1081
+ let l = c * a + s;
1082
+ S[t] = T[l], T[l] = t;
1083
+ }
1084
+ for (let t = 0; t < e; t++) {
1085
+ let e = C[t];
1086
+ if (e < 0) continue;
1087
+ let n = v[x[t]], r = w[t], i = r > 0 ? r - 1 : 0, s = r < o - 1 ? r + 1 : r, c = e > 0 ? e - 1 : 0, l = e < a - 1 ? e + 1 : e;
1088
+ for (let e = i; e <= s; e++) for (let r = c; r <= l; r++) for (let i = T[e * a + r]; i !== -1; i = S[i]) i > t && ie(n, v[x[i]]);
1089
+ }
1090
+ }
1091
+ function P(e) {
1092
+ let t = Number(e);
1093
+ if (!(t > 0)) return;
1094
+ t > at && (t = at), D += t, A > 0 && (A -= t);
1095
+ let n = v.length, r = 0, i = 0, a = Infinity, o = 0;
1096
+ for (let e = 0; e < n; e++) {
1097
+ let n = v[e];
1098
+ if (!n.alive) continue;
1099
+ let s = n.age += t, c = n.ttl - s;
1100
+ if (c <= 0) {
1101
+ n.alive = !1, n.scale = 0;
1102
+ continue;
1103
+ }
1104
+ let l = 1, u = n.radius;
1105
+ if (s < Ot) {
1106
+ let e = 1 - s / Ot;
1107
+ l = 1 - e * e * e;
1108
+ }
1109
+ if (c < kt) {
1110
+ let e = c / kt, t = e * e * (3 - 2 * e);
1111
+ l *= t, u *= t > .05 ? t : .05;
1112
+ }
1113
+ if (n.scale = l, n.cr = u, n.light) {
1114
+ if (n.asleep && c >= kt) continue;
1115
+ n.sup = !1, n.px = n.x, n.py = n.y, n.pz = n.z, n.asleep || ne(n, t), re(n), M(n, t), n.landed = n.sup;
1116
+ } else {
1117
+ if (x[r++] = e, !n.asleep) {
1118
+ let e = n.vx * n.vx + n.vy * n.vy + n.vz * n.vz;
1119
+ e > i && (i = e);
1120
+ }
1121
+ n.radius < a && (a = n.radius), u > o && (o = u);
1122
+ }
1123
+ }
1124
+ if (r) {
1125
+ let e = Math.sqrt(i) + Math.abs(d) * t, n = q(Math.ceil(e * t / (a * .8)), 1, ot), s = t / n;
1126
+ for (let e = 0; e < n; e++) {
1127
+ for (let e = 0; e < r; e++) {
1128
+ let t = v[x[e]];
1129
+ t.alive && (t.sup = !1, t.px = t.x, t.py = t.y, t.pz = t.z, t.asleep || ne(t, s));
1130
+ }
1131
+ r > 1 && N(r, o);
1132
+ for (let e = 0; e < r; e++) {
1133
+ let t = v[x[e]];
1134
+ t.alive && (re(t), M(t, s), t.landed = t.sup);
1135
+ }
1136
+ }
1137
+ }
1138
+ if (O !== 0 || k !== 0) {
1139
+ let e = Math.exp(-t / Ft);
1140
+ O *= e, k *= e, Math.abs(O) < .01 && Math.abs(k) < .01 && (O = 0, k = 0);
1141
+ }
1142
+ let s = 0, c = v.length;
1143
+ for (let e = 0; e < c; e++) {
1144
+ let t = v[e];
1145
+ t.alive ? v[s++] = t : (t.scale = 0, t.data = null, y.push(t));
1146
+ }
1147
+ v.length = s;
1148
+ }
1149
+ function ae(e, t, n, r) {
1150
+ e.id = E++, e.kind = t.kind == null ? "" : t.kind, e.x = K(t.x, 0), e.y = K(t.y, 0), e.z = K(t.z, 0), e.vx = K(t.vx, 0), e.vy = K(t.vy, 0), e.vz = K(t.vz, 0), e.wx = K(t.wx, 0), e.wy = K(t.wy, 0), e.wz = K(t.wz, 0);
1151
+ let i = K(t.qx, 0), a = K(t.qy, 0), o = K(t.qz, 0), s = K(t.qw, NaN), c = Number.isFinite(s) ? Math.sqrt(i * i + a * a + o * o + s * s) : 0;
1152
+ if (c > 1e-6) e.qx = i / c, e.qy = a / c, e.qz = o / c, e.qw = s / c;
1153
+ else {
1154
+ let t = l(), n = l() * 6.283185307179586, r = l() * 6.283185307179586, i = Math.sqrt(1 - t), a = Math.sqrt(t);
1155
+ e.qx = i * Math.sin(n), e.qy = i * Math.cos(n), e.qz = a * Math.sin(r), e.qw = a * Math.cos(r);
1156
+ }
1157
+ let u = K(t.radius, .5);
1158
+ e.radius = u > .01 ? u : .01, e.mass = n, e.invMass = 1 / n, e.light = r, e.bounce = q(K(t.bounce, .3), 0, 1), e.friction = q(K(t.friction, .5), 0, 1), e.drag = q(K(t.drag, .05), 0, 2);
1159
+ let d = K(t.ttl, ct);
1160
+ e.ttl = d > .05 ? d : .05, e.age = 0, e.scale = 0, e.cr = e.radius, e.landed = !1, e.alive = !0, e.asleep = !1, e.sup = !1, e.restT = 0, e.impactT = -1e9, e.phase = l() * 6.283185307179586;
1161
+ let f = K(t.hx, 0), p = K(t.hy, 0), m = K(t.hz, 0);
1162
+ if (f > 0 && p > 0 && m > 0) {
1163
+ let t = Math.max(f, p, m), n = .5 * t, r = n / (f + n), i = n / (p + n), a = n / (m + n);
1164
+ r *= r, i *= i, a *= a, t > 1.5 * (f + p + m - t - Math.min(f, p, m)) && (f === t ? r = 0 : p === t ? i = 0 : a = 0), e.hx = f, e.hy = p, e.hz = m, e.kx = r, e.ky = i, e.kz = a;
1165
+ } else e.hx = 0, e.hy = 0, e.hz = 0, e.kx = 1, e.ky = 1, e.kz = 1;
1166
+ return e.variant = t.variant == null ? 0 : t.variant, e.data = t.data == null ? null : t.data, e;
1167
+ }
1168
+ function F() {
1169
+ let e = null;
1170
+ for (let t = 0; t < v.length; t++) {
1171
+ let n = v[t];
1172
+ n.light && n.alive && (!e || n.age > e.age) && (e = n);
1173
+ }
1174
+ return e;
1175
+ }
1176
+ function oe(e) {
1177
+ if (!e || typeof e != "object") return null;
1178
+ let t = K(e.mass, 1), n = t > .001 ? t : .001, r = n < st, i;
1179
+ if (v.length >= u) {
1180
+ if (r || (i = F(), !i)) return null;
1181
+ } else i = y.pop() || Bt(), v.push(i);
1182
+ return ae(i, e, n, r);
1183
+ }
1184
+ function I(e = {}) {
1185
+ if (h = K(e.floorY, h), g = K(e.left, g), _ = K(e.right, _), _ < g) {
1186
+ let e = g;
1187
+ g = _, _ = e;
1188
+ }
1189
+ for (let e = 0; e < v.length; e++) j(v[e]);
1190
+ }
1191
+ function L(e = 1, t) {
1192
+ let n = q(K(e, 1), 0, 3), r = ee;
1193
+ t > 0 ? r = 1 : t < 0 ? r = -1 : ee = -ee, O = r * n * Nt, k = n * Pt, A = It;
1194
+ for (let e = 0; e < v.length; e++) {
1195
+ let t = v[e];
1196
+ if (!t.alive) continue;
1197
+ j(t), t.landed = !1;
1198
+ let i = n / (1 + .35 * t.mass);
1199
+ t.vx += r * i * (10 + l() * 8), t.vy += i * (7 + l() * 6), t.wx += (l() - .5) * 12 * n, t.wy += (l() - .5) * 8 * n, t.wz -= r * (4 + l() * 6) * n;
1200
+ }
1201
+ }
1202
+ function R() {
1203
+ for (let e = 0; e < v.length; e++) {
1204
+ let t = v[e];
1205
+ t.alive = !1, t.scale = 0, t.data = null, y.push(t);
1206
+ }
1207
+ v.length = 0, O = 0, k = 0, A = 0, ee = 1;
1208
+ }
1209
+ function se(e) {
1210
+ return typeof e == "function" ? (b.push(e), () => {
1211
+ let t = b.indexOf(e);
1212
+ t >= 0 && b.splice(t, 1);
1213
+ }) : () => {};
1214
+ }
1215
+ return {
1216
+ bodies: v,
1217
+ spawn: oe,
1218
+ step: P,
1219
+ setBounds: I,
1220
+ sweep: L,
1221
+ clear: R,
1222
+ onImpact: se,
1223
+ get time() {
1224
+ return D;
1225
+ }
1226
+ };
1227
+ }
1228
+ // src/effects/avalanche/fx.js
1229
+ var Ht = 22, Ut = 0, Wt = 1, Gt = 2, Kt = 3, qt = 4, Jt = 5, Yt = 6, Xt = 7, Zt = 8, Qt = 9, $t = 10, en = 11, tn = 12, nn = 13, rn = 14, an = 15, on = 16, sn = 17, cn = 18, ln = 19, un = 20, dn = 21, J = {
1230
+ dust: new p("#e6d6b8"),
1231
+ dustGrey: new p("#a39b90"),
1232
+ smokeDark: new p("#3a3432"),
1233
+ smoke: new p("#76706b"),
1234
+ fireCore: new p("#fff3b0"),
1235
+ fire: new p("#ffc23a"),
1236
+ fireRed: new p("#e8471c"),
1237
+ spark: new p("#fff6cf"),
1238
+ ember: new p("#ff8a2a"),
1239
+ glintWhite: new p("#fffbe8"),
1240
+ gold: new p("#ffc53a"),
1241
+ flash: new p("#ffe2a6")
1242
+ }, fn = "\nuniform float uScale;\nattribute vec4 aColor;\nattribute float aSize;\nattribute float aRot;\nvarying vec4 vColor;\nvarying vec2 vRot;\nvoid main() {\n vec4 mv = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * mv;\n gl_PointSize = aColor.a > 0.003 ? min(aSize * uScale / max(-mv.z, 0.5), 1024.0) : 0.0;\n vColor = aColor;\n vRot = vec2(cos(aRot), sin(aRot));\n}\n", pn = "\nuniform sampler2D uMap;\nvarying vec4 vColor;\nvarying vec2 vRot;\nvoid main() {\n vec2 uv = gl_PointCoord - 0.5;\n uv = vec2(vRot.x * uv.x - vRot.y * uv.y, vRot.y * uv.x + vRot.x * uv.y) + 0.5;\n float a = texture2D(uMap, uv).a * vColor.a;\n if (a < 0.004) discard;\n gl_FragColor = vec4(vColor.rgb, a);\n #include <encodings_fragment>\n}\n", Y = (e, t) => e + Math.random() * (t - e), mn = (e) => Number.isFinite(e) ? Math.min(2.5, Math.max(.2, e)) : 1;
1243
+ function hn(e) {
1244
+ let t = document.createElement("canvas");
1245
+ return t.width = e, t.height = e, {
1246
+ canvas: t,
1247
+ ctx: t.getContext("2d")
1248
+ };
1249
+ }
1250
+ function gn(e = 64) {
1251
+ let { canvas: t, ctx: n } = hn(e), r = e / 2, i = n.createRadialGradient(r, r, 0, r, r, r);
1252
+ return i.addColorStop(0, "rgba(255,255,255,1)"), i.addColorStop(.35, "rgba(255,255,255,.6)"), i.addColorStop(1, "rgba(255,255,255,0)"), n.fillStyle = i, n.fillRect(0, 0, e, e), new d(t);
1253
+ }
1254
+ function _n(e = 64) {
1255
+ let { canvas: t, ctx: n } = hn(e), r = e / 2, i = 11, a = () => (i = i * 16807 % 2147483647, i / 2147483647);
1256
+ for (let t = 0; t < 7; t += 1) {
1257
+ let t = a() * Math.PI * 2, i = a() * r * .3, o = r + Math.cos(t) * i, s = r + Math.sin(t) * i, c = r * (.45 + a() * .22), l = n.createRadialGradient(o, s, 0, o, s, c);
1258
+ l.addColorStop(0, "rgba(255,255,255,.55)"), l.addColorStop(.6, "rgba(255,255,255,.25)"), l.addColorStop(1, "rgba(255,255,255,0)"), n.fillStyle = l, n.fillRect(0, 0, e, e);
1259
+ }
1260
+ return new d(t);
1261
+ }
1262
+ function vn(e = 64) {
1263
+ let { canvas: t, ctx: n } = hn(e), r = e / 2;
1264
+ n.globalCompositeOperation = "lighter";
1265
+ let i = n.createRadialGradient(r, r, 0, r, r, r * .42);
1266
+ i.addColorStop(0, "rgba(255,255,255,1)"), i.addColorStop(.3, "rgba(255,255,255,.55)"), i.addColorStop(1, "rgba(255,255,255,0)"), n.fillStyle = i, n.fillRect(0, 0, e, e);
1267
+ let a = (e, t, i) => {
1268
+ n.save(), n.translate(r, r), n.rotate(e);
1269
+ let a = n.createLinearGradient(-t, 0, t, 0);
1270
+ a.addColorStop(0, "rgba(255,255,255,0)"), a.addColorStop(.5, "rgba(255,255,255,1)"), a.addColorStop(1, "rgba(255,255,255,0)"), n.fillStyle = a, n.beginPath(), n.moveTo(-t, 0), n.lineTo(0, -i), n.lineTo(t, 0), n.lineTo(0, i), n.closePath(), n.fill(), n.restore();
1271
+ };
1272
+ return a(0, r * .94, e * .05), a(Math.PI / 2, r * .94, e * .05), a(Math.PI / 4, r * .5, e * .03), a(-Math.PI / 4, r * .5, e * .03), new d(t);
1273
+ }
1274
+ var X = {
1275
+ x: 0,
1276
+ y: 0,
1277
+ z: 0,
1278
+ vx: 0,
1279
+ vy: 0,
1280
+ vz: 0,
1281
+ life: 1,
1282
+ delay: 0,
1283
+ s0: 1,
1284
+ s1: 1,
1285
+ c0: J.dust,
1286
+ c1: J.dust,
1287
+ shade: 1,
1288
+ alpha: 1,
1289
+ drag: 0,
1290
+ grav: 0,
1291
+ hot: 0,
1292
+ rot: 0,
1293
+ spin: 0,
1294
+ twinkle: 0
1295
+ };
1296
+ function Z(e, t, n) {
1297
+ return X.x = e, X.y = t, X.z = n, X.vx = 0, X.vy = 0, X.vz = 0, X.life = 1, X.delay = 0, X.s0 = 1, X.s1 = 1, X.shade = 1, X.alpha = 1, X.drag = 0, X.grav = 0, X.hot = 0, X.rot = Math.random() * Math.PI * 2, X.spin = 0, X.twinkle = 0, X;
1298
+ }
1299
+ function yn(e, { map: t, additive: n, scale: r, renderOrder: i, fadeIn: o }) {
1300
+ let s = new Float32Array(e * Ht), c = new Float32Array(e), d = new Float32Array(e * 3), f = new Float32Array(e * 4), p = new Float32Array(e), m = new Float32Array(e), h = new u(), g = (e, t) => new l(e, t).setUsage(_);
1301
+ h.setAttribute("position", g(d, 3)), h.setAttribute("aColor", g(f, 4)), h.setAttribute("aSize", g(p, 1)), h.setAttribute("aRot", g(m, 1)), h.setDrawRange(0, 0);
1302
+ let v = new re({
1303
+ uniforms: {
1304
+ uScale: r,
1305
+ uMap: { value: t }
1306
+ },
1307
+ vertexShader: fn,
1308
+ fragmentShader: pn,
1309
+ transparent: !0,
1310
+ depthWrite: !1,
1311
+ blending: n ? a : O
1312
+ }), y = new j(h, v);
1313
+ y.frustumCulled = !1, y.visible = !1, y.renderOrder = i;
1314
+ let b = [
1315
+ h.attributes.position,
1316
+ h.attributes.aColor,
1317
+ h.attributes.aSize,
1318
+ h.attributes.aRot
1319
+ ], x = b.map((e) => e.itemSize), S = 0, C = 0;
1320
+ return {
1321
+ points: y,
1322
+ emit(t) {
1323
+ let n;
1324
+ S < e ? (n = S, S += 1) : (n = C, C = (C + 1) % e);
1325
+ let r = n * Ht;
1326
+ s[r + Ut] = t.x, s[r + Wt] = t.y, s[r + Gt] = t.z, s[r + Kt] = t.vx, s[r + qt] = t.vy, s[r + Jt] = t.vz, s[r + Yt] = -t.delay, s[r + Xt] = t.life, s[r + Zt] = t.s0, s[r + Qt] = t.s1, s[r + $t] = t.c0.r * t.shade, s[r + en] = t.c0.g * t.shade, s[r + tn] = t.c0.b * t.shade, s[r + nn] = t.c1.r * t.shade, s[r + rn] = t.c1.g * t.shade, s[r + an] = t.c1.b * t.shade, s[r + on] = t.alpha, s[r + sn] = t.drag, s[r + cn] = t.grav, s[r + ln] = t.hot, s[r + un] = t.spin, s[r + dn] = t.twinkle, c[n] = Math.random() * Math.PI * 2, m[n] = t.rot, f[n * 4 + 3] = 0;
1327
+ },
1328
+ update(e) {
1329
+ let t = 0;
1330
+ for (; t < S;) {
1331
+ let n = t * Ht, r = s[n + Yt] + e, i = s[n + Xt];
1332
+ if (r >= i) {
1333
+ --S, t !== S && (s.copyWithin(n, S * Ht, S * Ht + Ht), c[t] = c[S], m[t] = m[S]);
1334
+ continue;
1335
+ }
1336
+ s[n + Yt] = r;
1337
+ let a = t * 3, l = t * 4;
1338
+ if (r < 0) {
1339
+ d[a] = s[n + Ut], d[a + 1] = s[n + Wt], d[a + 2] = s[n + Gt], f[l + 3] = 0, p[t] = 0, t += 1;
1340
+ continue;
1341
+ }
1342
+ let u = Math.exp(-s[n + sn] * e);
1343
+ s[n + Kt] *= u, s[n + qt] = s[n + qt] * u - s[n + cn] * e, s[n + Jt] *= u, s[n + Ut] += s[n + Kt] * e, s[n + Wt] += s[n + qt] * e, s[n + Gt] += s[n + Jt] * e, m[t] += s[n + un] * e;
1344
+ let h = r / i, g = h < .7 ? h / .7 : 1, _ = g * g * (3 - 2 * g), v = 1 - h, y = 1 + s[n + ln] * v * v * v;
1345
+ d[a] = s[n + Ut], d[a + 1] = s[n + Wt], d[a + 2] = s[n + Gt], f[l] = (s[n + $t] + (s[n + nn] - s[n + $t]) * _) * y, f[l + 1] = (s[n + en] + (s[n + rn] - s[n + en]) * _) * y, f[l + 2] = (s[n + tn] + (s[n + an] - s[n + tn]) * _) * y;
1346
+ let b = h < o ? h / o : 1, x = h > .5 ? v * 2 : 1, C = s[n + dn] > 0 ? .35 + .65 * (.5 + .5 * Math.sin(r * s[n + dn] + c[t])) : 1;
1347
+ f[l + 3] = s[n + on] * b * x * C, p[t] = s[n + Zt] + (s[n + Qt] - s[n + Zt]) * (1 - v * v), t += 1;
1348
+ }
1349
+ if (h.setDrawRange(0, S), y.visible = S > 0, S > 0) for (let e = 0; e < b.length; e += 1) b[e].updateRange.offset = 0, b[e].updateRange.count = S * x[e], b[e].needsUpdate = !0;
1350
+ },
1351
+ dispose() {
1352
+ h.dispose(), v.dispose();
1353
+ }
1354
+ };
1355
+ }
1356
+ function bn(e, { lowPower: t = !1 } = {}) {
1357
+ let n = t ? .5 : 1, r = (e, t, r = 1) => Math.max(r, Math.round(e * t * n)), i = gn(64), o = _n(64), s = vn(64), c = { value: 600 }, l = new ae(), u = (e, t, n) => {
1358
+ e.getDrawingBufferSize(l), c.value = l.y * .5 * n.projectionMatrix.elements[5];
1359
+ }, d = yn(Math.round(360 * n), {
1360
+ map: o,
1361
+ additive: !1,
1362
+ scale: c,
1363
+ renderOrder: 20,
1364
+ fadeIn: .12
1365
+ }), f = yn(Math.round(260 * n), {
1366
+ map: i,
1367
+ additive: !0,
1368
+ scale: c,
1369
+ renderOrder: 21,
1370
+ fadeIn: .05
1371
+ }), p = yn(Math.round(240 * n), {
1372
+ map: s,
1373
+ additive: !0,
1374
+ scale: c,
1375
+ renderOrder: 22,
1376
+ fadeIn: .08
1377
+ }), m = [
1378
+ d,
1379
+ f,
1380
+ p
1381
+ ], h = new x();
1382
+ h.name = "avalanche-fx", m.forEach((e) => {
1383
+ e.points.onBeforeRender = u, h.add(e.points);
1384
+ });
1385
+ let g = Array.from({ length: t ? 2 : 4 }, () => {
1386
+ let e = new N(new P({
1387
+ map: i,
1388
+ color: J.flash,
1389
+ blending: a,
1390
+ transparent: !0,
1391
+ depthWrite: !1
1392
+ }));
1393
+ return e.visible = !1, e.renderOrder = 23, e.frustumCulled = !1, h.add(e), {
1394
+ sprite: e,
1395
+ t: 0,
1396
+ dur: .2,
1397
+ size: 1
1398
+ };
1399
+ }), _ = 0;
1400
+ e.add(h);
1401
+ let v = !1;
1402
+ function y(e, t, n, r, i) {
1403
+ let a = g[_];
1404
+ _ = (_ + 1) % g.length, a.t = 0, a.dur = i, a.size = r, a.sprite.position.set(e, t, n), a.sprite.scale.setScalar(r * .55), a.sprite.material.opacity = 1, a.sprite.visible = !0;
1405
+ }
1406
+ function b(e, t, n, i = 1) {
1407
+ if (v) return;
1408
+ let a = mn(i), o = .7 + .3 * a, s = r(18, a, 4);
1409
+ for (let r = 0; r < s; r += 1) {
1410
+ let i = r / s * Math.PI * 2 + Y(-.15, .15), a = Math.cos(i), c = Math.sin(i), l = .3 * o, u = Y(2.2, 3.8) * o, f = Z(e + a * l, t + Y(.05, .2), n + c * l * .6);
1411
+ f.vx = a * u, f.vy = Y(.3, 1.1), f.vz = c * u * .6, f.life = Y(.45, .7), f.s0 = Y(.3, .5) * o, f.s1 = Y(1.1, 1.6) * o, f.c0 = J.dust, f.c1 = J.dustGrey, f.shade = Y(.88, 1.06), f.alpha = Y(.45, .6), f.drag = 3.6, f.grav = -.6, f.spin = Y(-1.5, 1.5), d.emit(f);
1412
+ }
1413
+ let c = r(5, a, 1);
1414
+ for (let r = 0; r < c; r += 1) {
1415
+ let r = Z(e + Y(-.35, .35) * o, t + .15, n + Y(-.2, .2));
1416
+ r.vx = Y(-.5, .5), r.vy = Y(1, 1.8) * o, r.vz = Y(-.3, .3), r.life = Y(.5, .65), r.s0 = .5 * o, r.s1 = Y(1.3, 1.8) * o, r.c0 = J.dust, r.c1 = J.dustGrey, r.shade = Y(.9, 1.04), r.alpha = .42, r.drag = 2.4, r.grav = -.4, r.spin = Y(-1, 1), d.emit(r);
1417
+ }
1418
+ }
1419
+ function S(e, t, n, i = 1) {
1420
+ if (v) return;
1421
+ let a = mn(i), o = r(10, a, 2);
1422
+ for (let r = 0; r < o; r += 1) {
1423
+ let r = Z(e + Y(-.3, .3), t + Y(-.2, .3), n + Y(-.2, .3)), i = Math.random() * Math.PI * 2, o = Y(1.5, 3.5) * (.6 + .4 * a);
1424
+ r.vx = Math.cos(i) * o, r.vy = Math.sin(i) * o * .8 + 1.2, r.vz = Y(-1, 1) * o * .5, r.life = Y(.35, .6), r.delay = Y(0, .08), r.s0 = Y(.35, .6), r.s1 = .08, r.c0 = J.glintWhite, r.c1 = J.gold, r.alpha = 1, r.hot = .4, r.drag = 2.6, r.grav = 2.5, r.spin = Y(-6, 6), r.twinkle = Y(24, 40), p.emit(r);
1425
+ }
1426
+ let s = Z(e, t + .1, n + .2);
1427
+ s.life = .28, s.s0 = .9 * (.7 + .3 * a), s.s1 = .25, s.c0 = J.glintWhite, s.c1 = J.gold, s.alpha = 1, s.rot = 0, s.spin = 3, p.emit(s);
1428
+ }
1429
+ function C(e, t, n, i = 1) {
1430
+ if (v) return;
1431
+ let a = mn(i);
1432
+ y(e, t + .5 * a, n + .4, 3.4 * a, .2);
1433
+ let o = r(26, a, 6);
1434
+ for (let r = 0; r < o; r += 1) {
1435
+ let r = Math.random() * Math.PI * 2, i = Math.acos(Math.random() * .9), o = Y(2.5, 6) * a, s = Z(e + Y(-.3, .3), t + .3, n + Y(-.3, .3));
1436
+ s.vx = Math.cos(r) * Math.sin(i) * o, s.vy = Math.cos(i) * o * .9 + 1.5, s.vz = Math.sin(r) * Math.sin(i) * o * .6, s.life = Y(.35, .6), s.s0 = Y(.5, .75) * a, s.s1 = Y(1.2, 1.6) * a, s.c0 = Math.random() < .3 ? J.fireCore : J.fire, s.c1 = J.fireRed, s.alpha = .9, s.drag = 4, s.grav = -1, s.hot = 1.4, s.spin = Y(-2, 2), f.emit(s);
1437
+ }
1438
+ let s = r(12, a, 3);
1439
+ for (let r = 0; r < s; r += 1) {
1440
+ let r = Math.random() * Math.PI * 2, i = Y(6, 11) * a, o = Z(e, t + .4, n);
1441
+ o.vx = Math.cos(r) * i * .7, o.vy = Y(4, 9) * a, o.vz = Math.sin(r) * i * .4, o.life = Y(.4, .7), o.s0 = .2, o.s1 = .06, o.c0 = J.spark, o.c1 = J.ember, o.alpha = 1, o.drag = 1, o.grav = 14, o.hot = 1, f.emit(o);
1442
+ }
1443
+ let c = r(14, a, 4);
1444
+ for (let r = 0; r < c; r += 1) {
1445
+ let r = Z(e + Y(-.6, .6) * a, t + Y(.3, .9) * a, n + Y(-.4, .4));
1446
+ r.vx = Y(-1, 1) * a, r.vy = Y(1.6, 3) * a, r.vz = Y(-.5, .5), r.life = Y(.75, 1), r.delay = Y(.02, .12), r.s0 = Y(.6, .8) * a, r.s1 = Y(1.9, 2.5) * a, r.c0 = J.smokeDark, r.c1 = J.smoke, r.shade = Y(.85, 1.1), r.alpha = Y(.55, .7), r.drag = 1.3, r.grav = -.5, r.spin = Y(-1.2, 1.2), d.emit(r);
1447
+ }
1448
+ }
1449
+ function w(e) {
1450
+ if (v) return;
1451
+ let t = Math.min(Math.max(e || 0, 0), .1);
1452
+ for (let e = 0; e < m.length; e += 1) m[e].update(t);
1453
+ for (let e = 0; e < g.length; e += 1) {
1454
+ let n = g[e];
1455
+ if (!n.sprite.visible) continue;
1456
+ n.t += t;
1457
+ let r = n.t / n.dur;
1458
+ r >= 1 ? n.sprite.visible = !1 : (n.sprite.material.opacity = (1 - r) * (1 - r), n.sprite.scale.setScalar(n.size * (.55 + .65 * r)));
1459
+ }
1460
+ }
1461
+ function T() {
1462
+ v || (v = !0, e.remove(h), m.forEach((e) => e.dispose()), g.forEach(({ sprite: e }) => e.material.dispose()), h.clear(), i.dispose(), o.dispose(), s.dispose());
1463
+ }
1464
+ return {
1465
+ puff: b,
1466
+ sparkle: S,
1467
+ blast: C,
1468
+ update: w,
1469
+ dispose: T
1470
+ };
1471
+ }
1472
+ // src/effects/avalanche/avalancheScene3d.js
1473
+ var xn = 12, Sn = -26, Cn = .05, wn = -2.5, Tn = 1, En = /* @__PURE__ */ new Set([
1474
+ "car",
1475
+ "tank",
1476
+ "stack"
1477
+ ]), Dn = [
1478
+ "#ff4d8d",
1479
+ "#ffd23f",
1480
+ "#3ddc97",
1481
+ "#4cc9f0",
1482
+ "#9b5de5",
1483
+ "#ff7b29"
1484
+ ].map((e) => new p(e)), On = 12, Q = (e, t) => e + Math.random() * (t - e), kn = (e) => e[Math.floor(Math.random() * e.length)], $ = (e, t, n) => Math.min(n, Math.max(t, e)), An = (e) => String(e).split("-")[0], jn = () => typeof matchMedia == "function" && matchMedia("(pointer: coarse)").matches || (navigator.hardwareConcurrency || 8) <= 4;
1485
+ function Mn(e = 64) {
1486
+ let t = document.createElement("canvas");
1487
+ t.width = e, t.height = e;
1488
+ let n = t.getContext("2d"), r = n.createRadialGradient(e / 2, e / 2, 0, e / 2, e / 2, e / 2);
1489
+ return r.addColorStop(0, "rgba(0,0,0,.55)"), r.addColorStop(.6, "rgba(0,0,0,.25)"), r.addColorStop(1, "rgba(0,0,0,0)"), n.fillStyle = r, n.fillRect(0, 0, e, e), new d(t);
1490
+ }
1491
+ function Nn(e) {
1492
+ let t = new s();
1493
+ return e.forEach(({ geometry: e }) => {
1494
+ e.boundingBox || e.computeBoundingBox(), t.union(e.boundingBox);
1495
+ }), {
1496
+ x: Math.max(Math.abs(t.min.x), Math.abs(t.max.x)),
1497
+ y: Math.max(Math.abs(t.min.y), Math.abs(t.max.y)),
1498
+ z: Math.max(Math.abs(t.min.z), Math.abs(t.max.z))
1499
+ };
1500
+ }
1501
+ function Pn(e, t, n) {
1502
+ let r = An(t.kind), i = Math.round(n ? t.countLow ?? t.count : t.count) || 1, a = Math.max(1, i + (r === "bill" ? n ? 30 : 70 : 0)), o = t.palette?.length ? t.palette : Dn, s = t.parts.map(({ geometry: t, material: n, tinted: r }) => {
1503
+ let i = new S(t, n, a);
1504
+ if (i.instanceMatrix.setUsage(_), i.frustumCulled = !1, r) {
1505
+ for (let e = 0; e < a; e += 1) i.setColorAt(e, o[0]);
1506
+ i.instanceColor.setUsage(_);
1507
+ }
1508
+ return i.count = 0, i.visible = !1, e.add(i), {
1509
+ mesh: i,
1510
+ tinted: !!r
1511
+ };
1512
+ }), c = Nn(t.parts);
1513
+ return {
1514
+ kind: t.kind,
1515
+ family: r,
1516
+ model: t,
1517
+ parts: s,
1518
+ palette: o,
1519
+ capacity: a,
1520
+ used: 0,
1521
+ pending: 0,
1522
+ big: En.has(r),
1523
+ half: c,
1524
+ blobRadius: (t.radius + Math.max(c.x, c.z)) / 2
1525
+ };
1526
+ }
1527
+ function Fn(e, { lowPower: t } = {}) {
1528
+ let n = !!(t ?? jn()), r = new oe({
1529
+ canvas: e,
1530
+ alpha: !0,
1531
+ antialias: !n,
1532
+ powerPreference: "high-performance"
1533
+ });
1534
+ try {
1535
+ return In(r, n);
1536
+ } catch (e) {
1537
+ throw r.dispose(), r.forceContextLoss?.(), e;
1538
+ }
1539
+ }
1540
+ function In(e, t) {
1541
+ e.setPixelRatio(Math.min(t ? 1.5 : 2, window.devicePixelRatio || 1)), e.setClearColor(0, 0);
1542
+ let n = new ne(), r = new k(50, 1, .1, 80);
1543
+ r.position.set(0, 0, xn);
1544
+ let i = t ? .8 : 1, a = new h(16769200, 1.25 * i);
1545
+ a.position.set(5, 7, 9);
1546
+ let s = new h(10275071, .55 * i);
1547
+ s.position.set(-7, 1, 5);
1548
+ let c = new ee(16773570, 0, 40, 1.4);
1549
+ c.position.set(0, 1, 5), n.add(new o(16777215, .5 * i), a, s, c);
1550
+ let l = [
1551
+ Ce,
1552
+ Ie,
1553
+ Xe,
1554
+ it
1555
+ ].flatMap((e) => e({ lowPower: t }) || []), u = l.map((e) => Pn(n, e, t)), d = Object.create(null);
1556
+ u.forEach((e) => {
1557
+ d[e.family] || (d[e.family] = []), d[e.family].push(e);
1558
+ });
1559
+ let f = u.reduce((e, t) => e + t.capacity, 0), p = {
1560
+ left: -9.9,
1561
+ right: 9.9,
1562
+ top: 5.6,
1563
+ floorY: -5.55,
1564
+ room: 1
1565
+ }, m = Vt({
1566
+ gravity: Sn,
1567
+ floorY: p.floorY,
1568
+ left: p.left,
1569
+ right: p.right,
1570
+ zMin: wn,
1571
+ zMax: Tn,
1572
+ maxBodies: Math.min(f, t ? 320 : 640)
1573
+ }), g = bn(n, { lowPower: t }), y = t ? 0 : 32, b = y ? Mn() : null, x = y ? new S(new A(1, 1).rotateX(-Math.PI / 2), new T({
1574
+ map: b,
1575
+ transparent: !0,
1576
+ depthWrite: !1,
1577
+ opacity: .6
1578
+ }), y) : null;
1579
+ x && (x.instanceMatrix.setUsage(_), x.frustumCulled = !1, x.count = 0, x.visible = !1, x.renderOrder = -1, n.add(x));
1580
+ let C = t ? 16 : 26, E = C, D = 0, O = 0, j = t ? 3 : 6, re = j, M = t ? .55 : 1, ie = 0, N = 0, P = 0, ae = new w(), oe = new F(), I = new te(), L = new te(), R = new F(), se = new v();
1581
+ m.onImpact((e, t) => {
1582
+ let n = e.data;
1583
+ if (!n || re <= 0 || ie - n.fxAt < .3) return;
1584
+ let r = $(t / 20, .2, 1), i = e.y - e.radius * .6;
1585
+ switch (n.pool.family) {
1586
+ case "car":
1587
+ g.puff(e.x, i, e.z, r);
1588
+ break;
1589
+ case "tank":
1590
+ g.puff(e.x, i, e.z, r), t > On && (g.blast(e.x, i, e.z, r), N = Math.min(.7, N + .3 * r), P = Math.max(P, .4 * r));
1591
+ break;
1592
+ case "coin":
1593
+ case "stack":
1594
+ g.sparkle(e.x, e.y, e.z, r * .8);
1595
+ break;
1596
+ default: return;
1597
+ }
1598
+ n.fxAt = ie, --re;
1599
+ });
1600
+ function ce(e) {
1601
+ let t = d[e];
1602
+ if (!t) return null;
1603
+ let n = Math.floor(Math.random() * t.length);
1604
+ for (let e = 0; e < t.length; e += 1) {
1605
+ let r = t[(n + e) % t.length];
1606
+ if (!(r.used + r.pending >= r.capacity)) return r.big && D + O >= E ? null : r;
1607
+ }
1608
+ return null;
1609
+ }
1610
+ function z(e, t) {
1611
+ let n = ce(e);
1612
+ if (!n) return null;
1613
+ let { model: r, half: i } = n, a = t.size ?? Q(.9, 1.1);
1614
+ if (t.yaw != null) {
1615
+ let e = t.tilt ?? .25;
1616
+ se.set(Q(-e, e), t.yaw, Q(-e, e));
1617
+ } else se.set(Q(0, 6.3), Q(0, 6.3), Q(0, 6.3));
1618
+ I.setFromEuler(se);
1619
+ let o = m.spawn({
1620
+ kind: r.kind,
1621
+ x: t.x,
1622
+ y: t.y,
1623
+ z: $(t.z ?? 0, wn, Tn),
1624
+ vx: t.vx ?? 0,
1625
+ vy: t.vy ?? 0,
1626
+ vz: t.vz ?? 0,
1627
+ wx: t.wx ?? 0,
1628
+ wy: t.wy ?? 0,
1629
+ wz: t.wz ?? 0,
1630
+ qx: I.x,
1631
+ qy: I.y,
1632
+ qz: I.z,
1633
+ qw: I.w,
1634
+ hx: i.x * a,
1635
+ hy: i.y * a,
1636
+ hz: i.z * a,
1637
+ radius: r.radius * a,
1638
+ mass: r.mass * a,
1639
+ bounce: r.bounce,
1640
+ friction: r.friction,
1641
+ drag: r.drag * (t.dragScale ?? 1),
1642
+ ttl: t.ttl ?? 6,
1643
+ data: {
1644
+ pool: n,
1645
+ size: a,
1646
+ tint: kn(n.palette),
1647
+ fxAt: -1
1648
+ }
1649
+ });
1650
+ return o ? (n.pending += 1, n.big && (O += 1), o) : null;
1651
+ }
1652
+ let le = () => {
1653
+ let e = Math.random();
1654
+ return e < .07 && d.streamer ? "streamer" : e < .14 && d.star ? "star" : e < .3 && d.spark ? "spark" : "confetti";
1655
+ };
1656
+ function ue(e, t) {
1657
+ let n = e < 0 ? p.left + .5 : p.right - .5, r = Math.round(80 * t * M);
1658
+ for (let t = 0; t < r; t += 1) z(le(), {
1659
+ x: n + Q(-.3, .3),
1660
+ y: p.floorY + Q(.3, .9),
1661
+ z: Q(wn, Tn),
1662
+ vx: -e * Q(3, 9),
1663
+ vy: Q(24, 38),
1664
+ vz: Q(-1.5, 1.5),
1665
+ wx: Q(-14, 14),
1666
+ wy: Q(-14, 14),
1667
+ wz: Q(-14, 14),
1668
+ ttl: Q(3.5, 5.2),
1669
+ size: Q(.8, 1.25),
1670
+ dragScale: .4
1671
+ });
1672
+ }
1673
+ function de(e) {
1674
+ let t = Math.round(42 * e * M);
1675
+ for (let e = 0; e < t; e += 1) z("bill", {
1676
+ x: Q(p.left + .6, p.right - .6),
1677
+ y: p.top + Q(.3, 3.5),
1678
+ z: Q(wn, Tn),
1679
+ vx: Q(-1.5, 1.5),
1680
+ vy: Q(-3, 0),
1681
+ vz: Q(-.5, .5),
1682
+ wx: Q(-7, 7),
1683
+ wy: Q(-3, 3),
1684
+ wz: Q(-7, 7),
1685
+ ttl: Q(5, 6.5),
1686
+ size: Q(.9, 1.15)
1687
+ });
1688
+ }
1689
+ function fe(e) {
1690
+ for (let t = 0; t < e; t += 1) z("stack", {
1691
+ x: Q(p.left, p.right) * .75,
1692
+ y: p.top + Q(.6, 2.2),
1693
+ z: Q(-1.5, .5),
1694
+ vx: Q(-2, 2),
1695
+ vy: Q(-4, -1),
1696
+ wx: Q(-3, 3),
1697
+ wy: Q(-2, 2),
1698
+ wz: Q(-3, 3),
1699
+ ttl: Q(6.5, 7.5)
1700
+ });
1701
+ }
1702
+ function pe(e) {
1703
+ let t = Math.round(48 * e * M);
1704
+ for (let e = 0; e < t; e += 1) z("coin", {
1705
+ x: Q(p.left + .5, p.right - .5) * .85,
1706
+ y: p.top + Q(.3, 3),
1707
+ z: Q(-2, .8),
1708
+ vx: Q(-2, 2),
1709
+ vy: Q(-7, -1),
1710
+ wx: Q(-12, 12),
1711
+ wy: Q(-4, 4),
1712
+ wz: Q(-12, 12),
1713
+ ttl: Q(5, 6.5),
1714
+ size: Q(.9, 1.15)
1715
+ });
1716
+ }
1717
+ function B(e) {
1718
+ let t = Math.random() < .5 ? -1 : 1;
1719
+ for (let n = 0; n < e; n += 1) {
1720
+ let e = n % 2 ? -t : t;
1721
+ z("car", {
1722
+ x: e < 0 ? p.left + Q(1.3, 3) : p.right - Q(1.3, 3),
1723
+ y: p.top + Q(.8, 2.4) + n * .4,
1724
+ z: Q(-1.8, .4),
1725
+ vx: -e * Q(3, 7.5),
1726
+ vy: Q(-1, 3),
1727
+ vz: Q(-1, .6),
1728
+ wx: Q(-2.5, 2.5),
1729
+ wy: Q(-2, 2),
1730
+ wz: Q(-5, 5),
1731
+ yaw: e < 0 ? 0 : Math.PI,
1732
+ tilt: .4,
1733
+ ttl: Q(6.5, 7.5),
1734
+ size: Q(.92, 1.08)
1735
+ });
1736
+ }
1737
+ }
1738
+ function me(e) {
1739
+ let t = Math.max(0, p.right - p.left - 4);
1740
+ for (let n = 0; n < e; n += 1) z("tank", {
1741
+ x: p.left + 2 + t * ((n + .5 + Q(-.25, .25)) / e),
1742
+ y: p.top + Q(1, 3),
1743
+ z: Q(-1.6, .3),
1744
+ vx: Q(-1, 1),
1745
+ vy: Q(-9, -5),
1746
+ wx: Q(-.6, .6),
1747
+ wy: Q(-1.5, 1.5),
1748
+ wz: Q(-.6, .6),
1749
+ yaw: (Math.random() < .5 ? 0 : Math.PI) + Q(-.5, .5),
1750
+ tilt: .15,
1751
+ ttl: Q(6.5, 7.5),
1752
+ size: Q(.95, 1.06)
1753
+ });
1754
+ }
1755
+ let V = (e, n, r) => $(Math.round(e * p.room * (t ? .75 : 1)), n, r), he = {
1756
+ confetti(e) {
1757
+ ue(-1, e), ue(1, e);
1758
+ },
1759
+ money(e) {
1760
+ de(e), fe(Math.round((2 + 2 * e) * (t ? .6 : 1))), pe(e * .15);
1761
+ },
1762
+ cars(e) {
1763
+ B(V(3 + 2 * e, 2, 5));
1764
+ },
1765
+ tanks(e) {
1766
+ me(V(2 + 2 * e, t ? 1 : 2, 4));
1767
+ },
1768
+ coins(e) {
1769
+ pe(e), fe(1);
1770
+ },
1771
+ mix(e) {
1772
+ ue(-1, e * .5), ue(1, e * .5), de(e * .55), pe(e * .45), fe(t ? 1 : 2), B(V(2 + e, 1, 3)), me(V(1 + e, 1, 2));
1773
+ },
1774
+ finale(e) {
1775
+ let { bodies: t } = m;
1776
+ for (let e = 0; e < t.length; e += 1) {
1777
+ let n = t[e];
1778
+ n.alive && (n.ttl = Math.min(n.ttl, n.age + Q(.9, 1.4)));
1779
+ }
1780
+ m.sweep(e, 1);
1781
+ let n = Math.round(80 * e * M);
1782
+ for (let e = 0; e < n; e += 1) z("bill", {
1783
+ x: p.left - Q(.3, 2.5),
1784
+ y: Q(p.floorY + 1, p.top + .5),
1785
+ z: Q(wn, Tn),
1786
+ vx: Q(20, 32),
1787
+ vy: Q(2, 7),
1788
+ vz: Q(-1, 1),
1789
+ wx: Q(-9, 9),
1790
+ wy: Q(-4, 4),
1791
+ wz: Q(-9, 9),
1792
+ ttl: Q(1.2, 1.5),
1793
+ size: Q(.9, 1.2),
1794
+ dragScale: .3
1795
+ });
1796
+ for (let e = 0; e < 3; e += 1) g.sparkle(Q(p.left, p.right) * .6, Q(-1, 2), 0, 1);
1797
+ N = Math.max(N, .45);
1798
+ }
1799
+ };
1800
+ function ge() {
1801
+ for (let e = 0; e < u.length; e += 1) u[e].used = 0, u[e].pending = 0;
1802
+ let e = 0, t = 0, { bodies: n } = m;
1803
+ for (let r = 0; r < n.length; r += 1) {
1804
+ let i = n[r], a = i.data;
1805
+ if (!i.alive || !a) continue;
1806
+ let { pool: o } = a;
1807
+ if (o.used >= o.capacity) continue;
1808
+ let s = a.size * i.scale;
1809
+ oe.set(i.x, i.y, i.z), I.set(i.qx, i.qy, i.qz, i.qw), R.set(s, s, s), ae.compose(oe, I, R);
1810
+ let c = o.used;
1811
+ o.used += 1;
1812
+ let { parts: l } = o;
1813
+ for (let e = 0; e < l.length; e += 1) {
1814
+ let t = l[e];
1815
+ t.mesh.setMatrixAt(c, ae), t.tinted && t.mesh.setColorAt(c, a.tint);
1816
+ }
1817
+ if (!o.big || (e += 1, t >= y)) continue;
1818
+ let u = i.y - p.floorY - o.half.y * a.size, d = o.blobRadius * s * $(1 - u / 6, .15, 1);
1819
+ oe.set(i.x, p.floorY + .02, i.z), R.set(d * 2.4, 1, d * 1.5), ae.compose(oe, L, R), x.setMatrixAt(t, ae), t += 1;
1820
+ }
1821
+ for (let e = 0; e < u.length; e += 1) {
1822
+ let { parts: t, used: n } = u[e];
1823
+ for (let e = 0; e < t.length; e += 1) {
1824
+ let { mesh: r, tinted: i } = t[e];
1825
+ r.count = n, r.visible = n > 0, n && (r.instanceMatrix.needsUpdate = !0, i && (r.instanceColor.needsUpdate = !0));
1826
+ }
1827
+ }
1828
+ D = e, O = 0, x && (x.count = t, x.visible = t > 0, x.instanceMatrix.needsUpdate = !0);
1829
+ }
1830
+ return {
1831
+ lowPower: t,
1832
+ stats() {
1833
+ let t = Object.create(null), n = 0;
1834
+ return u.forEach(({ family: e, used: r }) => {
1835
+ t[e] = (t[e] || 0) + r, n += r;
1836
+ }), {
1837
+ bodies: n,
1838
+ big: D,
1839
+ bigCap: E,
1840
+ live: t,
1841
+ calls: e.info.render.calls,
1842
+ triangles: e.info.render.triangles
1843
+ };
1844
+ },
1845
+ burst(e, t = 1) {
1846
+ he[e]?.(t), P = Math.max(P, e === "finale" ? 1 : t * .3);
1847
+ },
1848
+ render(t) {
1849
+ let a = Math.min(t, .05);
1850
+ ie += a, re = j, m.step(a), g.update(a), ge(), N = Math.max(0, N - a * 2.2), P = Math.max(0, P - a * 2.5), c.intensity = P * 4 * i, r.position.x = (Math.random() - .5) * N * .4, r.position.y = (Math.random() - .5) * N * .4, e.render(n, r);
1851
+ },
1852
+ resize(t, n) {
1853
+ e.setSize(t, n, !1), r.aspect = t / n, r.fov = r.aspect < 1 ? $(50 / Math.max(r.aspect, .55) * .8, 50, 85) : 50, r.updateProjectionMatrix();
1854
+ let i = Math.tan(r.fov * Math.PI / 360) * xn, a = i * r.aspect;
1855
+ p.top = i, p.floorY = -i + Cn, p.left = -a, p.right = a, p.room = $(a * 2 / 16, .5, 1), E = Math.max(8, Math.round(C * p.room)), m.setBounds({
1856
+ floorY: p.floorY,
1857
+ left: p.left,
1858
+ right: p.right
1859
+ });
1860
+ },
1861
+ dispose() {
1862
+ g.dispose(), m.clear();
1863
+ let t = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();
1864
+ u.forEach(({ parts: e }) => e.forEach(({ mesh: e }) => {
1865
+ e.dispose(), n.remove(e);
1866
+ })), l.forEach(({ parts: e }) => e.forEach(({ geometry: e, material: n }) => {
1867
+ t.add(e), [].concat(n).forEach((e) => r.add(e));
1868
+ })), x && (x.dispose(), n.remove(x), t.add(x.geometry), r.add(x.material)), r.forEach((e) => {
1869
+ Object.keys(e).forEach((t) => {
1870
+ e[t]?.isTexture && i.add(e[t]);
1871
+ }), e.dispose();
1872
+ }), i.forEach((e) => e.dispose()), t.forEach((e) => e.dispose()), e.dispose(), e.forceContextLoss?.();
1873
+ }
1874
+ };
1875
+ }
1876
+ export { Fn as createAvalancheScene };
1877
+
1878
+ //# sourceMappingURL=avalancheScene3d-Dnl2E3EA.js.map