@minicode-dev/chat 0.1.13 → 0.1.14

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 (110) 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-B-B4r7lK.js} +146 -144
  51. package/dist/chunks/{BattleshipGameCard-iRk8d4vR.js.map → BattleshipGameCard-B-B4r7lK.js.map} +1 -1
  52. package/dist/chunks/{ChatContext-DjIEifGY.js → ChatContext-DQtKsR6Z.js} +2 -2
  53. package/dist/chunks/{ChatContext-DjIEifGY.js.map → ChatContext-DQtKsR6Z.js.map} +1 -1
  54. package/dist/chunks/RacingLiveGameCard-c1G7uoDI.js +1654 -0
  55. package/dist/chunks/RacingLiveGameCard-c1G7uoDI.js.map +1 -0
  56. package/dist/chunks/{TanksGameCard-GrqmdwJ7.js → TanksGameCard-CvTaF7tu.js} +164 -162
  57. package/dist/chunks/{TanksGameCard-GrqmdwJ7.js.map → TanksGameCard-CvTaF7tu.js.map} +1 -1
  58. package/dist/chunks/TanksLiveGameCard-COr9Oay5.js +1011 -0
  59. package/dist/chunks/TanksLiveGameCard-COr9Oay5.js.map +1 -0
  60. package/dist/chunks/avalancheScene3d-Z5QyZIid.js +1299 -0
  61. package/dist/chunks/avalancheScene3d-Z5QyZIid.js.map +1 -0
  62. package/dist/chunks/connect4Sounds-DmD-E9kX.js +235 -0
  63. package/dist/chunks/connect4Sounds-DmD-E9kX.js.map +1 -0
  64. package/dist/chunks/connectionStore-DwgIUl30.js +13 -0
  65. package/dist/chunks/connectionStore-DwgIUl30.js.map +1 -0
  66. package/dist/chunks/createLiveScene-CWBunxPi.js +367 -0
  67. package/dist/chunks/{createLiveScene-819NWv84.js.map → createLiveScene-CWBunxPi.js.map} +1 -1
  68. package/dist/chunks/createRaceScene-C7Rw89kj.js +305 -0
  69. package/dist/chunks/createRaceScene-C7Rw89kj.js.map +1 -0
  70. package/dist/chunks/{createTankScene-6asWHKFf.js → createTankScene-yhX6la27.js} +125 -123
  71. package/dist/chunks/{createTankScene-6asWHKFf.js.map → createTankScene-yhX6la27.js.map} +1 -1
  72. package/dist/chunks/decor-CyyCnmct.js +418 -0
  73. package/dist/chunks/decor-CyyCnmct.js.map +1 -0
  74. package/dist/chunks/fx-1ZwzmPWj.js +458 -0
  75. package/dist/chunks/fx-1ZwzmPWj.js.map +1 -0
  76. package/dist/chunks/fx-UZwhOmdl.js +584 -0
  77. package/dist/chunks/fx-UZwhOmdl.js.map +1 -0
  78. package/dist/chunks/gameStatus-BChd29yI.js +62 -0
  79. package/dist/chunks/gameStatus-BChd29yI.js.map +1 -0
  80. package/dist/chunks/{connect4Sounds-Cv0q31VW.js → games-BvYTWgaR.js} +814 -951
  81. package/dist/chunks/games-BvYTWgaR.js.map +1 -0
  82. package/dist/chunks/rolldown-runtime-CGnMp29N.js +10 -0
  83. package/dist/chunks/tank-DjEQ4FXF.js +553 -0
  84. package/dist/chunks/tank-DjEQ4FXF.js.map +1 -0
  85. package/dist/chunks/tanks-live-BcKmrhnV.js +261 -0
  86. package/dist/chunks/tanks-live-BcKmrhnV.js.map +1 -0
  87. package/dist/chunks/{tanksSounds-CUNDIOal.js → tanksSounds-DwjfSp3W.js} +43 -11
  88. package/dist/chunks/tanksSounds-DwjfSp3W.js.map +1 -0
  89. package/dist/chunks/track-BcnnpnAm.js +259 -0
  90. package/dist/chunks/track-BcnnpnAm.js.map +1 -0
  91. package/dist/chunks/util-DwI9bfS7.js +57 -0
  92. package/dist/chunks/util-DwI9bfS7.js.map +1 -0
  93. package/dist/index.js +812 -625
  94. package/dist/index.js.map +1 -1
  95. package/dist/styles.css +1 -1
  96. package/index.d.ts +3 -1
  97. package/package.json +1 -1
  98. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js +0 -1225
  99. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js.map +0 -1
  100. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js +0 -1878
  101. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js.map +0 -1
  102. package/dist/chunks/connect4Sounds-Cv0q31VW.js.map +0 -1
  103. package/dist/chunks/createLiveScene-819NWv84.js +0 -365
  104. package/dist/chunks/fx-BNJvJYOu.js +0 -871
  105. package/dist/chunks/fx-BNJvJYOu.js.map +0 -1
  106. package/dist/chunks/gameStatus-Cu1Z8un9.js +0 -69
  107. package/dist/chunks/gameStatus-Cu1Z8un9.js.map +0 -1
  108. package/dist/chunks/tank-DIn6Jyt8.js +0 -605
  109. package/dist/chunks/tank-DIn6Jyt8.js.map +0 -1
  110. package/dist/chunks/tanksSounds-CUNDIOal.js.map +0 -1
