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