@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
@@ -1,1878 +0,0 @@
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