@daneren2005/shared-memory-physics 1.0.0 → 1.1.0

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
@@ -1,8 +1,8 @@
1
1
  import e from "flatbush";
2
- import { addAtomicFloat32 as t } from "@daneren2005/shared-memory-objects";
3
- import { ComponentSystem as n } from "@daneren2005/shared-memory-ecs";
2
+ import { addAtomicFloat32 as t, loadFloat32 as n, storeFloat32 as r } from "@daneren2005/shared-memory-objects";
3
+ import { ComponentSystem as i } from "@daneren2005/shared-memory-ecs";
4
4
  //#region src/components/transform-component.ts
5
- var r = 0, i = 1, a = 2, o = 3, s = 4, c = 5, l = {
5
+ var a = 0, o = 1, s = 2, c = 3, l = 4, u = 5, d = {
6
6
  type: Float32Array,
7
7
  size: 5,
8
8
  loadProperties: [
@@ -63,7 +63,7 @@ var r = 0, i = 1, a = 2, o = 3, s = 4, c = 5, l = {
63
63
  y: e.y
64
64
  };
65
65
  }
66
- }, u = 0, d = 1, f = 2, p = {
66
+ }, f = 0, p = 1, m = 2, h = {
67
67
  type: Float32Array,
68
68
  size: 2,
69
69
  loadProperties: ["velocityX", "velocityY"],
@@ -91,15 +91,15 @@ var r = 0, i = 1, a = 2, o = 3, s = 4, c = 5, l = {
91
91
  velocityY: e.velocityY
92
92
  };
93
93
  }
94
- }, m = 1, h = 2, g = 3, _ = [
94
+ }, g = 1, _ = 2, v = 3, y = [
95
95
  1,
96
96
  2,
97
97
  3
98
- ], v = 1, y = 4294967295;
99
- function b(e, t, n, r) {
98
+ ], b = 1, x = 4294967295;
99
+ function ee(e, t, n, r) {
100
100
  return (t & n) !== 0 && (r & e) !== 0;
101
101
  }
