@vworlds/vecs-physics 1.0.53 → 1.0.55
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/adapter/engine.d.ts +17 -3
- package/adapter/engine.js +32 -2
- package/adapter/engine.js.map +1 -1
- package/adapter/queries.d.ts +6 -6
- package/adapter/queries.js +19 -24
- package/adapter/queries.js.map +1 -1
- package/adapter/runtime.d.ts +13 -1
- package/adapter/runtime.js +22 -7
- package/adapter/runtime.js.map +1 -1
- package/body/lifecycle.js +1 -0
- package/body/lifecycle.js.map +1 -1
- package/body/mass.js +1 -1
- package/body/mass.js.map +1 -1
- package/body/pose_in.js +7 -23
- package/body/pose_in.js.map +1 -1
- package/body/pose_out.d.ts +3 -0
- package/body/pose_out.js +59 -55
- package/body/pose_out.js.map +1 -1
- package/core/module.d.ts +2 -5
- package/core/module.js +15 -4
- package/core/module.js.map +1 -1
- package/core/reaper.js +24 -15
- package/core/reaper.js.map +1 -1
- package/core/snapshot.js +7 -5
- package/core/snapshot.js.map +1 -1
- package/core/step.js +1 -1
- package/core/step.js.map +1 -1
- package/debug/validation.js +1 -1
- package/debug/validation.js.map +1 -1
- package/events/components.d.ts +12 -3
- package/events/components.js +12 -3
- package/events/components.js.map +1 -1
- package/events/opt_in.js +14 -2
- package/events/opt_in.js.map +1 -1
- package/events/publish.d.ts +3 -0
- package/events/publish.js +138 -81
- package/events/publish.js.map +1 -1
- package/forces/gather.js +3 -5
- package/forces/gather.js.map +1 -1
- package/forces/impulses.js +10 -5
- package/forces/impulses.js.map +1 -1
- package/index.d.ts +2 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/joints/components.d.ts +1 -1
- package/kinematic/targets.js +39 -40
- package/kinematic/targets.js.map +1 -1
- package/materials/sync.js +1 -1
- package/materials/sync.js.map +1 -1
- package/module.d.ts +4 -1
- package/module.js +4 -1
- package/module.js.map +1 -1
- package/package.json +3 -3
- package/shapes/components.d.ts +1 -5
- package/shapes/components.js.map +1 -1
package/body/pose_out.js
CHANGED
|
@@ -1,45 +1,59 @@
|
|
|
1
1
|
import { Module } from "@vworlds/vecs";
|
|
2
|
-
import { getPhysicsEngine, PhysicsSystemTag
|
|
2
|
+
import { getPhysicsEngine, PhysicsSystemTag } from "../adapter/engine.js";
|
|
3
3
|
import { AngularVelocity, Body, BodyType, LinearVelocity, Position, Rotation, } from "./components.js";
|
|
4
4
|
import { PhysicsCoreModule } from "../core/module.js";
|
|
5
|
+
/** Export moved bodies once per post-step tick and write only changed Dynamic-body components.
|
|
6
|
+
* The pinned fast path refreshes heap views; optional components and modification routing remain
|
|
7
|
+
* unchanged, and no per-body Box2D handle, marshalling object or typed-array view is created. */
|
|
5
8
|
export class BodyPoseOutModule extends Module {
|
|
6
9
|
init() {
|
|
7
10
|
const world = this.world;
|
|
8
11
|
world.module(PhysicsCoreModule);
|
|
9
12
|
const engine = getPhysicsEngine(world);
|
|
13
|
+
const fast = engine.fast;
|
|
14
|
+
const move = fast.layout.move;
|
|
15
|
+
const offsets = {
|
|
16
|
+
bodyIndex: move.bodyIndex >> 2,
|
|
17
|
+
x: move.x >> 2,
|
|
18
|
+
y: move.y >> 2,
|
|
19
|
+
angle: move.angle >> 2,
|
|
20
|
+
vx: move.vx >> 2,
|
|
21
|
+
vy: move.vy >> 2,
|
|
22
|
+
w: move.w >> 2,
|
|
23
|
+
};
|
|
24
|
+
const flags = fast.layout.constants.exportVelocity;
|
|
25
|
+
// Numeric ids avoid resolving component classes on every moved body.
|
|
26
|
+
const ids = {
|
|
27
|
+
body: world.entity(Body).eid,
|
|
28
|
+
position: world.entity(Position).eid,
|
|
29
|
+
rotation: world.entity(Rotation).eid,
|
|
30
|
+
linearVelocity: world.entity(LinearVelocity).eid,
|
|
31
|
+
angularVelocity: world.entity(AngularVelocity).eid,
|
|
32
|
+
};
|
|
10
33
|
world
|
|
11
34
|
.system("PhysicsPoseSyncOut")
|
|
12
35
|
.phase(engine.phases.postStep)
|
|
13
36
|
.run(() => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
const body = entity.get(Body);
|
|
31
|
-
if (body?.type !== BodyType.Dynamic) {
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
writePose(engine, entity, move.transform, bodyId);
|
|
35
|
-
}
|
|
36
|
-
finally {
|
|
37
|
-
move.delete();
|
|
38
|
-
}
|
|
37
|
+
// Export after preceding postStep systems; exportMoves also refreshes memory views.
|
|
38
|
+
const exporter = engine.moveExporter;
|
|
39
|
+
const bodyEntities = engine.bodyEntities;
|
|
40
|
+
const count = exporter.exportMoves(engine.world, flags);
|
|
41
|
+
const i32 = fast.i32;
|
|
42
|
+
const f32 = fast.f32;
|
|
43
|
+
const stride = exporter.stride;
|
|
44
|
+
let base = exporter.base;
|
|
45
|
+
for (let i = 0; i < count; i++, base += stride) {
|
|
46
|
+
// A postStep system may destroy an entity after Box2D produced this event.
|
|
47
|
+
// Keep the reverse slot until the reaper frees the body; lookup is O(1).
|
|
48
|
+
const entity = bodyEntities[i32[base + offsets.bodyIndex]];
|
|
49
|
+
if (entity === undefined || entity.destroyed) {
|
|
50
|
+
continue;
|
|
39
51
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
52
|
+
const body = entity.get(ids.body);
|
|
53
|
+
if (body?.type !== BodyType.Dynamic) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
writePose(entity, f32, base, offsets, ids);
|
|
43
57
|
}
|
|
44
58
|
})
|
|
45
59
|
.add(PhysicsSystemTag);
|
|
@@ -67,45 +81,35 @@ export class BodyPoseOutModule extends Module {
|
|
|
67
81
|
* nothing per body: the new values are read into locals and compared directly, and the `{ x, y }`
|
|
68
82
|
* literals exist only on the write path.
|
|
69
83
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* the C++ destructor on an interior pointer of the event, which corrupts the wasm heap. The event's
|
|
74
|
-
* single `move.delete()` releases the memory. The linear velocity is a by-value return, a heap copy
|
|
75
|
-
* this function owns and deletes.
|
|
84
|
+
* Values come from the move record exported after preceding postStep systems. The angle uses
|
|
85
|
+
* Box2D's b2Rot_GetAngle, preserving its exact bits, and velocities use the same Box2D getters
|
|
86
|
+
* in wasm. Reading these f32 records creates no embind handle or allocation.
|
|
76
87
|
*/
|
|
77
|
-
function writePose(
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
const position = entity.get(Position);
|
|
88
|
+
function writePose(entity, f32, base, offsets, ids) {
|
|
89
|
+
const x = f32[base + offsets.x];
|
|
90
|
+
const y = f32[base + offsets.y];
|
|
91
|
+
const position = entity.get(ids.position);
|
|
82
92
|
if (position === undefined || position.x !== x || position.y !== y) {
|
|
83
93
|
entity.set(Position, { x, y });
|
|
84
94
|
}
|
|
85
|
-
const rotation = entity.get(
|
|
95
|
+
const rotation = entity.get(ids.rotation);
|
|
86
96
|
if (rotation !== undefined) {
|
|
87
|
-
const angle =
|
|
97
|
+
const angle = f32[base + offsets.angle];
|
|
88
98
|
if (rotation.angle !== angle) {
|
|
89
99
|
entity.set(Rotation, { angle });
|
|
90
100
|
}
|
|
91
101
|
}
|
|
92
|
-
const linearVelocity = entity.get(
|
|
102
|
+
const linearVelocity = entity.get(ids.linearVelocity);
|
|
93
103
|
if (linearVelocity !== undefined) {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (linearVelocity.x !== vx || linearVelocity.y !== vy) {
|
|
99
|
-
entity.set(LinearVelocity, { x: vx, y: vy });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
finally {
|
|
103
|
-
linear.delete();
|
|
104
|
+
const vx = f32[base + offsets.vx];
|
|
105
|
+
const vy = f32[base + offsets.vy];
|
|
106
|
+
if (linearVelocity.x !== vx || linearVelocity.y !== vy) {
|
|
107
|
+
entity.set(LinearVelocity, { x: vx, y: vy });
|
|
104
108
|
}
|
|
105
109
|
}
|
|
106
|
-
const angularVelocity = entity.get(
|
|
110
|
+
const angularVelocity = entity.get(ids.angularVelocity);
|
|
107
111
|
if (angularVelocity !== undefined) {
|
|
108
|
-
const value =
|
|
112
|
+
const value = f32[base + offsets.w];
|
|
109
113
|
if (angularVelocity.value !== value) {
|
|
110
114
|
entity.set(AngularVelocity, { value });
|
|
111
115
|
}
|
package/body/pose_out.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pose_out.js","sourceRoot":"","sources":["../../../../src/body/pose_out.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"pose_out.js","sourceRoot":"","sources":["../../../../src/body/pose_out.ts"],"names":[],"mappings":"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"}
|
package/core/module.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { Module, type Entity } from "@vworlds/vecs";
|
|
1
|
+
import { Module, type Vec2, type Entity } from "@vworlds/vecs";
|
|
2
2
|
/** Options for {@link import("../module.js").PhysicsModule}. Every field is optional;
|
|
3
3
|
* omitted fields fall back to Box2D-aligned defaults. */
|
|
4
4
|
export type PhysicsOptions = {
|
|
5
|
-
gravity?:
|
|
6
|
-
x: number;
|
|
7
|
-
y: number;
|
|
8
|
-
};
|
|
5
|
+
gravity?: Vec2;
|
|
9
6
|
fixedTimeStep?: number;
|
|
10
7
|
subSteps?: number;
|
|
11
8
|
debug?: boolean;
|
package/core/module.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { insertPhaseAfter, Module, ON_UPDATE, Phase, Singleton, } from "@vworlds/vecs";
|
|
2
2
|
import { hasPhysicsEngine, PhysicsEngine, PhysicsSystemTag, } from "../adapter/engine.js";
|
|
3
3
|
import { withAllocated } from "../adapter/disposal.js";
|
|
4
|
-
import { getBox2D } from "../adapter/runtime.js";
|
|
4
|
+
import { getBox2D, getFastPath } from "../adapter/runtime.js";
|
|
5
5
|
const DEFAULT_PRE_STEP_PHASE = "physics-pre";
|
|
6
6
|
const DEFAULT_STEP_PHASE = "physics-step";
|
|
7
7
|
const DEFAULT_POST_STEP_PHASE = "physics-post";
|
|
@@ -12,7 +12,7 @@ export class PhysicsCoreModule extends Module {
|
|
|
12
12
|
if (hasPhysicsEngine(world)) {
|
|
13
13
|
throw new Error("PhysicsModule has already been registered on this world");
|
|
14
14
|
}
|
|
15
|
-
world.component(PhysicsEngine);
|
|
15
|
+
world.component(PhysicsEngine).on("remove", (_entity, engine) => engine.dispose());
|
|
16
16
|
world.component(PhysicsSystemTag);
|
|
17
17
|
const phases = {
|
|
18
18
|
preStep: resolvePhase(world, opts.preStepPhase, DEFAULT_PRE_STEP_PHASE),
|
|
@@ -29,8 +29,16 @@ export class PhysicsCoreModule extends Module {
|
|
|
29
29
|
insertPhaseAfter(phases.postStep, phases.step);
|
|
30
30
|
const box2d = getBox2D();
|
|
31
31
|
const resolved = resolveOptions(opts);
|
|
32
|
-
const
|
|
33
|
-
engine
|
|
32
|
+
const fast = getFastPath();
|
|
33
|
+
const engine = new PhysicsEngine(box2d, resolved, phases, fast, opts.debugSink);
|
|
34
|
+
try {
|
|
35
|
+
engine.worldId = createWorldId(engine, resolved);
|
|
36
|
+
engine.world = fast.world(engine.worldId);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
engine.dispose();
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
34
42
|
world.component(PhysicsEngine).add(Singleton);
|
|
35
43
|
world.component(PhysicsEngine).attach(PhysicsEngine, engine);
|
|
36
44
|
}
|
|
@@ -48,6 +56,9 @@ function createWorldId(engine, options) {
|
|
|
48
56
|
def.enableSleep = options.enableSleep;
|
|
49
57
|
def.enableContinuous = options.enableContinuous;
|
|
50
58
|
const worldId = box2d.b2CreateWorld(def);
|
|
59
|
+
if (worldId.index1 === 0) {
|
|
60
|
+
throw new Error("Box2D could not create the world: limit of 128 live worlds per process");
|
|
61
|
+
}
|
|
51
62
|
box2d.b2World_SetContactTuning(worldId, options.contactHertz, options.contactDampingRatio, options.contactSpeed);
|
|
52
63
|
return worldId;
|
|
53
64
|
});
|
package/core/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/core/module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/core/module.ts"],"names":[],"mappings":"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"}
|
package/core/reaper.js
CHANGED
|
@@ -15,29 +15,38 @@ export class PhysicsReaperModule extends Module {
|
|
|
15
15
|
// with b2Joint_IsValid because a joint queued from a cascaded body entity
|
|
16
16
|
// may already be gone.
|
|
17
17
|
const joints = engine.pendingJointDestroys;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
engine.box2d.
|
|
18
|
+
if (joints.length > 0) {
|
|
19
|
+
for (const jointId of joints) {
|
|
20
|
+
if (engine.box2d.b2Joint_IsValid(jointId)) {
|
|
21
|
+
engine.box2d.b2DestroyJoint(jointId, true);
|
|
22
|
+
}
|
|
21
23
|
}
|
|
24
|
+
joints.length = 0;
|
|
22
25
|
}
|
|
23
|
-
joints.length = 0;
|
|
24
26
|
const shapes = engine.pendingShapeDestroys;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
if (shapes.length > 0) {
|
|
28
|
+
for (const shapeId of shapes) {
|
|
29
|
+
engine.entityByShapeIndex.delete(shapeId.index1);
|
|
30
|
+
engine.box2d.b2DestroyShape(shapeId, true);
|
|
31
|
+
}
|
|
32
|
+
shapes.length = 0;
|
|
28
33
|
}
|
|
29
|
-
shapes.length = 0;
|
|
30
34
|
const chains = engine.pendingChainDestroys;
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
if (chains.length > 0) {
|
|
36
|
+
for (const chainId of chains) {
|
|
37
|
+
engine.box2d.b2DestroyChain(chainId);
|
|
38
|
+
}
|
|
39
|
+
chains.length = 0;
|
|
33
40
|
}
|
|
34
|
-
chains.length = 0;
|
|
35
41
|
const bodies = engine.pendingBodyDestroys;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
if (bodies.length > 0) {
|
|
43
|
+
for (const bodyId of bodies) {
|
|
44
|
+
engine.entityByBodyIndex.delete(bodyId.index1);
|
|
45
|
+
engine.bodyEntities[bodyId.index1] = undefined;
|
|
46
|
+
engine.box2d.b2DestroyBody(bodyId);
|
|
47
|
+
}
|
|
48
|
+
bodies.length = 0;
|
|
39
49
|
}
|
|
40
|
-
bodies.length = 0;
|
|
41
50
|
})
|
|
42
51
|
.add(PhysicsSystemTag);
|
|
43
52
|
}
|
package/core/reaper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reaper.js","sourceRoot":"","sources":["../../../../src/core/reaper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,OAAO,mBAAoB,SAAQ,MAAM;IACtC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK;aACF,MAAM,CAAC,eAAe,CAAC;aACvB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5B,GAAG,CAAC,GAAG,EAAE;YACR,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC3C,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"reaper.js","sourceRoot":"","sources":["../../../../src/core/reaper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,OAAO,mBAAoB,SAAQ,MAAM;IACtC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK;aACF,MAAM,CAAC,eAAe,CAAC;aACvB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5B,GAAG,CAAC,GAAG,EAAE;YACR,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;oBAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC1C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;oBAC7B,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACjD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC;YAC1C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;oBAC5B,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;oBAC/C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;gBACD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;aACD,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
package/core/snapshot.js
CHANGED
|
@@ -85,12 +85,14 @@ function declareDeclarative(world, Class) {
|
|
|
85
85
|
export class PhysicsSnapshotModule extends Module {
|
|
86
86
|
init() {
|
|
87
87
|
const world = this.world;
|
|
88
|
-
//
|
|
89
|
-
// reaper queue; the event components hold `Entity` references reported by
|
|
90
|
-
// this world's solver. Neither can be reconstructed elsewhere, and an event
|
|
91
|
-
// buffer is a report about the world that produced it, not state to carry.
|
|
88
|
+
// The engine owns world-bound Box2D resources and cannot cross worlds.
|
|
92
89
|
world.component(PhysicsEngine).snapshotPolicy(DontSnapshot);
|
|
93
|
-
|
|
90
|
+
// Event component presence is the opt-in: preserve it so destination hooks
|
|
91
|
+
// re-arm reporting, but discard buffers holding this solver's Entity references.
|
|
92
|
+
[ContactEvents, SensorEvents, HitEvents].forEach((Class) => world.component(Class).snapshotPolicy(CustomSnapshot, {
|
|
93
|
+
capture: () => ({}),
|
|
94
|
+
materialize: () => new Class(),
|
|
95
|
+
}));
|
|
94
96
|
// Declarative components whose engine handle is not worth copying.
|
|
95
97
|
[Body, Box, Circle, Capsule, Segment, Polygon, Chain].forEach((Class) => declareDeclarative(world, Class));
|
|
96
98
|
[
|
package/core/snapshot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../../src/core/snapshot.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../../src/core/snapshot.ts"],"names":[],"mappings":"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"}
|
package/core/step.js
CHANGED
|
@@ -14,7 +14,7 @@ export class PhysicsStepModule extends Module {
|
|
|
14
14
|
engine.warn.warnOnce(0, "delta-mismatch", `frame delta ${delta}ms does not match fixedTimeStep ${engine.fixedTimeStep * 1000}ms; ` +
|
|
15
15
|
`physics expects a fixed delta.`);
|
|
16
16
|
}
|
|
17
|
-
engine.box2d.
|
|
17
|
+
engine.box2d._b2x_World_Step(engine.world, engine.fixedTimeStep, engine.subSteps);
|
|
18
18
|
})
|
|
19
19
|
.add(PhysicsSystemTag);
|
|
20
20
|
}
|
package/core/step.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../../src/core/step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,OAAO,iBAAkB,SAAQ,MAAM;IACpC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK;aACF,MAAM,CAAC,aAAa,CAAC;aACrB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;aACzB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnB,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAClB,CAAC,EACD,gBAAgB,EAChB,eAAe,KAAK,mCAAmC,MAAM,CAAC,aAAa,GAAG,IAAI,MAAM;oBACtF,gCAAgC,CACnC,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../../src/core/step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,OAAO,iBAAkB,SAAQ,MAAM;IACpC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK;aACF,MAAM,CAAC,aAAa,CAAC;aACrB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;aACzB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnB,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAClB,CAAC,EACD,gBAAgB,EAChB,eAAe,KAAK,mCAAmC,MAAM,CAAC,aAAa,GAAG,IAAI,MAAM;oBACtF,gCAAgC,CACnC,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpF,CAAC,CAAC;aACD,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
package/debug/validation.js
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
//
|
|
41
41
|
// Upstream docs: docs/debug-validation.md.
|
|
42
42
|
// Polygon validity is checked via b2ComputeHull (box2d3-wasm); see isValidPolygon.
|
|
43
|
-
import { ArrayMap, ChildOf, Module } from "@vworlds/vecs";
|
|
43
|
+
import { ArrayMap, ChildOf, Module, } from "@vworlds/vecs";
|
|
44
44
|
import { getPhysicsEngine, PhysicsSystemTag } from "../adapter/engine.js";
|
|
45
45
|
import { Body, BodyType, Position } from "../body/components.js";
|
|
46
46
|
import { BodyModule } from "../body/module.js";
|
package/debug/validation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/debug/validation.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,qEAAqE;AACrE,2EAA2E;AAC3E,8BAA8B;AAC9B,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,EAAE;AACF,gDAAgD;AAChD,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,gEAAgE;AAChE,2EAA2E;AAC3E,4EAA4E;AAC5E,sDAAsD;AACtD,2EAA2E;AAC3E,iDAAiD;AACjD,+EAA+E;AAC/E,8DAA8D;AAC9D,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,EAAE;AACF,iBAAiB;AACjB,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,+DAA+D;AAC/D,+EAA+E;AAC/E,0EAA0E;AAC1E,gCAAgC;AAChC,yDAAyD;AACzD,EAAE;AACF,2CAA2C;AAC3C,mFAAmF;AAEnF,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/debug/validation.ts"],"names":[],"mappings":"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"}
|
package/events/components.d.ts
CHANGED
|
@@ -16,17 +16,26 @@ export type HitEvent = {
|
|
|
16
16
|
normalY: number;
|
|
17
17
|
speed: number;
|
|
18
18
|
};
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Per-shape contact begin/end buffers. Add to opt a shape into contact events.
|
|
21
|
+
* Subtree snapshots preserve the opt-in but restore fresh, empty buffers.
|
|
22
|
+
*/
|
|
20
23
|
export declare class ContactEvents {
|
|
21
24
|
begin: ContactEvent[];
|
|
22
25
|
end: ContactEvent[];
|
|
23
26
|
}
|
|
24
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Per-shape sensor overlap begin/end buffers. Add to opt into sensor events.
|
|
29
|
+
* Subtree snapshots preserve the opt-in but restore fresh, empty buffers.
|
|
30
|
+
*/
|
|
25
31
|
export declare class SensorEvents {
|
|
26
32
|
begin: SensorEvent[];
|
|
27
33
|
end: SensorEvent[];
|
|
28
34
|
}
|
|
29
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Per-shape hit-event buffer (fast/high-speed contacts). Add to opt into hit events.
|
|
37
|
+
* Subtree snapshots preserve the opt-in but restore a fresh, empty buffer.
|
|
38
|
+
*/
|
|
30
39
|
export declare class HitEvents {
|
|
31
40
|
hits: HitEvent[];
|
|
32
41
|
}
|
package/events/components.js
CHANGED
|
@@ -2,21 +2,30 @@
|
|
|
2
2
|
// each physics step; physics marks the component modified only when new events
|
|
3
3
|
// arrive (see PLAN → PhysicsEvents). The field initialisers give each instance
|
|
4
4
|
// its own arrays. Public API — see `docs/components.md`.
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Per-shape contact begin/end buffers. Add to opt a shape into contact events.
|
|
7
|
+
* Subtree snapshots preserve the opt-in but restore fresh, empty buffers.
|
|
8
|
+
*/
|
|
6
9
|
export class ContactEvents {
|
|
7
10
|
constructor() {
|
|
8
11
|
this.begin = [];
|
|
9
12
|
this.end = [];
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Per-shape sensor overlap begin/end buffers. Add to opt into sensor events.
|
|
17
|
+
* Subtree snapshots preserve the opt-in but restore fresh, empty buffers.
|
|
18
|
+
*/
|
|
13
19
|
export class SensorEvents {
|
|
14
20
|
constructor() {
|
|
15
21
|
this.begin = [];
|
|
16
22
|
this.end = [];
|
|
17
23
|
}
|
|
18
24
|
}
|
|
19
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Per-shape hit-event buffer (fast/high-speed contacts). Add to opt into hit events.
|
|
27
|
+
* Subtree snapshots preserve the opt-in but restore a fresh, empty buffer.
|
|
28
|
+
*/
|
|
20
29
|
export class HitEvents {
|
|
21
30
|
constructor() {
|
|
22
31
|
this.hits = [];
|
package/events/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/events/components.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,+EAA+E;AAC/E,+EAA+E;AAC/E,yDAAyD;AAwBzD
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/events/components.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,+EAA+E;AAC/E,+EAA+E;AAC/E,yDAAyD;AAwBzD;;;GAGG;AACH,MAAM,OAAO,aAAa;IAA1B;QACE,UAAK,GAAmB,EAAE,CAAC;QAC3B,QAAG,GAAmB,EAAE,CAAC;IAC3B,CAAC;CAAA;AAED;;;GAGG;AACH,MAAM,OAAO,YAAY;IAAzB;QACE,UAAK,GAAkB,EAAE,CAAC;QAC1B,QAAG,GAAkB,EAAE,CAAC;IAC1B,CAAC;CAAA;AAED;;;GAGG;AACH,MAAM,OAAO,SAAS;IAAtB;QACE,SAAI,GAAe,EAAE,CAAC;IACxB,CAAC;CAAA"}
|
package/events/opt_in.js
CHANGED
|
@@ -22,11 +22,19 @@ export class EventOptInModule extends Module {
|
|
|
22
22
|
world
|
|
23
23
|
.component(ContactEvents)
|
|
24
24
|
.on("add", (entity) => setEventFlag(engine, entity, "contact", true))
|
|
25
|
-
.on("remove", (entity) =>
|
|
25
|
+
.on("remove", (entity) => {
|
|
26
|
+
if (!engine.disposed) {
|
|
27
|
+
setEventFlag(engine, entity, "contact", false);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
26
30
|
world
|
|
27
31
|
.component(HitEvents)
|
|
28
32
|
.on("add", (entity) => setEventFlag(engine, entity, "hit", true))
|
|
29
|
-
.on("remove", (entity) =>
|
|
33
|
+
.on("remove", (entity) => {
|
|
34
|
+
if (!engine.disposed) {
|
|
35
|
+
setEventFlag(engine, entity, "hit", false);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
30
38
|
// Sensor detection: enable if SensorEvents OR Detectable is present.
|
|
31
39
|
// Query only single b2Shape geometries; chains have no runtime sensor-event
|
|
32
40
|
// setter and are recreated by the chain opt-in system below.
|
|
@@ -47,6 +55,10 @@ export class EventOptInModule extends Module {
|
|
|
47
55
|
.query("PhysicsEventOptInTeardown:Sensor")
|
|
48
56
|
.with({ all: [SingleShape, { any: [SensorEvents, Detectable] }] })
|
|
49
57
|
.exit([SingleShape], (_e, [shape]) => {
|
|
58
|
+
// Infrastructure may release the engine before this component leaves.
|
|
59
|
+
if (engine.disposed) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
50
62
|
const shapeId = shape._shapeId;
|
|
51
63
|
// No stale-id guard needed: this exit runs at the flush, before cleanup
|
|
52
64
|
// can free or recycle the shape's Box2D slot.
|
package/events/opt_in.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opt_in.js","sourceRoot":"","sources":["../../../../src/events/opt_in.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAEnE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,OAAO,gBAAiB,SAAQ,MAAM;IACnC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,KAAK;aACF,SAAS,CAAC,aAAa,CAAC;aACxB,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;aACpE,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"opt_in.js","sourceRoot":"","sources":["../../../../src/events/opt_in.ts"],"names":[],"mappings":"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"}
|
package/events/publish.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { Module } from "@vworlds/vecs";
|
|
2
|
+
/** Read contact/hit/sensor spans once per tick and publish fresh public event records in order.
|
|
3
|
+
* Native reads allocate no per-event wrappers; event components retain clear-in-place arrays
|
|
4
|
+
* and are marked modified once per receiving entity with new events. */
|
|
2
5
|
export declare class EventPublishModule extends Module {
|
|
3
6
|
init(): void;
|
|
4
7
|
}
|