@minicode-dev/chat 0.1.13 → 0.1.15

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 (114) hide show
  1. package/CHANGELOG.md +112 -5
  2. package/README.md +401 -312
  3. package/assets/sounds/effects/avalanche.mp3 +0 -0
  4. package/assets/sounds/racing/car_boost.mp3 +0 -0
  5. package/assets/sounds/racing/car_boost.ogg +0 -0
  6. package/assets/sounds/racing/car_bump.mp3 +0 -0
  7. package/assets/sounds/racing/car_bump.ogg +0 -0
  8. package/assets/sounds/racing/car_drift_loop.mp3 +0 -0
  9. package/assets/sounds/racing/car_drift_loop.ogg +0 -0
  10. package/assets/sounds/racing/car_engine_loop.mp3 +0 -0
  11. package/assets/sounds/racing/car_engine_loop.ogg +0 -0
  12. package/assets/sounds/racing/car_engine_start.mp3 +0 -0
  13. package/assets/sounds/racing/car_engine_start.ogg +0 -0
  14. package/assets/sounds/racing/countdown_beep.mp3 +0 -0
  15. package/assets/sounds/racing/countdown_beep.ogg +0 -0
  16. package/assets/sounds/racing/countdown_go.mp3 +0 -0
  17. package/assets/sounds/racing/countdown_go.ogg +0 -0
  18. package/assets/sounds/racing/final_lap.mp3 +0 -0
  19. package/assets/sounds/racing/final_lap.ogg +0 -0
  20. package/assets/sounds/racing/finish_line.mp3 +0 -0
  21. package/assets/sounds/racing/finish_line.ogg +0 -0
  22. package/assets/sounds/racing/lap_complete.mp3 +0 -0
  23. package/assets/sounds/racing/lap_complete.ogg +0 -0
  24. package/assets/sounds/racing/music_circuit.mp3 +0 -0
  25. package/assets/sounds/racing/music_circuit.ogg +0 -0
  26. package/assets/sounds/racing/music_final_lap.mp3 +0 -0
  27. package/assets/sounds/racing/music_final_lap.ogg +0 -0
  28. package/assets/sounds/racing/race_defeat.mp3 +0 -0
  29. package/assets/sounds/racing/race_defeat.ogg +0 -0
  30. package/assets/sounds/racing/race_victory.mp3 +0 -0
  31. package/assets/sounds/racing/race_victory.ogg +0 -0
  32. package/assets/sounds/tanks/barrel_explode.mp3 +0 -0
  33. package/assets/sounds/tanks/barrel_explode.ogg +0 -0
  34. package/assets/sounds/tanks/crate_break.mp3 +0 -0
  35. package/assets/sounds/tanks/crate_break.ogg +0 -0
  36. package/assets/sounds/tanks/health_pickup.mp3 +0 -0
  37. package/assets/sounds/tanks/health_pickup.ogg +0 -0
  38. package/assets/sounds/tanks/last_life.mp3 +0 -0
  39. package/assets/sounds/tanks/last_life.ogg +0 -0
  40. package/assets/sounds/tanks/life_lost.mp3 +0 -0
  41. package/assets/sounds/tanks/life_lost.ogg +0 -0
  42. package/assets/sounds/tanks/respawn.mp3 +0 -0
  43. package/assets/sounds/tanks/respawn.ogg +0 -0
  44. package/assets/sounds/tanks/shield_end.mp3 +0 -0
  45. package/assets/sounds/tanks/shield_end.ogg +0 -0
  46. package/assets/sounds/tanks/shield_loop.mp3 +0 -0
  47. package/assets/sounds/tanks/shield_loop.ogg +0 -0
  48. package/assets/sounds/tanks/wall_hit.mp3 +0 -0
  49. package/assets/sounds/tanks/wall_hit.ogg +0 -0
  50. package/dist/chunks/{BattleshipGameCard-iRk8d4vR.js → BattleshipGameCard-8H-sBCsv.js} +146 -144
  51. package/dist/chunks/{BattleshipGameCard-iRk8d4vR.js.map → BattleshipGameCard-8H-sBCsv.js.map} +1 -1
  52. package/dist/chunks/{ChatContext-DjIEifGY.js → ChatContext-CVW58bzC.js} +2 -2
  53. package/dist/chunks/{ChatContext-DjIEifGY.js.map → ChatContext-CVW58bzC.js.map} +1 -1
  54. package/dist/chunks/RacingLiveGameCard-8j9QLnxW.js +1654 -0
  55. package/dist/chunks/RacingLiveGameCard-8j9QLnxW.js.map +1 -0
  56. package/dist/chunks/{TanksGameCard-GrqmdwJ7.js → TanksGameCard-DnCufSH6.js} +168 -166
  57. package/dist/chunks/{TanksGameCard-GrqmdwJ7.js.map → TanksGameCard-DnCufSH6.js.map} +1 -1
  58. package/dist/chunks/TanksLiveGameCard-D_27Jomp.js +1274 -0
  59. package/dist/chunks/TanksLiveGameCard-D_27Jomp.js.map +1 -0
  60. package/dist/chunks/avalancheScene3d-CIE2WKQn.js +1300 -0
  61. package/dist/chunks/avalancheScene3d-CIE2WKQn.js.map +1 -0
  62. package/dist/chunks/cars-D1PM7mVD.js +340 -0
  63. package/dist/chunks/cars-D1PM7mVD.js.map +1 -0
  64. package/dist/chunks/connect4Sounds-BqEHULjv.js +235 -0
  65. package/dist/chunks/connect4Sounds-BqEHULjv.js.map +1 -0
  66. package/dist/chunks/connectionStore-DwgIUl30.js +13 -0
  67. package/dist/chunks/connectionStore-DwgIUl30.js.map +1 -0
  68. package/dist/chunks/createLiveScene-MTGRv8rx.js +758 -0
  69. package/dist/chunks/createLiveScene-MTGRv8rx.js.map +1 -0
  70. package/dist/chunks/createRaceScene-BiEtQsVs.js +306 -0
  71. package/dist/chunks/createRaceScene-BiEtQsVs.js.map +1 -0
  72. package/dist/chunks/{createTankScene-6asWHKFf.js → createTankScene-yhX6la27.js} +125 -123
  73. package/dist/chunks/{createTankScene-6asWHKFf.js.map → createTankScene-yhX6la27.js.map} +1 -1
  74. package/dist/chunks/decor-CyyCnmct.js +418 -0
  75. package/dist/chunks/decor-CyyCnmct.js.map +1 -0
  76. package/dist/chunks/fx-1ZwzmPWj.js +458 -0
  77. package/dist/chunks/fx-1ZwzmPWj.js.map +1 -0
  78. package/dist/chunks/fx-DhXerGyt.js +248 -0
  79. package/dist/chunks/fx-DhXerGyt.js.map +1 -0
  80. package/dist/chunks/gameStatus-BChd29yI.js +62 -0
  81. package/dist/chunks/gameStatus-BChd29yI.js.map +1 -0
  82. package/dist/chunks/games-Bl_8raG6.js +3681 -0
  83. package/dist/chunks/games-Bl_8raG6.js.map +1 -0
  84. package/dist/chunks/rolldown-runtime-CGnMp29N.js +10 -0
  85. package/dist/chunks/tank-DjEQ4FXF.js +553 -0
  86. package/dist/chunks/tank-DjEQ4FXF.js.map +1 -0
  87. package/dist/chunks/tanks-live-BcKmrhnV.js +261 -0
  88. package/dist/chunks/tanks-live-BcKmrhnV.js.map +1 -0
  89. package/dist/chunks/{tanksSounds-CUNDIOal.js → tanksSounds-DTnidbiq.js} +44 -12
  90. package/dist/chunks/tanksSounds-DTnidbiq.js.map +1 -0
  91. package/dist/chunks/track-BcnnpnAm.js +259 -0
  92. package/dist/chunks/track-BcnnpnAm.js.map +1 -0
  93. package/dist/chunks/util-DwI9bfS7.js +57 -0
  94. package/dist/chunks/util-DwI9bfS7.js.map +1 -0
  95. package/dist/index.js +822 -635
  96. package/dist/index.js.map +1 -1
  97. package/dist/styles.css +1 -1
  98. package/index.d.ts +3 -1
  99. package/package.json +1 -1
  100. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js +0 -1225
  101. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js.map +0 -1
  102. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js +0 -1878
  103. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js.map +0 -1
  104. package/dist/chunks/connect4Sounds-Cv0q31VW.js +0 -3245
  105. package/dist/chunks/connect4Sounds-Cv0q31VW.js.map +0 -1
  106. package/dist/chunks/createLiveScene-819NWv84.js +0 -365
  107. package/dist/chunks/createLiveScene-819NWv84.js.map +0 -1
  108. package/dist/chunks/fx-BNJvJYOu.js +0 -871
  109. package/dist/chunks/fx-BNJvJYOu.js.map +0 -1
  110. package/dist/chunks/gameStatus-Cu1Z8un9.js +0 -69
  111. package/dist/chunks/gameStatus-Cu1Z8un9.js.map +0 -1
  112. package/dist/chunks/tank-DIn6Jyt8.js +0 -605
  113. package/dist/chunks/tank-DIn6Jyt8.js.map +0 -1
  114. package/dist/chunks/tanksSounds-CUNDIOal.js.map +0 -1