102
- var x = 0, S = 1, C = 2, w = 3, T = {
102
+ var te = 0, ne = 1, re = 2, ie = 3, S = {
103
103
  type: Uint32Array,
104
104
  size: 3,
105
105
  loadProperties: [
@@ -112,7 +112,7 @@ var x = 0, S = 1, C = 2, w = 3, T = {
112
112
  ],
113
113
  load(e, t, n) {
114
114
  let r = t.create([
115
- E(n),
115
+ ae(n),
116
116
  n.collideCategory ?? 1,
117
117
  n.collideMask ?? 4294967295
118
118
  ]), i = t.getBlock(r);
@@ -139,102 +139,153 @@ var x = 0, S = 1, C = 2, w = 3, T = {
139
139
  };
140
140
  }
141
141
  };
142
- function E(e) {
142
+ function ae(e) {
143
143
  let t = e.shape;
144
144
  if (t === void 0) return e.radius === void 0 ? 1 : 2;
145
- if (!_.includes(t)) throw Error(`Unknown body shape: ${t}`);
145
+ if (!y.includes(t)) throw Error(`Unknown body shape: ${t}`);
146
146
  return t;
147
147
  }
148
148
  //#endregion
149
+ //#region src/components/interpolation-component.ts
150
+ var oe = 0, se = 1, ce = 2, le = 3, ue = 4, de = 5, fe = 6, C = 7, pe = 8, w = {
151
+ type: Float32Array,
152
+ size: 8,
153
+ loadProperties: ["interpolate"],
154
+ load(e, t, n) {
155
+ let r = n.x ?? 0, i = n.y ?? 0, a = t.create([
156
+ r,
157
+ i,
158
+ r,
159
+ i,
160
+ 0,
161
+ 0,
162
+ 0,
163
+ 0
164
+ ]), o = t.getBlock(a);
165
+ return {
166
+ index: a,
167
+ get x() {
168
+ return o[0];
169
+ },
170
+ set x(e) {
171
+ o[0] = e;
172
+ },
173
+ get y() {
174
+ return o[1];
175
+ },
176
+ set y(e) {
177
+ o[1] = e;
178
+ },
179
+ get prevX() {
180
+ return o[2];
181
+ },
182
+ set prevX(e) {
183
+ o[2] = e;
184
+ },
185
+ get prevY() {
186
+ return o[3];
187
+ },
188
+ set prevY(e) {
189
+ o[3] = e;
190
+ }
191
+ };
192
+ }
193
+ };
194
+ function me(e) {
195
+ let { transform: t, interpolation: n } = e.components;
196
+ !t || !n || (n.prevX = n.x = t.x, n.prevY = n.y = t.y);
197
+ }
198
+ //#endregion
149
199
  //#region src/components/registry.ts
150
- var D = {
151
- transform: l,
152
- velocity: p,
153
- body: T
200
+ var he = {
201
+ transform: d,
202
+ velocity: h,
203
+ body: S,
204
+ interpolation: w
154
205
  };
155
206
  //#endregion
156
207
  //#region src/math/shapes.ts
157
- function O(e, t) {
208
+ function T(e, t) {
158
209
  return Math.max(0, (e - t) / 2);
159
210
  }
160
- function k(e, t, n) {
211
+ function E(e, t, n) {
161
212
  return e === 2 ? t / 2 : e === 3 ? n / 2 : 0;
162
213
  }
163
- function A(e, t, n) {
214
+ function D(e, t, n) {
164
215
  return e === 2 ? t <= 0 : e === 3 ? n <= 0 : t <= 0 || n <= 0;
165
216
  }
166
- function j(e, t, n, r) {
167
- return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.cos(r)) * O(t, n) + n / 2 : F(t, n, r);
217
+ function O(e, t, n, r) {
218
+ return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.cos(r)) * T(t, n) + n / 2 : M(t, n, r);
168
219
  }
169
- function M(e, t, n, r) {
170
- return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.sin(r)) * O(t, n) + n / 2 : I(t, n, r);
220
+ function k(e, t, n, r) {
221
+ return e === 2 ? t / 2 : e === 3 ? Math.abs(Math.sin(r)) * T(t, n) + n / 2 : N(t, n, r);
171
222
  }
172
- function N(e, t, n, r, i, a, o, s, c, l, u, d) {
173
- if (A(e, r, i) || A(o, l, u)) return !1;
223
+ function A(e, t, n, r, i, a, o, s, c, l, u, d) {
224
+ if (D(e, r, i) || D(o, l, u)) return !1;
174
225
  let f = e !== 1, p = o !== 1;
175
- if (!f && !p) return L(t, n, r, i, a, s, c, l, u, d);
176
- if (f && !p) return N(o, s, c, l, u, d, e, t, n, r, i, a);
177
- let m = P(o, l, u), h = Math.cos(d) * m, g = Math.sin(d) * m, _ = k(o, l, u);
178
- if (!f) return B(s - h, c - g, s + h, c + g, t, n, r, i, a) < _ * _;
179
- let v = P(e, r, i), y = Math.cos(a) * v, b = Math.sin(a) * v, x = k(e, r, i) + _;
180
- return z(t - y, n - b, t + y, n + b, s - h, c - g, s + h, c + g) < x * x;
226
+ if (!f && !p) return P(t, n, r, i, a, s, c, l, u, d);
227
+ if (f && !p) return A(o, s, c, l, u, d, e, t, n, r, i, a);
228
+ let m = j(o, l, u), h = Math.cos(d) * m, g = Math.sin(d) * m, _ = E(o, l, u);
229
+ if (!f) return L(s - h, c - g, s + h, c + g, t, n, r, i, a) < _ * _;
230
+ let v = j(e, r, i), y = Math.cos(a) * v, b = Math.sin(a) * v, x = E(e, r, i) + _;
231
+ return I(t - y, n - b, t + y, n + b, s - h, c - g, s + h, c + g) < x * x;
181
232
  }
182
- function P(e, t, n) {
183
- return e === 3 ? O(t, n) : 0;
233
+ function j(e, t, n) {
234
+ return e === 3 ? T(t, n) : 0;
184
235
  }
185
- function F(e, t, n) {
236
+ function M(e, t, n) {
186
237
  return (Math.abs(Math.cos(n)) * e + Math.abs(Math.sin(n)) * t) / 2;
187
238
  }
188
- function I(e, t, n) {
239
+ function N(e, t, n) {
189
240
  return (Math.abs(Math.sin(n)) * e + Math.abs(Math.cos(n)) * t) / 2;
190
241
  }
191
- function L(e, t, n, r, i, a, o, s, c, l) {
242
+ function P(e, t, n, r, i, a, o, s, c, l) {
192
243
  if (n <= 0 || r <= 0 || s <= 0 || c <= 0) return !1;
193
244
  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;
194
- return !R(u, d, v, y, m, h, u, d, g, _, f, p) && !R(-d, u, v, y, m, h, u, d, g, _, f, p) && !R(f, p, v, y, m, h, u, d, g, _, f, p) && !R(-p, f, v, y, m, h, u, d, g, _, f, p);
245
+ return !F(u, d, v, y, m, h, u, d, g, _, f, p) && !F(-d, u, v, y, m, h, u, d, g, _, f, p) && !F(f, p, v, y, m, h, u, d, g, _, f, p) && !F(-p, f, v, y, m, h, u, d, g, _, f, p);
195
246
  }
196
- function R(e, t, n, r, i, a, o, s, c, l, u, d) {
247
+ function F(e, t, n, r, i, a, o, s, c, l, u, d) {
197
248
  let f = i * Math.abs(o * e + s * t) + a * Math.abs(-s * e + o * t), p = c * Math.abs(u * e + d * t) + l * Math.abs(-d * e + u * t);
198
249
  return Math.abs(n * e + r * t) >= f + p;
199
250
  }
200
- function z(e, t, n, r, i, a, o, s) {
251
+ function I(e, t, n, r, i, a, o, s) {
201
252
  let c = n - e, l = r - t, u = o - i, d = s - a, f = e - i, p = t - a, m = c * c + l * l, h = u * u + d * d, g = u * f + d * p, _ = 0, v = 0;
202
253
  if (m <= 0 && h <= 0) return f * f + p * p;
203
- if (m <= 0) v = W(g / h);
254
+ if (m <= 0) v = V(g / h);
204
255
  else {
205
256
  let e = c * f + l * p;
206
- if (h <= 0) _ = W(-e / m);
257
+ if (h <= 0) _ = V(-e / m);
207
258
  else {
208
259
  let t = c * u + l * d, n = m * h - t * t;
209
- n !== 0 && (_ = W((t * g - e * h) / n)), v = (t * _ + g) / h, v < 0 ? (v = 0, _ = W(-e / m)) : v > 1 && (v = 1, _ = W((t - e) / m));
260
+ n !== 0 && (_ = V((t * g - e * h) / n)), v = (t * _ + g) / h, v < 0 ? (v = 0, _ = V(-e / m)) : v > 1 && (v = 1, _ = V((t - e) / m));
210
261
  }
211
262
  }
212
263
  let y = e + c * _ - (i + u * v), b = t + l * _ - (a + d * v);
213
264
  return y * y + b * b;
214
265
  }
215
- function B(e, t, n, r, i, a, o, s, c) {
266
+ function L(e, t, n, r, i, a, o, s, c) {
216
267
  let l = Math.cos(c), u = Math.sin(c), d = o / 2, f = s / 2, p = e - i, m = t - a, h = n - i, g = r - a, _ = p * l + m * u, v = -p * u + m * l, y = h * l + g * u, b = -h * u + g * l;
217
- return H(_, v, y, b, d, f) ? Math.min(U(_, v, d, f), U(y, b, d, f), V(-d, -f, _, v, y, b), V(d, -f, _, v, y, b), V(d, f, _, v, y, b), V(-d, f, _, v, y, b)) : 0;
268
+ return z(_, v, y, b, d, f) ? Math.min(B(_, v, d, f), B(y, b, d, f), R(-d, -f, _, v, y, b), R(d, -f, _, v, y, b), R(d, f, _, v, y, b), R(-d, f, _, v, y, b)) : 0;
218
269
  }
219
- function V(e, t, n, r, i, a) {
220
- let o = i - n, s = a - r, c = o * o + s * s, l = c > 0 ? W(((e - n) * o + (t - r) * s) / c) : 0, u = e - (n + o * l), d = t - (r + s * l);
270
+ function R(e, t, n, r, i, a) {
271
+ let o = i - n, s = a - r, c = o * o + s * s, l = c > 0 ? V(((e - n) * o + (t - r) * s) / c) : 0, u = e - (n + o * l), d = t - (r + s * l);
221
272
  return u * u + d * d;
222
273
  }
223
- function H(e, t, n, r, i, a) {
274
+ function z(e, t, n, r, i, a) {
224
275
  if (Math.max(e, n) < -i || Math.min(e, n) > i || Math.max(t, r) < -a || Math.min(t, r) > a) return !0;
225
276
  let o = -(r - t), s = n - e;
226
277
  return Math.abs(o * e + s * t) > i * Math.abs(o) + a * Math.abs(s);
227
278
  }
228
- function U(e, t, n, r) {
279
+ function B(e, t, n, r) {
229
280
  let i = Math.abs(e) - n, a = Math.abs(t) - r, o = i > 0 ? i : 0, s = a > 0 ? a : 0;
230
281
  return o * o + s * s;
231
282
  }
232
- function W(e) {
283
+ function V(e) {
233
284
  return e < 0 ? 0 : e > 1 ? 1 : e;
234
285
  }
235
286
  //#endregion
236
287
  //#region src/systems/collision.ts
237
- var G = 1e-4, ee = 24, K = "collidable", q = [], J = class {
288
+ var H = 1e-4, ge = 24, U = "collidable", W = [], G = class {
238
289
  buckets = [];
239
290
  constructor(t, n) {
240
291
  let r = /* @__PURE__ */ new Map();
@@ -244,8 +295,8 @@ var G = 1e-4, ee = 24, K = "collidable", q = [], J = class {
244
295
  let o = a[1];
245
296
  if (o === 0) continue;
246
297
  let s = a[0], c = i[2], l = i[3];
247
- if (A(s, c, l)) continue;
248
- let u = i[4], d = j(s, c, l, u), f = M(s, c, l, u), p = t.velocity, m = p ? Math.abs(p[0]) * n : 0, h = p ? Math.abs(p[1]) * n : 0, g = i[0], _ = i[1], v = r.get(o);
298
+ if (D(s, c, l)) continue;
299
+ let u = i[4], d = O(s, c, l, u), f = k(s, c, l, u), p = t.velocity, m = p ? Math.abs(p[0]) * n : 0, h = p ? Math.abs(p[1]) * n : 0, g = i[0], _ = i[1], v = r.get(o);
249
300
  v || (v = {
250
301
  entries: [],
251
302
  bounds: []
@@ -265,41 +316,41 @@ var G = 1e-4, ee = 24, K = "collidable", q = [], J = class {
265
316
  }
266
317
  }
267
318
  forEachOverlapping(e, t) {
268
- let n = Y(e);
319
+ let n = K(e);
269
320
  if (!n) return;
270
321
  let { x: r, y: i, halfWidth: a, halfHeight: o } = n;
271
322
  this.forEachCandidate(n, r - a, i - o, r + a, i + o, (e) => {
272
- X(n, r, i, e) && t(e);
323
+ q(n, r, i, e) && t(e);
273
324
  });
274
325
  }
275
326
  sweep(e, t, n) {
276
- let r = Math.sqrt(t * t + n * n), i = Y(e);
327
+ let r = Math.sqrt(t * t + n * n), i = K(e);
277
328
  if (!i || r === 0) return {
278
329
  fraction: 1,
279
- blocking: q
330
+ blocking: W
280
331
  };
281
332
  let { x: a, y: o, halfWidth: s, halfHeight: c } = i, l = a + t, u = o + n, d = [];
282
333
  if (this.forEachCandidate(i, l - s, u - c, l + s, u + c, (e) => {
283
- X(i, l, u, e) && (X(i, a, o, e) || d.push(e));
334
+ q(i, l, u, e) && (q(i, a, o, e) || d.push(e));
284
335
  }), d.length === 0) return {
285
336
  fraction: 1,
286
- blocking: q
337
+ blocking: W
287
338
  };
288
- let f = 0, p = 1, m = G / r;
289
- for (let e = 0; e < ee && p - f > m; e++) {
339
+ let f = 0, p = 1, m = H / r;
340
+ for (let e = 0; e < ge && p - f > m; e++) {
290
341
  let e = (f + p) / 2;
291
342
  this.blockedAt(i, d, t, n, e) ? p = e : f = e;
292
343
  }
293
344
  let h = [], g = a + t * p, _ = o + n * p;
294
- for (let e of d) X(i, g, _, e) && h.push(e);
345
+ for (let e of d) q(i, g, _, e) && h.push(e);
295
346
  return {
296
- fraction: f * r > G ? f : 0,
347
+ fraction: f * r > H ? f : 0,
297
348
  blocking: h
298
349
  };
299
350
  }
300
351
  blockedAt(e, t, n, r, i) {
301
352
  let a = e.x + n * i, o = e.y + r * i;
302
- for (let n of t) if (X(e, a, o, n)) return !0;
353
+ for (let n of t) if (q(e, a, o, n)) return !0;
303
354
  return !1;
304
355
  }
305
356
  forEachCandidate(e, t, n, r, i, a) {
@@ -309,13 +360,13 @@ var G = 1e-4, ee = 24, K = "collidable", q = [], J = class {
309
360
  }
310
361
  }
311
362
  };
312
- function Y(e) {
363
+ function K(e) {
313
364
  let t = e.components.body;
314
365
  if (!t) return;
315
366
  let n = t[2];
316
367
  if (n === 0) return;
317
368
  let r = e.components.transform, i = t[0], a = r[2], o = r[3];
318
- if (A(i, a, o)) return;
369
+ if (D(i, a, o)) return;
319
370
  let s = r[4];
320
371
  return {
321
372
  entityId: e.entityId,
@@ -325,19 +376,19 @@ function Y(e) {
325
376
  width: a,
326
377
  height: o,
327
378
  angle: s,
328
- halfWidth: j(i, a, o, s),
329
- halfHeight: M(i, a, o, s),
379
+ halfWidth: O(i, a, o, s),
380
+ halfHeight: k(i, a, o, s),
330
381
  category: t[1],
331
382
  mask: n
332
383
  };
333
384
  }
334
- function X(e, t, n, r) {
385
+ function q(e, t, n, r) {
335
386
  let i = r.components.transform;
336
- return N(e.shape, t, n, e.width, e.height, e.angle, r.components.body[0], i[0], i[1], i[2], i[3], i[4]);
387
+ return A(e.shape, t, n, e.width, e.height, e.angle, r.components.body[0], i[0], i[1], i[2], i[3], i[4]);
337
388
  }
338
389
  //#endregion
339
390
  //#region src/systems/spatial-index.ts
340
- var te = class {
391
+ var _e = class {
341
392
  entries = [];
342
393
  index;
343
394
  constructor(t) {
@@ -345,7 +396,7 @@ var te = class {
345
396
  for (let e of t) {
346
397
  let t = e.components, r = t.transform;
347
398
  if (!r) continue;
348
- let i = t.body, a = i ? i[0] : 1, o = r[2], s = r[3], c = r[4], l = r[0], u = r[1], d = j(a, o, s, c), f = M(a, o, s, c);
399
+ let i = t.body, a = i ? i[0] : 1, o = r[2], s = r[3], c = r[4], l = r[0], u = r[1], d = O(a, o, s, c), f = k(a, o, s, c);
349
400
  this.entries.push({
350
401
  entityId: e.entityId,
351
402
  components: t
@@ -377,48 +428,62 @@ var te = class {
377
428
  let o = this.entries;
378
429
  return (i ? a.neighbors(e, t, n, r, (e) => i(o[e])) : a.neighbors(e, t, n, r)).map((e) => o[e]);
379
430
  }
380
- }, Z = "position-updated";
381
- function ne(e = {}) {
431
+ }, J = "position-updated";
432
+ function ve(e = {}) {
382
433
  let { onCollision: t, optional: n = [] } = e, r, i = Object.assign((e, n, i, a, o) => {
383
434
  let s = {
384
435
  entityId: n,
385
436
  components: i
386
- }, c = e.elapsedTime / 1e3, l = i.velocity[0] * c, u = i.velocity[1] * c, d;
387
- if (r) {
388
- let e = r.sweep(s, l, u);
389
- l *= e.fraction, u *= e.fraction, d = e.blocking;
437
+ }, c = i.interpolation, l = e.elapsedTime / 1e3, u = i.velocity[0] * l, d = i.velocity[1] * l;
438
+ if (X(c, i.transform, e.elapsedTime), !r) {
439
+ Q(n, i.transform, u, d, o, e.reportMoves), Z(c, e.tick);
440
+ return;
441
+ }
442
+ let f = r.sweep(s, u, d);
443
+ if (Q(n, i.transform, u * f.fraction, d * f.fraction, o, e.reportMoves), Z(c, e.tick), t) {
444
+ r.forEachOverlapping(s, (n) => {
445
+ t(e, s, n, a, o);
446
+ });
447
+ for (let n of f.blocking) t(e, s, n, a, o);
390
448
  }
391
- if ($(n, i.transform, l, u, o), !(!t || !r) && (r.forEachOverlapping(s, (n) => {
392
- t(e, s, n, a, o);
393
- }), d)) for (let n of d) t(e, s, n, a, o);
394
449
  }, { physics: {
395
- collision: t !== void 0,
450
+ collision: !0,
396
451
  optional: n
397
452
  } });
398
- return t && (i.preRun = (e, t, n) => {
399
- r = new J(n.collidable ?? [], e.elapsedTime / 1e3);
400
- }), i;
453
+ return i.preRun = (e, t, n) => {
454
+ r = new G(n.collidable ?? [], e.elapsedTime / 1e3);
455
+ }, i;
401
456
  }
402
- var Q = (e, t, n, r, i) => {
403
- let a = e.elapsedTime / 1e3;
404
- $(t, n.transform, n.velocity[0] * a, n.velocity[1] * a, i);
457
+ var Y = (e, t, n, r, i) => {
458
+ let a = e.elapsedTime / 1e3, o = n.interpolation;
459
+ X(o, n.transform, e.elapsedTime), Q(t, n.transform, n.velocity[0] * a, n.velocity[1] * a, i, e.reportMoves), Z(o, e.tick);
405
460
  };
406
- function $(e, n, r, i, a) {
407
- r === 0 && i === 0 || (r !== 0 && t(n, 0, r, Infinity), i !== 0 && t(n, 1, i, Infinity), a.emitEntityEvent(e, Z, n[0], n[1]));
461
+ function X(e, t, n) {
462
+ e && (e[2] = t[0], e[3] = t[1], e[6] = n);
463
+ }
464
+ function Z(e, t) {
465
+ e && r(e, 7, t);
466
+ }
467
+ function Q(e, n, r, i, a, o) {
468
+ r === 0 && i === 0 || (r !== 0 && t(n, 0, r, Infinity), i !== 0 && t(n, 1, i, Infinity), o !== !1 && a.emitSystemEvent(J, e));
408
469
  }
409
470
  //#endregion
410
471
  //#region src/systems/physics-system.ts
411
- var re = class extends n {
472
+ var ye = 50, be = class extends i {
473
+ tick = 0;
474
+ reportMoves;
412
475
  constructor(e, t = {}) {
413
- let n = t.updateFunction ?? Q, r = t.optional ?? n.physics?.optional ?? [], i = t.collision ?? n.physics?.collision ?? !1, a = i && !r.includes("body") ? ["body", ...r] : r;
476
+ let n = t.updateFunction ?? Y, r = t.optional ?? n.physics?.optional ?? [], i = t.collision ?? n.physics?.collision ?? !1, a = [];
477
+ i && !r.includes("body") && a.push("body"), r.includes("interpolation") || a.push("interpolation");
478
+ let o = a.length ? [...a, ...r] : r;
414
479
  super(e, {
415
480
  name: t.name ?? "PhysicsSystem",
416
- deltaBetweenRuns: t.deltaBetweenRuns,
481
+ deltaBetweenRuns: t.deltaBetweenRuns ?? 50,
417
482
  firstRun: t.firstRun,
418
483
  required: ["transform", "velocity"],
419
- optional: a,
484
+ optional: o,
420
485
  updateFunction: n,
421
- queries: i ? { [K]: {
486
+ queries: i ? { [U]: {
422
487
  required: ["transform", "body"],
423
488
  optional: ["velocity", ...r]
424
489
  } } : void 0,
@@ -426,10 +491,36 @@ var re = class extends n {
426
491
  getWorker: t.getWorker ?? (() => {
427
492
  throw Error("PhysicsSystem cannot start a worker: no getWorker was supplied");
428
493
  })
494
+ }), this.reportMoves = t.reportMoves;
495
+ }
496
+ addDataToWorld(e) {
497
+ e.tick = ++this.tick, e.reportMoves = this.reportMoves ?? this.listenerCount("position-updated") > 0;
498
+ }
499
+ }, $ = (e, t, r) => {
500
+ let i = r.interpolation, a = r.transform, o = n(i, 7), s = i[2], c = i[3], l = i[6], u = a[0], d = a[1], f = n(i, 7);
501
+ if (o !== f) return;
502
+ if (l <= 0) {
503
+ i[4] = 1, i[5] = f, i[0] = u, i[1] = d;
504
+ return;
505
+ }
506
+ let p = i[4];
507
+ f !== i[5] && (p = 0, i[5] = f), p += e.elapsedTime / l, p > 1 && (p = 1), i[4] = p, i[0] = s + (u - s) * p, i[1] = c + (d - c) * p;
508
+ }, xe = class extends i {
509
+ constructor(e, t = {}) {
510
+ super(e, {
511
+ name: t.name ?? "InterpolationSystem",
512
+ deltaBetweenRuns: 0,
513
+ firstRun: t.firstRun,
514
+ required: ["transform", "interpolation"],
515
+ updateFunction: $,
516
+ forceMainThread: t.forceMainThread ?? !t.getWorker,
517
+ getWorker: t.getWorker ?? (() => {
518
+ throw Error("InterpolationSystem cannot start a worker: no getWorker was supplied");
519
+ })
429
520
  });
430
521
  }
431
522
  };
432
523
  //#endregion
433
- export { S as BODY_CATEGORY_INDEX, C as BODY_MASK_INDEX, x as BODY_SHAPE_INDEX, w as BODY_SIZE, K as COLLIDABLE_QUERY, J as CollisionBroadphase, v as DEFAULT_COLLIDE_CATEGORY, y as DEFAULT_COLLIDE_MASK, Z as POSITION_UPDATED_EVENT, re as PhysicsSystem, g as SHAPE_CAPSULE, h as SHAPE_CIRCLE, m as SHAPE_RECTANGLE, te as SpatialIndex, s as TRANSFORM_ANGLE_INDEX, o as TRANSFORM_HEIGHT_INDEX, c as TRANSFORM_SIZE, a as TRANSFORM_WIDTH_INDEX, r as TRANSFORM_X_INDEX, i as TRANSFORM_Y_INDEX, f as VELOCITY_SIZE, u as VELOCITY_X_INDEX, d as VELOCITY_Y_INDEX, T as bodyDefinition, I as boundsHalfHeight, F as boundsHalfWidth, b as canCollide, O as capsuleHalfLength, ne as createPhysicsUpdate, L as orientedBoxesOverlap, D as physicsRegistry, Q as physicsUpdate, V as pointSegmentDistanceSquared, B as segmentBoxDistanceSquared, z as segmentSegmentDistanceSquared, M as shapeHalfHeight, j as shapeHalfWidth, A as shapeIsEmpty, k as shapeRadius, N as shapesOverlap, l as transformDefinition, p as velocityDefinition };
524
+ export { ne as BODY_CATEGORY_INDEX, re as BODY_MASK_INDEX, te as BODY_SHAPE_INDEX, ie as BODY_SIZE, U as COLLIDABLE_QUERY, G as CollisionBroadphase, b as DEFAULT_COLLIDE_CATEGORY, x as DEFAULT_COLLIDE_MASK, ye as DEFAULT_PHYSICS_STEP_MS, fe as INTERPOLATION_DURATION_INDEX, ce as INTERPOLATION_PREV_X_INDEX, le as INTERPOLATION_PREV_Y_INDEX, ue as INTERPOLATION_PROGRESS_INDEX, pe as INTERPOLATION_SIZE, de as INTERPOLATION_SYNCED_TICK_INDEX, C as INTERPOLATION_TICK_INDEX, oe as INTERPOLATION_X_INDEX, se as INTERPOLATION_Y_INDEX, xe as InterpolationSystem, J as POSITION_UPDATED_EVENT, be as PhysicsSystem, v as SHAPE_CAPSULE, _ as SHAPE_CIRCLE, g as SHAPE_RECTANGLE, _e as SpatialIndex, l as TRANSFORM_ANGLE_INDEX, c as TRANSFORM_HEIGHT_INDEX, u as TRANSFORM_SIZE, s as TRANSFORM_WIDTH_INDEX, a as TRANSFORM_X_INDEX, o as TRANSFORM_Y_INDEX, m as VELOCITY_SIZE, f as VELOCITY_X_INDEX, p as VELOCITY_Y_INDEX, S as bodyDefinition, N as boundsHalfHeight, M as boundsHalfWidth, ee as canCollide, T as capsuleHalfLength, ve as createPhysicsUpdate, w as interpolationDefinition, $ as interpolationUpdate, P as orientedBoxesOverlap, he as physicsRegistry, Y as physicsUpdate, R as pointSegmentDistanceSquared, L as segmentBoxDistanceSquared, I as segmentSegmentDistanceSquared, k as shapeHalfHeight, O as shapeHalfWidth, D as shapeIsEmpty, E as shapeRadius, A as shapesOverlap, me as snapEntity, d as transformDefinition, h as velocityDefinition };
434
525
 
435
526
  //# sourceMappingURL=index.js.map