@@ -1,365 +0,0 @@
1
- import { _ as e, a as t, c as n, f as r, h as i, i as a, l as o, o as s, s as c, u as l } from "./tank-DIn6Jyt8.js";
2
- import { a as ee, c as u, i as d, l as te, n as ne, o as f, r as re, s as ie } from "./TanksLiveGameCard-DSmQcUMh.js";
3
- import { a as ae, i as oe, n as se, o as ce, r as le, t as ue } from "./fx-BNJvJYOu.js";
4
- import { ACESFilmicToneMapping as de, DirectionalLight as fe, DynamicDrawUsage as pe, Fog as me, Group as he, HemisphereLight as ge, InstancedMesh as _e, Matrix4 as ve, MeshBasicMaterial as ye, MeshLambertMaterial as be, MeshStandardMaterial as xe, PCFSoftShadowMap as Se, PerspectiveCamera as Ce, Plane as we, PlaneGeometry as Te, Raycaster as Ee, Scene as De, Vector2 as Oe, Vector3 as p, WebGLRenderer as ke, sRGBEncoding as Ae } from "three";
5
- // src/games/tanks-live/scene/createLiveScene.js
6
- var m = 4, je = 8, h = 14, Me = 2, Ne = 1 / 15, Pe = new p(.62, .42, .66).normalize(), Fe = {
7
- green: "green",
8
- red: "red"
9
- }, Ie = {
10
- green: i("#22c55e"),
11
- red: i("#ef4444"),
12
- gold: i("#fbbf24")
13
- };
14
- function Le(t, n, r) {
15
- let i = e(r), a = [
16
- i() * 6.28,
17
- i() * 6.28,
18
- i() * 6.28,
19
- i() * 6.28
20
- ], o = new Float32Array(t * t), s = n / (t - 1);
21
- for (let e = 0; e < t; e++) for (let n = 0; n < t; n++) {
22
- let r = n * s, i = e * s;
23
- o[e * t + n] = 2 + .45 * Math.sin(r * .07 + a[0]) * Math.cos(i * .06 + a[1]) + .3 * Math.sin(r * .16 + i * .11 + a[2]) + .18 * Math.cos(r * .23 - i * .19 + a[3]);
24
- }
25
- return o;
26
- }
27
- function g(g, { arena: Re, lowPower: _ = !1, reducedMotion: v = !1, onEvent: ze } = {}) {
28
- if (!g) throw Error("createLiveScene: container element required");
29
- let Be = (e) => {
30
- try {
31
- ze?.(e);
32
- } catch {}
33
- }, y = _ ? "low" : "high", b = re(Re), x = Math.ceil((Math.max(b.width, b.depth) + 28) / Me) * Me, S = h - b.minX, C = h - b.minZ, w = !1, Ve = typeof window < "u" && window.devicePixelRatio || 1, T = new ke({
34
- antialias: !_ || Ve < 2,
35
- alpha: !1,
36
- stencil: !1,
37
- powerPreference: "high-performance"
38
- });
39
- T.outputEncoding = Ae, T.toneMapping = de, T.toneMappingExposure = 1.05, T.shadowMap.enabled = !_, T.shadowMap.type = Se, T.setPixelRatio(Math.min(Ve, _ ? 1.25 : 1.75)), T.setClearColor(le.horizon, 1);
40
- let E = T.domElement;
41
- E.style.display = "block", E.style.width = "100%", E.style.height = "100%", E.style.outline = "none", g.appendChild(E);
42
- let D = Math.max(1, g.clientWidth), O = Math.max(1, g.clientHeight);
43
- T.setSize(D, O, !1);
44
- let He = !1, Ue = (e) => {
45
- e?.preventDefault?.(), He = !0, Be({ type: "context_lost" });
46
- };
47
- E.addEventListener("webglcontextlost", Ue);
48
- let k = new De();
49
- k.fog = new me(le.fog.clone(), 70, 320);
50
- let A = new Ce(55, D / O, .5, 1400), j = new he();
51
- k.add(j);
52
- let We = new ge(i("#ffd2b0"), i("#33402f"), _ ? .8 : .6), M = new fe(i("#ffbe7a"), 1.9);
53
- if (!_) {
54
- M.castShadow = !0, M.shadow.mapSize.set(1024, 1024), M.shadow.bias = -6e-4, M.shadow.normalBias = .04;
55
- let e = M.shadow.camera;
56
- e.left = -42, e.right = 42, e.top = 42, e.bottom = -42, e.near = 20, e.far = 320, e.updateProjectionMatrix();
57
- }
58
- k.add(We, M, M.target);
59
- let N = new p(x / 2, 0, x / 2), Ge = ae(Pe);
60
- k.add(Ge.mesh);
61
- let Ke = oe(N, Pe);
62
- k.add(Ke.mesh);
63
- let P = ce(), qe = x / Me + 1;
64
- P.setHeights({
65
- heights: Le(qe, x, Number(Re?.seed) || 7),
66
- grid: qe,
67
- size: x
68
- }), j.add(P.mesh);
69
- let F = se();
70
- F.setQuality(y), F.setShadows(!_);
71
- let Je = d(Re), I = [], Ye = [];
72
- for (let e of Je) {
73
- let t = e.x + S, n = e.z + C;
74
- e.kind === "tree" ? I.push({
75
- kind: "tree",
76
- x: t,
77
- z: n,
78
- scale: l(e.r / 1.3, .7, 2.2)
79
- }) : Ye.push({
80
- kind: "rock",
81
- x: t,
82
- z: n,
83
- w: e.r * 2,
84
- d: e.r * 2,
85
- h: e.r * 1.2
86
- });
87
- }
88
- {
89
- let t = e(31), n = _ ? 40 : 90;
90
- for (let e = 0; e < n; e++) {
91
- let n = e % 4, r = t() * x, i = 2 + t() * 9, a = n === 0 ? i : n === 1 ? x - i : r, o = n === 2 ? i : n === 3 ? x - i : r;
92
- I.push({
93
- kind: "tree",
94
- x: a,
95
- z: o,
96
- scale: .8 + t() * .7
97
- });
98
- }
99
- }
100
- F.build(j, {
101
- decor: I,
102
- obstacles: Ye
103
- }, P);
104
- let Xe = [];
105
- {
106
- let t = e(53), n = _ ? 7 : 4.5, r = (e, r, i, a) => {
107
- let o = Math.hypot(i - e, a - r), s = Math.max(1, Math.round(o / n));
108
- for (let n = 0; n <= s; n++) {
109
- let o = n / s;
110
- Xe.push({
111
- kind: "rock",
112
- x: e + (i - e) * o,
113
- z: r + (a - r) * o,
114
- scale: .45 + t() * .35
115
- });
116
- }
117
- }, i = h + b.width + 1, a = h + b.depth + 1;
118
- r(13, 13, i, 13), r(i, 13, i, a), r(i, a, 13, a), r(13, a, 13, 13);
119
- }
120
- let L = se();
121
- L.setQuality(y), L.build(j, {
122
- decor: Xe,
123
- obstacles: []
124
- }, P);
125
- let R = ue(k, {
126
- quality: y,
127
- reducedMotion: v,
128
- heightAt: P.heightAt
129
- }), z = s(), B = c();
130
- B.wheelMat = _ ? new be({ vertexColors: !0 }) : new xe({
131
- vertexColors: !0,
132
- roughness: .7,
133
- metalness: .25
134
- });
135
- let V = new _e(z.wheel, B.wheelMat, m * a.length);
136
- V.instanceMatrix.setUsage(pe), V.frustumCulled = !1, V.count = 0, j.add(V);
137
- let Ze = o(64), Qe = new Te(1, 1);
138
- Qe.rotateX(-Math.PI / 2);
139
- let $e = new ye({
140
- map: Ze,
141
- transparent: !0,
142
- depthWrite: !1,
143
- polygonOffset: !0,
144
- polygonOffsetFactor: -2,
145
- polygonOffsetUnits: -2
146
- }), H = new _e(Qe, $e, m);
147
- H.frustumCulled = !1, H.count = 0, H.renderOrder = 2, j.add(H);
148
- let U = /* @__PURE__ */ new Map(), W = new p(), G = new p(), et = new ve(), tt = new p();
149
- function nt(e, n) {
150
- let r = String(e.id), i = U.get(r);
151
- if (i && i.alive === !1 && e.alive !== !1 && (rt(r), i = null), i) return i;
152
- let a = Fe[e.color] || (n === 0 ? "green" : "red"), o = t(z, B, {
153
- id: r,
154
- color: a,
155
- quality: y
156
- });
157
- return o.setShadows(!_), j.add(o.root), o.state.pitch = 4, i = {
158
- t: o,
159
- color: a,
160
- alive: !0,
161
- last: null,
162
- dustAcc: 0,
163
- exhaustAcc: 0,
164
- seen: !0
165
- }, U.set(r, i), i;
166
- }
167
- function rt(e) {
168
- let t = U.get(e);
169
- t && (t.t.state.blown && t.t.turret.removeFromParent(), t.t.dispose(), U.delete(e));
170
- }
171
- function it(e, t) {
172
- let r = e.state;
173
- if (r.blown) return;
174
- if (j.attach(e.turret), !t) {
175
- let t = (r.hullYaw + 120) * n, i = r.x + Math.cos(t) * 4.5, a = r.z + Math.sin(t) * 4.5;
176
- e.turret.position.set(i, P.heightAt(i, a) + .2, a), e.turret.rotation.set(.5, t, 2.6), r.blown = {
177
- p: e.turret.position.clone(),
178
- v: new p(),
179
- w: new p(),
180
- landed: !0
181
- };
182
- return;
183
- }
184
- let i = Math.random() * Math.PI * 2;
185
- r.blown = {
186
- p: e.turret.position.clone(),
187
- v: new p(Math.cos(i) * 3.5, 15, Math.sin(i) * 3.5),
188
- w: new p((Math.random() - .5) * 6, (Math.random() - .5) * 5, (Math.random() - .5) * 6),
189
- landed: !1
190
- };
191
- }
192
- function at(e, t) {
193
- let n = e.state.blown;
194
- if (!n || n.landed) return;
195
- n.v.y -= 20 * t, n.p.addScaledVector(n.v, t), e.turret.rotation.x += n.w.x * t, e.turret.rotation.y += n.w.y * t, e.turret.rotation.z += n.w.z * t;
196
- let r = P.heightAt(n.p.x, n.p.z) + .25;
197
- n.p.y < r && n.v.y < 0 && (n.p.y = r, n.v.y < -5 ? (n.v.y *= -.25, n.v.x *= .5, n.v.z *= .5, n.w.multiplyScalar(.4), R.dust(n.p.x, r, n.p.z, 2)) : n.landed = !0), e.turret.position.copy(n.p);
198
- }
199
- let K = /* @__PURE__ */ new Map(), ot = Array.from({ length: je }, (e, t) => t);
200
- function st(e) {
201
- let t = /* @__PURE__ */ new Set();
202
- for (let n of e || []) {
203
- let e = String(n.id);
204
- t.add(e);
205
- let r = n.x + S, i = n.z + C, a = Number.isFinite(n.y) ? n.y + ct : P.heightAt(r, i) + 1.8, o = K.get(e);
206
- if (o == null) {
207
- if (!ot.length) continue;
208
- o = ot.pop(), K.set(e, o), R.projShow(o, r, a, i, !1);
209
- } else R.projMove(o, r, a, i);
210
- }
211
- for (let [e, n] of K) t.has(e) || (R.projHide(n), K.delete(e), ot.push(n));
212
- }
213
- let ct = 2, q = {
214
- pos: new p(),
215
- target: new p(),
216
- yaw: 0,
217
- snap: !0,
218
- shake: 0,
219
- orbit: 0
220
- }, J = !1;
221
- function lt() {
222
- let e = D / O;
223
- J = e < .85, A.fov = J ? 68 : e < 1.25 ? 60 : 52, A.aspect = e, A.updateProjectionMatrix();
224
- }
225
- lt();
226
- function ut(e) {
227
- v || (q.shake = Math.max(q.shake, e));
228
- }
229
- function dt(e, t) {
230
- if (!t) q.pos.set(N.x, 70, N.z + x * .55), q.target.set(N.x, 2, N.z);
231
- else {
232
- let i = t.t.state, a = J ? 19 : 15, o = J ? 15 : 10.5, s = J ? 14 : 12;
233
- if (t.alive) {
234
- let t = te(i.hullYaw * n - q.yaw);
235
- q.yaw += t * (q.snap ? 1 : r(2.6, e));
236
- let c = Math.cos(q.yaw), l = Math.sin(q.yaw);
237
- W.set(i.x - c * a, i.y + o, i.z - l * a), G.set(i.x + c * s, i.y + 1, i.z + l * s);
238
- } else q.orbit += e * (v ? 0 : .3), W.set(i.x + Math.cos(q.orbit) * 20, i.y + 9, i.z + Math.sin(q.orbit) * 20), G.set(i.x, i.y + 2, i.z);
239
- let c = P.heightAt(W.x, W.z) + 2.5;
240
- W.y < c && (W.y = c), q.snap ? (q.pos.copy(W), q.target.copy(G), q.orbit = Math.atan2(q.pos.z - i.z, q.pos.x - i.x)) : (q.pos.lerp(W, r(6, e)), q.target.lerp(G, r(8, e))), q.snap = !1;
241
- }
242
- if (A.position.copy(q.pos), q.shake > .002) {
243
- let t = q.shake;
244
- A.position.x += (Math.random() - .5) * t, A.position.y += (Math.random() - .5) * t, A.position.z += (Math.random() - .5) * t, q.shake *= Math.exp(-7 * e);
245
- } else q.shake = 0;
246
- A.lookAt(q.target), _ || (M.target.position.copy(q.target), M.position.copy(q.target).addScaledVector(Pe, 200));
247
- }
248
- let Y = null;
249
- function ft(e, t) {
250
- let n = f(e);
251
- if (n === "fire") {
252
- let n = ie(e, t), r = n ? U.get(String(n.id)) : null;
253
- if (!r) return;
254
- r.t.state.recoil = 1, r.t.muzzleWorld(W), r.t.gunDirWorld(G), R.muzzle(W, G), n.self && ut(.18);
255
- } else if (n === "impact") {
256
- if (!Number.isFinite(e.x) || !Number.isFinite(e.z)) return;
257
- let t = e.x + S, n = e.z + C, r = P.heightAt(t, n);
258
- R.explosion(t, r, n, 3, e.kind === "obstacle" ? "obstacle" : "terrain"), P.crater(t, n, 2.2, 0), F.blast(P, t, n, 2.5);
259
- } else if (n === "hit") {
260
- let n = u(t, e.target), r = n ? U.get(String(n.id)) : null, i = Number.isFinite(e.x) ? e.x + S : r?.t.state.x, a = Number.isFinite(e.z) ? e.z + C : r?.t.state.z;
261
- if (i == null) return;
262
- let o = (r ? r.t.state.y : P.heightAt(i, a)) + 1.6;
263
- R.hitSparks(i, o, a), R.explosion(i, o, a, 2.6, "tank"), r && (r.t.state.hitFlash = 1), ut(n?.self ? .9 : .25);
264
- } else if (n === "destroyed") {
265
- let n = u(t, e.target), r = n ? U.get(String(n.id)) : null;
266
- if (!r) return;
267
- let i = r.t.state;
268
- R.bigExplosion(i.x, i.y, i.z), F.blast(P, i.x, i.z, 6), P.crater(i.x, i.z, 4, 0), r.t.setCharred(!0), it(r.t, !v), r.alive = !1, ut(n.self ? 1.4 : .6);
269
- } else n === "over" && (Y = {
270
- id: e.winner == null ? null : String(e.winner),
271
- t: 0,
272
- next: .2
273
- });
274
- }
275
- let pt = {
276
- tanks: 0,
277
- shells: 0,
278
- particles: 0,
279
- calls: 0,
280
- triangles: 0
281
- }, X = null;
282
- function mt(e, t = 16) {
283
- if (w || He) return;
284
- let r = l((Number(t) || 16) / 1e3, .001, Ne), i = e && e.tanks || [];
285
- for (let e of U.values()) e.seen = !1;
286
- let o = 0, s = 0;
287
- X = null, i.forEach((e, t) => {
288
- if (!Number.isFinite(e.x) || !Number.isFinite(e.z)) return;
289
- let i = nt(e, t);
290
- i.seen = !0;
291
- let c = i.t, l = c.state, u = e.x + S, d = e.z + C, f = (e.yaw ?? 0) * ne;
292
- if (i.last) {
293
- let e = u - i.last.x, t = d - i.last.z, a = e * Math.cos(f * n) + t * Math.sin(f * n), o = te((f - i.last.yaw) * n) * 1.4;
294
- (Math.abs(a) > 1e-4 || Math.abs(o) > 1e-4) && c.scrollTracks(Math.abs(a) > 1e-4 ? a : o);
295
- let s = Math.hypot(e, t) / r;
296
- if (s > 1 && i.alive) for (i.dustAcc += r * s * (_ ? .5 : 1); i.dustAcc > 1.4;) i.dustAcc -= 1.4, c.localToWorld(W, -2.6, 0, (Math.random() - .5) * 2.6), R.dust(W.x, P.heightAt(W.x, W.z), W.z, .9);
297
- }
298
- if (i.last = {
299
- x: u,
300
- z: d,
301
- yaw: f
302
- }, i.alive && e.alive !== !1) for (i.exhaustAcc += r * (_ ? 3 : 6); i.exhaustAcc > 1;) --i.exhaustAcc, c.localToWorld(W, -2.9, 1.3, .8), R.exhaust(W.x, W.y, W.z);
303
- l.x = u, l.z = d, l.y = P.heightAt(u, d), l.hullYaw = f, l.yaw = (e.turretYaw ?? e.yaw ?? 0) * ne, l.hp = e.hp ?? l.hp, e.alive === !1 && i.alive && (i.alive = !1, c.setCharred(!0), it(c, !1)), l.recoil > 0 && (l.recoil = Math.max(0, l.recoil - r * 4)), l.hitFlash > 0 && (l.hitFlash = Math.max(0, l.hitFlash - r * 3), c.setFlash(l.hitFlash)), c.place(P, r), at(c, r);
304
- let re = ee(e.hp ?? 100, i.alive);
305
- re > 0 && (c.localToWorld(W, -.6, 2.2, 0), R.emitDamage(W.x, W.y, W.z, r, re, l)), o + a.length <= m * a.length && (c.writeWheels(V, o), o += a.length), _ && s < m && (tt.set(8, 1, 6), et.makeRotationY(-f * n).scale(tt).setPosition(u, l.y + .05, d), H.setMatrixAt(s++, et)), e.self && (X = i);
306
- });
307
- for (let [e, t] of U) t.seen || rt(e);
308
- V.count = o, V.instanceMatrix.needsUpdate = !0, H.count = s, s && (H.instanceMatrix.needsUpdate = !0), !X && i.length && (X = U.get(String(i[0].id)) || null);
309
- for (let t of e && e.events || []) ft(t, i);
310
- if (st(e && e.shells), Y) {
311
- Y.t += r;
312
- let e = Y.id == null ? null : U.get(Y.id);
313
- if (e && Y.t < 4 && Y.t >= Y.next && !v) {
314
- Y.next += .45;
315
- let t = e.t.state;
316
- R.firework(t.x + (Math.random() - .5) * 8, t.y + 9 + Math.random() * 4, t.z + (Math.random() - .5) * 8, Math.random() < .5 && Ie[e.color] || Ie.gold);
317
- }
318
- Y.t > 4 && (Y = null);
319
- }
320
- dt(r, X), R.update(r, A, T, !1), T.render(k, A);
321
- let c = T.info.render;
322
- pt = {
323
- tanks: U.size,
324
- shells: K.size,
325
- particles: R.particleCount,
326
- calls: c.calls,
327
- triangles: c.triangles
328
- };
329
- }
330
- let ht = new Ee(), gt = new Oe(), _t = new we(new p(0, 1, 0), 0), Z = new p();
331
- function vt(e, t) {
332
- if (w) return null;
333
- gt.set(e, t), ht.setFromCamera(gt, A);
334
- let n = X ? X.t.state.y + 1 : 2;
335
- return _t.constant = -n, ht.ray.intersectPlane(_t, Z) ? {
336
- x: Z.x - S,
337
- z: Z.z - C
338
- } : null;
339
- }
340
- function Q() {
341
- if (w) return;
342
- let e = g.clientWidth, t = g.clientHeight;
343
- e && t && (D = e, O = t, T.setSize(e, t, !1), lt());
344
- }
345
- let $ = typeof ResizeObserver < "u" ? new ResizeObserver(Q) : null;
346
- return $ ? $.observe(g) : typeof window < "u" && window.addEventListener("resize", Q), {
347
- kind: "3d",
348
- render: mt,
349
- screenToGround: vt,
350
- resize: Q,
351
- getStats() {
352
- return { ...pt };
353
- },
354
- dispose() {
355
- if (!w) {
356
- w = !0, $ ? $.disconnect() : typeof window < "u" && window.removeEventListener("resize", Q), E.removeEventListener("webglcontextlost", Ue);
357
- for (let e of Array.from(U.keys())) rt(e);
358
- V.dispose(), B.wheelMat.dispose(), B.dispose(), z.dispose(), H.dispose(), Qe.dispose(), $e.dispose(), Ze.dispose(), R.dispose(), F.dispose(), L.dispose(), P.dispose(), Ge.dispose(), Ke.dispose(), M.shadow && M.shadow.map && M.shadow.map.dispose(), k.clear(), T.dispose(), T.forceContextLoss(), E.parentNode && E.parentNode.removeChild(E);
359
- }
360
- }
361
- };
362
- }
363
- export { g as createLiveScene, g as default };
364
-
365
- //# sourceMappingURL=createLiveScene-819NWv84.js.map