@vworlds/vecs-physics 1.0.24 → 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.
Files changed (71) hide show
  1. package/adapter/state.d.ts +1 -5
  2. package/adapter/state.js +5 -10
  3. package/adapter/state.js.map +1 -1
  4. package/components/body.js +4 -1
  5. package/components/body.js.map +1 -1
  6. package/components/geometry.d.ts +14 -6
  7. package/components/geometry.js +35 -9
  8. package/components/geometry.js.map +1 -1
  9. package/index.d.ts +1 -1
  10. package/index.js +1 -1
  11. package/index.js.map +1 -1
  12. package/module.js +17 -7
  13. package/module.js.map +1 -1
  14. package/package.json +2 -2
  15. package/systems/debug.d.ts +3 -4
  16. package/systems/debug.js +10 -8
  17. package/systems/debug.js.map +1 -1
  18. package/systems/event_opt_in_sync.d.ts +2 -2
  19. package/systems/event_opt_in_sync.js +16 -13
  20. package/systems/event_opt_in_sync.js.map +1 -1
  21. package/systems/events.d.ts +2 -2
  22. package/systems/events.js +3 -1
  23. package/systems/events.js.map +1 -1
  24. package/systems/forces.d.ts +2 -2
  25. package/systems/forces.js +29 -20
  26. package/systems/forces.js.map +1 -1
  27. package/systems/impulse_accumulate.d.ts +2 -2
  28. package/systems/impulse_accumulate.js +5 -3
  29. package/systems/impulse_accumulate.js.map +1 -1
  30. package/systems/impulse_zero.d.ts +2 -2
  31. package/systems/impulse_zero.js +3 -1
  32. package/systems/impulse_zero.js.map +1 -1
  33. package/systems/index.d.ts +1 -2
  34. package/systems/index.js +28 -37
  35. package/systems/index.js.map +1 -1
  36. package/systems/kinematic.d.ts +2 -2
  37. package/systems/kinematic.js +14 -15
  38. package/systems/kinematic.js.map +1 -1
  39. package/systems/lifecycle.d.ts +2 -2
  40. package/systems/lifecycle.js +38 -16
  41. package/systems/lifecycle.js.map +1 -1
  42. package/systems/mass_recompute.d.ts +2 -2
  43. package/systems/mass_recompute.js +10 -8
  44. package/systems/mass_recompute.js.map +1 -1
  45. package/systems/material_filter_sync.d.ts +2 -2
  46. package/systems/material_filter_sync.js +41 -20
  47. package/systems/material_filter_sync.js.map +1 -1
  48. package/systems/pose_sync_in.d.ts +2 -2
  49. package/systems/pose_sync_in.js +33 -9
  50. package/systems/pose_sync_in.js.map +1 -1
  51. package/systems/pose_sync_out.d.ts +2 -2
  52. package/systems/pose_sync_out.js +3 -1
  53. package/systems/pose_sync_out.js.map +1 -1
  54. package/systems/shape_lifecycle.d.ts +5 -3
  55. package/systems/shape_lifecycle.js +90 -102
  56. package/systems/shape_lifecycle.js.map +1 -1
  57. package/systems/shape_pose_sync.d.ts +2 -2
  58. package/systems/shape_pose_sync.js +18 -8
  59. package/systems/shape_pose_sync.js.map +1 -1
  60. package/systems/shape_predicates.d.ts +7 -0
  61. package/systems/shape_predicates.js +4 -0
  62. package/systems/shape_predicates.js.map +1 -0
  63. package/systems/step.d.ts +2 -2
  64. package/systems/step.js +3 -1
  65. package/systems/step.js.map +1 -1
  66. package/util/resolve_body.d.ts +2 -2
  67. package/util/resolve_body.js +5 -7
  68. package/util/resolve_body.js.map +1 -1
  69. package/util/warn.d.ts +1 -1
  70. package/util/warn.js +2 -1
  71. package/util/warn.js.map +1 -1
@@ -1,3 +1,3 @@
1
- import { type Entity, type System, type World } from "@vworlds/vecs";
1
+ import { type Entity, type World } from "@vworlds/vecs";
2
2
  import { type PhysicsState } from "../adapter/state.js";
