@vworlds/vecs-physics 1.0.25 → 1.0.26
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/state.d.ts +1 -5
- package/adapter/state.js +5 -10
- package/adapter/state.js.map +1 -1
- package/components/body.js +4 -1
- package/components/body.js.map +1 -1
- package/components/geometry.d.ts +14 -6
- package/components/geometry.js +35 -9
- package/components/geometry.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/module.js +17 -7
- package/module.js.map +1 -1
- package/package.json +2 -2
- package/systems/debug.d.ts +3 -4
- package/systems/debug.js +10 -8
- package/systems/debug.js.map +1 -1
- package/systems/event_opt_in_sync.d.ts +2 -2
- package/systems/event_opt_in_sync.js +16 -13
- package/systems/event_opt_in_sync.js.map +1 -1
- package/systems/events.d.ts +2 -2
- package/systems/events.js +3 -1
- package/systems/events.js.map +1 -1
- package/systems/forces.d.ts +2 -2
- package/systems/forces.js +29 -20
- package/systems/forces.js.map +1 -1
- package/systems/impulse_accumulate.d.ts +2 -2
- package/systems/impulse_accumulate.js +5 -3
- package/systems/impulse_accumulate.js.map +1 -1
- package/systems/impulse_zero.d.ts +2 -2
- package/systems/impulse_zero.js +3 -1
- package/systems/impulse_zero.js.map +1 -1
- package/systems/index.d.ts +1 -2
- package/systems/index.js +28 -37
- package/systems/index.js.map +1 -1
- package/systems/kinematic.d.ts +2 -2
- package/systems/kinematic.js +14 -15
- package/systems/kinematic.js.map +1 -1
- package/systems/lifecycle.d.ts +2 -2
- package/systems/lifecycle.js +38 -16
- package/systems/lifecycle.js.map +1 -1
- package/systems/mass_recompute.d.ts +2 -2
- package/systems/mass_recompute.js +10 -8
- package/systems/mass_recompute.js.map +1 -1
- package/systems/material_filter_sync.d.ts +2 -2
- package/systems/material_filter_sync.js +41 -20
- package/systems/material_filter_sync.js.map +1 -1
- package/systems/pose_sync_in.d.ts +2 -2
- package/systems/pose_sync_in.js +33 -9
- package/systems/pose_sync_in.js.map +1 -1
- package/systems/pose_sync_out.d.ts +2 -2
- package/systems/pose_sync_out.js +3 -1
- package/systems/pose_sync_out.js.map +1 -1
- package/systems/shape_lifecycle.d.ts +5 -3
- package/systems/shape_lifecycle.js +90 -102
- package/systems/shape_lifecycle.js.map +1 -1
- package/systems/shape_pose_sync.d.ts +2 -2
- package/systems/shape_pose_sync.js +18 -8
- package/systems/shape_pose_sync.js.map +1 -1
- package/systems/shape_predicates.d.ts +7 -0
- package/systems/shape_predicates.js +4 -0
- package/systems/shape_predicates.js.map +1 -0
- package/systems/step.d.ts +2 -2
- package/systems/step.js +3 -1
- package/systems/step.js.map +1 -1
- package/util/resolve_body.d.ts +2 -2
- package/util/resolve_body.js +5 -7
- package/util/resolve_body.js.map +1 -1
- package/util/warn.d.ts +1 -1
- package/util/warn.js +2 -1
- package/util/warn.js.map +1 -1
|
@@ -1,18 +1,28 @@
|
|
|
1
|
+
import { ChildOf, Iter } from "@vworlds/vecs";
|
|
1
2
|
import { Body } from "../components/body.js";
|
|
2
|
-
import {
|
|
3
|
+
import { Shape } from "../components/geometry.js";
|
|
3
4
|
import { ShapePosition, ShapeRotation } from "../components/shape_pose.js";
|
|
5
|
+
import { PhysicsSystemTag } from "../adapter/state.js";
|
|
4
6
|
import { recreateShapeForEntity } from "./shape_lifecycle.js";
|
|
7
|
+
import { shapeWithBodyParent } from "./shape_predicates.js";
|
|
5
8
|
export function installShapePoseSync(world, state, phase) {
|
|
6
9
|
const system = world
|
|
7
|
-
.system("PhysicsShapePoseSync")
|
|
8
|
-
.with(
|
|
10
|
+
.system("PhysicsShapePoseSync:Position")
|
|
11
|
+
.with(ShapePosition, shapeWithBodyParent)
|
|
9
12
|
.phase(phase);
|
|
10
|
-
system.
|
|
11
|
-
|
|
13
|
+
system.entity.add(PhysicsSystemTag);
|
|
14
|
+
system.update(Iter, ShapePosition, [Shape, { target: [ChildOf, [Body]] }], (it, _position, tuple) => {
|
|
15
|
+
const [shape, body] = tuple;
|
|
16
|
+
recreateShapeForEntity(state, it.entity, it.src[1], body, shape);
|
|
12
17
|
});
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
const rotationSystem = world
|
|
19
|
+
.system("PhysicsShapePoseSync:Rotation")
|
|
20
|
+
.with(ShapeRotation, shapeWithBodyParent)
|
|
21
|
+
.phase(phase)
|
|
22
|
+
.update(Iter, ShapeRotation, [Shape, { target: [ChildOf, [Body]] }], (it, _rotation, tuple) => {
|
|
23
|
+
const [shape, body] = tuple;
|
|
24
|
+
recreateShapeForEntity(state, it.entity, it.src[1], body, shape);
|
|
15
25
|
});
|
|
16
|
-
|
|
26
|
+
rotationSystem.entity.add(PhysicsSystemTag);
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=shape_pose_sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape_pose_sync.js","sourceRoot":"","sources":["../../../../src/systems/shape_pose_sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shape_pose_sync.js","sourceRoot":"","sources":["../../../../src/systems/shape_pose_sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAA2B,MAAM,eAAe,CAAC;AAEvE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAqB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,oBAAoB,CAAC,KAAY,EAAE,KAAmB,EAAE,KAAa;IACnF,MAAM,MAAM,GAAG,KAAK;SACjB,MAAM,CAAC,+BAA+B,CAAC;SACvC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC;SACxC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEpC,MAAM,CAAC,MAAM,CACX,IAAI,EACJ,aAAa,EACb,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAC5B,sBAAsB,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK;SACzB,MAAM,CAAC,+BAA+B,CAAC;SACvC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC;SACxC,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;QAC5F,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAC5B,sBAAsB,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACL,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape_predicates.js","sourceRoot":"","sources":["../../../../src/systems/shape_predicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC"}
|
package/systems/step.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type Entity, type
|
|
1
|
+
import { type Entity, type World } from "@vworlds/vecs";
|
|
2
2
|
import { type PhysicsState } from "../adapter/state.js";
|
|
3
|
-
export declare function installStep(world: World, state: PhysicsState, phase: Entity):
|
|
3
|
+
export declare function installStep(world: World, state: PhysicsState, phase: Entity): void;
|
package/systems/step.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { PhysicsSystemTag } from "../adapter/state.js";
|
|
1
2
|
export function installStep(world, state, phase) {
|
|
2
|
-
|
|
3
|
+
const system = world
|
|
3
4
|
.system("PhysicsStep")
|
|
4
5
|
.phase(phase)
|
|
5
6
|
.run((_now, delta) => {
|
|
@@ -9,5 +10,6 @@ export function installStep(world, state, phase) {
|
|
|
9
10
|
}
|
|
10
11
|
state.box2d.b2World_Step(state.worldId, state.fixedTimeStep, state.subSteps);
|
|
11
12
|
});
|
|
13
|
+
system.entity.add(PhysicsSystemTag);
|
|
12
14
|
}
|
|
13
15
|
//# sourceMappingURL=step.js.map
|
package/systems/step.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../../src/systems/step.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../../src/systems/step.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,qBAAqB,CAAC;AAE1E,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,KAAmB,EAAE,KAAa;IAC1E,MAAM,MAAM,GAAG,KAAK;SACjB,MAAM,CAAC,aAAa,CAAC;SACrB,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,QAAQ,CACjB,CAAC,EACD,gBAAgB,EAChB,eAAe,KAAK,mCAAmC,KAAK,CAAC,aAAa,GAAG,IAAI,MAAM;gBACrF,gCAAgC,CACnC,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IACL,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC"}
|
package/util/resolve_body.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Entity } from "@vworlds/vecs";
|
|
2
|
-
import { type b2BodyId
|
|
2
|
+
import { type b2BodyId } from "../adapter/state.js";
|
|
3
3
|
/** Resolve the WASM body id for a force/impulse target entity.
|
|
4
4
|
* Accepts entities that directly carry `Body` OR have a `Body`-carrying
|
|
5
5
|
* immediate parent via `ChildOf`. Returns `undefined` when neither applies. */
|
|
6
|
-
export declare function resolveBodyId(entity: Entity
|
|
6
|
+
export declare function resolveBodyId(entity: Entity): b2BodyId | undefined;
|
package/util/resolve_body.js
CHANGED
|
@@ -3,14 +3,12 @@ import { Body } from "../components/body.js";
|
|
|
3
3
|
/** Resolve the WASM body id for a force/impulse target entity.
|
|
4
4
|
* Accepts entities that directly carry `Body` OR have a `Body`-carrying
|
|
5
5
|
* immediate parent via `ChildOf`. Returns `undefined` when neither applies. */
|
|
6
|
-
export function resolveBodyId(entity
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export function resolveBodyId(entity) {
|
|
7
|
+
const body = entity.get(Body);
|
|
8
|
+
if (body !== undefined) {
|
|
9
|
+
return body._bodyId;
|
|
9
10
|
}
|
|
10
11
|
const parent = entity.parent(ChildOf);
|
|
11
|
-
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
return state.bodyByEntityWasm.get(parent.eid);
|
|
12
|
+
return parent?.get(Body)?._bodyId;
|
|
15
13
|
}
|
|
16
14
|
//# sourceMappingURL=resolve_body.js.map
|
package/util/resolve_body.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve_body.js","sourceRoot":"","sources":["../../../../src/util/resolve_body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C;;+EAE+E;AAC/E,MAAM,UAAU,aAAa,CAAC,MAAc,
|
|
1
|
+
{"version":3,"file":"resolve_body.js","sourceRoot":"","sources":["../../../../src/util/resolve_body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C;;+EAE+E;AAC/E,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;AACpC,CAAC"}
|
package/util/warn.d.ts
CHANGED
package/util/warn.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// Debug-warning de-duplication. Each (entity, code) pair warns at most once
|
|
2
2
|
// until it is re-armed, so a persistent structural problem logs once rather
|
|
3
3
|
// than every step. Re-arming lets a fixed-then-rebroken structure warn again.
|
|
4
|
+
import { ArrayMap } from "@vworlds/vecs";
|
|
4
5
|
export class WarnDedupe {
|
|
5
6
|
constructor(sink = (message) => console.warn(message)) {
|
|
6
7
|
/** entity eid -> set of issue codes already warned for that entity. */
|
|
7
|
-
this._warned = new
|
|
8
|
+
this._warned = new ArrayMap();
|
|
8
9
|
this._sink = sink;
|
|
9
10
|
}
|
|
10
11
|
/**
|
package/util/warn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warn.js","sourceRoot":"","sources":["../../../../src/util/warn.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;
|
|
1
|
+
{"version":3,"file":"warn.js","sourceRoot":"","sources":["../../../../src/util/warn.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,EAAY,MAAM,eAAe,CAAC;AAKnD,MAAM,OAAO,UAAU;IAMrB,YAAmB,OAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QALtE,uEAAuE;QACtD,YAAO,GAAG,IAAI,QAAQ,EAAe,CAAC;QAKrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACI,QAAQ,CAAC,GAAQ,EAAE,IAAY,EAAE,OAAe;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IACrE,KAAK,CAAC,GAAQ,EAAE,IAAY;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,sEAAsE;IAC/D,GAAG,CAAC,GAAQ,EAAE,IAAY;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IACnD,CAAC;IAED,2BAA2B;IACpB,KAAK;QACV,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
|