@@ -0,0 +1,1300 @@
1
+ import { t as e } from "./cars-D1PM7mVD.js";
2
+ import { i as t, n, o as r, r as i, t as a } from "./tank-DjEQ4FXF.js";
3
+ import { t as o } from "./fx-DhXerGyt.js";
4
+ import { AmbientLight as s, Box3 as c, BoxGeometry as l, BufferAttribute as u, BufferGeometry as d, CanvasTexture as f, CircleGeometry as p, Color as m, CylinderGeometry as h, DirectionalLight as g, DoubleSide as _, DynamicDrawUsage as v, Euler as y, ExtrudeGeometry as b, InstancedMesh as x, Matrix3 as S, Matrix4 as C, MeshBasicMaterial as ee, MeshLambertMaterial as w, MeshStandardMaterial as T, PerspectiveCamera as E, PlaneGeometry as D, PointLight as O, Quaternion as k, Scene as A, Shape as j, Vector3 as M, WebGLRenderer as N } from "three";
5
+ // src/effects/avalanche/models/money.js
6
+ var P = Math.PI * 2, F = {
7
+ length: 1,
8
+ width: .45,
9
+ thickness: .02
10
+ }, te = .35, I = {
11
+ radius: .32,
12
+ thickness: .08
13
+ }, L = "Georgia, \"Times New Roman\", serif", R = "#1f5a32", z = [
14
+ "#d9a93a",
15
+ "#8e5bd1",
16
+ "#d64545",
17
+ "#3b8fd9"
18
+ ], B = [.502, 1], V = [0, .49];
19
+ function H(e, t) {
20
+ let n = null;
21
+ 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;
22
+ }
23
+ function U(e, t, n, r) {
24
+ [
25
+ ["rgba(90, 55, 0, 0.7)", t],
26
+ ["rgba(255, 248, 210, 0.9)", -t],
27
+ [n, 0]
28
+ ].forEach(([t, n]) => {
29
+ e.save(), e.translate(n, n), r(t), e.restore();
30
+ });
31
+ }
32
+ function ne(e, t, n, r, i) {
33
+ e.beginPath();
34
+ for (let a = 0; a < 10; a += 1) {
35
+ let o = a % 2 ? i : r, s = a / 10 * P - Math.PI / 2;
36
+ e.lineTo(t + Math.cos(s) * o, n + Math.sin(s) * o);
37
+ }
38
+ e.closePath();
39
+ }
40
+ function W(e, t, n, r, i) {
41
+ for (let a = 0; a < 10; a += 1) {
42
+ let o = a / 10 * (P / i);
43
+ e.beginPath();
44
+ for (let a = 0; a <= 120; a += 1) {
45
+ let s = a / 120 * P, c = r * (.7 + .3 * Math.sin(i * s + o));
46
+ e.lineTo(t + Math.cos(s) * c, n + Math.sin(s) * c * .92);
47
+ }
48
+ e.stroke();
49
+ }
50
+ }
51
+ function re(e, t, n) {
52
+ let r = t / 2, i = n / 2, a = e.createLinearGradient(0, 0, t, n);
53
+ 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)";
54
+ for (let r = 0; r < 7; r += 1) [28, n - 28].forEach((n) => {
55
+ e.beginPath();
56
+ for (let i = 0; i <= t; i += 4) e.lineTo(i, n + Math.sin(i * .045 + r * .9) * 7);
57
+ e.stroke();
58
+ });
59
+ W(e, t * .2, i, 62, 9), W(e, t * .8, i, 62, 12), e.strokeStyle = R, 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, P);
60
+ let o = e.createRadialGradient(r, i - 12, 6, r, i, 74);
61
+ 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;
62
+ for (let t = r - 60; t <= r + 60; t += 4) e.beginPath(), e.moveTo(t, i - 72), e.lineTo(t, i + 72), e.stroke();
63
+ e.fillStyle = "rgba(31, 90, 50, 0.78)", e.beginPath(), e.arc(r, i - 16, 20, 0, P), e.fill(), e.beginPath(), e.ellipse(r, i + 50, 42, 40, 0, Math.PI, P), e.fill(), e.restore(), e.strokeStyle = R, e.lineWidth = 4, e.beginPath(), e.ellipse(r, i, 58, 70, 0, 0, P), e.stroke(), e.lineWidth = 1.5, e.beginPath(), e.ellipse(r, i, 63, 75, 0, 0, P), e.stroke(), e.textAlign = "center", e.textBaseline = "middle", e.lineJoin = "round", [[
64
+ "$",
65
+ t * .2,
66
+ i + 4,
67
+ 120
68
+ ], [
69
+ "100",
70
+ t * .8,
71
+ i + 2,
72
+ 56
73
+ ]].forEach(([t, n, r, i]) => {
74
+ e.font = `bold ${i}px ${L}`, e.lineWidth = 6, e.strokeStyle = "#d6ebcd", e.strokeText(t, n, r), e.fillStyle = R, e.fillText(t, n, r);
75
+ }), e.font = `bold 24px ${L}`, [
76
+ [52, 40],
77
+ [t - 52, 40],
78
+ [52, n - 40],
79
+ [t - 52, n - 40]
80
+ ].forEach(([t, n]) => {
81
+ e.beginPath(), e.ellipse(t, n, 31, 16, 0, 0, P), e.fillStyle = "#cfe6c4", e.fill(), e.lineWidth = 1.5, e.strokeStyle = R, e.stroke(), e.fillStyle = R, e.fillText("100", t, n + 1);
82
+ }), e.font = `bold 14px ${L}`, e.fillText("★ AVALANCHA ★", r, 30), e.fillText("CIEN", r, n - 29), e.font = `12px ${L}`, 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);
83
+ }
84
+ function ie(e, t, n) {
85
+ e.fillStyle = "#d9eacf", e.fillRect(0, 0, t, n);
86
+ let r = n / 36;
87
+ 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));
88
+ }
89
+ function G(e) {
90
+ let t = e ? 256 : 512, n = H(t, t);
91
+ if (!n) return null;
92
+ n.save(), n.scale(t / 512, t / 2 / 230), re(n, 512, 230), n.restore(), n.save(), n.translate(0, t / 2), ie(n, t, t / 2), n.restore();
93
+ let r = new f(n.canvas);
94
+ return r.anisotropy = e ? 1 : 4, r;
95
+ }
96
+ function ae(e) {
97
+ let t = e ? 128 : 256, n = H(t, t);
98
+ if (!n) return null;
99
+ let r = t / 2, i = t / 128;
100
+ for (let e = 0; e < 96; e += 1) {
101
+ let t = e / 96 * P;
102
+ n.fillStyle = e % 2 ? "#f0c24a" : "#9c6c10", n.beginPath(), n.moveTo(r, r), n.arc(r, r, r * 1.5, t, t + P / 96 + .01), n.fill();
103
+ }
104
+ let a = n.createRadialGradient(r * .75, r * .7, r * .05, r, r, r * .9);
105
+ 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, P), n.fill(), U(n, i, "#e9b93c", (e) => {
106
+ n.strokeStyle = e, n.lineWidth = r * .05, n.beginPath(), n.arc(r, r, r * .84, 0, P), n.stroke();
107
+ }), U(n, i * .6, "#efc24a", (e) => {
108
+ n.fillStyle = e, n.beginPath();
109
+ for (let e = 0; e < 30; e += 1) {
110
+ let t = e / 30 * P, i = r + Math.cos(t) * r * .74, a = r + Math.sin(t) * r * .74;
111
+ n.moveTo(i + r * .03, a), n.arc(i, a, r * .03, 0, P);
112
+ }
113
+ n.fill();
114
+ }), U(n, i * 1.5, "#f6cd52", (e) => {
115
+ n.fillStyle = e, ne(n, r, r, r * .62, r * .3), n.fill();
116
+ }), U(n, i, "#c99418", (e) => {
117
+ n.fillStyle = e, n.font = `bold ${Math.round(r * .5)}px ${L}`, n.textAlign = "center", n.textBaseline = "middle", n.fillText("$", r, r * 1.03);
118
+ }), new f(n.canvas);
119
+ }
120
+ function K(e) {
121
+ let t = e.attributes.normal, n = e.attributes.uv;
122
+ for (let e = 0; e < n.count; e += 1) {
123
+ let [r, i] = Math.abs(t.getY(e)) > .5 ? B : V;
124
+ n.setY(e, r + n.getY(e) * (i - r));
125
+ }
126
+ }
127
+ function oe(e) {
128
+ let { length: t, width: n, thickness: r } = F, i = new l(t, r, n, e ? 4 : 8, 1, 1);
129
+ K(i);
130
+ let a = i.attributes.position;
131
+ for (let e = 0; e < a.count; e += 1) {
132
+ let n = a.getX(e) / (t / 2);
133
+ a.setY(e, a.getY(e) + n * n * .05);
134
+ }
135
+ return i.computeVertexNormals(), i.center(), i;
136
+ }
137
+ function se() {
138
+ let e = new l(F.length, te, F.width);
139
+ return K(e), e;
140
+ }
141
+ function ce(e) {
142
+ let t = e ? 16 : 24, n = new h(I.radius, I.radius, I.thickness, t, 1), r = n.attributes.position, i = n.attributes.uv;
143
+ for (let e = 0; e < (t + 1) * 2; e += 1) i.setXY(e, .5 + .47 * (r.getZ(e) / I.radius), .5 + .47 * (r.getX(e) / I.radius));
144
+ return n;
145
+ }
146
+ function le({ lowPower: e = !1 } = {}) {
147
+ let t = (t, n = {}) => e ? new w(t) : new T({
148
+ roughness: .8,
149
+ metalness: 0,
150
+ ...t,
151
+ ...n
152
+ }), n = G(e), r = ae(e), i = () => t({
153
+ color: n ? 12109491 : 9421439,
154
+ map: n
155
+ }), a = t({
156
+ color: r ? 16777215 : 16762941,
157
+ map: r,
158
+ emissive: e ? 5914124 : 9069592,
159
+ emissiveMap: r
160
+ }, {
161
+ metalness: .85,
162
+ roughness: .25
163
+ });
164
+ return [
165
+ {
166
+ kind: "bill",
167
+ parts: [{
168
+ geometry: oe(e),
169
+ material: i()
170
+ }],
171
+ radius: .45,
172
+ mass: .05,
173
+ bounce: .12,
174
+ friction: .6,
175
+ drag: .85,
176
+ count: 60,
177
+ countLow: 30
178
+ },
179
+ {
180
+ kind: "stack",
181
+ parts: [{
182
+ geometry: se(),
183
+ material: i()
184
+ }, {
185
+ geometry: new l(.2, .362, F.width + .012),
186
+ material: t({ color: 16777215 }, { roughness: .6 }),
187
+ tinted: !0
188
+ }],
189
+ palette: z.map((e) => new m(e)),
190
+ radius: .52,
191
+ mass: .8,
192
+ bounce: .22,
193
+ friction: .7,
194
+ drag: .12,
195
+ count: 12,
196
+ countLow: 6
197
+ },
198
+ {
199
+ kind: "coin",
200
+ parts: [{
201
+ geometry: ce(e),
202
+ material: a
203
+ }],
204
+ radius: .32,
205
+ mass: .3,
206
+ bounce: .65,
207
+ friction: .35,
208
+ drag: .04,
209
+ count: 50,
210
+ countLow: 24
211
+ }
212
+ ];
213
+ }
214
+ // src/effects/avalanche/models/tanks.js
215
+ var ue = ["green", "red"], de = .62, fe = .1, pe = new M(2.95, 1.1, 1.6), me = 1.2, he = .74, ge = new m("#3b3b3e"), _e = new m("#1b1b1d"), ve = (e) => e <= .0031308 ? e * 12.92 : 1.055 * e ** (1 / 2.4) - .055;
216
+ function ye() {
217
+ return {
218
+ p: [],
219
+ n: [],
220
+ c: []
221
+ };
222
+ }
223
+ function q(e, t, n, r, { srgb: i = !0, capY: a = Infinity } = {}) {
224
+ let o = t.attributes.position, s = t.attributes.normal, c = t.attributes.color, l = new S().getNormalMatrix(n), u = new M();
225
+ for (let t = 0; t < o.count; t += 1) {
226
+ u.fromBufferAttribute(o, t);
227
+ let d = u.y <= a;
228
+ 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) {
229
+ let n = c.getX(t), r = c.getY(t), a = c.getZ(t);
230
+ i ? e.c.push(ve(n), ve(r), ve(a)) : e.c.push(n, r, a);
231
+ } else e.c.push(1, 1, 1);
232
+ }
233
+ }
234
+ function J(e, t, n) {
235
+ let r = new Float32Array(e.p);
236
+ 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;
237
+ let i = new d();
238
+ return i.setAttribute("position", new u(r, 3)), i.setAttribute("normal", new u(new Float32Array(e.n), 3)), i.setAttribute("color", new u(new Float32Array(e.c), 3)), i.computeBoundingSphere(), i;
239
+ }
240
+ function be(e) {
241
+ let n = t[0], r = t[5], i = t[6], a = .38, o = [[n.x, 0], [t[4].x, 0]], s = (e, t, n, r, i) => {
242
+ for (let s = 0; s <= i; s += 1) {
243
+ let c = n + (r - n) * s / i;
244
+ o.push([e + Math.cos(c) * a, t + Math.sin(c) * a]);
245
+ }
246
+ };
247
+ 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]);
248
+ let c = [], l = [], f = [], p = Math.abs(n.z), m = 0;
249
+ for (let t = 0; t < o.length - 1; t += 1) {
250
+ let [n, r] = o[t], [i, a] = o[t + 1], s = Math.hypot(i - n, a - r);
251
+ if (s < 1e-6) continue;
252
+ let u = (a - r) / s, d = -(i - n) / s, h = Math.max(1, Math.round(s / e));
253
+ for (let e = 0; e < h; e += 1, m += 1) {
254
+ 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 ? _e : ge;
255
+ for (let e of [-1, 1]) {
256
+ let t = e * p - he / 2, n = e * p + he / 2, r = [
257
+ [
258
+ s,
259
+ g,
260
+ t
261
+ ],
262
+ [
263
+ _,
264
+ v,
265
+ t
266
+ ],
267
+ [
268
+ _,
269
+ v,
270
+ n
271
+ ],
272
+ [
273
+ s,
274
+ g,
275
+ t
276
+ ],
277
+ [
278
+ _,
279
+ v,
280
+ n
281
+ ],
282
+ [
283
+ s,
284
+ g,
285
+ n
286
+ ]
287
+ ];
288
+ for (let e of r) c.push(e[0], e[1], e[2]), l.push(u, d, 0), f.push(y.r, y.g, y.b);
289
+ }
290
+ }
291
+ }
292
+ let h = new d();
293
+ return h.setAttribute("position", new u(new Float32Array(c), 3)), h.setAttribute("normal", new u(new Float32Array(l), 3)), h.setAttribute("color", new u(new Float32Array(f), 3)), h;
294
+ }
295
+ function xe(e, t, n) {
296
+ return e ? new w(t) : new T({
297
+ ...t,
298
+ ...n
299
+ });
300
+ }
301
+ function Se({ lowPower: e = !1 } = {}) {
302
+ let o = r(), s = be(e ? .2 : .12), l = new c(), u = new C(), d = new C().makeTranslation(i.x, i.y, i.z), f = new C().compose(i.clone().add(a), new k().setFromAxisAngle(new M(0, 0, 1), fe), new M(de, 1, 1)), p = ye();
303
+ q(p, o.hull, u, l), q(p, o.turret, d, l, { capY: me });
304
+ let h = ye();
305
+ q(h, o.hullAccent, u, l), q(h, o.turretAccent, d, l, { capY: me });
306
+ let g = ye();
307
+ q(g, s, u, l, { srgb: !1 });
308
+ let v = new C(), y = new k();
309
+ for (let e of t) {
310
+ let n = e.r / t[0].r;
311
+ v.compose(new M(e.x, e.y, e.z), y, new M(n, n, n)), q(g, o.wheel, v, l);
312
+ }
313
+ let b = ye();
314
+ q(b, o.gun, f, l);
315
+ let x = ye();
316
+ q(x, o.lamps, u, l), o.dispose(), s.dispose();
317
+ let S = l.getSize(new M()), w = l.getCenter(new M()), T = Math.min(pe.x / S.x, pe.y / S.y, pe.z / S.z), E = xe(e, {
318
+ vertexColors: !0,
319
+ color: 16777215
320
+ }, {
321
+ roughness: .62,
322
+ metalness: .18,
323
+ flatShading: !0
324
+ }), D = xe(e, {
325
+ vertexColors: !0,
326
+ side: _
327
+ }, {
328
+ roughness: .8,
329
+ metalness: .2
330
+ }), O = xe(e, {
331
+ vertexColors: !0,
332
+ color: "#7a7f88"
333
+ }, {
334
+ roughness: .4,
335
+ metalness: .45
336
+ }), A = new ee({ color: new m(1.35, 1.35, 1.35) }), j = new ee({ color: "#fff1c2" });
337
+ return [{
338
+ kind: "tank",
339
+ parts: [
340
+ {
341
+ geometry: J(p, w, T),
342
+ material: E,
343
+ tinted: !0
344
+ },
345
+ {
346
+ geometry: J(h, w, T),
347
+ material: A,
348
+ tinted: !0
349
+ },
350
+ {
351
+ geometry: J(g, w, T),
352
+ material: D
353
+ },
354
+ {
355
+ geometry: J(b, w, T),
356
+ material: O
357
+ },
358
+ {
359
+ geometry: J(x, w, T),
360
+ material: j
361
+ }
362
+ ],
363
+ palette: ue.map((e) => n[e].tint.clone().convertLinearToSRGB()),
364
+ radius: .85,
365
+ mass: 5,
366
+ bounce: .2,
367
+ friction: .8,
368
+ drag: .04,
369
+ count: 6,
370
+ countLow: 4
371
+ }];
372
+ }
373
+ // src/effects/avalanche/models/confetti.js
374
+ var Ce = [
375
+ "#ff4d8d",
376
+ "#ffd23f",
377
+ "#3ddc97",
378
+ "#4cc9f0",
379
+ "#9b5de5",
380
+ "#ff7b29",
381
+ "#f15bb5",
382
+ "#ffffff"
383
+ ], we = [
384
+ "#ffcf4a",
385
+ "#ffd23f",
386
+ "#ffe08a",
387
+ "#ffb627",
388
+ "#ff4d8d",
389
+ "#4cc9f0"
390
+ ], Te = (e) => e.map((e) => new m(e));
391
+ function Ee(e, t, n = {}) {
392
+ return e ? new w(t) : new T({
393
+ roughness: .4,
394
+ metalness: .25,
395
+ ...t,
396
+ ...n
397
+ });
398
+ }
399
+ function De() {
400
+ let e = new D(.13, .2, 1, 4), t = e.attributes.position;
401
+ for (let e = 0; e < t.count; e += 1) {
402
+ let n = t.getY(e) / .1;
403
+ t.setZ(e, .035 * n * n);
404
+ }
405
+ return e.computeVertexNormals(), e.center(), e;
406
+ }
407
+ function Oe(e) {
408
+ let t = e ? 48 : 84, n = 1.3, r = new Float32Array((t + 1) * 6), i = new Float32Array((t + 1) * 6), a = [];
409
+ for (let e = 0; e <= t; e += 1) {
410
+ 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);
411
+ for (let t = 0; t < 2; t += 1) {
412
+ let n = (e * 2 + t) * 3;
413
+ 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;
414
+ }
415
+ if (e < t) {
416
+ let t = e * 2;
417
+ a.push(t, t + 1, t + 2, t + 1, t + 3, t + 2);
418
+ }
419
+ }
420
+ let o = new d();
421
+ return o.setAttribute("position", new u(r, 3)), o.setAttribute("normal", new u(i, 3)), o.setIndex(a), o.center(), o;
422
+ }
423
+ function ke() {
424
+ let e = new j();
425
+ for (let t = 0; t < 10; t += 1) {
426
+ 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;
427
+ t ? e.lineTo(i, a) : e.moveTo(i, a);
428
+ }
429
+ let t = new b(e, {
430
+ depth: .08,
431
+ bevelEnabled: !0,
432
+ bevelThickness: .03,
433
+ bevelSize: .02,
434
+ bevelSegments: 1
435
+ });
436
+ return t.center(), t;
437
+ }
438
+ function Ae({ lowPower: e = !1 } = {}) {
439
+ let t = De(), n = Oe(e), r = ke(), i = new p(.075, e ? 8 : 12);
440
+ return [
441
+ t,
442
+ n,
443
+ r,
444
+ i
445
+ ].forEach((e) => e.computeBoundingSphere()), [
446
+ {
447
+ kind: "confetti",
448
+ parts: [{
449
+ geometry: t,
450
+ material: Ee(e, {
451
+ color: 16777215,
452
+ side: _
453
+ }, {
454
+ metalness: .35,
455
+ roughness: .4
456
+ }),
457
+ tinted: !0
458
+ }],
459
+ palette: Te(Ce),
460
+ radius: .12,
461
+ mass: .02,
462
+ bounce: .1,
463
+ friction: .8,
464
+ drag: .92,
465
+ count: 500,
466
+ countLow: 200
467
+ },
468
+ {
469
+ kind: "streamer",
470
+ parts: [{
471
+ geometry: n,
472
+ material: Ee(e, {
473
+ color: 16777215,
474
+ side: _
475
+ }, {
476
+ metalness: .3,
477
+ roughness: .45
478
+ }),
479
+ tinted: !0
480
+ }],
481
+ palette: Te(Ce),
482
+ radius: .4,
483
+ mass: .03,
484
+ bounce: .12,
485
+ friction: .75,
486
+ drag: .85,
487
+ count: 40,
488
+ countLow: 16
489
+ },
490
+ {
491
+ kind: "star",
492
+ parts: [{
493
+ geometry: r,
494
+ material: Ee(e, {
495
+ color: 16777215,
496
+ emissive: 2758656
497
+ }, {
498
+ metalness: .6,
499
+ roughness: .25
500
+ }),
501
+ tinted: !0
502
+ }],
503
+ palette: Te(we),
504
+ radius: .35,
505
+ mass: .06,
506
+ bounce: .25,
507
+ friction: .55,
508
+ drag: .5,
509
+ count: 40,
510
+ countLow: 20
511
+ },
512
+ {
513
+ kind: "spark",
514
+ parts: [{
515
+ geometry: i,
516
+ material: Ee(e, {
517
+ color: 16777215,
518
+ emissive: 3351040,
519
+ side: _
520
+ }, {
521
+ metalness: .5,
522
+ roughness: .25
523
+ }),
524
+ tinted: !0
525
+ }],
526
+ palette: Te(we),
527
+ radius: .08,
528
+ mass: .015,
529
+ bounce: .1,
530
+ friction: .8,
531
+ drag: .9,
532
+ count: 160,
533
+ countLow: 60
534
+ }
535
+ ];
536
+ }
537
+ // src/effects/avalanche/physics.js
538
+ var je = 1 / 30, Me = 6, Ne = .1, Pe = 6, Fe = 6, Ie = .3, Le = 7, Re = 10, ze = 60, Y = 1.2, Be = 4, Ve = .15, He = 1.5, Ue = .3, We = .6, Ge = .3, Ke = .03, qe = .1, Je = .01, Ye = .2, Xe = .08, Ze = 3, Qe = .8, $e = .15, et = .4, tt = 14, nt = .3, rt = .35, it = 18, at = 5, ot = .9, st = 2.5, ct = 3, lt = 64, ut = 40;
539
+ Object.freeze({
540
+ DT_MAX: je,
541
+ MAX_SUBSTEPS: Me,
542
+ LIGHT_MASS: Ne,
543
+ DEFAULT_TTL: Pe,
544
+ DRAG_K: Fe,
545
+ AIR_SPIN_DAMP: Ie,
546
+ CONTACT_SPIN_DAMP: Le,
547
+ FLOOR_FRICTION: Re,
548
+ SETTLE_K: ze,
549
+ BOUNCE_MIN: Y,
550
+ IMPACT_SPEED: Be,
551
+ IMPACT_GAP: Ve,
552
+ WAKE_SPEED: He,
553
+ SLEEP_SPEED: Ue,
554
+ SLEEP_SPIN: We,
555
+ SLEEP_TIME: Ge,
556
+ FADE_IN: $e,
557
+ FADE_OUT: et,
558
+ FLUTTER: tt,
559
+ SWEEP_WIND: it,
560
+ SWEEP_LIFT: at,
561
+ WIND_TAU: ot,
562
+ WALL_OPEN_TIME: st,
563
+ OUT_MARGIN: ct
564
+ });
565
+ var X = (e, t) => typeof e == "number" && Number.isFinite(e) ? e : t, Z = (e, t, n) => e < t ? t : e > n ? n : e;
566
+ function dt() {
567
+ return {
568
+ id: 0,
569
+ kind: "",
570
+ x: 0,
571
+ y: 0,
572
+ z: 0,
573
+ vx: 0,
574
+ vy: 0,
575
+ vz: 0,
576
+ qx: 0,
577
+ qy: 0,
578
+ qz: 0,
579
+ qw: 1,
580
+ wx: 0,
581
+ wy: 0,
582
+ wz: 0,
583
+ radius: .5,
584
+ mass: 1,
585
+ age: 0,
586
+ ttl: Pe,
587
+ scale: 0,
588
+ landed: !1,
589
+ alive: !1,
590
+ asleep: !1,
591
+ bounce: .3,
592
+ friction: .5,
593
+ drag: .05,
594
+ hx: 0,
595
+ hy: 0,
596
+ hz: 0,
597
+ variant: 0,
598
+ data: null,
599
+ light: !1,
600
+ invMass: 1,
601
+ cr: .5,
602
+ sup: !1,
603
+ restT: 0,
604
+ impactT: -1e9,
605
+ phase: 0,
606
+ kx: 1,
607
+ ky: 1,
608
+ kz: 1,
609
+ px: 0,
610
+ py: 0,
611
+ pz: 0,
612
+ floor: !1
613
+ };
614
+ }
615
+ function ft({ gravity: e = -26, floorY: t = -5.5, left: n = -8, right: r = 8, maxBodies: i = 400, zMin: a = -2, zMax: o = 2, impactSpeed: s = Be, lightImpacts: c = !1, random: l = Math.random } = {}) {
616
+ let u = Math.max(1, Math.floor(X(i, 400))), d = X(e, -26), f = Math.min(X(a, -2), X(o, 2)), p = Math.max(X(a, -2), X(o, 2)), m = X(s, Be), h = X(t, -5.5), g = X(n, -8), _ = X(r, 8);
617
+ if (_ < g) {
618
+ let e = g;
619
+ g = _, _ = e;
620
+ }
621
+ let v = [], y = [], b = [], x = new Int32Array(u), S = new Int32Array(u), C = new Int32Array(u), ee = new Int32Array(u), w = /* @__PURE__ */ new Int32Array(4096), T = 1, E = 0, D = 0, O = 0, k = 0, A = 1;
622
+ function j(e) {
623
+ e.asleep = !1, e.restT = 0;
624
+ }
625
+ function M(e, t) {
626
+ if (!(t < m || e.light && !c || !b.length) && !(E - e.impactT < Ve)) {
627
+ e.impactT = E;
628
+ for (let n = 0; n < b.length; n++) try {
629
+ b[n](e, t);
630
+ } catch {}
631
+ }
632
+ }
633
+ function N(e, t) {
634
+ let n = e.vx, r = e.vy + d * t, i = e.vz, a = e.drag, o = e.landed;
635
+ if (a > nt && !o && (n += Math.sin(e.age * 3.3 + e.phase) * tt * a * t), a > 0) {
636
+ let e = a * Fe * t, o = 1 / (1 + e);
637
+ n = (n + e * D) * o, r = (r + e * O) * o, i *= o;
638
+ }
639
+ if (o) {
640
+ let r = 1 / (1 + e.friction * Re * t);
641
+ n *= r, i *= r;
642
+ }
643
+ e.vx = n, e.vy = r, e.vz = i, e.x += n * t, e.y += r * t, e.z += i * t;
644
+ let s = e.wx, c = e.wy, l = e.wz, u = e.qx, f = e.qy, p = e.qz, m = e.qw;
645
+ if (o) {
646
+ 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, _;
647
+ 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));
648
+ let v = ze * t * _;
649
+ s -= g * v, l += h * v;
650
+ let y = 1 / (1 + Le * t);
651
+ s *= y, c *= y, l *= y;
652
+ } else if (s !== 0 || c !== 0 || l !== 0) {
653
+ let e = 1 / (1 + Ie * t);
654
+ s *= e, c *= e, l *= e;
655
+ }
656
+ if (e.wx = s, e.wy = c, e.wz = l, s !== 0 || c !== 0 || l !== 0) {
657
+ 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);
658
+ if (d > 1e-9) {
659
+ let t = 1 / d;
660
+ e.qx = r * t, e.qy = i * t, e.qz = a * t, e.qw = o * t;
661
+ } else e.qx = 0, e.qy = 0, e.qz = 0, e.qw = 1;
662
+ }
663
+ }
664
+ function P(e) {
665
+ let t = e.cr, n = t;
666
+ if (e.hx > 0) {
667
+ 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);
668
+ n = (e.hx * Math.abs(s) + e.hy * Math.abs(c) + e.hz * Math.abs(l)) * (t / e.radius);
669
+ }
670
+ if (n += h, e.floor = e.y <= n + Ke, e.floor && (e.sup = !0, e.y < n && (e.y = n, e.vy < 0))) {
671
+ let t = -e.vy;
672
+ if (t > Y) {
673
+ e.vy = t * e.bounce;
674
+ let n = t * rt;
675
+ e.wx += (l() - .5) * n, e.wz += (l() - .5) * n - e.vx * .3 / e.radius;
676
+ } else e.vy = 0;
677
+ t >= m && M(e, t);
678
+ }
679
+ k <= 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 > Y ? -e.vx * (.25 + .5 * e.bounce) : 0)) : (e.x - t > _ + ct || e.x + t < g - ct) && (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);
680
+ }
681
+ function F(e, t) {
682
+ if (e.asleep) {
683
+ e.sup || j(e);
684
+ return;
685
+ }
686
+ if (!e.sup) {
687
+ e.restT = 0;
688
+ return;
689
+ }
690
+ 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;
691
+ a < Ue * Ue && o < We * We ? (e.restT += t, e.restT >= Ge && (e.asleep = !0, e.vx = 0, e.vy = 0, e.vz = 0, e.wx = 0, e.wy = 0, e.wz = 0)) : e.restT = 0;
692
+ }
693
+ function te(e, t) {
694
+ let n = t.x - e.x, r = t.y - e.y, i = t.z - e.z, a = e.cr + t.cr, o = a + Ke, s = n * n + r * r + i * i;
695
+ if (s >= o * o) return;
696
+ let c = Math.sqrt(s), u = 0, d = 1, f = 0;
697
+ if (c > 1e-6) {
698
+ let e = 1 / c;
699
+ u = n * e, d = r * e, f = i * e;
700
+ } else c = 0;
701
+ if (d > qe ? t.sup = !0 : d < -.1 && (e.sup = !0), e.asleep && t.asleep) return;
702
+ let p = a - c;
703
+ if (p <= 0) return;
704
+ let h = (t.vx - e.vx) * u + (t.vy - e.vy) * d + (t.vz - e.vz) * f;
705
+ (-h > He || p > Xe * a) && (e.asleep && j(e), t.asleep && j(t));
706
+ let g = e.asleep ? 0 : e.invMass, _ = t.asleep ? 0 : t.invMass;
707
+ if (g + _ <= 0) return;
708
+ let v = g, y = _;
709
+ if (d > qe && e.floor ? v = 0 : d < -.1 && t.floor && (y = 0), v + y <= 0 && (v = g, y = _), h < 0) {
710
+ let n = -h;
711
+ n < Ze && (g = v, _ = y);
712
+ 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 > Y ? e.bounce < t.bounce ? e.bounce : t.bounce : 0)) * n / r;
713
+ 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 * _;
714
+ let o = t.vx - e.vx, s = t.vy - e.vy, c = t.vz - e.vz, p = o * u + s * d + c * f;
715
+ o -= p * u, s -= p * d, c -= p * f;
716
+ let b = Math.sqrt(o * o + s * s + c * c);
717
+ if (b > 1e-6) {
718
+ let n = (e.friction + t.friction) * .5, i = b / r;
719
+ i > n * a && (i = n * a);
720
+ let l = i / b;
721
+ 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 * _;
722
+ }
723
+ if (n > Y * 2) {
724
+ let e = n * rt * .5;
725
+ i.wx += (l() - .5) * e, i.wz += (l() - .5) * e;
726
+ }
727
+ n >= m && M(i, n);
728
+ }
729
+ if (p > Je) {
730
+ let n = v / (v + y);
731
+ v > 0 && y > 0 && (n = n < Ye ? Ye : n > .8 ? .8 : n);
732
+ let r = (p - Je) * Qe, i = r * n, a = r - i;
733
+ e.x -= u * i, e.y -= d * i, e.z -= f * i, t.x += u * a, t.y += d * a, t.z += f * a;
734
+ }
735
+ }
736
+ function I(e, t) {
737
+ let n = 1 / Math.max(2 * t + Ke, .25), r = g - ct - t, i = h - t - 1, a = Z(Math.ceil((_ - g + 2 * (ct + t)) * n), 1, lt), o = Z(Math.ceil(ut * n), 1, lt);
738
+ w.fill(-1, 0, a * o);
739
+ for (let t = 0; t < e; t++) {
740
+ let e = v[x[t]];
741
+ if (!e.alive) {
742
+ C[t] = -1;
743
+ continue;
744
+ }
745
+ let s = Z(Math.floor((e.x - r) * n), 0, a - 1), c = Z(Math.floor((e.y - i) * n), 0, o - 1);
746
+ C[t] = s, ee[t] = c;
747
+ let l = c * a + s;
748
+ S[t] = w[l], w[l] = t;
749
+ }
750
+ for (let t = 0; t < e; t++) {
751
+ let e = C[t];
752
+ if (e < 0) continue;
753
+ let n = v[x[t]], r = ee[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;
754
+ for (let e = i; e <= s; e++) for (let r = c; r <= l; r++) for (let i = w[e * a + r]; i !== -1; i = S[i]) i > t && te(n, v[x[i]]);
755
+ }
756
+ }
757
+ function L(e) {
758
+ let t = Number(e);
759
+ if (!(t > 0)) return;
760
+ t > je && (t = je), E += t, k > 0 && (k -= t);
761
+ let n = v.length, r = 0, i = 0, a = Infinity, o = 0;
762
+ for (let e = 0; e < n; e++) {
763
+ let n = v[e];
764
+ if (!n.alive) continue;
765
+ let s = n.age += t, c = n.ttl - s;
766
+ if (c <= 0) {
767
+ n.alive = !1, n.scale = 0;
768
+ continue;
769
+ }
770
+ let l = 1, u = n.radius;
771
+ if (s < $e) {
772
+ let e = 1 - s / $e;
773
+ l = 1 - e * e * e;
774
+ }
775
+ if (c < et) {
776
+ let e = c / et, t = e * e * (3 - 2 * e);
777
+ l *= t, u *= t > .05 ? t : .05;
778
+ }
779
+ if (n.scale = l, n.cr = u, n.light) {
780
+ if (n.asleep && c >= et) continue;
781
+ n.sup = !1, n.px = n.x, n.py = n.y, n.pz = n.z, n.asleep || N(n, t), P(n), F(n, t), n.landed = n.sup;
782
+ } else {
783
+ if (x[r++] = e, !n.asleep) {
784
+ let e = n.vx * n.vx + n.vy * n.vy + n.vz * n.vz;
785
+ e > i && (i = e);
786
+ }
787
+ n.radius < a && (a = n.radius), u > o && (o = u);
788
+ }
789
+ }
790
+ if (r) {
791
+ let e = Math.sqrt(i) + Math.abs(d) * t, n = Z(Math.ceil(e * t / (a * .8)), 1, Me), s = t / n;
792
+ for (let e = 0; e < n; e++) {
793
+ for (let e = 0; e < r; e++) {
794
+ let t = v[x[e]];
795
+ t.alive && (t.sup = !1, t.px = t.x, t.py = t.y, t.pz = t.z, t.asleep || N(t, s));
796
+ }
797
+ r > 1 && I(r, o);
798
+ for (let e = 0; e < r; e++) {
799
+ let t = v[x[e]];
800
+ t.alive && (P(t), F(t, s), t.landed = t.sup);
801
+ }
802
+ }
803
+ }
804
+ if (D !== 0 || O !== 0) {
805
+ let e = Math.exp(-t / ot);
806
+ D *= e, O *= e, Math.abs(D) < .01 && Math.abs(O) < .01 && (D = 0, O = 0);
807
+ }
808
+ let s = 0, c = v.length;
809
+ for (let e = 0; e < c; e++) {
810
+ let t = v[e];
811
+ t.alive ? v[s++] = t : (t.scale = 0, t.data = null, y.push(t));
812
+ }
813
+ v.length = s;
814
+ }
815
+ function R(e, t, n, r) {
816
+ e.id = T++, e.kind = t.kind == null ? "" : t.kind, e.x = X(t.x, 0), e.y = X(t.y, 0), e.z = X(t.z, 0), e.vx = X(t.vx, 0), e.vy = X(t.vy, 0), e.vz = X(t.vz, 0), e.wx = X(t.wx, 0), e.wy = X(t.wy, 0), e.wz = X(t.wz, 0);
817
+ let i = X(t.qx, 0), a = X(t.qy, 0), o = X(t.qz, 0), s = X(t.qw, NaN), c = Number.isFinite(s) ? Math.sqrt(i * i + a * a + o * o + s * s) : 0;
818
+ if (c > 1e-6) e.qx = i / c, e.qy = a / c, e.qz = o / c, e.qw = s / c;
819
+ else {
820
+ let t = l(), n = l() * 6.283185307179586, r = l() * 6.283185307179586, i = Math.sqrt(1 - t), a = Math.sqrt(t);
821
+ e.qx = i * Math.sin(n), e.qy = i * Math.cos(n), e.qz = a * Math.sin(r), e.qw = a * Math.cos(r);
822
+ }
823
+ let u = X(t.radius, .5);
824
+ e.radius = u > .01 ? u : .01, e.mass = n, e.invMass = 1 / n, e.light = r, e.bounce = Z(X(t.bounce, .3), 0, 1), e.friction = Z(X(t.friction, .5), 0, 1), e.drag = Z(X(t.drag, .05), 0, 2);
825
+ let d = X(t.ttl, Pe);
826
+ 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;
827
+ let f = X(t.hx, 0), p = X(t.hy, 0), m = X(t.hz, 0);
828
+ if (f > 0 && p > 0 && m > 0) {
829
+ let t = Math.max(f, p, m), n = .5 * t, r = n / (f + n), i = n / (p + n), a = n / (m + n);
830
+ 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;
831
+ } else e.hx = 0, e.hy = 0, e.hz = 0, e.kx = 1, e.ky = 1, e.kz = 1;
832
+ return e.variant = t.variant == null ? 0 : t.variant, e.data = t.data == null ? null : t.data, e;
833
+ }
834
+ function z() {
835
+ let e = null;
836
+ for (let t = 0; t < v.length; t++) {
837
+ let n = v[t];
838
+ n.light && n.alive && (!e || n.age > e.age) && (e = n);
839
+ }
840
+ return e;
841
+ }
842
+ function B(e) {
843
+ if (!e || typeof e != "object") return null;
844
+ let t = X(e.mass, 1), n = t > .001 ? t : .001, r = n < Ne, i;
845
+ if (v.length >= u) {
846
+ if (r || (i = z(), !i)) return null;
847
+ } else i = y.pop() || dt(), v.push(i);
848
+ return R(i, e, n, r);
849
+ }
850
+ function V(e = {}) {
851
+ if (h = X(e.floorY, h), g = X(e.left, g), _ = X(e.right, _), _ < g) {
852
+ let e = g;
853
+ g = _, _ = e;
854
+ }
855
+ for (let e = 0; e < v.length; e++) j(v[e]);
856
+ }
857
+ function H(e = 1, t) {
858
+ let n = Z(X(e, 1), 0, 3), r = A;
859
+ t > 0 ? r = 1 : t < 0 ? r = -1 : A = -A, D = r * n * it, O = n * at, k = st;
860
+ for (let e = 0; e < v.length; e++) {
861
+ let t = v[e];
862
+ if (!t.alive) continue;
863
+ j(t), t.landed = !1;
864
+ let i = n / (1 + .35 * t.mass);
865
+ 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;
866
+ }
867
+ }
868
+ function U() {
869
+ for (let e = 0; e < v.length; e++) {
870
+ let t = v[e];
871
+ t.alive = !1, t.scale = 0, t.data = null, y.push(t);
872
+ }
873
+ v.length = 0, D = 0, O = 0, k = 0, A = 1;
874
+ }
875
+ function ne(e) {
876
+ return typeof e == "function" ? (b.push(e), () => {
877
+ let t = b.indexOf(e);
878
+ t >= 0 && b.splice(t, 1);
879
+ }) : () => {};
880
+ }
881
+ return {
882
+ bodies: v,
883
+ spawn: B,
884
+ step: L,
885
+ setBounds: V,
886
+ sweep: H,
887
+ clear: U,
888
+ onImpact: ne,
889
+ get time() {
890
+ return E;
891
+ }
892
+ };
893
+ }
894
+ // src/effects/avalanche/avalancheScene3d.js
895
+ var pt = 12, mt = -26, ht = .05, gt = -2.5, _t = 1, vt = /* @__PURE__ */ new Set([
896
+ "car",
897
+ "tank",
898
+ "stack"
899
+ ]), yt = [
900
+ "#ff4d8d",
901
+ "#ffd23f",
902
+ "#3ddc97",
903
+ "#4cc9f0",
904
+ "#9b5de5",
905
+ "#ff7b29"
906
+ ].map((e) => new m(e)), bt = 12, Q = (e, t) => e + Math.random() * (t - e), xt = (e) => e[Math.floor(Math.random() * e.length)], $ = (e, t, n) => Math.min(n, Math.max(t, e)), St = (e) => String(e).split("-")[0], Ct = () => typeof matchMedia == "function" && matchMedia("(pointer: coarse)").matches || (navigator.hardwareConcurrency || 8) <= 4;
907
+ function wt(e = 64) {
908
+ let t = document.createElement("canvas");
909
+ t.width = e, t.height = e;
910
+ let n = t.getContext("2d"), r = n.createRadialGradient(e / 2, e / 2, 0, e / 2, e / 2, e / 2);
911
+ 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 f(t);
912
+ }
913
+ function Tt(e) {
914
+ let t = new c();
915
+ return e.forEach(({ geometry: e }) => {
916
+ e.boundingBox || e.computeBoundingBox(), t.union(e.boundingBox);
917
+ }), {
918
+ x: Math.max(Math.abs(t.min.x), Math.abs(t.max.x)),
919
+ y: Math.max(Math.abs(t.min.y), Math.abs(t.max.y)),
920
+ z: Math.max(Math.abs(t.min.z), Math.abs(t.max.z))
921
+ };
922
+ }
923
+ function Et(e, t, n) {
924
+ let r = St(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 : yt, s = t.parts.map(({ geometry: t, material: n, tinted: r }) => {
925
+ let i = new x(t, n, a);
926
+ if (i.instanceMatrix.setUsage(v), i.frustumCulled = !1, r) {
927
+ for (let e = 0; e < a; e += 1) i.setColorAt(e, o[0]);
928
+ i.instanceColor.setUsage(v);
929
+ }
930
+ return i.count = 0, i.visible = !1, e.add(i), {
931
+ mesh: i,
932
+ tinted: !!r
933
+ };
934
+ }), c = Tt(t.parts);
935
+ return {
936
+ kind: t.kind,
937
+ family: r,
938
+ model: t,
939
+ parts: s,
940
+ palette: o,
941
+ capacity: a,
942
+ used: 0,
943
+ pending: 0,
944
+ big: vt.has(r),
945
+ half: c,
946
+ blobRadius: (t.radius + Math.max(c.x, c.z)) / 2
947
+ };
948
+ }
949
+ function Dt(e, { lowPower: t } = {}) {
950
+ let n = !!(t ?? Ct()), r = new N({
951
+ canvas: e,
952
+ alpha: !0,
953
+ antialias: !n,
954
+ powerPreference: "high-performance"
955
+ });
956
+ try {
957
+ return Ot(r, n);
958
+ } catch (e) {
959
+ throw r.dispose(), r.forceContextLoss?.(), e;
960
+ }
961
+ }
962
+ function Ot(t, n) {
963
+ t.setPixelRatio(Math.min(n ? 1.5 : 2, window.devicePixelRatio || 1)), t.setClearColor(0, 0);
964
+ let r = new A(), i = new E(50, 1, .1, 80);
965
+ i.position.set(0, 0, pt);
966
+ let a = n ? .8 : 1, c = new g(16769200, 1.25 * a);
967
+ c.position.set(5, 7, 9);
968
+ let l = new g(10275071, .55 * a);
969
+ l.position.set(-7, 1, 5);
970
+ let u = new O(16773570, 0, 40, 1.4);
971
+ u.position.set(0, 1, 5), r.add(new s(16777215, .5 * a), c, l, u);
972
+ let d = [
973
+ le,
974
+ e,
975
+ Se,
976
+ Ae
977
+ ].flatMap((e) => e({ lowPower: n }) || []), f = d.map((e) => Et(r, e, n)), p = Object.create(null);
978
+ f.forEach((e) => {
979
+ p[e.family] || (p[e.family] = []), p[e.family].push(e);
980
+ });
981
+ let m = f.reduce((e, t) => e + t.capacity, 0), h = {
982
+ left: -9.9,
983
+ right: 9.9,
984
+ top: 5.6,
985
+ floorY: -5.55,
986
+ room: 1
987
+ }, _ = ft({
988
+ gravity: mt,
989
+ floorY: h.floorY,
990
+ left: h.left,
991
+ right: h.right,
992
+ zMin: gt,
993
+ zMax: _t,
994
+ maxBodies: Math.min(m, n ? 320 : 640)
995
+ }), b = o(r, { lowPower: n }), S = n ? 0 : 32, w = S ? wt() : null, T = S ? new x(new D(1, 1).rotateX(-Math.PI / 2), new ee({
996
+ map: w,
997
+ transparent: !0,
998
+ depthWrite: !1,
999
+ opacity: .6
1000
+ }), S) : null;
1001
+ T && (T.instanceMatrix.setUsage(v), T.frustumCulled = !1, T.count = 0, T.visible = !1, T.renderOrder = -1, r.add(T));
1002
+ let j = n ? 16 : 26, N = j, P = 0, F = 0, te = n ? 3 : 6, I = te, L = n ? .55 : 1, R = 0, z = 0, B = 0, V = new C(), H = new M(), U = new k(), ne = new k(), W = new M(), re = new y();
1003
+ _.onImpact((e, t) => {
1004
+ let n = e.data;
1005
+ if (!n || I <= 0 || R - n.fxAt < .3) return;
1006
+ let r = $(t / 20, .2, 1), i = e.y - e.radius * .6;
1007
+ switch (n.pool.family) {
1008
+ case "car":
1009
+ b.puff(e.x, i, e.z, r);
1010
+ break;
1011
+ case "tank":
1012
+ b.puff(e.x, i, e.z, r), t > bt && (b.blast(e.x, i, e.z, r), z = Math.min(.7, z + .3 * r), B = Math.max(B, .4 * r));
1013
+ break;
1014
+ case "coin":
1015
+ case "stack":
1016
+ b.sparkle(e.x, e.y, e.z, r * .8);
1017
+ break;
1018
+ default: return;
1019
+ }
1020
+ n.fxAt = R, --I;
1021
+ });
1022
+ function ie(e) {
1023
+ let t = p[e];
1024
+ if (!t) return null;
1025
+ let n = Math.floor(Math.random() * t.length);
1026
+ for (let e = 0; e < t.length; e += 1) {
1027
+ let r = t[(n + e) % t.length];
1028
+ if (!(r.used + r.pending >= r.capacity)) return r.big && P + F >= N ? null : r;
1029
+ }
1030
+ return null;
1031
+ }
1032
+ function G(e, t) {
1033
+ let n = ie(e);
1034
+ if (!n) return null;
1035
+ let { model: r, half: i } = n, a = t.size ?? Q(.9, 1.1);
1036
+ if (t.yaw != null) {
1037
+ let e = t.tilt ?? .25;
1038
+ re.set(Q(-e, e), t.yaw, Q(-e, e));
1039
+ } else re.set(Q(0, 6.3), Q(0, 6.3), Q(0, 6.3));
1040
+ U.setFromEuler(re);
1041
+ let o = _.spawn({
1042
+ kind: r.kind,
1043
+ x: t.x,
1044
+ y: t.y,
1045
+ z: $(t.z ?? 0, gt, _t),
1046
+ vx: t.vx ?? 0,
1047
+ vy: t.vy ?? 0,
1048
+ vz: t.vz ?? 0,
1049
+ wx: t.wx ?? 0,
1050
+ wy: t.wy ?? 0,
1051
+ wz: t.wz ?? 0,
1052
+ qx: U.x,
1053
+ qy: U.y,
1054
+ qz: U.z,
1055
+ qw: U.w,
1056
+ hx: i.x * a,
1057
+ hy: i.y * a,
1058
+ hz: i.z * a,
1059
+ radius: r.radius * a,
1060
+ mass: r.mass * a,
1061
+ bounce: r.bounce,
1062
+ friction: r.friction,
1063
+ drag: r.drag * (t.dragScale ?? 1),
1064
+ ttl: t.ttl ?? 6,
1065
+ data: {
1066
+ pool: n,
1067
+ size: a,
1068
+ tint: xt(n.palette),
1069
+ fxAt: -1
1070
+ }
1071
+ });
1072
+ return o ? (n.pending += 1, n.big && (F += 1), o) : null;
1073
+ }
1074
+ let ae = () => {
1075
+ let e = Math.random();
1076
+ return e < .07 && p.streamer ? "streamer" : e < .14 && p.star ? "star" : e < .3 && p.spark ? "spark" : "confetti";
1077
+ };
1078
+ function K(e, t) {
1079
+ let n = e < 0 ? h.left + .5 : h.right - .5, r = Math.round(80 * t * L);
1080
+ for (let t = 0; t < r; t += 1) G(ae(), {
1081
+ x: n + Q(-.3, .3),
1082
+ y: h.floorY + Q(.3, .9),
1083
+ z: Q(gt, _t),
1084
+ vx: -e * Q(3, 9),
1085
+ vy: Q(24, 38),
1086
+ vz: Q(-1.5, 1.5),
1087
+ wx: Q(-14, 14),
1088
+ wy: Q(-14, 14),
1089
+ wz: Q(-14, 14),
1090
+ ttl: Q(3.5, 5.2),
1091
+ size: Q(.8, 1.25),
1092
+ dragScale: .4
1093
+ });
1094
+ }
1095
+ function oe(e) {
1096
+ let t = Math.round(42 * e * L);
1097
+ for (let e = 0; e < t; e += 1) G("bill", {
1098
+ x: Q(h.left + .6, h.right - .6),
1099
+ y: h.top + Q(.3, 3.5),
1100
+ z: Q(gt, _t),
1101
+ vx: Q(-1.5, 1.5),
1102
+ vy: Q(-3, 0),
1103
+ vz: Q(-.5, .5),
1104
+ wx: Q(-7, 7),
1105
+ wy: Q(-3, 3),
1106
+ wz: Q(-7, 7),
1107
+ ttl: Q(5, 6.5),
1108
+ size: Q(.9, 1.15)
1109
+ });
1110
+ }
1111
+ function se(e) {
1112
+ for (let t = 0; t < e; t += 1) G("stack", {
1113
+ x: Q(h.left, h.right) * .75,
1114
+ y: h.top + Q(.6, 2.2),
1115
+ z: Q(-1.5, .5),
1116
+ vx: Q(-2, 2),
1117
+ vy: Q(-4, -1),
1118
+ wx: Q(-3, 3),
1119
+ wy: Q(-2, 2),
1120
+ wz: Q(-3, 3),
1121
+ ttl: Q(6.5, 7.5)
1122
+ });
1123
+ }
1124
+ function ce(e) {
1125
+ let t = Math.round(48 * e * L);
1126
+ for (let e = 0; e < t; e += 1) G("coin", {
1127
+ x: Q(h.left + .5, h.right - .5) * .85,
1128
+ y: h.top + Q(.3, 3),
1129
+ z: Q(-2, .8),
1130
+ vx: Q(-2, 2),
1131
+ vy: Q(-7, -1),
1132
+ wx: Q(-12, 12),
1133
+ wy: Q(-4, 4),
1134
+ wz: Q(-12, 12),
1135
+ ttl: Q(5, 6.5),
1136
+ size: Q(.9, 1.15)
1137
+ });
1138
+ }
1139
+ function ue(e) {
1140
+ let t = Math.random() < .5 ? -1 : 1;
1141
+ for (let n = 0; n < e; n += 1) {
1142
+ let e = n % 2 ? -t : t;
1143
+ G("car", {
1144
+ x: e < 0 ? h.left + Q(1.3, 3) : h.right - Q(1.3, 3),
1145
+ y: h.top + Q(.8, 2.4) + n * .4,
1146
+ z: Q(-1.8, .4),
1147
+ vx: -e * Q(3, 7.5),
1148
+ vy: Q(-1, 3),
1149
+ vz: Q(-1, .6),
1150
+ wx: Q(-2.5, 2.5),
1151
+ wy: Q(-2, 2),
1152
+ wz: Q(-5, 5),
1153
+ yaw: e < 0 ? 0 : Math.PI,
1154
+ tilt: .4,
1155
+ ttl: Q(6.5, 7.5),
1156
+ size: Q(.92, 1.08)
1157
+ });
1158
+ }
1159
+ }
1160
+ function de(e) {
1161
+ let t = Math.max(0, h.right - h.left - 4);
1162
+ for (let n = 0; n < e; n += 1) G("tank", {
1163
+ x: h.left + 2 + t * ((n + .5 + Q(-.25, .25)) / e),
1164
+ y: h.top + Q(1, 3),
1165
+ z: Q(-1.6, .3),
1166
+ vx: Q(-1, 1),
1167
+ vy: Q(-9, -5),
1168
+ wx: Q(-.6, .6),
1169
+ wy: Q(-1.5, 1.5),
1170
+ wz: Q(-.6, .6),
1171
+ yaw: (Math.random() < .5 ? 0 : Math.PI) + Q(-.5, .5),
1172
+ tilt: .15,
1173
+ ttl: Q(6.5, 7.5),
1174
+ size: Q(.95, 1.06)
1175
+ });
1176
+ }
1177
+ let fe = (e, t, r) => $(Math.round(e * h.room * (n ? .75 : 1)), t, r), pe = {
1178
+ confetti(e) {
1179
+ K(-1, e), K(1, e);
1180
+ },
1181
+ money(e) {
1182
+ oe(e), se(Math.round((2 + 2 * e) * (n ? .6 : 1))), ce(e * .15);
1183
+ },
1184
+ cars(e) {
1185
+ ue(fe(3 + 2 * e, 2, 5));
1186
+ },
1187
+ tanks(e) {
1188
+ de(fe(2 + 2 * e, n ? 1 : 2, 4));
1189
+ },
1190
+ coins(e) {
1191
+ ce(e), se(1);
1192
+ },
1193
+ mix(e) {
1194
+ K(-1, e * .5), K(1, e * .5), oe(e * .55), ce(e * .45), se(n ? 1 : 2), ue(fe(2 + e, 1, 3)), de(fe(1 + e, 1, 2));
1195
+ },
1196
+ finale(e) {
1197
+ let { bodies: t } = _;
1198
+ for (let e = 0; e < t.length; e += 1) {
1199
+ let n = t[e];
1200
+ n.alive && (n.ttl = Math.min(n.ttl, n.age + Q(.9, 1.4)));
1201
+ }
1202
+ _.sweep(e, 1);
1203
+ let n = Math.round(80 * e * L);
1204
+ for (let e = 0; e < n; e += 1) G("bill", {
1205
+ x: h.left - Q(.3, 2.5),
1206
+ y: Q(h.floorY + 1, h.top + .5),
1207
+ z: Q(gt, _t),
1208
+ vx: Q(20, 32),
1209
+ vy: Q(2, 7),
1210
+ vz: Q(-1, 1),
1211
+ wx: Q(-9, 9),
1212
+ wy: Q(-4, 4),
1213
+ wz: Q(-9, 9),
1214
+ ttl: Q(1.2, 1.5),
1215
+ size: Q(.9, 1.2),
1216
+ dragScale: .3
1217
+ });
1218
+ for (let e = 0; e < 3; e += 1) b.sparkle(Q(h.left, h.right) * .6, Q(-1, 2), 0, 1);
1219
+ z = Math.max(z, .45);
1220
+ }
1221
+ };
1222
+ function me() {
1223
+ for (let e = 0; e < f.length; e += 1) f[e].used = 0, f[e].pending = 0;
1224
+ let e = 0, t = 0, { bodies: n } = _;
1225
+ for (let r = 0; r < n.length; r += 1) {
1226
+ let i = n[r], a = i.data;
1227
+ if (!i.alive || !a) continue;
1228
+ let { pool: o } = a;
1229
+ if (o.used >= o.capacity) continue;
1230
+ let s = a.size * i.scale;
1231
+ H.set(i.x, i.y, i.z), U.set(i.qx, i.qy, i.qz, i.qw), W.set(s, s, s), V.compose(H, U, W);
1232
+ let c = o.used;
1233
+ o.used += 1;
1234
+ let { parts: l } = o;
1235
+ for (let e = 0; e < l.length; e += 1) {
1236
+ let t = l[e];
1237
+ t.mesh.setMatrixAt(c, V), t.tinted && t.mesh.setColorAt(c, a.tint);
1238
+ }
1239
+ if (!o.big || (e += 1, t >= S)) continue;
1240
+ let u = i.y - h.floorY - o.half.y * a.size, d = o.blobRadius * s * $(1 - u / 6, .15, 1);
1241
+ H.set(i.x, h.floorY + .02, i.z), W.set(d * 2.4, 1, d * 1.5), V.compose(H, ne, W), T.setMatrixAt(t, V), t += 1;
1242
+ }
1243
+ for (let e = 0; e < f.length; e += 1) {
1244
+ let { parts: t, used: n } = f[e];
1245
+ for (let e = 0; e < t.length; e += 1) {
1246
+ let { mesh: r, tinted: i } = t[e];
1247
+ r.count = n, r.visible = n > 0, n && (r.instanceMatrix.needsUpdate = !0, i && (r.instanceColor.needsUpdate = !0));
1248
+ }
1249
+ }
1250
+ P = e, F = 0, T && (T.count = t, T.visible = t > 0, T.instanceMatrix.needsUpdate = !0);
1251
+ }
1252
+ return {
1253
+ lowPower: n,
1254
+ stats() {
1255
+ let e = Object.create(null), n = 0;
1256
+ return f.forEach(({ family: t, used: r }) => {
1257
+ e[t] = (e[t] || 0) + r, n += r;
1258
+ }), {
1259
+ bodies: n,
1260
+ big: P,
1261
+ bigCap: N,
1262
+ live: e,
1263
+ calls: t.info.render.calls,
1264
+ triangles: t.info.render.triangles
1265
+ };
1266
+ },
1267
+ burst(e, t = 1) {
1268
+ pe[e]?.(t), B = Math.max(B, e === "finale" ? 1 : t * .3);
1269
+ },
1270
+ render(e) {
1271
+ let n = Math.min(e, .05);
1272
+ R += n, I = te, _.step(n), b.update(n), me(), z = Math.max(0, z - n * 2.2), B = Math.max(0, B - n * 2.5), u.intensity = B * 4 * a, i.position.x = (Math.random() - .5) * z * .4, i.position.y = (Math.random() - .5) * z * .4, t.render(r, i);
1273
+ },
1274
+ resize(e, n) {
1275
+ t.setSize(e, n, !1), i.aspect = e / n, i.fov = i.aspect < 1 ? $(50 / Math.max(i.aspect, .55) * .8, 50, 85) : 50, i.updateProjectionMatrix();
1276
+ let r = Math.tan(i.fov * Math.PI / 360) * pt, a = r * i.aspect;
1277
+ h.top = r, h.floorY = -r + ht, h.left = -a, h.right = a, h.room = $(a * 2 / 16, .5, 1), N = Math.max(8, Math.round(j * h.room)), _.setBounds({
1278
+ floorY: h.floorY,
1279
+ left: h.left,
1280
+ right: h.right
1281
+ });
1282
+ },
1283
+ dispose() {
1284
+ b.dispose(), _.clear();
1285
+ let e = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();
1286
+ f.forEach(({ parts: e }) => e.forEach(({ mesh: e }) => {
1287
+ e.dispose(), r.remove(e);
1288
+ })), d.forEach(({ parts: t }) => t.forEach(({ geometry: t, material: r }) => {
1289
+ e.add(t), [].concat(r).forEach((e) => n.add(e));
1290
+ })), T && (T.dispose(), r.remove(T), e.add(T.geometry), n.add(T.material)), n.forEach((e) => {
1291
+ Object.keys(e).forEach((t) => {
1292
+ e[t]?.isTexture && i.add(e[t]);
1293
+ }), e.dispose();
1294
+ }), i.forEach((e) => e.dispose()), e.forEach((e) => e.dispose()), t.dispose(), t.forceContextLoss?.();
1295
+ }
1296
+ };
1297
+ }
1298
+ export { Dt as createAvalancheScene };
1299
+
1300
+ //# sourceMappingURL=avalancheScene3d-CIE2WKQn.js.map