3
- export declare function installMaterialFilterSync(world: World, state: PhysicsState, phase: Entity): System;
3
+ export declare function installMaterialFilterSync(world: World, state: PhysicsState, phase: Entity): void;
@@ -1,32 +1,47 @@
1
+ import { ChildOf, Iter } from "@vworlds/vecs";
1
2
  import { Body } from "../components/body.js";
2
- import { Box, Capsule, Chain, Circle, Polygon, Segment } from "../components/geometry.js";
3
+ import { Chain, Shape } from "../components/geometry.js";
3
4
  import { CollisionFilter, Material, Sensor } from "../components/material.js";
4
5
  import { withAllocated } from "../adapter/disposal.js";
6
+ import { PhysicsSystemTag } from "../adapter/state.js";
5
7
  import { recreateShapeForEntity } from "./shape_lifecycle.js";
8
+ import { shapeWithBodyParent } from "./shape_predicates.js";
6
9
  export function installMaterialFilterSync(world, state, phase) {
7
10
  const system = world
8
- .system("PhysicsMaterialFilterSync")
9
- .with({ all: [{ any: [Box, Circle, Capsule, Segment, Polygon, Chain] }, { parent: Body }] })
11
+ .system("PhysicsMaterialFilterSync:Material")
12
+ .with(Material, shapeWithBodyParent)
10
13
  .phase(phase);
11
- system.update(Material, (entity, material) => {
12
- if (requiresMaterialRecreate(state, entity, material)) {
14
+ system.entity.add(PhysicsSystemTag);
15
+ system.update(Iter, Material, [Shape, { target: [ChildOf, [Body]] }], (it, material, tuple) => {
16
+ const [shape, body] = tuple;
17
+ if (requiresMaterialRecreate(state, shape, material)) {
13
18
  // box2d3-wasm@5.2.0 exposes no shape setters for rollingResistance,
14
19
  // tangentSpeed, or userMaterialId, so those updates recreate the shape.
15
- recreateShapeForEntity(state, entity);
20
+ recreateShapeForEntity(state, it.entity, it.src[1], body, shape);
16
21
  return;
17
22
  }
18
- const shapeId = state.shapeByEntityWasm.get(entity.eid);
23
+ if (shape instanceof Chain) {
24
+ recreateShapeForEntity(state, it.entity, it.src[1], body, shape);
25
+ return;
26
+ }
27
+ const shapeId = shape?._shapeId;
19
28
  if (shapeId !== undefined) {
20
29
  state.box2d.b2Shape_SetDensity(shapeId, material.density, true);
21
30
  state.box2d.b2Shape_SetFriction(shapeId, material.friction);
22
31
  state.box2d.b2Shape_SetRestitution(shapeId, material.restitution);
23
32
  }
24
- if (state.chainByEntity.has(entity.eid)) {
25
- recreateShapeForEntity(state, entity);
26
- }
27
33
  });
28
- system.update(CollisionFilter, (entity, filter) => {
29
- const shapeId = state.shapeByEntityWasm.get(entity.eid);
34
+ const collisionFilterSystem = world
35
+ .system("PhysicsMaterialFilterSync:CollisionFilter")
36
+ .with(CollisionFilter, shapeWithBodyParent)
37
+ .phase(phase)
38
+ .update(Iter, CollisionFilter, [Shape, { target: [ChildOf, [Body]] }], (it, filter, tuple) => {
39
+ const [shape, body] = tuple;
40
+ if (shape instanceof Chain) {
41
+ recreateShapeForEntity(state, it.entity, it.src[1], body, shape);
42
+ return;
43
+ }
44
+ const shapeId = shape?._shapeId;
30
45
  if (shapeId !== undefined) {
31
46
  withAllocated(() => new state.box2d.b2Filter(), (wasmFilter) => {
32
47
  // Public filters are 32-bit numbers; Box2D stores 64-bit masks. The
@@ -37,17 +52,23 @@ export function installMaterialFilterSync(world, state, phase) {
37
52
  state.box2d.b2Shape_SetFilter(shapeId, wasmFilter);
38
53
  });
39
54
  }
40
- if (state.chainByEntity.has(entity.eid)) {
41
- recreateShapeForEntity(state, entity);
42
- }
43
55
  });
44
- system.update(Sensor, (entity) => {
45
- recreateShapeForEntity(state, entity);
56
+ collisionFilterSystem.entity.add(PhysicsSystemTag);
57
+ const sensorSystem = world
58
+ .system("PhysicsMaterialFilterSync:Sensor")
59
+ .with(Sensor, shapeWithBodyParent)
60
+ .phase(phase)
61
+ .update(Iter, Sensor, [Shape, { target: [ChildOf, [Body]] }], (it, _sensor, tuple) => {
62
+ const [shape, body] = tuple;
63
+ recreateShapeForEntity(state, it.entity, it.src[1], body, shape);
46
64
  });
47
- return system;
65
+ sensorSystem.entity.add(PhysicsSystemTag);
48
66
  }
49
- function requiresMaterialRecreate(state, entity, next) {
50
- const shapeId = state.shapeByEntityWasm.get(entity.eid);
67
+ function requiresMaterialRecreate(state, shape, next) {
68
+ if (shape === undefined || shape instanceof Chain) {
69
+ return false;
70
+ }
71
+ const shapeId = shape._shapeId;
51
72
  if (shapeId === undefined || !state.box2d.b2Shape_IsValid(shapeId)) {
52
73
  return false;
53
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"material_filter_sync.js","sourceRoot":"","sources":["../../../../src/systems/material_filter_sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"material_filter_sync.js","sourceRoot":"","sources":["../../../../src/systems/material_filter_sync.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type Entity, type System, type World } from "@vworlds/vecs";
1
+ import { type Entity, type World } from "@vworlds/vecs";
2
2
  import { type PhysicsState } from "../adapter/state.js";
3
- export declare function installPoseSyncIn(world: World, state: PhysicsState, phase: Entity): System;
3
+ export declare function installPoseSyncIn(world: World, state: PhysicsState, phase: Entity): void;
@@ -2,9 +2,15 @@ import { AngularVelocity, Body, LinearVelocity, Position, Rotation } from "../co
2
2
  import { PhysicsSystemTag } from "../adapter/state.js";
3
3
  export function installPoseSyncIn(world, state, phase) {
4
4
  const system = world.system("PhysicsPoseSyncIn").with(Body).phase(phase);
5
+ system.entity.add(PhysicsSystemTag);
5
6
  system.ignoreSource([PhysicsSystemTag]);
6
- system.update(Position, (entity, position) => {
7
- const bodyId = state.bodyByEntityWasm.get(entity.eid);
7
+ const positionSystem = world
8
+ .system("PhysicsPoseSyncIn:Position")
9
+ .with(Body, Position)
10
+ .phase(phase)
11
+ .ignoreSource([PhysicsSystemTag])
12
+ .update(Position, [Body], (entity, position, [body]) => {
13
+ const bodyId = body?._bodyId;
8
14
  if (bodyId === undefined) {
9
15
  return;
10
16
  }
@@ -17,8 +23,14 @@ export function installPoseSyncIn(world, state, phase) {
17
23
  rotation.delete();
18
24
  }
19
25
  });
20
- system.update(Rotation, (entity, rotation) => {
21
- const bodyId = state.bodyByEntityWasm.get(entity.eid);
26
+ positionSystem.entity.add(PhysicsSystemTag);
27
+ const rotationSystem = world
28
+ .system("PhysicsPoseSyncIn:Rotation")
29
+ .with(Body, Rotation)
30
+ .phase(phase)
31
+ .ignoreSource([PhysicsSystemTag])
32
+ .update(Rotation, [Body], (entity, rotation, [body]) => {
33
+ const bodyId = body?._bodyId;
22
34
  if (bodyId === undefined) {
23
35
  return;
24
36
  }
@@ -32,21 +44,33 @@ export function installPoseSyncIn(world, state, phase) {
32
44
  position.delete();
33
45
  }
34
46
  });
35
- system.update(LinearVelocity, (entity, velocity) => {
36
- const bodyId = state.bodyByEntityWasm.get(entity.eid);
47
+ rotationSystem.entity.add(PhysicsSystemTag);
48
+ const linearVelocitySystem = world
49
+ .system("PhysicsPoseSyncIn:LinearVelocity")
50
+ .with(Body, LinearVelocity)
51
+ .phase(phase)
52
+ .ignoreSource([PhysicsSystemTag])
53
+ .update(LinearVelocity, [Body], (entity, velocity, [body]) => {
54
+ const bodyId = body?._bodyId;
37
55
  if (bodyId === undefined) {
38
56
  return;
39
57
  }
40
58
  state.scratchVec2.Set(velocity.x, velocity.y);
41
59
  state.box2d.b2Body_SetLinearVelocity(bodyId, state.scratchVec2);
42
60
  });
43
- system.update(AngularVelocity, (entity, velocity) => {
44
- const bodyId = state.bodyByEntityWasm.get(entity.eid);
61
+ linearVelocitySystem.entity.add(PhysicsSystemTag);
62
+ const angularVelocitySystem = world
63
+ .system("PhysicsPoseSyncIn:AngularVelocity")
64
+ .with(Body, AngularVelocity)
65
+ .phase(phase)
66
+ .ignoreSource([PhysicsSystemTag])
67
+ .update(AngularVelocity, [Body], (entity, velocity, [body]) => {
68
+ const bodyId = body?._bodyId;
45
69
  if (bodyId === undefined) {
46
70
  return;
47
71
  }
48
72
  state.box2d.b2Body_SetAngularVelocity(bodyId, velocity.value);
49
73
  });
50
- return system;
74
+ angularVelocitySystem.entity.add(PhysicsSystemTag);
51
75
  }
52
76
  //# sourceMappingURL=pose_sync_in.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pose_sync_in.js","sourceRoot":"","sources":["../../../../src/systems/pose_sync_in.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pose_sync_in.js","sourceRoot":"","sources":["../../../../src/systems/pose_sync_in.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type Entity, type System, type World } from "@vworlds/vecs";
1
+ import { type Entity, type World } from "@vworlds/vecs";
2
2
  import { type PhysicsState } from "../adapter/state.js";
3
- export declare function installPoseSyncOut(world: World, state: PhysicsState, phase: Entity): System;
3
+ export declare function installPoseSyncOut(world: World, state: PhysicsState, phase: Entity): void;
@@ -1,6 +1,7 @@
1
1
  import { AngularVelocity, Body, BodyType, LinearVelocity, Position, Rotation, } from "../components/body.js";
2
+ import { PhysicsSystemTag } from "../adapter/state.js";
2
3
  export function installPoseSyncOut(world, state, phase) {
3
- return world
4
+ const system = world
4
5
  .system("PhysicsPoseSyncOut")
5
6
  .phase(phase)
6
7
  .run(() => {
@@ -46,5 +47,6 @@ export function installPoseSyncOut(world, state, phase) {
46
47
  bodyEvents.delete();
47
48
  }
48
49
  });
50
+ system.entity.add(PhysicsSystemTag);
49
51
  }
50
52
  //# sourceMappingURL=pose_sync_out.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pose_sync_out.js","sourceRoot":"","sources":["../../../../src/systems/pose_sync_out.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAG/B,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,KAAmB,EAAE,KAAa;IACjF,OAAO,KAAK;SACT,MAAM,CAAC,oBAAoB,CAAC;SAC5B,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,GAAG,EAAE;QACR,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACjE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,SAAS;oBACX,CAAC;oBAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACpC,SAAS;oBACX,CAAC;oBAED,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;wBACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC/D,CAAC;oBACD,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjE,IAAI,CAAC;4BACH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC3D,CAAC;gCAAS,CAAC;4BACT,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC;oBACD,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC9C,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;4BAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC;yBAC1D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"pose_sync_out.js","sourceRoot":"","sources":["../../../../src/systems/pose_sync_out.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAqB,MAAM,qBAAqB,CAAC;AAE1E,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,KAAmB,EAAE,KAAa;IACjF,MAAM,MAAM,GAAG,KAAK;SACjB,MAAM,CAAC,oBAAoB,CAAC;SAC5B,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,GAAG,EAAE;QACR,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACjE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,SAAS;oBACX,CAAC;oBAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACpC,SAAS;oBACX,CAAC;oBAED,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;wBACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC/D,CAAC;oBACD,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjE,IAAI,CAAC;4BACH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC3D,CAAC;gCAAS,CAAC;4BACT,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC;oBACD,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC9C,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;4BAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC;yBAC1D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IACL,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC"}
@@ -1,4 +1,6 @@
1
- import { type Entity, type System, type World } from "@vworlds/vecs";
1
+ import { type Entity, type World } from "@vworlds/vecs";
2
+ import { Body } from "../components/body.js";
3
+ import { Shape } from "../components/geometry.js";
2
4
  import { type PhysicsState } from "../adapter/state.js";
3
- export declare function installShapeLifecycle(world: World, state: PhysicsState, phase: Entity): System;
4
- export declare function recreateShapeForEntity(state: PhysicsState, entity: Entity): void;
5
+ export declare function installShapeLifecycle(world: World, state: PhysicsState, phase: Entity): void;
6
+ export declare function recreateShapeForEntity(state: PhysicsState, entity: Entity, parentEntity: Entity | undefined, parentBody: Body | undefined, shape: Shape | undefined): void;
@@ -1,114 +1,109 @@
1
- import { ChildOf } from "@vworlds/vecs";
1
+ import { ChildOf, Iter } from "@vworlds/vecs";
2
2
  import { Body } from "../components/body.js";
3
- import { Box, Capsule, Chain, Circle, Polygon, Segment } from "../components/geometry.js";
3
+ import { Box, Capsule, Chain, Circle, Polygon, Segment, Shape } from "../components/geometry.js";
4
4
  import { ContactEvents, HitEvents, SensorEvents } from "../components/events.js";
5
5
  import { CollisionFilter, Material, Sensor } from "../components/material.js";
6
6
  import { ShapePosition, ShapeRotation } from "../components/shape_pose.js";
7
+ import { PhysicsSystemTag, } from "../adapter/state.js";
7
8
  import { withAllocated } from "../adapter/disposal.js";
9
+ import { shapeWithBodyParent } from "./shape_predicates.js";
8
10
  const MAX_POLYGON_VERTICES = 8;
9
11
  export function installShapeLifecycle(world, state, phase) {
10
- const system = world
11
- .system("PhysicsShapeLifecycle")
12
- .with({ all: [{ any: [Box, Circle, Capsule, Segment, Polygon, Chain] }, { parent: Body }] })
13
- .phase(phase);
14
- system.enter((entity) => {
15
- createShapeForEntity(state, entity);
12
+ const system = world.system("PhysicsShapeLifecycle").with(shapeWithBodyParent).phase(phase);
13
+ system.entity.add(PhysicsSystemTag);
14
+ system.enter(Iter, [Shape, { target: [ChildOf, [Body]] }], (it, [shape, body]) => {
15
+ createShapeForEntity(state, it.entity, it.src[1], body, shape);
16
16
  });
17
- system.exit((entity) => {
18
- destroyShapeForEntity(state, entity, true);
17
+ // Inject `[ChildOf, Shape]` so the parent relationship and shape handle are
18
+ // captured in the exit snapshot while the entity's components are still
19
+ // present. The exit callback itself runs on the next tick's inbox drain,
20
+ // after `_destroy` has cleared `entity._components` -- by then
21
+ // `entity.parent(ChildOf)` and `entity.get(Shape)` would return `undefined`.
22
+ system.exit([ChildOf, Shape], (entity, [childOf, shape]) => {
23
+ destroyShapeForEntity(state, entity, true, childOf?.target, shape);
19
24
  });
20
- system.update(Box, (entity) => {
21
- recreateShapeForEntity(state, entity);
22
- });
23
- system.update(Circle, (entity) => {
24
- recreateShapeForEntity(state, entity);
25
- });
26
- system.update(Capsule, (entity) => {
27
- const capsule = entity.get(Capsule);
28
- if (capsule !== undefined &&
29
- !hasValidEndpoints(capsule.x1, capsule.y1, capsule.x2, capsule.y2)) {
25
+ system.update(Iter, Shape, [{ target: [ChildOf, [Body]] }], (it, shape, [body]) => {
26
+ if ((shape instanceof Capsule && !hasValidEndpoints(shape.x1, shape.y1, shape.x2, shape.y2)) ||
27
+ (shape instanceof Segment && !hasValidEndpoints(shape.x1, shape.y1, shape.x2, shape.y2))) {
30
28
  return;
31
29
  }
32
- recreateShapeForEntity(state, entity);
33
- });
34
- system.update(Segment, (entity) => {
35
- const segment = entity.get(Segment);
36
- if (segment !== undefined &&
37
- !hasValidEndpoints(segment.x1, segment.y1, segment.x2, segment.y2)) {
38
- return;
39
- }
40
- recreateShapeForEntity(state, entity);
41
- });
42
- system.update(Polygon, (entity) => {
43
- recreateShapeForEntity(state, entity);
44
- });
45
- system.update(Chain, (entity) => {
46
- recreateShapeForEntity(state, entity);
30
+ recreateShapeForEntity(state, it.entity, it.src[0], body, shape);
47
31
  });
48
- system.update(ChildOf, (entity) => {
49
- recreateShapeForEntity(state, entity);
32
+ const childOfSystem = world
33
+ .system("PhysicsShapeLifecycle:ChildOf")
34
+ .with(ChildOf, shapeWithBodyParent)
35
+ .phase(phase)
36
+ .update(Iter, ChildOf, [Shape, { target: [ChildOf, [Body]] }], (it, _childOf, tuple) => {
37
+ const [shape, body] = tuple;
38
+ recreateShapeForEntity(state, it.entity, it.src[1], body, shape);
50
39
  });
51
- return system;
40
+ childOfSystem.entity.add(PhysicsSystemTag);
52
41
  }
53
- export function recreateShapeForEntity(state, entity) {
54
- destroyShapeForEntity(state, entity, false);
55
- createShapeForEntity(state, entity);
42
+ export function recreateShapeForEntity(state, entity, parentEntity, parentBody, shape) {
43
+ destroyShapeForEntity(state, entity, false, parentEntity, shape);
44
+ createShapeForEntity(state, entity, parentEntity, parentBody, shape);
56
45
  }
57
- function createShapeForEntity(state, entity) {
58
- const parentEntity = entity.parent(ChildOf);
59
- if (parentEntity === undefined) {
60
- return;
61
- }
62
- const bodyId = state.bodyByEntityWasm.get(parentEntity.eid);
63
- if (bodyId === undefined) {
46
+ function createShapeForEntity(state, entity, parentEntity, parentBody, shape) {
47
+ const bodyId = parentBody?._bodyId;
48
+ if (parentEntity === undefined || bodyId === undefined || shape === undefined) {
64
49
  return;
65
50
  }
66
51
  const options = readShapeOptions(entity);
67
52
  const pose = readLocalPose(entity);
68
- const chain = entity.get(Chain);
69
- if (chain !== undefined) {
70
- createChain(state, entity, bodyId, chain, options, pose);
53
+ if (shape instanceof Chain) {
54
+ createChain(state, parentEntity, bodyId, shape, options, pose);
71
55
  return;
72
56
  }
73
- const shapeId = createSingleShape(state, entity, bodyId, options, pose);
57
+ const shapeId = createSingleShape(state, bodyId, shape, options, pose);
74
58
  if (shapeId !== undefined) {
75
- state.shapeByEntityWasm.set(entity.eid, shapeId);
59
+ shape._shapeId = shapeId;
76
60
  state.entityByShapeIndex.set(shapeId.index1, entity.eid);
77
- state.shapeEntityByEid.set(entity.eid, entity);
78
61
  state.dirtyMassBodies.add(parentEntity.eid);
79
62
  }
80
63
  }
81
- function destroyShapeForEntity(state, entity, allowCascadeSkip) {
82
- const chainId = state.chainByEntity.get(entity.eid);
83
- if (chainId !== undefined) {
64
+ function destroyShapeForEntity(state, entity, allowCascadeSkip, parent, shape) {
65
+ const resolvedParent = parent ?? entity.parent(ChildOf);
66
+ const resolvedShape = shape ?? entity.get(Shape);
67
+ const handle = resolvedShape?._shapeId;
68
+ if (handle === undefined) {
69
+ return;
70
+ }
71
+ if (resolvedShape instanceof Chain) {
72
+ const chainId = handle;
84
73
  // b2Chain_IsValid already returns false when the parent body was destroyed
85
74
  // and Box2D cascaded the chain, so it is the only guard the destroy needs.
86
75
  if (state.box2d.b2Chain_IsValid(chainId)) {
87
76
  state.box2d.b2DestroyChain(chainId);
88
77
  }
89
- state.chainByEntity.delete(entity.eid);
90
- markParentBodyMassDirty(state, entity);
78
+ markParentBodyMassDirty(state, resolvedParent);
91
79
  }
92
- const shapeId = state.shapeByEntityWasm.get(entity.eid);
93
- if (shapeId !== undefined) {
94
- const parentBodyExists = parentBodyStillExists(state, entity);
80
+ else {
81
+ const shapeId = handle;
82
+ const parentBodyExists = parentBodyStillExists(resolvedParent);
95
83
  if ((!allowCascadeSkip || parentBodyExists) && state.box2d.b2Shape_IsValid(shapeId)) {
96
84
  state.box2d.b2DestroyShape(shapeId, true);
97
85
  }
98
- state.shapeByEntityWasm.delete(entity.eid);
99
86
  state.entityByShapeIndex.delete(shapeId.index1);
100
- markParentBodyMassDirty(state, entity);
87
+ markParentBodyMassDirty(state, resolvedParent);
88
+ }
89
+ // Clear the handle on the live component if it still exists (e.g. the
90
+ // parent body was removed and the shape entity remains, no longer matching
91
+ // the lifecycle predicate). When `shape` was injected from an exit
92
+ // snapshot, `entity.get(Shape)` is already cleared by `_destroy` and this
93
+ // is a no-op.
94
+ const mutableShape = entity.get(Shape);
95
+ if (mutableShape !== undefined) {
96
+ mutableShape._shapeId = undefined;
101
97
  }
102
98
  }
103
- function createSingleShape(state, entity, bodyId, options, pose) {
99
+ function createSingleShape(state, bodyId, shape, options, pose) {
104
100
  const box2d = state.box2d;
105
101
  return withAllocated(box2d.b2DefaultShapeDef, (def) => {
106
102
  applyShapeDef(def, options);
107
- const box = entity.get(Box);
108
- if (box !== undefined) {
103
+ if (shape instanceof Box) {
109
104
  return withAllocated(() => new box2d.b2Vec2(pose.x, pose.y), (center) => withAllocated(() => new box2d.b2Rot(), (rot) => {
110
105
  rot.SetAngle(pose.angle);
111
- const polygon = box2d.b2MakeOffsetBox(box.hx, box.hy, center, rot);
106
+ const polygon = box2d.b2MakeOffsetBox(shape.hx, shape.hy, center, rot);
112
107
  try {
113
108
  return box2d.b2CreatePolygonShape(bodyId, def, polygon);
114
109
  }
@@ -117,40 +112,36 @@ function createSingleShape(state, entity, bodyId, options, pose) {
117
112
  }
118
113
  }));
119
114
  }
120
- const circle = entity.get(Circle);
121
- if (circle !== undefined) {
122
- return withAllocated(() => new box2d.b2Circle(), (shape) => {
123
- shape.center.Set(pose.x, pose.y);
124
- shape.radius = circle.radius;
125
- return box2d.b2CreateCircleShape(bodyId, def, shape);
115
+ if (shape instanceof Circle) {
116
+ return withAllocated(() => new box2d.b2Circle(), (wasmShape) => {
117
+ wasmShape.center.Set(pose.x, pose.y);
118
+ wasmShape.radius = shape.radius;
119
+ return box2d.b2CreateCircleShape(bodyId, def, wasmShape);
126
120
  });
127
121
  }
128
- const capsule = entity.get(Capsule);
129
- if (capsule !== undefined) {
130
- if (!hasValidEndpoints(capsule.x1, capsule.y1, capsule.x2, capsule.y2)) {
122
+ if (shape instanceof Capsule) {
123
+ if (!hasValidEndpoints(shape.x1, shape.y1, shape.x2, shape.y2)) {
131
124
  return undefined;
132
125
  }
133
- return withAllocated(() => new box2d.b2Capsule(), (shape) => {
134
- shape.center1.Set(capsule.x1 + pose.x, capsule.y1 + pose.y);
135
- shape.center2.Set(capsule.x2 + pose.x, capsule.y2 + pose.y);
136
- shape.radius = capsule.radius;
137
- return box2d.b2CreateCapsuleShape(bodyId, def, shape);
126
+ return withAllocated(() => new box2d.b2Capsule(), (wasmShape) => {
127
+ wasmShape.center1.Set(shape.x1 + pose.x, shape.y1 + pose.y);
128
+ wasmShape.center2.Set(shape.x2 + pose.x, shape.y2 + pose.y);
129
+ wasmShape.radius = shape.radius;
130
+ return box2d.b2CreateCapsuleShape(bodyId, def, wasmShape);
138
131
  });
139
132
  }
140
- const segment = entity.get(Segment);
141
- if (segment !== undefined) {
142
- if (!hasValidEndpoints(segment.x1, segment.y1, segment.x2, segment.y2)) {
133
+ if (shape instanceof Segment) {
134
+ if (!hasValidEndpoints(shape.x1, shape.y1, shape.x2, shape.y2)) {
143
135
  return undefined;
144
136
  }
145
- return withAllocated(() => new box2d.b2Segment(), (shape) => {
146
- shape.point1.Set(segment.x1 + pose.x, segment.y1 + pose.y);
147
- shape.point2.Set(segment.x2 + pose.x, segment.y2 + pose.y);
148
- return box2d.b2CreateSegmentShape(bodyId, def, shape);
137
+ return withAllocated(() => new box2d.b2Segment(), (wasmShape) => {
138
+ wasmShape.point1.Set(shape.x1 + pose.x, shape.y1 + pose.y);
139
+ wasmShape.point2.Set(shape.x2 + pose.x, shape.y2 + pose.y);
140
+ return box2d.b2CreateSegmentShape(bodyId, def, wasmShape);
149
141
  });
150
142
  }
151
- const polygon = entity.get(Polygon);
152
- if (polygon !== undefined) {
153
- return createPolygonShape(state, bodyId, def, polygon, pose);
143
+ if (shape instanceof Polygon) {
144
+ return createPolygonShape(state, bodyId, def, shape, pose);
154
145
  }
155
146
  return undefined;
156
147
  });
@@ -185,7 +176,7 @@ function createPolygonShape(state, bodyId, def, polygon, pose) {
185
176
  }
186
177
  }
187
178
  }
188
- function createChain(state, entity, bodyId, chain, options, pose) {
179
+ function createChain(state, parent, bodyId, chain, options, pose) {
189
180
  if (chain.points.length < 4) {
190
181
  return;
191
182
  }
@@ -199,9 +190,8 @@ function createChain(state, entity, bodyId, chain, options, pose) {
199
190
  def.SetPoints(points);
200
191
  return box2d.b2CreateChain(bodyId, def);
201
192
  });
202
- state.chainByEntity.set(entity.eid, chainId);
203
- state.shapeEntityByEid.set(entity.eid, entity);
204
- markParentBodyMassDirty(state, entity);
193
+ chain._shapeId = chainId;
194
+ markParentBodyMassDirty(state, parent);
205
195
  }
206
196
  finally {
207
197
  for (const point of points) {
@@ -263,13 +253,11 @@ function readLocalPose(entity) {
263
253
  angle: entity.get(ShapeRotation)?.angle ?? 0,
264
254
  };
265
255
  }
266
- function parentBodyStillExists(state, entity) {
267
- const parent = entity.parent(ChildOf);
268
- return parent !== undefined && state.bodyByEntityWasm.has(parent.eid);
256
+ function parentBodyStillExists(parent) {
257
+ return parent !== undefined && parent.get(Body)?._bodyId !== undefined;
269
258
  }
270
- function markParentBodyMassDirty(state, entity) {
271
- const parent = entity.parent(ChildOf);
272
- if (parent !== undefined && state.bodyByEntityWasm.has(parent.eid)) {
259
+ function markParentBodyMassDirty(state, parent) {
260
+ if (parent !== undefined && parent.get(Body)?._bodyId !== undefined) {
273
261
  state.dirtyMassBodies.add(parent.eid);
274
262
  }
275
263
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shape_lifecycle.js","sourceRoot":"","sources":["../../../../src/systems/shape_lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shape_lifecycle.js","sourceRoot":"","sources":["../../../../src/systems/shape_lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type Entity, type System, type World } from "@vworlds/vecs";
1
+ import { type Entity, type World } from "@vworlds/vecs";
2
2
  import { type PhysicsState } from "../adapter/state.js";
3
- export declare function installShapePoseSync(world: World, state: PhysicsState, phase: Entity): System;
3
+ export declare function installShapePoseSync(world: World, state: PhysicsState, phase: Entity): void;