@daneren2005/shared-memory-physics 1.7.0 → 1.7.2

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.
package/dist/index.js CHANGED
@@ -13,29 +13,29 @@ var l = 16, u = 0, d = 1, f = 33, p = class extends t {
13
13
  size: 33,
14
14
  loadProperties: ["vertices"],
15
15
  toBlock(e) {
16
- let t = h(e.vertices);
16
+ let t = h(e.vertices, e.width, e.height);
17
17
  return [t.vertices.length / 2, ...t.vertices];
18
18
  },
19
19
  attach(e, t, n) {
20
20
  return new p(t.getBlock(n), n);
21
21
  }
22
22
  };
23
- function h(e) {
23
+ function h(e, t, n) {
24
24
  if (!e || e.length < 3 || e.length > 16) throw Error("A polygon needs between 3 and 16 vertices");
25
- let t = Infinity, n = Infinity, r = -Infinity, i = -Infinity;
26
- for (let [a, o] of e) {
27
- if (!Number.isFinite(a) || !Number.isFinite(o)) throw Error("Polygon vertices must be finite numbers");
28
- t = Math.min(t, a), n = Math.min(n, o), r = Math.max(r, a), i = Math.max(i, o);
29
- }
30
- let a = r - t, o = i - n;
31
- if (a <= 0 || o <= 0) throw Error("A polygon must have nonzero width and height");
32
- let s = 0;
25
+ let r = Infinity, i = Infinity, a = -Infinity, o = -Infinity;
26
+ for (let [t, n] of e) {
27
+ if (!Number.isFinite(t) || !Number.isFinite(n)) throw Error("Polygon vertices must be finite numbers");
28
+ r = Math.min(r, t), i = Math.min(i, n), a = Math.max(a, t), o = Math.max(o, n);
29
+ }
30
+ let s = a - r, c = o - i;
31
+ if (s <= 0 || c <= 0) throw Error("A polygon must have nonzero width and height");
32
+ let l = 0;
33
33
  for (let t = 0; t < e.length; t++) {
34
34
  let n = e[(t + e.length - 1) % e.length], r = e[t], i = e[(t + 1) % e.length], a = (r[0] - n[0]) * (i[1] - r[1]) - (r[1] - n[1]) * (i[0] - r[0]);
35
35
  if (a === 0) throw Error("A polygon cannot contain duplicate or collinear adjacent vertices");
36
36
  let o = Math.sign(a);
37
- if (s === 0) s = o;
38
- else if (o !== s) throw Error("Polygon vertices must describe a convex polygon in boundary order");
37
+ if (l === 0) l = o;
38
+ else if (o !== l) throw Error("Polygon vertices must describe a convex polygon in boundary order");
39
39
  }
40
40
  for (let t = 0; t < e.length; t++) {
41
41
  let n = e[t], r = e[(t + 1) % e.length];
@@ -45,12 +45,18 @@ function h(e) {
45
45
  if (g(n, r, a, o)) throw Error("Polygon edges cannot cross or share non-adjacent vertices");
46
46
  }
47
47
  }
48
- let c = (t + r) / 2, l = (n + i) / 2, u = [], d = s > 0 ? e : e.toReversed();
49
- for (let [e, t] of d) u.push((e - c) / a, (t - l) / o);
48
+ if (t === void 0 != (n === void 0)) throw Error("A sized polygon needs both a width and a height");
49
+ let u = t !== void 0 && n !== void 0;
50
+ if (u) {
51
+ if (!(t > 0) || !(n > 0)) throw Error("A sized polygon needs a positive width and height");
52
+ if (r < -t / 2 || a > t / 2 || i < -n / 2 || o > n / 2) throw Error("Polygon vertices must fit inside the width and height they are given with");
53
+ }
54
+ let d = u ? t : s, f = u ? n : c, p = u ? 0 : (r + a) / 2, m = u ? 0 : (i + o) / 2, h = [], _ = l > 0 ? e : e.toReversed();
55
+ for (let [e, t] of _) h.push((e - p) / d, (t - m) / f);
50
56
  return {
51
- width: a,
52
- height: o,
53
- vertices: u
57
+ width: d,
58
+ height: f,
59
+ vertices: h
54
60
  };
55
61
  }
56
62
  function g(e, t, n, r) {
@@ -105,8 +111,8 @@ var v = 0, y = 1, b = 2, x = 3, S = 4, C = 5, w = class extends t {
105
111
  toBlock(e) {
106
112
  let t = e.radius, n = e.vertices, r = e.width, i = e.height;
107
113
  if (n !== void 0) {
108
- if (t !== void 0 || r !== void 0 || i !== void 0) throw Error("A transform takes polygon vertices, a radius, or a width and height");
109
- let e = h(n);
114
+ if (t !== void 0) throw Error("A transform takes polygon vertices or a radius, not both");
115
+ let e = h(n, r, i);
110
116
  r = e.width, i = e.height;
111
117
  }
112
118
  if (t !== void 0) {
@@ -182,26 +188,26 @@ function M(e) {
182
188
  }
183
189
  //#endregion
184
190
  //#region src/components/dynamics-component.ts
185
- var N = 0, ee = 1, te = 2, ne = 3, P = class extends t {
191
+ var N = 0, P = 1, ee = 2, F = 3, I = class extends t {
186
192
  get accelerationX() {
187
193
  return this.block[0];
188
194
  }
189
195
  set accelerationX(e) {
190
- ae(e, "Acceleration"), this.block[0] = e;
196
+ re(e, "Acceleration"), this.block[0] = e;
191
197
  }
192
198
  get accelerationY() {
193
199
  return this.block[1];
194
200
  }
195
201
  set accelerationY(e) {
196
- ae(e, "Acceleration"), this.block[1] = e;
202
+ re(e, "Acceleration"), this.block[1] = e;
197
203
  }
198
204
  get mass() {
199
205
  return 1 / this.block[2];
200
206
  }
201
207
  set mass(e) {
202
- ie(e), this.block[2] = 1 / e;
208
+ ne(e), this.block[2] = 1 / e;
203
209
  }
204
- }, re = {
210
+ }, te = {
205
211
  type: Float32Array,
206
212
  size: 3,
207
213
  loadProperties: [
@@ -211,14 +217,14 @@ var N = 0, ee = 1, te = 2, ne = 3, P = class extends t {
211
217
  ],
212
218
  toBlock(e) {
213
219
  let t = e.accelerationX ?? 0, n = e.accelerationY ?? 0, r = e.mass ?? 1;
214
- return ae(t, "Acceleration"), ae(n, "Acceleration"), ie(r), [
220
+ return re(t, "Acceleration"), re(n, "Acceleration"), ne(r), [
215
221
  t,
216
222
  n,
217
223
  1 / r
218
224
  ];
219
225
  },
220
226
  attach(e, t, n) {
221
- return new P(t.getBlock(n), n);
227
+ return new I(t.getBlock(n), n);
222
228
  },
223
229
  save(e) {
224
230
  return {
@@ -228,43 +234,43 @@ var N = 0, ee = 1, te = 2, ne = 3, P = class extends t {
228
234
  };
229
235
  }
230
236
  };
231
- function ie(e) {
237
+ function ne(e) {
232
238
  if (!Number.isFinite(e) || e <= 0) throw Error("Mass must be a finite number greater than zero");
233
239
  }
234
- function ae(e, t) {
240
+ function re(e, t) {
235
241
  if (!Number.isFinite(e)) throw Error(`${t} must be a finite number`);
236
242
  }
237
243
  //#endregion
238
244
  //#region src/components/body-component.ts
239
- var oe = 1, se = 2, ce = 3, le = 4, ue = [
245
+ var ie = 1, ae = 2, oe = 3, se = 4, ce = [
240
246
  1,
241
247
  2,
242
248
  3,
243
249
  4
244
- ], de = 1, fe = 4294967295;
245
- function pe(e, t, n, r) {
250
+ ], le = 1, ue = 4294967295;
251
+ function de(e, t, n, r) {
246
252
  return (t & n) !== 0 && (r & e) !== 0;
247
253
  }
248
- var me = 0, he = 1, ge = 2, _e = 3, ve = 7, ye = 8, be = 16, xe = 32, Se = 64;
249
- function F(e) {
254
+ var fe = 0, pe = 1, me = 2, he = 3, ge = 7, _e = 8, ve = 16, ye = 32, be = 64;
255
+ function L(e) {
250
256
  return e[0] & 7;
251
257
  }
252
- function I(e) {
258
+ function R(e) {
253
259
  return !!(e[0] & 8);
254
260
  }
255
- function Ce(e) {
261
+ function xe(e) {
256
262
  return !!(e[0] & 16);
257
263
  }
258
- function we(e) {
264
+ function Se(e) {
259
265
  return !!(e[0] & 64);
260
266
  }
261
- function Te(e) {
267
+ function Ce(e) {
262
268
  return !!(e[0] & 32);
263
269
  }
264
- function Ee(e) {
270
+ function we(e) {
265
271
  e[0] |= 32;
266
272
  }
267
- var De = class extends t {
273
+ var Te = class extends t {
268
274
  get shape() {
269
275
  return this.block[0] & 7;
270
276
  }
@@ -301,7 +307,7 @@ var De = class extends t {
301
307
  set blocksPath(e) {
302
308
  this.block[0] = e ? this.block[0] | 64 : this.block[0] & -65;
303
309
  }
304
- }, Oe = {
310
+ }, Ee = {
305
311
  type: Uint32Array,
306
312
  size: 3,
307
313
  loadProperties: [
@@ -318,36 +324,36 @@ var De = class extends t {
318
324
  ],
319
325
  toBlock(e) {
320
326
  return [
321
- ke(e),
327
+ De(e),
322
328
  e.collideCategory ?? 1,
323
329
  e.collideMask ?? 4294967295
324
330
  ];
325
331
  },
326
332
  attach(e, t, n) {
327
- return new De(t.getBlock(n), n);
333
+ return new Te(t.getBlock(n), n);
328
334
  }
329
335
  };
330
- function ke(e) {
331
- let t = Ae(e);
336
+ function De(e) {
337
+ let t = Oe(e);
332
338
  return e.sensor && (t |= 8), e.continuousCollisionDetection && (t |= 16), e.blocksPath && (t |= 64), t;
333
339
  }
334
- function Ae(e) {
340
+ function Oe(e) {
335
341
  let t = e.shape;
336
342
  if (t === void 0) return e.vertices === void 0 ? e.radius === void 0 ? 1 : 2 : 4;
337
- if (!ue.includes(t)) throw Error(`Unknown body shape: ${t}`);
343
+ if (!ce.includes(t)) throw Error(`Unknown body shape: ${t}`);
338
344
  if (t === 4 && e.vertices === void 0) throw Error("A polygon body requires vertices");
339
345
  return t;
340
346
  }
341
347
  //#endregion
342
348
  //#region src/components/bounciness-component.ts
343
- var je = 0, Me = 1, Ne = class extends t {
349
+ var ke = 0, Ae = 1, je = class extends t {
344
350
  get bounciness() {
345
351
  return this.block[0];
346
352
  }
347
353
  set bounciness(e) {
348
354
  this.block[0] = e;
349
355
  }
350
- }, Pe = {
356
+ }, Me = {
351
357
  type: Float32Array,
352
358
  size: 1,
353
359
  loadProperties: ["bounciness"],
@@ -355,9 +361,9 @@ var je = 0, Me = 1, Ne = class extends t {
355
361
  return [e.bounciness ?? 0];
356
362
  },
357
363
  attach(e, t, n) {
358
- return new Ne(t.getBlock(n), n);
364
+ return new je(t.getBlock(n), n);
359
365
  }
360
- }, Fe = 0, Ie = 1, Le = 2, Re = 3, ze = 4, Be = 5, Ve = 6, He = 7, Ue = 8, We = 9, Ge = 10, Ke = 11, qe = class extends t {
366
+ }, Ne = 0, Pe = 1, Fe = 2, Ie = 3, Le = 4, Re = 5, ze = 6, Be = 7, Ve = 8, He = 9, Ue = 10, We = 11, Ge = 12, Ke = 13, qe = 14, Je = 15, Ye = 16, Xe = 17, Ze = class extends t {
361
367
  get x() {
362
368
  return this.block[0];
363
369
  }
@@ -418,15 +424,27 @@ var je = 0, Me = 1, Ne = class extends t {
418
424
  set syncedStepDuration(e) {
419
425
  this.block[10] = e;
420
426
  }
427
+ get previousX() {
428
+ return this.block[12];
429
+ }
430
+ set previousX(e) {
431
+ this.block[12] = e;
432
+ }
433
+ get previousY() {
434
+ return this.block[13];
435
+ }
436
+ set previousY(e) {
437
+ this.block[13] = e;
438
+ }
421
439
  get remainingDuration() {
422
440
  return this.block[7];
423
441
  }
424
442
  set remainingDuration(e) {
425
443
  this.block[7] = e;
426
444
  }
427
- }, Je = {
445
+ }, Qe = {
428
446
  type: Float32Array,
429
- size: 11,
447
+ size: 17,
430
448
  loadProperties: ["interpolate"],
431
449
  toBlock(e) {
432
450
  let t = e.x ?? 0, n = e.y ?? 0;
@@ -441,18 +459,24 @@ var je = 0, Me = 1, Ne = class extends t {
441
459
  0,
442
460
  t,
443
461
  n,
462
+ 0,
463
+ 0,
464
+ t,
465
+ n,
466
+ 0,
467
+ 0,
444
468
  0
445
469
  ];
446
470
  },
447
471
  attach(e, t, n) {
448
- return new qe(t.getBlock(n), n);
472
+ return new Ze(t.getBlock(n), n);
449
473
  }
450
474
  };
451
- function Ye(e) {
475
+ function $e(e) {
452
476
  let { transform: t, interpolation: n } = e.components;
453
- t && n && (n.targetX = n.x = t.x, n.targetY = n.y = t.y, n.remainingDuration = 0, n.syncedStepDuration = 0, n.syncedDuration = n.totalDuration);
477
+ t && n && (n.targetX = n.x = t.x, n.targetY = n.y = t.y, n.previousX = t.x, n.previousY = t.y, n.remainingDuration = 0, n.syncedStepDuration = 0, n.syncedDuration = n.totalDuration);
454
478
  }
455
- function Xe(e, t) {
479
+ function et(e, t) {
456
480
  let { transform: n, velocity: r, interpolation: i } = e.components;
457
481
  if (!n || !r || !i) return;
458
482
  let a = 1 - (t.stepFraction < 0 ? 0 : t.stepFraction > 1 ? 1 : t.stepFraction), o = t.stepMs / 1e3, s = n.x, c = n.y, l = r.velocityX * o * a, u = r.velocityY * o * a;
@@ -460,144 +484,147 @@ function Xe(e, t) {
460
484
  }
461
485
  //#endregion
462
486
  //#region src/components/registry.ts
463
- var Ze = {
487
+ var tt = {
464
488
  transform: T,
465
489
  velocity: j,
466
- body: Oe,
490
+ body: Ee,
467
491
  polygon: m,
468
- bounciness: Pe,
469
- dynamics: re,
470
- interpolation: Je
471
- }, L = {
492
+ bounciness: Me,
493
+ dynamics: te,
494
+ interpolation: Qe
495
+ }, z = {
472
496
  x: 0,
473
497
  y: 0
474
- }, R = {
498
+ }, B = {
475
499
  x: 0,
476
500
  y: 0
477
501
  };
478
- function z(e, t) {
479
- return Math.max(0, (e - t) / 2);
502
+ function V(e, t) {
503
+ return Math.abs(e - t) / 2;
504
+ }
505
+ function H(e, t, n) {
506
+ return t > e ? n + Math.PI / 2 : n;
480
507
  }
481
- function Qe(e, t, n) {
482
- return e === 2 ? t / 2 : e === 3 ? n / 2 : 0;
508
+ function U(e, t, n) {
509
+ return e === 2 ? t / 2 : e === 3 ? Math.min(t, n) / 2 : 0;
483
510
  }
484
- function B(e, t, n) {
485
- return e === 2 ? t <= 0 : e === 3 ? n <= 0 : t <= 0 || n <= 0;
511
+ function W(e, t, n) {
512
+ return e === 2 ? t <= 0 : t <= 0 || n <= 0;
486
513
  }
487
- function V(e, t, n, r) {
488
- return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.cos(r)) * z(t, n) + n / 2 : st(t, n, r);
514
+ function nt(e, t, n, r) {
515
+ return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.cos(H(t, n, r))) * V(t, n) + Math.min(t, n) / 2 : pt(t, n, r);
489
516
  }
490
- function H(e, t, n, r) {
491
- return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.sin(r)) * z(t, n) + n / 2 : ct(t, n, r);
517
+ function rt(e, t, n, r) {
518
+ return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.sin(H(t, n, r))) * V(t, n) + Math.min(t, n) / 2 : mt(t, n, r);
492
519
  }
493
- function $e(e, t, n, r, i, a, o, s, c, l, u, d) {
494
- if (B(e, r, i) || B(o, l, u)) return !1;
520
+ function it(e, t, n, r, i, a, o, s, c, l, u, d) {
521
+ if (W(e, r, i) || W(o, l, u)) return !1;
495
522
  let f = e !== 1, p = o !== 1;
496
- if (!f && !p) return lt(t, n, r, i, a, s, c, l, u, d);
497
- if (f && !p) return $e(o, s, c, l, u, d, e, t, n, r, i, a);
498
- let m = U(o, l, u), h = Math.cos(d) * m, g = Math.sin(d) * m, _ = Qe(o, l, u);
499
- if (!f) return dt(s - h, c - g, s + h, c + g, t, n, r, i, a) < _ * _;
500
- let v = U(e, r, i), y = Math.cos(a) * v, b = Math.sin(a) * v, x = Qe(e, r, i) + _;
501
- return ut(t - y, n - b, t + y, n + b, s - h, c - g, s + h, c + g) < x * x;
523
+ if (!f && !p) return ht(t, n, r, i, a, s, c, l, u, d);
524
+ if (f && !p) return it(o, s, c, l, u, d, e, t, n, r, i, a);
525
+ let m = at(o, l, u), h = H(l, u, d), g = Math.cos(h) * m, _ = Math.sin(h) * m, v = U(o, l, u);
526
+ if (!f) return _t(s - g, c - _, s + g, c + _, t, n, r, i, a) < v * v;
527
+ let y = at(e, r, i), b = H(r, i, a), x = Math.cos(b) * y, S = Math.sin(b) * y, C = U(e, r, i) + v;
528
+ return gt(t - x, n - S, t + x, n + S, s - g, c - _, s + g, c + _) < C * C;
502
529
  }
503
- function U(e, t, n) {
504
- return e === 3 ? z(t, n) : 0;
530
+ function at(e, t, n) {
531
+ return e === 3 ? V(t, n) : 0;
505
532
  }
506
- function et(e, t, n, r, i, a, o, s, c, l, u, d, f) {
533
+ function ot(e, t, n, r, i, a, o, s, c, l, u, d, f) {
507
534
  let p = e !== 1, m = o !== 1;
508
- return !p && !m ? tt(t, n, r, i, a, s, c, l, u, d, f) : p && m ? nt(e, t, n, r, i, a, o, s, c, l, u, d, f) : p ? rt(s, c, l, u, d, e, t, n, r, i, a, f) : rt(t, n, r, i, a, o, s, c, l, u, d, f) ? (f.x = -f.x, f.y = -f.y, !0) : !1;
535
+ return !p && !m ? st(t, n, r, i, a, s, c, l, u, d, f) : p && m ? ct(e, t, n, r, i, a, o, s, c, l, u, d, f) : p ? lt(s, c, l, u, d, e, t, n, r, i, a, f) : lt(t, n, r, i, a, o, s, c, l, u, d, f) ? (f.x = -f.x, f.y = -f.y, !0) : !1;
509
536
  }
510
- function tt(e, t, n, r, i, a, o, s, c, l, u) {
511
- let d = Math.cos(i), f = Math.sin(i), p = Math.cos(l), m = Math.sin(l), h = n / 2, g = r / 2, _ = s / 2, v = c / 2, y = e - a, b = t - o, x = W(d, f, y, b, h, g, d, f, _, v, p, m);
537
+ function st(e, t, n, r, i, a, o, s, c, l, u) {
538
+ let d = Math.cos(i), f = Math.sin(i), p = Math.cos(l), m = Math.sin(l), h = n / 2, g = r / 2, _ = s / 2, v = c / 2, y = e - a, b = t - o, x = G(d, f, y, b, h, g, d, f, _, v, p, m);
512
539
  u.x = d, u.y = f;
513
- let S = W(-f, d, y, b, h, g, d, f, _, v, p, m);
514
- return S < x && (x = S, u.x = -f, u.y = d), S = W(p, m, y, b, h, g, d, f, _, v, p, m), S < x && (x = S, u.x = p, u.y = m), S = W(-m, p, y, b, h, g, d, f, _, v, p, m), S < x && (u.x = -m, u.y = p), at(y, b, u), !0;
540
+ let S = G(-f, d, y, b, h, g, d, f, _, v, p, m);
541
+ return S < x && (x = S, u.x = -f, u.y = d), S = G(p, m, y, b, h, g, d, f, _, v, p, m), S < x && (x = S, u.x = p, u.y = m), S = G(-m, p, y, b, h, g, d, f, _, v, p, m), S < x && (u.x = -m, u.y = p), dt(y, b, u), !0;
515
542
  }
516
- function nt(e, t, n, r, i, a, o, s, c, l, u, d, f) {
517
- let p = U(e, r, i), m = Math.cos(a) * p, h = Math.sin(a) * p, g = U(o, l, u), _ = Math.cos(d) * g, v = Math.sin(d) * g, y = Math.sqrt(ut(t - m, n - h, t + m, n + h, s - _, c - v, s + _, c + v, L));
518
- return y > 0 ? (f.x = L.x / y, f.y = L.y / y, !0) : ot(t - s, n - c, f);
543
+ function ct(e, t, n, r, i, a, o, s, c, l, u, d, f) {
544
+ let p = at(e, r, i), m = H(r, i, a), h = Math.cos(m) * p, g = Math.sin(m) * p, _ = at(o, l, u), v = H(l, u, d), y = Math.cos(v) * _, b = Math.sin(v) * _, x = Math.sqrt(gt(t - h, n - g, t + h, n + g, s - y, c - b, s + y, c + b, z));
545
+ return x > 0 ? (f.x = z.x / x, f.y = z.y / x, !0) : ft(t - s, n - c, f);
519
546
  }
520
- function rt(e, t, n, r, i, a, o, s, c, l, u, d) {
521
- let f = U(a, c, l), p = Math.cos(u) * f, m = Math.sin(u) * f, h = Math.sqrt(dt(o - p, s - m, o + p, s + m, e, t, n, r, i, L));
522
- if (h > 0) return d.x = L.x / h, d.y = L.y / h, !0;
523
- let g = Math.cos(i), _ = Math.sin(i), v = o - e, y = s - t, b = v * g + y * _, x = -v * _ + y * g, S = p * g + m * _, C = -p * _ + m * g, w = Qe(a, c, l), T = n / 2, E = r / 2, D = it(1, 0, b, x, S, C, w, T, E);
547
+ function lt(e, t, n, r, i, a, o, s, c, l, u, d) {
548
+ let f = at(a, c, l), p = H(c, l, u), m = Math.cos(p) * f, h = Math.sin(p) * f, g = Math.sqrt(_t(o - m, s - h, o + m, s + h, e, t, n, r, i, z));
549
+ if (g > 0) return d.x = z.x / g, d.y = z.y / g, !0;
550
+ let _ = Math.cos(i), v = Math.sin(i), y = o - e, b = s - t, x = y * _ + b * v, S = -y * v + b * _, C = m * _ + h * v, w = -m * v + h * _, T = U(a, c, l), E = n / 2, D = r / 2, O = ut(1, 0, x, S, C, w, T, E, D);
524
551
  d.x = 1, d.y = 0;
525
- let O = it(0, 1, b, x, S, C, w, T, E);
526
- O < D && (D = O, d.x = 0, d.y = 1), ot(-C, S, R) && (O = it(R.x, R.y, b, x, S, C, w, T, E), O < D && (d.x = R.x, d.y = R.y)), at(b, x, d);
527
- let k = d.x, A = d.y;
528
- return d.x = k * g - A * _, d.y = k * _ + A * g, !0;
552
+ let k = ut(0, 1, x, S, C, w, T, E, D);
553
+ k < O && (O = k, d.x = 0, d.y = 1), ft(-w, C, B) && (k = ut(B.x, B.y, x, S, C, w, T, E, D), k < O && (d.x = B.x, d.y = B.y)), dt(x, S, d);
554
+ let A = d.x, j = d.y;
555
+ return d.x = A * _ - j * v, d.y = A * v + j * _, !0;
529
556
  }
530
- function it(e, t, n, r, i, a, o, s, c) {
557
+ function ut(e, t, n, r, i, a, o, s, c) {
531
558
  return s * Math.abs(e) + c * Math.abs(t) + (Math.abs(i * e + a * t) + o) - Math.abs(n * e + r * t);
532
559
  }
533
- function at(e, t, n) {
560
+ function dt(e, t, n) {
534
561
  e * n.x + t * n.y < 0 && (n.x = -n.x, n.y = -n.y);
535
562
  }
536
- function ot(e, t, n) {
563
+ function ft(e, t, n) {
537
564
  let r = Math.sqrt(e * e + t * t);
538
565
  return r !== 0 && (n.x = e / r, n.y = t / r, !0);
539
566
  }
540
- function st(e, t, n) {
567
+ function pt(e, t, n) {
541
568
  return (Math.abs(Math.cos(n)) * e + Math.abs(Math.sin(n)) * t) / 2;
542
569
  }
543
- function ct(e, t, n) {
570
+ function mt(e, t, n) {
544
571
  return (Math.abs(Math.sin(n)) * e + Math.abs(Math.cos(n)) * t) / 2;
545
572
  }
546
- function lt(e, t, n, r, i, a, o, s, c, l) {
573
+ function ht(e, t, n, r, i, a, o, s, c, l) {
547
574
  if (n <= 0 || r <= 0 || s <= 0 || c <= 0) return !1;
548
575
  let u = Math.cos(i), d = Math.sin(i), f = Math.cos(l), p = Math.sin(l), m = n / 2, h = r / 2, g = s / 2, _ = c / 2, v = a - e, y = o - t;
549
- return W(u, d, v, y, m, h, u, d, g, _, f, p) > 0 && W(-d, u, v, y, m, h, u, d, g, _, f, p) > 0 && W(f, p, v, y, m, h, u, d, g, _, f, p) > 0 && W(-p, f, v, y, m, h, u, d, g, _, f, p) > 0;
576
+ return G(u, d, v, y, m, h, u, d, g, _, f, p) > 0 && G(-d, u, v, y, m, h, u, d, g, _, f, p) > 0 && G(f, p, v, y, m, h, u, d, g, _, f, p) > 0 && G(-p, f, v, y, m, h, u, d, g, _, f, p) > 0;
550
577
  }
551
- function W(e, t, n, r, i, a, o, s, c, l, u, d) {
578
+ function G(e, t, n, r, i, a, o, s, c, l, u, d) {
552
579
  return i * Math.abs(o * e + s * t) + a * Math.abs(-s * e + o * t) + (c * Math.abs(u * e + d * t) + l * Math.abs(-d * e + u * t)) - Math.abs(n * e + r * t);
553
580
  }
554
- function ut(e, t, n, r, i, a, o, s, c) {
581
+ function gt(e, t, n, r, i, a, o, s, c) {
555
582
  let l = n - e, u = r - t, d = o - i, f = s - a, p = e - i, m = t - a, h = l * l + u * u, g = d * d + f * f, _ = d * p + f * m, v = 0, y = 0;
556
583
  if (h <= 0 && g <= 0) return c && (c.x = p, c.y = m), p * p + m * m;
557
- if (h <= 0) y = q(_ / g);
584
+ if (h <= 0) y = J(_ / g);
558
585
  else {
559
586
  let e = l * p + u * m;
560
- if (g <= 0) v = q(-e / h);
587
+ if (g <= 0) v = J(-e / h);
561
588
  else {
562
589
  let t = l * d + u * f, n = h * g - t * t;
563
- n !== 0 && (v = q((t * _ - e * g) / n)), y = (t * v + _) / g, y < 0 ? (y = 0, v = q(-e / h)) : y > 1 && (y = 1, v = q((t - e) / h));
590
+ n !== 0 && (v = J((t * _ - e * g) / n)), y = (t * v + _) / g, y < 0 ? (y = 0, v = J(-e / h)) : y > 1 && (y = 1, v = J((t - e) / h));
564
591
  }
565
592
  }
566
593
  let b = e + l * v - (i + d * y), x = t + u * v - (a + f * y);
567
594
  return c && (c.x = b, c.y = x), b * b + x * x;
568
595
  }
569
- function dt(e, t, n, r, i, a, o, s, c, l) {
596
+ function _t(e, t, n, r, i, a, o, s, c, l) {
570
597
  let u = Math.cos(c), d = Math.sin(c), f = o / 2, p = s / 2, m = e - i, h = t - a, g = n - i, _ = r - a, v = m * u + h * d, y = -m * d + h * u, b = g * u + _ * d, x = -g * d + _ * u;
571
- if (!ft(v, y, b, x, f, p)) return l && (l.x = 0, l.y = 0), 0;
572
- if (!l) return Math.min(pt(v, y, f, p), pt(b, x, f, p), K(-f, -p, v, y, b, x), K(f, -p, v, y, b, x), K(f, p, v, y, b, x), K(-f, p, v, y, b, x));
573
- let S = pt(v, y, f, p, l);
574
- S = G(S, pt(b, x, f, p, R), R, l, !1), S = G(S, K(-f, -p, v, y, b, x, R), R, l, !0), S = G(S, K(f, -p, v, y, b, x, R), R, l, !0), S = G(S, K(f, p, v, y, b, x, R), R, l, !0), S = G(S, K(-f, p, v, y, b, x, R), R, l, !0);
598
+ if (!vt(v, y, b, x, f, p)) return l && (l.x = 0, l.y = 0), 0;
599
+ if (!l) return Math.min(yt(v, y, f, p), yt(b, x, f, p), q(-f, -p, v, y, b, x), q(f, -p, v, y, b, x), q(f, p, v, y, b, x), q(-f, p, v, y, b, x));
600
+ let S = yt(v, y, f, p, l);
601
+ S = K(S, yt(b, x, f, p, B), B, l, !1), S = K(S, q(-f, -p, v, y, b, x, B), B, l, !0), S = K(S, q(f, -p, v, y, b, x, B), B, l, !0), S = K(S, q(f, p, v, y, b, x, B), B, l, !0), S = K(S, q(-f, p, v, y, b, x, B), B, l, !0);
575
602
  let C = l.x, w = l.y;
576
603
  return l.x = C * u - w * d, l.y = C * d + w * u, S;
577
604
  }
578
- function G(e, t, n, r, i) {
605
+ function K(e, t, n, r, i) {
579
606
  return t >= e ? e : (r.x = i ? -n.x : n.x, r.y = i ? -n.y : n.y, t);
580
607
  }
581
- function K(e, t, n, r, i, a, o) {
582
- let s = i - n, c = a - r, l = s * s + c * c, u = l > 0 ? q(((e - n) * s + (t - r) * c) / l) : 0, d = e - (n + s * u), f = t - (r + c * u);
608
+ function q(e, t, n, r, i, a, o) {
609
+ let s = i - n, c = a - r, l = s * s + c * c, u = l > 0 ? J(((e - n) * s + (t - r) * c) / l) : 0, d = e - (n + s * u), f = t - (r + c * u);
583
610
  return o && (o.x = d, o.y = f), d * d + f * f;
584
611
  }
585
- function ft(e, t, n, r, i, a) {
612
+ function vt(e, t, n, r, i, a) {
586
613
  if (Math.max(e, n) < -i || Math.min(e, n) > i || Math.max(t, r) < -a || Math.min(t, r) > a) return !0;
587
614
  let o = -(r - t), s = n - e;
588
615
  return Math.abs(o * e + s * t) > i * Math.abs(o) + a * Math.abs(s);
589
616
  }
590
- function pt(e, t, n, r, i) {
617
+ function yt(e, t, n, r, i) {
591
618
  let a = Math.abs(e) - n, o = Math.abs(t) - r, s = a > 0 ? a : 0, c = o > 0 ? o : 0;
592
619
  return i && (i.x = e < 0 ? -s : s, i.y = t < 0 ? -c : c), s * s + c * c;
593
620
  }
594
- function q(e) {
621
+ function J(e) {
595
622
  return e < 0 ? 0 : e > 1 ? 1 : e;
596
623
  }
597
624
  //#endregion
598
625
  //#region src/systems/spatial-bounds.ts
599
- function J(e) {
600
- let t = e.transform, n = e.body ? F(e.body) : 1, r = t[2], i = t[3], a = t[4], o = V(n, r, i, a), s = H(n, r, i, a), c = t[0], l = t[1];
626
+ function Y(e) {
627
+ let t = e.transform, n = e.body ? L(e.body) : 1, r = t[2], i = t[3], a = t[4], o = nt(n, r, i, a), s = rt(n, r, i, a), c = t[0], l = t[1];
601
628
  return {
602
629
  minX: c - o,
603
630
  minY: l - s,
@@ -605,23 +632,23 @@ function J(e) {
605
632
  maxY: l + s
606
633
  };
607
634
  }
608
- function mt(e, t, n, r, i) {
635
+ function bt(e, t, n, r, i) {
609
636
  return e.minX <= r && e.maxX >= t && e.minY <= i && e.maxY >= n;
610
637
  }
611
- function ht(e, t) {
638
+ function xt(e, t) {
612
639
  return t > e ? t - e : Math.max(1, Math.abs(e)) * 2 ** -52;
613
640
  }
614
641
  //#endregion
615
642
  //#region src/world.ts
616
- function gt(e, t) {
643
+ function St(e, t) {
617
644
  t.spatialMapMemory = e.spatialMap.getSharedMemory();
618
645
  }
619
- function _t(e) {
646
+ function Ct(e) {
620
647
  if (e.spatialMap) return e.spatialMap;
621
648
  if (!e.heap || !e.spatialMapMemory) throw Error("Spatial system world is missing its shared MemoryHeap or spatial map");
622
649
  return e.spatialMap = new o(e.heap, e.spatialMapMemory), e.spatialMap;
623
650
  }
624
- var vt = class extends e {
651
+ var wt = class extends e {
625
652
  spatialMap;
626
653
  spatialIds = /* @__PURE__ */ new Set();
627
654
  constructor(e, t = {}) {
@@ -644,7 +671,7 @@ var vt = class extends e {
644
671
  this.spatialIds.delete(t.eid), this.spatialMap.remove(t.eid);
645
672
  return;
646
673
  }
647
- let i = J({
674
+ let i = Y({
648
675
  transform: r,
649
676
  body: n.body?.block
650
677
  });
@@ -652,12 +679,12 @@ var vt = class extends e {
652
679
  }
653
680
  searchSpatial(e, t, n, r, i) {
654
681
  if (n < e || r < t) return [];
655
- let a = [], o = Number.isFinite(e) && Number.isFinite(t) && Number.isFinite(n) && Number.isFinite(r) ? this.spatialMap.search(e, t, ht(e, n), ht(t, r)) : this.spatialIds;
682
+ let a = [], o = Number.isFinite(e) && Number.isFinite(t) && Number.isFinite(n) && Number.isFinite(r) ? this.spatialMap.search(e, t, xt(e, n), xt(t, r)) : this.spatialIds;
656
683
  for (let s of o) {
657
684
  let o = this.getEntityByEid(s);
658
685
  if (!o || i && !i(o)) continue;
659
686
  let c = o.components, l = c.transform?.block;
660
- l && mt(J({
687
+ l && bt(Y({
661
688
  transform: l,
662
689
  body: c.body?.block
663
690
  }), e, t, n, r) && a.push(o);
@@ -679,60 +706,60 @@ var vt = class extends e {
679
706
  return t ? [t] : [];
680
707
  });
681
708
  }
682
- }, yt = {
709
+ }, Tt = {
683
710
  min: 0,
684
711
  max: 0
685
- }, bt = {
712
+ }, Et = {
686
713
  min: 0,
687
714
  max: 0
688
- }, Y = {
715
+ }, X = {
689
716
  overlap: !0,
690
717
  depth: Infinity,
691
718
  x: 0,
692
719
  y: 0
693
720
  };
694
- function xt(e, t, n, r, i, a, o, s, c, l, u, d, f, p) {
695
- return Ct(e, t, n, r, i, a, o, s, c, l, u, d, f, p, !1);
721
+ function Dt(e, t, n, r, i, a, o, s, c, l, u, d, f, p) {
722
+ return kt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, !1);
696
723
  }
697
- function St(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) {
698
- return Y.depth = Infinity, !Ct(e, t, n, r, i, a, o, s, c, l, u, d, f, p, !0) || Y.depth === Infinity ? !1 : (m.x = Y.x, m.y = Y.y, !0);
724
+ function Ot(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) {
725
+ return X.depth = Infinity, !kt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, !0) || X.depth === Infinity ? !1 : (m.x = X.x, m.y = X.y, !0);
699
726
  }
700
- function Ct(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) {
701
- return !(e === 4 && (!t || !wt(t, n, r, i, a, o, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m)) || s === 4 && (!c || !wt(c, l, u, d, f, p, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m)) || e === 1 && !Tt(o, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) || s === 1 && !Tt(p, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) || Mt(e) && c && !Et(e, n, r, i, a, o, c, l, u, d, f, p, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) || Mt(s) && t && !Et(s, l, u, d, f, p, t, n, r, i, a, o, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m));
727
+ function kt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) {
728
+ return !(e === 4 && (!t || !At(t, n, r, i, a, o, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m)) || s === 4 && (!c || !At(c, l, u, d, f, p, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m)) || e === 1 && !jt(o, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) || s === 1 && !jt(p, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) || Rt(e) && c && !Mt(e, n, r, i, a, o, c, l, u, d, f, p, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m) || Rt(s) && t && !Mt(s, l, u, d, f, p, t, n, r, i, a, o, e, t, n, r, i, a, o, s, c, l, u, d, f, p, m));
702
729
  }
703
- function wt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b) {
730
+ function At(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b) {
704
731
  let x = e[0], S = Math.cos(a), C = Math.sin(a);
705
732
  for (let a = 0; a < x; a++) {
706
- let w = (a + 1) % x, T = kt(e, a, t, r, i, S, C), E = At(e, a, n, r, i, S, C), D = kt(e, w, t, r, i, S, C);
707
- if (!Dt(E - At(e, w, n, r, i, S, C), D - T, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b)) return !1;
733
+ let w = (a + 1) % x, T = Ft(e, a, t, r, i, S, C), E = It(e, a, n, r, i, S, C), D = Ft(e, w, t, r, i, S, C);
734
+ if (!Nt(E - It(e, w, n, r, i, S, C), D - T, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b)) return !1;
708
735
  }
709
736
  return !0;
710
737
  }
711
- function Tt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h) {
738
+ function jt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h) {
712
739
  let g = Math.cos(e), _ = Math.sin(e);
713
- return Dt(g, _, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h) && Dt(-_, g, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h);
740
+ return Nt(g, _, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h) && Nt(-_, g, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h);
714
741
  }
715
- function Et(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E) {
716
- let D = e === 3 ? z(r, i) : 0, O = Math.cos(a) * D, k = Math.sin(a) * D, A = t - O, j = n - k, M = t + O, N = n + k, ee = o[0], te = Math.cos(d), ne = Math.sin(d);
742
+ function Mt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E) {
743
+ let D = e === 3 ? V(r, i) : 0, O = H(r, i, a), k = Math.cos(O) * D, A = Math.sin(O) * D, j = t - k, M = n - A, N = t + k, P = n + A, ee = o[0], F = Math.cos(d), I = Math.sin(d);
717
744
  for (let e = 0; e < ee; e++) {
718
- let t = kt(o, e, s, l, u, te, ne), n = At(o, e, c, l, u, te, ne), r = jt(A, j, M, N, t, n), i = A + (M - A) * r, a = j + (N - j) * r;
719
- if (!Dt(t - i, n - a, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E)) return !1;
745
+ let t = Ft(o, e, s, l, u, F, I), n = It(o, e, c, l, u, F, I), r = Lt(j, M, N, P, t, n), i = j + (N - j) * r, a = M + (P - M) * r;
746
+ if (!Nt(t - i, n - a, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E)) return !1;
720
747
  }
721
748
  return !0;
722
749
  }
723
- function Dt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
750
+ function Nt(e, t, n, r, i, a, o, s, c, l, u, d, f, p, m, h, g) {
724
751
  let _ = Math.hypot(e, t);
725
752
  if (_ === 0) return !0;
726
- e /= _, t /= _, Ot(n, r, i, a, o, s, c, e, t, yt), Ot(l, u, d, f, p, m, h, e, t, bt);
727
- let v = yt.max - bt.min, y = bt.max - yt.min;
753
+ e /= _, t /= _, Pt(n, r, i, a, o, s, c, e, t, Tt), Pt(l, u, d, f, p, m, h, e, t, Et);
754
+ let v = Tt.max - Et.min, y = Et.max - Tt.min;
728
755
  if (!g && (v <= 0 || y <= 0)) return !1;
729
756
  if (g) {
730
757
  let n, r;
731
- v <= 0 ? (n = -v, r = -1) : y <= 0 ? (n = -y, r = 1) : v < y ? (n = v, r = -1) : (n = y, r = 1), n < Y.depth && (Y.depth = n, Y.x = e * r, Y.y = t * r);
758
+ v <= 0 ? (n = -v, r = -1) : y <= 0 ? (n = -y, r = 1) : v < y ? (n = v, r = -1) : (n = y, r = 1), n < X.depth && (X.depth = n, X.x = e * r, X.y = t * r);
732
759
  }
733
760
  return !0;
734
761
  }
735
- function Ot(e, t, n, r, i, a, o, s, c, l) {
762
+ function Pt(e, t, n, r, i, a, o, s, c, l) {
736
763
  let u = n * s + r * c;
737
764
  if (e === 2) {
738
765
  let e = i / 2;
@@ -740,8 +767,8 @@ function Ot(e, t, n, r, i, a, o, s, c, l) {
740
767
  return;
741
768
  }
742
769
  if (e === 3) {
743
- let e = z(i, a), t = Math.abs(s * Math.cos(o) + c * Math.sin(o)) * e + a / 2;
744
- l.min = u - t, l.max = u + t;
770
+ let e = V(i, a), t = H(i, a, o), n = Math.abs(s * Math.cos(t) + c * Math.sin(t)) * e + Math.min(i, a) / 2;
771
+ l.min = u - n, l.max = u + n;
745
772
  return;
746
773
  }
747
774
  if (e === 1) {
@@ -756,48 +783,48 @@ function Ot(e, t, n, r, i, a, o, s, c, l) {
756
783
  let d = t[0], f = Math.cos(o), p = Math.sin(o);
757
784
  l.min = Infinity, l.max = -Infinity;
758
785
  for (let e = 0; e < d; e++) {
759
- let o = kt(t, e, n, i, a, f, p), u = At(t, e, r, i, a, f, p), d = o * s + u * c;
786
+ let o = Ft(t, e, n, i, a, f, p), u = It(t, e, r, i, a, f, p), d = o * s + u * c;
760
787
  l.min = Math.min(l.min, d), l.max = Math.max(l.max, d);
761
788
  }
762
789
  }
763
- function kt(e, t, n, r, i, a, o) {
790
+ function Ft(e, t, n, r, i, a, o) {
764
791
  let s = 1 + t * 2;
765
792
  return n + e[s] * r * a - e[s + 1] * i * o;
766
793
  }
767
- function At(e, t, n, r, i, a, o) {
794
+ function It(e, t, n, r, i, a, o) {
768
795
  let s = 1 + t * 2;
769
796
  return n + e[s] * r * o + e[s + 1] * i * a;
770
797
  }
771
- function jt(e, t, n, r, i, a) {
798
+ function Lt(e, t, n, r, i, a) {
772
799
  let o = n - e, s = r - t, c = o * o + s * s;
773
800
  return c === 0 ? 0 : Math.min(1, Math.max(0, ((i - e) * o + (a - t) * s) / c));
774
801
  }
775
- function Mt(e) {
802
+ function Rt(e) {
776
803
  return e === 2 || e === 3;
777
804
  }
778
- function Nt(e, t, n, r, i, a) {
779
- if (Vt(n, r, "Force"), Vt(i, a, "Impulse"), n === 0 && r === 0 && i === 0 && a === 0) return;
780
- let o = e.get(t) ?? Bt(), s = {
805
+ function zt(e, t, n, r, i, a) {
806
+ if (qt(n, r, "Force"), qt(i, a, "Impulse"), n === 0 && r === 0 && i === 0 && a === 0) return;
807
+ let o = e.get(t) ?? Kt(), s = {
781
808
  ...o,
782
809
  forceX: o.forceX + n,
783
810
  forceY: o.forceY + r,
784
811
  impulseX: o.impulseX + i,
785
812
  impulseY: o.impulseY + a
786
813
  };
787
- Vt(s.forceX, s.forceY, "Accumulated force"), Vt(s.impulseX, s.impulseY, "Accumulated impulse"), e.set(t, s);
814
+ qt(s.forceX, s.forceY, "Accumulated force"), qt(s.impulseX, s.impulseY, "Accumulated impulse"), e.set(t, s);
788
815
  }
789
- function Pt(e, t, n) {
790
- Ht(n), (n.velocityX !== void 0 || n.velocityY !== void 0) && e.set(t, {
791
- ...e.get(t) ?? Bt(),
816
+ function Bt(e, t, n) {
817
+ Jt(n), (n.velocityX !== void 0 || n.velocityY !== void 0) && e.set(t, {
818
+ ...e.get(t) ?? Kt(),
792
819
  ...n
793
820
  });
794
821
  }
795
- function Ft(e, t) {
822
+ function Vt(e, t) {
796
823
  if (e.size === 0) return t;
797
824
  let n = /* @__PURE__ */ new Map();
798
825
  for (let [t, r] of e) n.set(t, { ...r });
799
- return zt(t, (e, t) => {
800
- let r = n.get(e) ?? Bt();
826
+ return Gt(t, (e, t) => {
827
+ let r = n.get(e) ?? Kt();
801
828
  n.set(e, {
802
829
  forceX: r.forceX + t.forceX,
803
830
  forceY: r.forceY + t.forceY,
@@ -811,13 +838,13 @@ function Ft(e, t) {
811
838
  ...t
812
839
  })).sort((e, t) => e.entityId - t.entityId);
813
840
  }
814
- function It(e, t, n, r) {
815
- let i = e.dynamicsCommands, a = i instanceof Float64Array ? i : void 0, o = Lt(i && !(i instanceof Float64Array) ? i : void 0, t), s = a ? Rt(a, t) : -1, c = n[2];
841
+ function Ht(e, t, n, r) {
842
+ let i = e.dynamicsCommands, a = i instanceof Float64Array ? i : void 0, o = Ut(i && !(i instanceof Float64Array) ? i : void 0, t), s = a ? Wt(a, t) : -1, c = n[2];
816
843
  if (!r && !o && s < 0 && c === 0) return;
817
844
  let l = e.elapsedTime / 1e3, u = r?.[2] ?? 1, d = s < 0 ? o?.forceX ?? 0 : a[s + 1], f = s < 0 ? o?.forceY ?? 0 : a[s + 2], p = s < 0 ? o?.impulseX ?? 0 : a[s + 3], m = s < 0 ? o?.impulseY ?? 0 : a[s + 4], h = s < 0 ? 0 : a[s + 5], g = s < 0 ? o?.velocityX : h & 1 ? a[s + 6] : void 0, _ = s < 0 ? o?.velocityY : h & 2 ? a[s + 7] : void 0, v = c > 0 ? 1 / (1 + c * l) : 1, y = (n[0] + (r?.[0] ?? 0) * l + d * u * l + p * u) * v, b = (n[1] + (r?.[1] ?? 0) * l + f * u * l + m * u) * v;
818
845
  n[0] = g ?? y, n[1] = _ ?? b;
819
846
  }
820
- function Lt(e, t) {
847
+ function Ut(e, t) {
821
848
  if (!e) return;
822
849
  let n = 0, r = e.length - 1;
823
850
  for (; n <= r;) {
@@ -826,7 +853,7 @@ function Lt(e, t) {
826
853
  a.entityId < t ? n = i + 1 : r = i - 1;
827
854
  }
828
855
  }
829
- function Rt(e, t) {
856
+ function Wt(e, t) {
830
857
  let n = 0, r = e.length / 8 - 1;
831
858
  for (; n <= r;) {
832
859
  let i = n + r >>> 1, a = i * 8, o = e[a + 0];
@@ -835,7 +862,7 @@ function Rt(e, t) {
835
862
  }
836
863
  return -1;
837
864
  }
838
- function zt(e, t) {
865
+ function Gt(e, t) {
839
866
  if (e) {
840
867
  if (!(e instanceof Float64Array)) {
841
868
  for (let { entityId: n, ...r } of e) t(n, r);
@@ -854,7 +881,7 @@ function zt(e, t) {
854
881
  }
855
882
  }
856
883
  }
857
- function Bt() {
884
+ function Kt() {
858
885
  return {
859
886
  forceX: 0,
860
887
  forceY: 0,
@@ -862,18 +889,18 @@ function Bt() {
862
889
  impulseY: 0
863
890
  };
864
891
  }
865
- function Vt(e, t, n) {
892
+ function qt(e, t, n) {
866
893
  if (!Number.isFinite(e) || !Number.isFinite(t)) throw Error(`${n} must contain finite numbers`);
867
894
  }
868
- function Ht(e) {
895
+ function Jt(e) {
869
896
  if (e.velocityX !== void 0 && !Number.isFinite(e.velocityX) || e.velocityY !== void 0 && !Number.isFinite(e.velocityY)) throw Error("Velocity assignment must contain finite numbers");
870
897
  }
871
898
  //#endregion
872
899
  //#region src/systems/collision.ts
873
- var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
900
+ var Yt = 1e-4, Xt = 24, Zt = "collidable", Z = [], Qt = 2 ** 26, $t = {
874
901
  fraction: 1,
875
902
  blocking: Z
876
- }, qt = class {
903
+ }, en = class {
877
904
  buckets = [];
878
905
  hasBounciness = !1;
879
906
  resolved = /* @__PURE__ */ new Set();
@@ -884,18 +911,18 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
884
911
  if (!o || !s) continue;
885
912
  let c = s[1];
886
913
  if (c === 0) continue;
887
- let l = F(s), u = o[2], d = o[3];
888
- if (B(l, u, d)) continue;
889
- let f = o[4], p = V(l, u, d, f), m = H(l, u, d, f);
914
+ let l = L(s), u = o[2], d = o[3];
915
+ if (W(l, u, d)) continue;
916
+ let f = o[4], p = nt(l, u, d, f), m = rt(l, u, d, f);
890
917
  e.bounciness && (this.hasBounciness = !0);
891
- let h = e.velocity, g = e.dynamics, _ = Lt(a, n.entityId), v = i ? Rt(i, n.entityId) : -1, y = g?.[2] ?? 1, b = v < 0 ? _?.forceX ?? 0 : i[v + 1], x = v < 0 ? _?.forceY ?? 0 : i[v + 2], S = v < 0 ? _?.impulseX ?? 0 : i[v + 3], C = v < 0 ? _?.impulseY ?? 0 : i[v + 4], w = v < 0 ? 0 : i[v + 5], T = v < 0 ? _?.velocityX : w & 1 ? i[v + 6] : void 0, E = v < 0 ? _?.velocityY : w & 2 ? i[v + 7] : void 0, D = h?.[0] ?? 0, O = h?.[1] ?? 0, k = D + (g?.[0] ?? 0) * t + b * y * t + S * y, A = O + (g?.[1] ?? 0) * t + x * y * t + C * y, j = T ?? k, M = E ?? A, N = Math.max(Math.abs(D), Math.abs(j)) * t, ee = Math.max(Math.abs(O), Math.abs(M)) * t, te = o[0], ne = o[1], P = r.get(c);
892
- P || (P = {
918
+ let h = e.velocity, g = e.dynamics, _ = Ut(a, n.entityId), v = i ? Wt(i, n.entityId) : -1, y = g?.[2] ?? 1, b = v < 0 ? _?.forceX ?? 0 : i[v + 1], x = v < 0 ? _?.forceY ?? 0 : i[v + 2], S = v < 0 ? _?.impulseX ?? 0 : i[v + 3], C = v < 0 ? _?.impulseY ?? 0 : i[v + 4], w = v < 0 ? 0 : i[v + 5], T = v < 0 ? _?.velocityX : w & 1 ? i[v + 6] : void 0, E = v < 0 ? _?.velocityY : w & 2 ? i[v + 7] : void 0, D = h?.[0] ?? 0, O = h?.[1] ?? 0, k = D + (g?.[0] ?? 0) * t + b * y * t + S * y, A = O + (g?.[1] ?? 0) * t + x * y * t + C * y, j = T ?? k, M = E ?? A, N = Math.max(Math.abs(D), Math.abs(j)) * t, P = Math.max(Math.abs(O), Math.abs(M)) * t, ee = o[0], F = o[1], I = r.get(c);
919
+ I || (I = {
893
920
  entries: [],
894
921
  bounds: []
895
- }, r.set(c, P)), P.entries.push({
922
+ }, r.set(c, I)), I.entries.push({
896
923
  entityId: n.entityId,
897
924
  components: e
898
- }), P.bounds.push(te - p - N, ne - m - ee, te + p + N, ne + m + ee);
925
+ }), I.bounds.push(ee - p - N, F - m - P, ee + p + N, F + m + P);
899
926
  }
900
927
  for (let [e, { entries: t, bounds: n }] of r) {
901
928
  let r = new s(t.length);
@@ -908,7 +935,7 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
908
935
  }
909
936
  }
910
937
  claimContact(e, t) {
911
- let n = e < t ? e * Gt + t : t * Gt + e;
938
+ let n = e < t ? e * Qt + t : t * Qt + e;
912
939
  return !this.resolved.has(n) && (this.resolved.add(n), !0);
913
940
  }
914
941
  forEachOverlapping(e, t, n = 0, r = 0) {
@@ -918,7 +945,7 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
918
945
  if (i.ccd && (n !== 0 || r !== 0)) {
919
946
  let e = a - n, l = o - r, u = Math.min(e, a) - s, d = Math.min(l, o) - c, f = Math.max(e, a) + s, p = Math.max(l, o) + c;
920
947
  this.forEachCandidate(i, u, d, f, p, (a) => {
921
- Xt(i, e, l, n, r, a) && t(a);
948
+ rn(i, e, l, n, r, a) && t(a);
922
949
  });
923
950
  return;
924
951
  }
@@ -946,7 +973,7 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
946
973
  x: a.x,
947
974
  y: a.y
948
975
  } : this.contactPoint(e, t, n, r);
949
- return Jt(a, o.x, o.y, t, i);
976
+ return tn(a, o.x, o.y, t, i);
950
977
  }
951
978
  sweep(e, t, n) {
952
979
  let r = Math.sqrt(t * t + n * n), i = Q(e);
@@ -993,7 +1020,7 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
993
1020
  moveY: n,
994
1021
  blocking: Z
995
1022
  };
996
- let i = e.length === 0 ? Kt : this.refine(a, e, t, 0, Math.abs(t)), o = r.length === 0 ? Kt : this.refine(a, r, 0, n, Math.abs(n)), s = t * i.fraction, c = n * o.fraction;
1023
+ let i = e.length === 0 ? $t : this.refine(a, e, t, 0, Math.abs(t)), o = r.length === 0 ? $t : this.refine(a, r, 0, n, Math.abs(n)), s = t * i.fraction, c = n * o.fraction;
997
1024
  if (s !== 0 && c !== 0) {
998
1025
  let e = this.gatherCandidates(a, s, c);
999
1026
  if (e.length > 0) {
@@ -1008,7 +1035,7 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
1008
1035
  return {
1009
1036
  moveX: s,
1010
1037
  moveY: c,
1011
- blocking: Yt(i.blocking, o.blocking)
1038
+ blocking: nn(i.blocking, o.blocking)
1012
1039
  };
1013
1040
  }
1014
1041
  let s = this.refine(a, o, t, n, i);
@@ -1023,19 +1050,19 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
1023
1050
  if (e.sensor) return [];
1024
1051
  let s = r + t, c = i + n, l = [];
1025
1052
  return this.forEachCandidate(e, s - a, c - o, s + a, c + o, (t) => {
1026
- $(e, s, c, t) && (I(t.components.body) || $(e, r, i, t) || l.push(t));
1053
+ $(e, s, c, t) && (R(t.components.body) || $(e, r, i, t) || l.push(t));
1027
1054
  }), l;
1028
1055
  }
1029
1056
  refine(e, t, n, r, i) {
1030
- let { x: a, y: o } = e, s = 0, c = 1, l = X / i;
1031
- for (let i = 0; i < Ut && c - s > l; i++) {
1057
+ let { x: a, y: o } = e, s = 0, c = 1, l = Yt / i;
1058
+ for (let i = 0; i < Xt && c - s > l; i++) {
1032
1059
  let i = (s + c) / 2;
1033
1060
  this.blockedAt(e, t, n, r, i) ? c = i : s = i;
1034
1061
  }
1035
1062
  let u = [], d = a + n * c, f = o + r * c;
1036
1063
  for (let n of t) $(e, d, f, n) && u.push(n);
1037
1064
  return {
1038
- fraction: s * i > X ? s : 0,
1065
+ fraction: s * i > Yt ? s : 0,
1039
1066
  blocking: u
1040
1067
  };
1041
1068
  }
@@ -1043,7 +1070,7 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
1043
1070
  if (e.sensor) return [];
1044
1071
  let { x: r, y: i, halfWidth: a, halfHeight: o } = e, s = r + t, c = i + n, l = [];
1045
1072
  return this.forEachCandidate(e, Math.min(r, s) - a, Math.min(i, c) - o, Math.max(r, s) + a, Math.max(i, c) + o, (a) => {
1046
- I(a.components.body) || $(e, r, i, a) || Xt(e, r, i, t, n, a) && l.push(a);
1073
+ R(a.components.body) || $(e, r, i, a) || rn(e, r, i, t, n, a) && l.push(a);
1047
1074
  }), l;
1048
1075
  }
1049
1076
  sweepContinuous(e, t, n, r) {
@@ -1052,13 +1079,13 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
1052
1079
  fraction: 1,
1053
1080
  blocking: Z
1054
1081
  };
1055
- let a = 1, o = [], s = X / r;
1082
+ let a = 1, o = [], s = Yt / r;
1056
1083
  for (let c of i) {
1057
1084
  let i = this.entryFraction(e, c, t, n, r);
1058
1085
  i < a - s ? (a = i, o = [c]) : i <= a + s && o.push(c);
1059
1086
  }
1060
1087
  return {
1061
- fraction: a * r > X ? a : 0,
1088
+ fraction: a * r > Yt ? a : 0,
1062
1089
  blocking: o
1063
1090
  };
1064
1091
  }
@@ -1066,12 +1093,12 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
1066
1093
  let a;
1067
1094
  if (this.blockedAtOne(e, t, n, r, 1)) a = 1;
1068
1095
  else {
1069
- let o = t.components.transform, s = o[0] - e.x, c = o[1] - e.y, l = Zt((s * n + c * r) / (i * i));
1096
+ let o = t.components.transform, s = o[0] - e.x, c = o[1] - e.y, l = an((s * n + c * r) / (i * i));
1070
1097
  if (!this.blockedAtOne(e, t, n, r, l)) return l;
1071
1098
  a = l;
1072
1099
  }
1073
- let o = 0, s = X / i;
1074
- for (let i = 0; i < Ut && a - o > s; i++) {
1100
+ let o = 0, s = Yt / i;
1101
+ for (let i = 0; i < Xt && a - o > s; i++) {
1075
1102
  let i = (o + a) / 2;
1076
1103
  this.blockedAtOne(e, t, n, r, i) ? a = i : o = i;
1077
1104
  }
@@ -1088,15 +1115,15 @@ var X = 1e-4, Ut = 24, Wt = "collidable", Z = [], Gt = 2 ** 26, Kt = {
1088
1115
  forEachCandidate(e, t, r, i, a, o) {
1089
1116
  for (let s of this.buckets) if ((e.mask & s.category) !== 0) for (let c of s.index.search(t, r, i, a)) {
1090
1117
  let t = s.entries[c];
1091
- t.entityId !== e.entityId && (t.components.body[2] & e.category) !== 0 && t.components.entity?.[n] !== 1 && (Te(t.components.body) || o(t));
1118
+ t.entityId !== e.entityId && (t.components.body[2] & e.category) !== 0 && t.components.entity?.[n] !== 1 && (Ce(t.components.body) || o(t));
1092
1119
  }
1093
1120
  }
1094
1121
  };
1095
- function Jt(e, t, n, r, i) {
1096
- let a = r.components.transform, o = F(r.components.body), s = a[0], c = a[1], l = a[2], u = a[3], d = a[4];
1097
- return e.shape === 4 || o === 4 ? St(e.shape, e.polygon, t, n, e.width, e.height, e.angle, o, r.components.polygon, s, c, l, u, d, i) : et(e.shape, t, n, e.width, e.height, e.angle, o, s, c, l, u, d, i);
1122
+ function tn(e, t, n, r, i) {
1123
+ let a = r.components.transform, o = L(r.components.body), s = a[0], c = a[1], l = a[2], u = a[3], d = a[4];
1124
+ return e.shape === 4 || o === 4 ? Ot(e.shape, e.polygon, t, n, e.width, e.height, e.angle, o, r.components.polygon, s, c, l, u, d, i) : ot(e.shape, t, n, e.width, e.height, e.angle, o, s, c, l, u, d, i);
1098
1125
  }
1099
- function Yt(e, t) {
1126
+ function nn(e, t) {
1100
1127
  if (e.length === 0) return t;
1101
1128
  if (t.length === 0) return e;
1102
1129
  let n = [...e];
@@ -1108,8 +1135,8 @@ function Q(e) {
1108
1135
  if (!t) return;
1109
1136
  let n = t[2];
1110
1137
  if (n === 0) return;
1111
- let r = e.components.transform, i = F(t), a = r[2], o = r[3];
1112
- if (B(i, a, o)) return;
1138
+ let r = e.components.transform, i = L(t), a = r[2], o = r[3];
1139
+ if (W(i, a, o)) return;
1113
1140
  let s = r[4], c = e.components.polygon;
1114
1141
  if (i !== 4 || c) return {
1115
1142
  entityId: e.entityId,
@@ -1120,36 +1147,36 @@ function Q(e) {
1120
1147
  width: a,
1121
1148
  height: o,
1122
1149
  angle: s,
1123
- halfWidth: V(i, a, o, s),
1124
- halfHeight: H(i, a, o, s),
1150
+ halfWidth: nt(i, a, o, s),
1151
+ halfHeight: rt(i, a, o, s),
1125
1152
  category: t[1],
1126
1153
  mask: n,
1127
- sensor: I(t),
1128
- ccd: Ce(t)
1154
+ sensor: R(t),
1155
+ ccd: xe(t)
1129
1156
  };
1130
1157
  }
1131
- function Xt(e, t, n, r, i, a) {
1132
- let o = t + r, s = n + i, c = a.components.transform, l = F(a.components.body), u = c[0], d = c[1], f = c[2], p = c[3], m = c[4];
1158
+ function rn(e, t, n, r, i, a) {
1159
+ let o = t + r, s = n + i, c = a.components.transform, l = L(a.components.body), u = c[0], d = c[1], f = c[2], p = c[3], m = c[4];
1133
1160
  if (e.shape === 1 || e.shape === 4) {
1134
1161
  let c = Math.cos(e.angle), h = Math.sin(e.angle), g = r * c + i * h, _ = -r * h + i * c;
1135
- return Qt(1, void 0, (t + o) / 2, (n + s) / 2, e.width + Math.abs(g), e.height + Math.abs(_), e.angle, l, a.components.polygon, u, d, f, p, m);
1162
+ return on(1, void 0, (t + o) / 2, (n + s) / 2, e.width + Math.abs(g), e.height + Math.abs(_), e.angle, l, a.components.polygon, u, d, f, p, m);
1136
1163
  }
1137
- let h = Qe(e.shape, e.width, e.height), g = Math.sqrt(r * r + i * i), _ = g > 0 ? Math.atan2(i, r) : e.angle;
1138
- return Qt(3, void 0, (t + o) / 2, (n + s) / 2, g + h * 2, h * 2, _, l, a.components.polygon, u, d, f, p, m) ? !0 : Qt(e.shape, e.polygon, o, s, e.width, e.height, e.angle, l, a.components.polygon, u, d, f, p, m);
1164
+ let h = U(e.shape, e.width, e.height), g = Math.sqrt(r * r + i * i), _ = g > 0 ? Math.atan2(i, r) : e.angle;
1165
+ return on(3, void 0, (t + o) / 2, (n + s) / 2, g + h * 2, h * 2, _, l, a.components.polygon, u, d, f, p, m) ? !0 : on(e.shape, e.polygon, o, s, e.width, e.height, e.angle, l, a.components.polygon, u, d, f, p, m);
1139
1166
  }
1140
- function Zt(e) {
1167
+ function an(e) {
1141
1168
  return e < 0 ? 0 : e > 1 ? 1 : e;
1142
1169
  }
1143
1170
  function $(e, t, n, r) {
1144
1171
  let i = r.components.transform;
1145
- return Qt(e.shape, e.polygon, t, n, e.width, e.height, e.angle, F(r.components.body), r.components.polygon, i[0], i[1], i[2], i[3], i[4]);
1172
+ return on(e.shape, e.polygon, t, n, e.width, e.height, e.angle, L(r.components.body), r.components.polygon, i[0], i[1], i[2], i[3], i[4]);
1146
1173
  }
1147
- function Qt(e, t, n, r, i, a, o, s, c, l, u, d, f, p) {
1148
- return e !== 4 && s !== 4 ? $e(e, n, r, i, a, o, s, l, u, d, f, p) : xt(e, t, n, r, i, a, o, s, c, l, u, d, f, p);
1174
+ function on(e, t, n, r, i, a, o, s, c, l, u, d, f, p) {
1175
+ return e !== 4 && s !== 4 ? it(e, n, r, i, a, o, s, l, u, d, f, p) : Dt(e, t, n, r, i, a, o, s, c, l, u, d, f, p);
1149
1176
  }
1150
1177
  //#endregion
1151
1178
  //#region src/systems/spatial-index.ts
1152
- var $t = class {
1179
+ var sn = class {
1153
1180
  entries = [];
1154
1181
  index;
1155
1182
  constructor(e) {
@@ -1157,7 +1184,7 @@ var $t = class {
1157
1184
  for (let n of e) {
1158
1185
  let e = n.components, r = e.transform;
1159
1186
  if (!r) continue;
1160
- let i = e.body, a = i ? F(i) : 1, o = r[2], s = r[3], c = r[4], l = r[0], u = r[1], d = V(a, o, s, c), f = H(a, o, s, c);
1187
+ let i = e.body, a = i ? L(i) : 1, o = r[2], s = r[3], c = r[4], l = r[0], u = r[1], d = nt(a, o, s, c), f = rt(a, o, s, c);
1161
1188
  this.entries.push({
1162
1189
  entityId: n.entityId,
1163
1190
  components: e
@@ -1189,14 +1216,14 @@ var $t = class {
1189
1216
  let o = this.entries;
1190
1217
  return (i ? a.neighbors(e, t, n, r, (e) => i(o[e])) : a.neighbors(e, t, n, r)).map((e) => o[e]);
1191
1218
  }
1192
- }, en = {
1219
+ }, cn = {
1193
1220
  x: 0,
1194
1221
  y: 0
1195
1222
  };
1196
- function tn(e, t, n = !1) {
1197
- (an(e, n) || an(t, n)) && on(e, t) && sn(e, t, en) && (rn(e, en.x, en.y, n), rn(t, -en.x, -en.y, n));
1223
+ function ln(e, t, n = !1) {
1224
+ (fn(e, n) || fn(t, n)) && pn(e, t) && mn(e, t, cn) && (dn(e, cn.x, cn.y, n), dn(t, -cn.x, -cn.y, n));
1198
1225
  }
1199
- function nn(e, t, n) {
1226
+ function un(e, t, n) {
1200
1227
  let r = e.components.bounciness, i = e.components.velocity;
1201
1228
  if (!r || !i) return;
1202
1229
  let a = i[0], o = i[1], s = a * t + o * n;
@@ -1204,9 +1231,9 @@ function nn(e, t, n) {
1204
1231
  let c = (1 + r[0]) * s;
1205
1232
  i[0] = a - c * t, i[1] = o - c * n;
1206
1233
  }
1207
- function rn(e, t, n, r) {
1234
+ function dn(e, t, n, r) {
1208
1235
  if (e.components.bounciness) {
1209
- nn(e, t, n);
1236
+ un(e, t, n);
1210
1237
  return;
1211
1238
  }
1212
1239
  let i = e.components.velocity;
@@ -1214,60 +1241,60 @@ function rn(e, t, n, r) {
1214
1241
  let a = i[0], o = i[1], s = a * t + o * n;
1215
1242
  s < 0 && (i[0] = a - s * t, i[1] = o - s * n);
1216
1243
  }
1217
- function an(e, t) {
1244
+ function fn(e, t) {
1218
1245
  return e.components.velocity !== void 0 && (t || e.components.bounciness !== void 0);
1219
1246
  }
1220
- function on(e, t) {
1221
- return !ln(e.components.body) && !ln(t.components.body);
1247
+ function pn(e, t) {
1248
+ return !gn(e.components.body) && !gn(t.components.body);
1222
1249
  }
1223
- function sn(e, t, n) {
1224
- let r = e.components.transform, i = t.components.transform, a = cn(e.components.body), o = cn(t.components.body);
1225
- return a === 4 || o === 4 ? St(a, e.components.polygon, r[0], r[1], r[2], r[3], r[4], o, t.components.polygon, i[0], i[1], i[2], i[3], i[4], n) : et(a, r[0], r[1], r[2], r[3], r[4], o, i[0], i[1], i[2], i[3], i[4], n);
1250
+ function mn(e, t, n) {
1251
+ let r = e.components.transform, i = t.components.transform, a = hn(e.components.body), o = hn(t.components.body);
1252
+ return a === 4 || o === 4 ? Ot(a, e.components.polygon, r[0], r[1], r[2], r[3], r[4], o, t.components.polygon, i[0], i[1], i[2], i[3], i[4], n) : ot(a, r[0], r[1], r[2], r[3], r[4], o, i[0], i[1], i[2], i[3], i[4], n);
1226
1253
  }
1227
- function cn(e) {
1228
- return e ? F(e) : 1;
1254
+ function hn(e) {
1255
+ return e ? L(e) : 1;
1229
1256
  }
1230
- function ln(e) {
1231
- return e !== void 0 && I(e);
1257
+ function gn(e) {
1258
+ return e !== void 0 && R(e);
1232
1259
  }
1233
1260
  //#endregion
1234
1261
  //#region src/systems/physics-update.ts
1235
- function un(e, t, n) {
1262
+ function _n(e, t, n) {
1236
1263
  if (!e.spatialMap && (!e.heap || !e.spatialMapMemory)) return;
1237
- let r = _t(e), i = J(n);
1264
+ let r = Ct(e), i = Y(n);
1238
1265
  r.update(t, i.minX, i.minY, i.maxX - i.minX, i.maxY - i.minY);
1239
1266
  }
1240
- var dn = "position-updated", fn = {
1267
+ var vn = "position-updated", yn = {
1241
1268
  x: 0,
1242
1269
  y: 0
1243
1270
  };
1244
- function pn(e = {}) {
1271
+ function bn(e = {}) {
1245
1272
  let { onCollision: t, optional: r = [], group: i, stopVelocityOnContact: a = !1 } = e, o, s, c = /* @__PURE__ */ new Map(), l = Object.assign((e, r, c, l, u) => {
1246
1273
  if (c.entity?.[n] === 1) return;
1247
- if (c.body !== void 0 && Te(c.body)) {
1274
+ if (c.body !== void 0 && Ce(c.body)) {
1248
1275
  u.entityDied(r);
1249
1276
  return;
1250
1277
  }
1251
- let d = i ? hn(c, i) : 0;
1278
+ let d = i ? Sn(c, i) : 0;
1252
1279
  if (i && e.skipGroup === d) return;
1253
1280
  let f = {
1254
1281
  entityId: r,
1255
1282
  components: c
1256
1283
  }, p = c.interpolation, m = e.elapsedTime / 1e3;
1257
- It(e, r, c.velocity, c.dynamics);
1284
+ Ht(e, r, c.velocity, c.dynamics);
1258
1285
  let h = c.velocity[0] * m, g = c.velocity[1] * m;
1259
- bn(p, e.elapsedTime);
1286
+ Dn(p, c.transform, e);
1260
1287
  let _ = i ? s?.get(d) : o;
1261
1288
  if (!_) {
1262
- Sn(r, c.transform, h, g, u, e.reportMoves), un(e, r, c), xn(p, e.tick);
1289
+ kn(r, c.transform, h, g, u, e.reportMoves), _n(e, r, c), On(p, e.tick);
1263
1290
  return;
1264
1291
  }
1265
1292
  let v = c.bounciness !== void 0, y = _.resolveMove(f, h, g, !v);
1266
- if (Sn(r, c.transform, y.moveX, y.moveY, u, e.reportMoves), un(e, r, c), xn(p, e.tick), _.hasBounciness || a || t) {
1293
+ if (kn(r, c.transform, y.moveX, y.moveY, u, e.reportMoves), _n(e, r, c), On(p, e.tick), _.hasBounciness || a || t) {
1267
1294
  _.forEachOverlapping(f, (n) => {
1268
- _.claimContact(r, n.entityId) && gn(e, _, f, n, l, u, y.moveX, y.moveY, a, t);
1295
+ _.claimContact(r, n.entityId) && Cn(e, _, f, n, l, u, y.moveX, y.moveY, a, t);
1269
1296
  }, y.moveX, y.moveY);
1270
- for (let n of y.blocking) _.claimContact(r, n.entityId) && gn(e, _, f, n, l, u, y.moveX, y.moveY, a, t);
1297
+ for (let n of y.blocking) _.claimContact(r, n.entityId) && Cn(e, _, f, n, l, u, y.moveX, y.moveY, a, t);
1271
1298
  }
1272
1299
  }, { physics: {
1273
1300
  collision: !0,
@@ -1276,60 +1303,60 @@ function pn(e = {}) {
1276
1303
  group: i
1277
1304
  } });
1278
1305
  return l.preRun = (e, t, n) => {
1279
- mn(e, c), e.dieAtImpact = (t, n) => {
1280
- vn(e, i ? s?.get(hn(t.components, i)) : o, t, n);
1306
+ xn(e, c), e.dieAtImpact = (t, n) => {
1307
+ Tn(e, i ? s?.get(Sn(t.components, i)) : o, t, n);
1281
1308
  };
1282
1309
  let r = e.elapsedTime / 1e3, a = n.collidable ?? [];
1283
1310
  if (!i) {
1284
- o = new qt(a, r, e.dynamicsCommands);
1311
+ o = new en(a, r, e.dynamicsCommands);
1285
1312
  return;
1286
1313
  }
1287
1314
  let l = /* @__PURE__ */ new Map();
1288
1315
  for (let t of a) {
1289
- let n = hn(t.components, i);
1316
+ let n = Sn(t.components, i);
1290
1317
  if (e.skipGroup === n) continue;
1291
1318
  let r = l.get(n);
1292
1319
  r || (r = [], l.set(n, r)), r.push(t);
1293
1320
  }
1294
1321
  s = /* @__PURE__ */ new Map();
1295
- for (let [t, n] of l) s.set(t, new qt(n, r, e.dynamicsCommands));
1322
+ for (let [t, n] of l) s.set(t, new en(n, r, e.dynamicsCommands));
1296
1323
  }, l;
1297
1324
  }
1298
- function mn(e, t) {
1325
+ function xn(e, t) {
1299
1326
  let n = e, r = e.commandQueueId ?? 0, i = t.get(r);
1300
- i && (e.dynamicsCommands = Ft(i, e.dynamicsCommands), t.delete(r));
1327
+ i && (e.dynamicsCommands = Vt(i, e.dynamicsCommands), t.delete(r));
1301
1328
  let a = () => {
1302
1329
  let e = t.get(r);
1303
1330
  return e || (e = /* @__PURE__ */ new Map(), t.set(r, e)), e;
1304
1331
  };
1305
1332
  n.queueForce = (e, t, n) => {
1306
- Nt(a(), e, t, n, 0, 0);
1333
+ zt(a(), e, t, n, 0, 0);
1307
1334
  }, n.queueImpulse = (e, t, n) => {
1308
- Nt(a(), e, 0, 0, t, n);
1335
+ zt(a(), e, 0, 0, t, n);
1309
1336
  }, n.queueVelocity = (e, t) => {
1310
- Pt(a(), e, t);
1337
+ Bt(a(), e, t);
1311
1338
  };
1312
1339
  }
1313
- function hn(e, t) {
1340
+ function Sn(e, t) {
1314
1341
  let n = e[t.component];
1315
1342
  return n ? n[t.index] : 0;
1316
1343
  }
1317
- function gn(e, t, n, r, i, a, o, s, c, l) {
1318
- if (tn(n, r, c), !l) return;
1319
- let u = J(n.components), d = J(r.components);
1320
- fn.x = 0, fn.y = 0, t.contactNormal(n, r, o, s, fn), l(e, n, r, i, a, {
1321
- normalX: fn.x,
1322
- normalY: fn.y
1323
- }), _n(e, n.entityId, n.components, u), _n(e, r.entityId, r.components, d);
1344
+ function Cn(e, t, n, r, i, a, o, s, c, l) {
1345
+ if (ln(n, r, c), !l) return;
1346
+ let u = Y(n.components), d = Y(r.components);
1347
+ yn.x = 0, yn.y = 0, t.contactNormal(n, r, o, s, yn), l(e, n, r, i, a, {
1348
+ normalX: yn.x,
1349
+ normalY: yn.y
1350
+ }), wn(e, n.entityId, n.components, u), wn(e, r.entityId, r.components, d);
1324
1351
  }
1325
- function _n(e, t, n, r) {
1326
- let i = J(n);
1327
- (i.minX !== r.minX || i.minY !== r.minY || i.maxX !== r.maxX || i.maxY !== r.maxY) && un(e, t, n);
1352
+ function wn(e, t, n, r) {
1353
+ let i = Y(n);
1354
+ (i.minX !== r.minX || i.minY !== r.minY || i.maxX !== r.maxX || i.maxY !== r.maxY) && _n(e, t, n);
1328
1355
  }
1329
- function vn(e, t, n, r) {
1356
+ function Tn(e, t, n, r) {
1330
1357
  let i = n.components.body;
1331
- if (!i || Te(i)) return;
1332
- Ee(i);
1358
+ if (!i || Ce(i)) return;
1359
+ we(i);
1333
1360
  let a = n.components.transform, o = n.components.velocity, s = r.components.transform, c = r.components.body;
1334
1361
  if (!t || !a || !o || !s || !c) return;
1335
1362
  let l = e.elapsedTime / 1e3, u = o[0] * l, d = o[1] * l;
@@ -1346,34 +1373,50 @@ function vn(e, t, n, r) {
1346
1373
  } }, u, d);
1347
1374
  a[0] = f.x, a[1] = f.y;
1348
1375
  }
1349
- function yn(e, t, n, r, i) {
1376
+ function En(e, t, n, r, i) {
1350
1377
  let a = e.elapsedTime / 1e3, o = n.interpolation;
1351
- It(e, t, n.velocity, n.dynamics), bn(o, e.elapsedTime), Sn(t, n.transform, n.velocity[0] * a, n.velocity[1] * a, i, e.reportMoves), un(e, t, n), xn(o, e.tick);
1378
+ Ht(e, t, n.velocity, n.dynamics), Dn(o, n.transform, e), kn(t, n.transform, n.velocity[0] * a, n.velocity[1] * a, i, e.reportMoves), _n(e, t, n), On(o, e.tick);
1352
1379
  }
1353
- function bn(e, t) {
1354
- e && (a(e, 4, NaN), e[3] = t, e[5] += t);
1380
+ function Dn(e, t, n) {
1381
+ e && (a(e, 16, NaN), e[12] = t[0], e[13] = t[1], e[14] = e[3], e[15] = e[5], a(e, 16, i(e, 4)), a(e, 4, NaN), e[11] = n.interpolationChannel ?? 0, e[3] = n.elapsedTime, e[5] += n.elapsedTime);
1355
1382
  }
1356
- function xn(e, t) {
1383
+ function On(e, t) {
1357
1384
  e && a(e, 4, t);
1358
1385
  }
1359
- function Sn(e, t, n, r, i, a) {
1360
- (n !== 0 || r !== 0) && (n !== 0 && c(t, 0, n, Infinity), r !== 0 && c(t, 1, r, Infinity), a !== !1 && i.emitSystemEvent(dn, e));
1386
+ function kn(e, t, n, r, i, a) {
1387
+ (n !== 0 || r !== 0) && (n !== 0 && c(t, 0, n, Infinity), r !== 0 && c(t, 1, r, Infinity), a !== !1 && i.emitSystemEvent(vn, e));
1388
+ }
1389
+ //#endregion
1390
+ //#region src/systems/interpolation-channels.ts
1391
+ var An = /* @__PURE__ */ new WeakMap();
1392
+ function jn(e, t) {
1393
+ let n = An.get(e);
1394
+ return n || (n = [void 0], An.set(e, n)), n.push(t), n.length - 1;
1395
+ }
1396
+ function Mn(e, t) {
1397
+ let n = An.get(e);
1398
+ n && t > 0 && t < n.length && (n[t] = void 0);
1399
+ }
1400
+ function Nn(e) {
1401
+ let t = An.get(e);
1402
+ if (t) return t.map((e) => e ? e.committedTick : NaN);
1361
1403
  }
1362
1404
  //#endregion
1363
1405
  //#region src/systems/physics-system.ts
1364
- var Cn = 50, wn = 1, Tn = class extends r {
1406
+ var Pn = 50, Fn = 1, In = class extends r {
1365
1407
  spatialWorld;
1366
1408
  pendingDynamicsCommands = /* @__PURE__ */ new Map();
1367
- commandQueueId = wn++;
1409
+ commandQueueId = Fn++;
1368
1410
  tick = 0;
1411
+ interpolationChannel;
1369
1412
  reportMoves;
1370
1413
  skipGroup;
1371
1414
  constructor(e, t = {}) {
1372
- let n = t.updateFunction ?? yn, r = t.optional ?? n.physics?.optional ?? [], i = t.collision ?? n.physics?.collision ?? !1, a = n === yn || n.physics?.dynamics === !0, o = n.physics?.group, s = [];
1415
+ let n = t.updateFunction ?? En, r = t.optional ?? n.physics?.optional ?? [], i = t.collision ?? n.physics?.collision ?? !1, a = n === En || n.physics?.dynamics === !0, o = n.physics?.group, s = [];
1373
1416
  i && !r.includes("body") && s.push("body"), i && !r.includes("bounciness") && s.push("bounciness"), i && !r.includes("polygon") && s.push("polygon"), r.includes("interpolation") || s.push("interpolation"), a && !r.includes("dynamics") && s.push("dynamics"), i && s.push("entity"), o && !r.includes(o.component) && s.push(o.component);
1374
1417
  let c = s.length ? [...s, ...r] : r, l = r.includes("bounciness") ? [...r] : ["bounciness", ...r];
1375
1418
  l.includes("polygon") || l.push("polygon"), a && !l.includes("dynamics") && l.push("dynamics"), o && !l.includes(o.component) && l.push(o.component);
1376
- let u = i ? { [Wt]: {
1419
+ let u = i ? { [Zt]: {
1377
1420
  required: ["transform", "body"],
1378
1421
  optional: [
1379
1422
  "velocity",
@@ -1384,7 +1427,7 @@ var Cn = 50, wn = 1, Tn = class extends r {
1384
1427
  } } : void 0, d = u || t.queries ? {
1385
1428
  ...u,
1386
1429
  ...t.queries
1387
- } : void 0, f = En(t.scope, t.filter);
1430
+ } : void 0, f = Ln(t.scope, t.filter);
1388
1431
  super(e, {
1389
1432
  name: t.name ?? "PhysicsSystem",
1390
1433
  deltaBetweenRuns: t.deltaBetweenRuns ?? 50,
@@ -1398,11 +1441,17 @@ var Cn = 50, wn = 1, Tn = class extends r {
1398
1441
  getWorker: t.getWorker ?? (() => {
1399
1442
  throw Error("PhysicsSystem cannot start a worker: no getWorker was supplied");
1400
1443
  })
1401
- }), this.spatialWorld = e, this.reportMoves = t.reportMoves, this.skipGroup = t.skipGroup;
1444
+ }), this.spatialWorld = e, this.reportMoves = t.reportMoves, this.skipGroup = t.skipGroup, this.interpolationChannel = jn(e, this);
1445
+ }
1446
+ get committedTick() {
1447
+ return this.isCurrentlyRunning() ? this.tick - 1 : this.tick;
1448
+ }
1449
+ destroy() {
1450
+ Mn(this.world, this.interpolationChannel), super.destroy();
1402
1451
  }
1403
1452
  startInterpolation(e) {
1404
1453
  let t = this.deltaBetweenRuns;
1405
- t <= 0 || Xe(e, {
1454
+ t <= 0 || et(e, {
1406
1455
  stepMs: t,
1407
1456
  stepFraction: this.currentDelta / t,
1408
1457
  tick: this.tick
@@ -1416,14 +1465,14 @@ var Cn = 50, wn = 1, Tn = class extends r {
1416
1465
  }
1417
1466
  queueVelocity(e, t) {
1418
1467
  let n = typeof e == "number" ? e : e.eid;
1419
- Pt(this.pendingDynamicsCommands, n, t);
1468
+ Bt(this.pendingDynamicsCommands, n, t);
1420
1469
  }
1421
1470
  addDataToWorld(e) {
1422
- e.tick = ++this.tick, gt(this.spatialWorld, e), e.reportMoves = this.reportMoves ?? this.listenerCount("position-updated") > 0, e.skipGroup = this.skipGroup, e.commandQueueId = this.commandQueueId, e.dynamicsCommands = this.snapshotDynamicsCommands();
1471
+ e.tick = ++this.tick, e.interpolationChannel = this.interpolationChannel, St(this.spatialWorld, e), e.reportMoves = this.reportMoves ?? this.listenerCount("position-updated") > 0, e.skipGroup = this.skipGroup, e.commandQueueId = this.commandQueueId, e.dynamicsCommands = this.snapshotDynamicsCommands();
1423
1472
  }
1424
1473
  queueDynamics(e, t, n, r, i) {
1425
1474
  let a = typeof e == "number" ? e : e.eid;
1426
- Nt(this.pendingDynamicsCommands, a, t, n, r, i);
1475
+ zt(this.pendingDynamicsCommands, a, t, n, r, i);
1427
1476
  }
1428
1477
  snapshotDynamicsCommands() {
1429
1478
  if (this.pendingDynamicsCommands.size === 0) return;
@@ -1439,50 +1488,58 @@ var Cn = 50, wn = 1, Tn = class extends r {
1439
1488
  return n;
1440
1489
  }
1441
1490
  };
1442
- function En(e, t) {
1491
+ function Ln(e, t) {
1443
1492
  return e ? t ? (n) => e(n) && t(n) : e : t;
1444
1493
  }
1445
1494
  //#endregion
1446
1495
  //#region src/systems/interpolation-update.ts
1447
- var Dn = 1.5, On = .5, kn = (e, t, n) => {
1448
- let r = n.interpolation, a = n.transform, o = i(r, 4), s = r[3], c = r[5], l = a[0], u = a[1], d = i(r, 4);
1449
- if (o !== d) {
1496
+ var Rn = 1.5, zn = .5, Bn = (e, t, n) => {
1497
+ let r = n.interpolation, a = n.transform, o = i(r, 4), s = r[3], c = r[5], l = a[0], u = a[1], d = i(r, 4), f = o === d, p = e.committedTicks?.[r[11]];
1498
+ if (p !== void 0 && !Number.isNaN(p) && !(f && d <= p)) {
1499
+ let e = i(r, 16);
1500
+ s = r[14], c = r[15], l = r[12], u = r[13], d = i(r, 16), f = e === d;
1501
+ }
1502
+ if (f) r[8] = l, r[9] = u, r[10] = s;
1503
+ else {
1450
1504
  if (s = r[10], s <= 0 || r[7] <= 0) return;
1451
1505
  l = r[8], u = r[9], c = r[6], d = r[2];
1452
- } else r[8] = l, r[9] = u, r[10] = s;
1506
+ }
1453
1507
  if (s <= 0) {
1454
1508
  r[2] = d, r[6] = c, r[7] = 0, r[0] = l, r[1] = u;
1455
1509
  return;
1456
1510
  }
1457
- let f = r[7];
1511
+ let m = r[7];
1458
1512
  if (d !== r[2]) {
1459
1513
  let e = r[6], t = c >= e ? c - e : s;
1460
- f += t, r[6] = c, r[2] = d;
1514
+ m += t, r[6] = c, r[2] = d;
1461
1515
  }
1462
- if (f <= 0) {
1516
+ if (m <= 0) {
1463
1517
  r[7] = 0, r[0] = l, r[1] = u;
1464
1518
  return;
1465
1519
  }
1466
- let p = Math.min(Math.max(e.elapsedTime, 0), f), m = s * Dn, h = f - p;
1467
- h > m && (p += Math.min(h - m, p * On));
1468
- let g = p / f, _ = r[0], v = r[1];
1469
- r[0] = _ + (l - _) * g, r[1] = v + (u - v) * g, r[7] = f - p;
1470
- }, An = class extends r {
1520
+ let h = Math.min(Math.max(e.elapsedTime, 0), m), g = s * Rn, _ = m - h;
1521
+ _ > g && (h += Math.min(_ - g, h * zn));
1522
+ let v = h / m, y = r[0], b = r[1];
1523
+ r[0] = y + (l - y) * v, r[1] = b + (u - b) * v, r[7] = m - h;
1524
+ }, Vn = class extends r {
1471
1525
  constructor(e, t = {}) {
1472
1526
  super(e, {
1473
1527
  name: t.name ?? "InterpolationSystem",
1474
1528
  deltaBetweenRuns: 0,
1475
1529
  firstRun: t.firstRun,
1476
1530
  required: ["transform", "interpolation"],
1477
- updateFunction: kn,
1531
+ updateFunction: Bn,
1478
1532
  forceMainThread: t.forceMainThread ?? !t.getWorker,
1479
1533
  getWorker: t.getWorker ?? (() => {
1480
1534
  throw Error("InterpolationSystem cannot start a worker: no getWorker was supplied");
1481
1535
  })
1482
1536
  });
1483
1537
  }
1538
+ addDataToWorld(e) {
1539
+ e.committedTicks = Nn(this.world);
1540
+ }
1484
1541
  };
1485
1542
  //#endregion
1486
- export { Se as BODY_BLOCKS_PATH_FLAG, he as BODY_CATEGORY_INDEX, be as BODY_CCD_FLAG, xe as BODY_DYING_FLAG, me as BODY_FLAGS_INDEX, ge as BODY_MASK_INDEX, ye as BODY_SENSOR_FLAG, ve as BODY_SHAPE_MASK, _e as BODY_SIZE, je as BOUNCINESS_INDEX, Me as BOUNCINESS_SIZE, Wt as COLLIDABLE_QUERY, qt as CollisionBroadphase, de as DEFAULT_COLLIDE_CATEGORY, fe as DEFAULT_COLLIDE_MASK, Cn as DEFAULT_PHYSICS_STEP_MS, N as DYNAMICS_ACCELERATION_X_INDEX, ee as DYNAMICS_ACCELERATION_Y_INDEX, te as DYNAMICS_INVERSE_MASS_INDEX, ne as DYNAMICS_SIZE, Re as INTERPOLATION_DURATION_INDEX, He as INTERPOLATION_REMAINING_DURATION_INDEX, Ke as INTERPOLATION_SIZE, Ve as INTERPOLATION_SYNCED_DURATION_INDEX, Ge as INTERPOLATION_SYNCED_STEP_DURATION_INDEX, Le as INTERPOLATION_SYNCED_TICK_INDEX, Ue as INTERPOLATION_TARGET_X_INDEX, We as INTERPOLATION_TARGET_Y_INDEX, ze as INTERPOLATION_TICK_INDEX, Be as INTERPOLATION_TOTAL_DURATION_INDEX, Fe as INTERPOLATION_X_INDEX, Ie as INTERPOLATION_Y_INDEX, An as InterpolationSystem, l as MAX_POLYGON_VERTICES, f as POLYGON_SIZE, u as POLYGON_VERTEX_COUNT_INDEX, d as POLYGON_VERTICES_INDEX, dn as POSITION_UPDATED_EVENT, vt as PhysicalWorld, Tn as PhysicsSystem, ce as SHAPE_CAPSULE, se as SHAPE_CIRCLE, le as SHAPE_POLYGON, oe as SHAPE_RECTANGLE, $t as SpatialIndex, S as TRANSFORM_ANGLE_INDEX, x as TRANSFORM_HEIGHT_INDEX, C as TRANSFORM_SIZE, b as TRANSFORM_WIDTH_INDEX, v as TRANSFORM_X_INDEX, y as TRANSFORM_Y_INDEX, O as VELOCITY_DAMPING_INDEX, k as VELOCITY_SIZE, E as VELOCITY_X_INDEX, D as VELOCITY_Y_INDEX, gt as addPhysicalWorldData, we as blocksPath, Oe as bodyDefinition, F as bodyShape, Pe as bouncinessDefinition, ct as boundsHalfHeight, st as boundsHalfWidth, pe as canCollide, z as capsuleHalfLength, et as contactNormal, pn as createPhysicsUpdate, re as dynamicsDefinition, _t as getSpatialMap, It as integrateDynamics, Je as interpolationDefinition, kn as interpolationUpdate, Ce as isContinuous, Te as isDying, I as isSensor, Ee as markDying, lt as orientedBoxesOverlap, Ze as physicsRegistry, yn as physicsUpdate, K as pointSegmentDistanceSquared, St as polygonContactNormal, m as polygonDefinition, xt as polygonShapesOverlap, h as preparePolygon, dt as segmentBoxDistanceSquared, ut as segmentSegmentDistanceSquared, H as shapeHalfHeight, V as shapeHalfWidth, B as shapeIsEmpty, Qe as shapeRadius, $e as shapesOverlap, Ye as snapEntity, Xe as startSpawnInterpolation, T as transformDefinition, un as updateSpatialMap, j as velocityDefinition };
1543
+ export { be as BODY_BLOCKS_PATH_FLAG, pe as BODY_CATEGORY_INDEX, ve as BODY_CCD_FLAG, ye as BODY_DYING_FLAG, fe as BODY_FLAGS_INDEX, me as BODY_MASK_INDEX, _e as BODY_SENSOR_FLAG, ge as BODY_SHAPE_MASK, he as BODY_SIZE, ke as BOUNCINESS_INDEX, Ae as BOUNCINESS_SIZE, Zt as COLLIDABLE_QUERY, en as CollisionBroadphase, le as DEFAULT_COLLIDE_CATEGORY, ue as DEFAULT_COLLIDE_MASK, Pn as DEFAULT_PHYSICS_STEP_MS, N as DYNAMICS_ACCELERATION_X_INDEX, P as DYNAMICS_ACCELERATION_Y_INDEX, ee as DYNAMICS_INVERSE_MASS_INDEX, F as DYNAMICS_SIZE, We as INTERPOLATION_CHANNEL_INDEX, Ie as INTERPOLATION_DURATION_INDEX, qe as INTERPOLATION_PREVIOUS_DURATION_INDEX, Ye as INTERPOLATION_PREVIOUS_TICK_INDEX, Je as INTERPOLATION_PREVIOUS_TOTAL_DURATION_INDEX, Ge as INTERPOLATION_PREVIOUS_X_INDEX, Ke as INTERPOLATION_PREVIOUS_Y_INDEX, Be as INTERPOLATION_REMAINING_DURATION_INDEX, Xe as INTERPOLATION_SIZE, ze as INTERPOLATION_SYNCED_DURATION_INDEX, Ue as INTERPOLATION_SYNCED_STEP_DURATION_INDEX, Fe as INTERPOLATION_SYNCED_TICK_INDEX, Ve as INTERPOLATION_TARGET_X_INDEX, He as INTERPOLATION_TARGET_Y_INDEX, Le as INTERPOLATION_TICK_INDEX, Re as INTERPOLATION_TOTAL_DURATION_INDEX, Ne as INTERPOLATION_X_INDEX, Pe as INTERPOLATION_Y_INDEX, Vn as InterpolationSystem, l as MAX_POLYGON_VERTICES, f as POLYGON_SIZE, u as POLYGON_VERTEX_COUNT_INDEX, d as POLYGON_VERTICES_INDEX, vn as POSITION_UPDATED_EVENT, wt as PhysicalWorld, In as PhysicsSystem, oe as SHAPE_CAPSULE, ae as SHAPE_CIRCLE, se as SHAPE_POLYGON, ie as SHAPE_RECTANGLE, sn as SpatialIndex, S as TRANSFORM_ANGLE_INDEX, x as TRANSFORM_HEIGHT_INDEX, C as TRANSFORM_SIZE, b as TRANSFORM_WIDTH_INDEX, v as TRANSFORM_X_INDEX, y as TRANSFORM_Y_INDEX, O as VELOCITY_DAMPING_INDEX, k as VELOCITY_SIZE, E as VELOCITY_X_INDEX, D as VELOCITY_Y_INDEX, St as addPhysicalWorldData, Se as blocksPath, Ee as bodyDefinition, L as bodyShape, Me as bouncinessDefinition, mt as boundsHalfHeight, pt as boundsHalfWidth, de as canCollide, H as capsuleCoreAngle, V as capsuleHalfLength, ot as contactNormal, bn as createPhysicsUpdate, te as dynamicsDefinition, Ct as getSpatialMap, Ht as integrateDynamics, Qe as interpolationDefinition, Bn as interpolationUpdate, xe as isContinuous, Ce as isDying, R as isSensor, we as markDying, ht as orientedBoxesOverlap, tt as physicsRegistry, En as physicsUpdate, q as pointSegmentDistanceSquared, Ot as polygonContactNormal, m as polygonDefinition, Dt as polygonShapesOverlap, h as preparePolygon, _t as segmentBoxDistanceSquared, gt as segmentSegmentDistanceSquared, rt as shapeHalfHeight, nt as shapeHalfWidth, W as shapeIsEmpty, U as shapeRadius, it as shapesOverlap, $e as snapEntity, et as startSpawnInterpolation, T as transformDefinition, _n as updateSpatialMap, j as velocityDefinition };
1487
1544
 
1488
1545
  //# sourceMappingURL=index.js.map