@daneren2005/shared-memory-physics 1.7.0 → 1.7.1

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