@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.
Files changed (55) hide show
  1. package/adapter/engine.d.ts +17 -3
  2. package/adapter/engine.js +32 -2
  3. package/adapter/engine.js.map +1 -1
  4. package/adapter/queries.d.ts +6 -6
  5. package/adapter/queries.js +19 -24
  6. package/adapter/queries.js.map +1 -1
  7. package/adapter/runtime.d.ts +13 -1
  8. package/adapter/runtime.js +22 -7
  9. package/adapter/runtime.js.map +1 -1
  10. package/body/lifecycle.js +1 -0
  11. package/body/lifecycle.js.map +1 -1
  12. package/body/mass.js +1 -1
  13. package/body/mass.js.map +1 -1
  14. package/body/pose_in.js +7 -23
  15. package/body/pose_in.js.map +1 -1
  16. package/body/pose_out.d.ts +3 -0
  17. package/body/pose_out.js +59 -55
  18. package/body/pose_out.js.map +1 -1
  19. package/core/module.d.ts +2 -5
  20. package/core/module.js +15 -4
  21. package/core/module.js.map +1 -1
  22. package/core/reaper.js +24 -15
  23. package/core/reaper.js.map +1 -1
  24. package/core/snapshot.js +7 -5
  25. package/core/snapshot.js.map +1 -1
  26. package/core/step.js +1 -1
  27. package/core/step.js.map +1 -1
  28. package/debug/validation.js +1 -1
  29. package/debug/validation.js.map +1 -1
  30. package/events/components.d.ts +12 -3
  31. package/events/components.js +12 -3
  32. package/events/components.js.map +1 -1
  33. package/events/opt_in.js +14 -2
  34. package/events/opt_in.js.map +1 -1
  35. package/events/publish.d.ts +3 -0
  36. package/events/publish.js +138 -81
  37. package/events/publish.js.map +1 -1
  38. package/forces/gather.js +3 -5
  39. package/forces/gather.js.map +1 -1
  40. package/forces/impulses.js +10 -5
  41. package/forces/impulses.js.map +1 -1
  42. package/index.d.ts +2 -1
  43. package/index.js +1 -1
  44. package/index.js.map +1 -1
  45. package/joints/components.d.ts +1 -1
  46. package/kinematic/targets.js +39 -40
  47. package/kinematic/targets.js.map +1 -1
  48. package/materials/sync.js +1 -1
  49. package/materials/sync.js.map +1 -1
  50. package/module.d.ts +4 -1
  51. package/module.js +4 -1
  52. package/module.js.map +1 -1
  53. package/package.json +3 -3
  54. package/shapes/components.d.ts +1 -5
  55. package/shapes/components.js.map +1 -1
package/events/publish.js CHANGED
@@ -3,21 +3,34 @@ import { ContactEvents, HitEvents, SensorEvents } from "./components.js";
3
3
  import { getPhysicsEngine, PhysicsSystemTag } from "../adapter/engine.js";
4
4
  import { PhysicsCoreModule } from "../core/module.js";
5
5
  import { EventsModule } from "./module.js";
6
+ /** Read contact/hit/sensor spans once per tick and publish fresh public event records in order.
7
+ * Native reads allocate no per-event wrappers; event components retain clear-in-place arrays
8
+ * and are marked modified once per receiving entity with new events. */
6
9
  export class EventPublishModule extends Module {
7
10
  init() {
8
11
  const world = this.world;
9
12
  world.module(PhysicsCoreModule);
10
13
  world.module(EventsModule);
11
14
  const engine = getPhysicsEngine(world);
15
+ const offsets = eventOffsets(engine);
16
+ // Span headers and touched sets are allocated once and reused each step.
17
+ const spans = engine.fast.alloc(engine.fast.layout.contactSpans.size + engine.fast.layout.sensorSpans.size);
18
+ const sensorSpans = spans + engine.fast.layout.contactSpans.size;
19
+ const touchedContact = new Set();
20
+ const touchedSensor = new Set();
21
+ const touchedHit = new Set();
12
22
  world
13
23
  .system("PhysicsEvents")
14
24
  .phase(engine.phases.postStep)
15
25
  .run(() => {
16
- const touchedContact = new Set();
17
- const touchedSensor = new Set();
18
- const touchedHit = new Set();
19
- publishContactAndHitEvents(world, engine, touchedContact, touchedHit);
20
- publishSensorEvents(world, engine, touchedSensor);
26
+ clearSet(touchedContact);
27
+ clearSet(touchedSensor);
28
+ clearSet(touchedHit);
29
+ engine.box2d._b2x_World_GetContactSpans(engine.world, spans);
30
+ engine.box2d._b2x_World_GetSensorSpans(engine.world, sensorSpans);
31
+ engine.fast.sync();
32
+ publishContactAndHitEvents(world, engine, spans, offsets, touchedContact, touchedHit);
33
+ publishSensorEvents(world, engine, sensorSpans, offsets, touchedSensor);
21
34
  markModified(world, touchedContact, ContactEvents);
22
35
  markModified(world, touchedSensor, SensorEvents);
23
36
  markModified(world, touchedHit, HitEvents);
@@ -25,84 +38,104 @@ export class EventPublishModule extends Module {
25
38
  clearUntouchedSensorEvents(world, engine.prevTouchedSensor, touchedSensor);
26
39
  clearUntouchedHitEvents(world, engine.prevTouchedHit, touchedHit);
27
40
  // Store touched sets on engine for the next step's clear pass.
28
- engine.prevTouchedContact.clear();
29
- for (const eid of touchedContact) {
30
- engine.prevTouchedContact.add(eid);
31
- }
32
- engine.prevTouchedSensor.clear();
33
- for (const eid of touchedSensor) {
34
- engine.prevTouchedSensor.add(eid);
35
- }
36
- engine.prevTouchedHit.clear();
37
- for (const eid of touchedHit) {
38
- engine.prevTouchedHit.add(eid);
39
- }
41
+ copySet(engine.prevTouchedContact, touchedContact);
42
+ copySet(engine.prevTouchedSensor, touchedSensor);
43
+ copySet(engine.prevTouchedHit, touchedHit);
40
44
  })
41
45
  .add(PhysicsSystemTag);
42
46
  }
43
47
  }
44
- // Contact begin/end and hit events all come from a single
45
- // `b2World_GetContactEvents` poll, so fetch the event block once per step and
46
- // fan begin/end into `touchedContact` and hits into `touchedHit` (ARCHITECTURE.md ->
47
- // PhysicsEvents: "poll once per step").
48
- // Contact begin and hit events are Embind class handles and are released below; contact end and
49
- // sensor events are plain value objects, so there is nothing to delete for them.
50
- function publishContactAndHitEvents(world, engine, touchedContact, touchedHit) {
51
- const events = engine.box2d.b2World_GetContactEvents(engine.worldId);
52
- try {
53
- for (let i = 0; i < events.beginCount; i++) {
54
- const event = events.GetBeginEvent(i);
55
- try {
56
- emitContactEvent(world, engine, touchedContact, event, "begin");
57
- }
58
- finally {
59
- deleteIfPresent(event);
60
- }
61
- }
62
- for (let i = 0; i < events.endCount; i++) {
63
- const event = events.GetEndEvent(i);
64
- emitContactEvent(world, engine, touchedContact, event, "end");
65
- }
66
- for (let i = 0; i < events.hitCount; i++) {
67
- const event = events.GetHitEvent(i);
68
- try {
69
- emitHitEvent(world, engine, touchedHit, event);
70
- }
71
- finally {
72
- event.delete();
73
- }
74
- }
48
+ function eventOffsets(engine) {
49
+ const L = engine.fast.layout;
50
+ const pair = (s, a, b) => ({
51
+ stride: s.size >> 2,
52
+ a: a >> 2,
53
+ b: b >> 2,
54
+ });
55
+ const words = (o) => Object.fromEntries(Object.entries(o).map(([k, v]) => [k, v >> 2]));
56
+ return {
57
+ contact: words({
58
+ beginPtr: L.contactSpans.beginPtr,
59
+ beginCount: L.contactSpans.beginCount,
60
+ endPtr: L.contactSpans.endPtr,
61
+ endCount: L.contactSpans.endCount,
62
+ hitPtr: L.contactSpans.hitPtr,
63
+ hitCount: L.contactSpans.hitCount,
64
+ }),
65
+ sensor: words({
66
+ beginPtr: L.sensorSpans.beginPtr,
67
+ beginCount: L.sensorSpans.beginCount,
68
+ endPtr: L.sensorSpans.endPtr,
69
+ endCount: L.sensorSpans.endCount,
70
+ }),
71
+ begin: pair(L.contactBegin, L.contactBegin.shapeA, L.contactBegin.shapeB),
72
+ end: pair(L.contactEnd, L.contactEnd.shapeA, L.contactEnd.shapeB),
73
+ hit: {
74
+ ...pair(L.contactHit, L.contactHit.shapeA, L.contactHit.shapeB),
75
+ pointX: L.contactHit.pointX >> 2,
76
+ pointY: L.contactHit.pointY >> 2,
77
+ normalX: L.contactHit.normalX >> 2,
78
+ normalY: L.contactHit.normalY >> 2,
79
+ approachSpeed: L.contactHit.approachSpeed >> 2,
80
+ },
81
+ sensorBegin: pair(L.sensorBegin, L.sensorBegin.sensorShape, L.sensorBegin.visitorShape),
82
+ sensorEnd: pair(L.sensorEnd, L.sensorEnd.sensorShape, L.sensorEnd.visitorShape),
83
+ };
84
+ }
85
+ // Poll once per step, reading Box2D's own arrays in begin/end/hit order. Spans are valid
86
+ // until the next step or world mutation; the loop does not call allocating Box2D APIs.
87
+ function publishContactAndHitEvents(world, engine, spans, offsets, touchedContact, touchedHit) {
88
+ const fast = engine.fast;
89
+ const i32 = fast.i32;
90
+ const u32 = fast.u32;
91
+ const f32 = fast.f32;
92
+ const header = spans >> 2;
93
+ const c = offsets.contact;
94
+ const begin = offsets.begin;
95
+ let at = u32[header + c.beginPtr] >> 2;
96
+ for (let i = 0, n = i32[header + c.beginCount]; i < n; i++, at += begin.stride) {
97
+ emitContactEvent(world, engine, touchedContact, i32[at + begin.a], i32[at + begin.b], "begin");
98
+ }
99
+ const end = offsets.end;
100
+ at = u32[header + c.endPtr] >> 2;
101
+ for (let i = 0, n = i32[header + c.endCount]; i < n; i++, at += end.stride) {
102
+ emitContactEvent(world, engine, touchedContact, i32[at + end.a], i32[at + end.b], "end");
75
103
  }
76
- finally {
77
- events.delete();
104
+ const hit = offsets.hit;
105
+ at = u32[header + c.hitPtr] >> 2;
106
+ for (let i = 0, n = i32[header + c.hitCount]; i < n; i++, at += hit.stride) {
107
+ emitHitEvent(world, engine, touchedHit, i32, f32, at, hit);
78
108
  }
79
109
  }
80
- function publishSensorEvents(world, engine, touched) {
81
- const events = engine.box2d.b2World_GetSensorEvents(engine.worldId);
82
- try {
83
- for (let i = 0; i < events.beginCount; i++) {
84
- emitSensorEvent(world, engine, touched, events.GetBeginEvent(i), "begin");
85
- }
86
- for (let i = 0; i < events.endCount; i++) {
87
- emitSensorEvent(world, engine, touched, events.GetEndEvent(i), "end");
88
- }
110
+ function publishSensorEvents(world, engine, spans, offsets, touched) {
111
+ const fast = engine.fast;
112
+ const i32 = fast.i32;
113
+ const u32 = fast.u32;
114
+ const header = spans >> 2;
115
+ const s = offsets.sensor;
116
+ const begin = offsets.sensorBegin;
117
+ let at = u32[header + s.beginPtr] >> 2;
118
+ for (let i = 0, n = i32[header + s.beginCount]; i < n; i++, at += begin.stride) {
119
+ emitSensorEvent(world, engine, touched, i32[at + begin.a], i32[at + begin.b], "begin");
89
120
  }
90
- finally {
91
- events.delete();
121
+ const end = offsets.sensorEnd;
122
+ at = u32[header + s.endPtr] >> 2;
123
+ for (let i = 0, n = i32[header + s.endCount]; i < n; i++, at += end.stride) {
124
+ emitSensorEvent(world, engine, touched, i32[at + end.a], i32[at + end.b], "end");
92
125
  }
93
126
  }
94
- function emitContactEvent(world, engine, touched, event, kind) {
95
- const entityA = getLiveEntity(world, engine.entityByShapeIndex.get(event.shapeIdA.index1));
96
- const entityB = getLiveEntity(world, engine.entityByShapeIndex.get(event.shapeIdB.index1));
127
+ function emitContactEvent(world, engine, touched, shapeA, shapeB, kind) {
128
+ const entityA = getLiveEntity(world, engine.entityByShapeIndex.get(shapeA));
129
+ const entityB = getLiveEntity(world, engine.entityByShapeIndex.get(shapeB));
97
130
  if (entityA === undefined || entityB === undefined) {
98
131
  return;
99
132
  }
100
133
  emitContactToEntity(touched, entityA, entityB, kind);
101
134
  emitContactToEntity(touched, entityB, entityA, kind);
102
135
  }
103
- function emitSensorEvent(world, engine, touched, event, kind) {
104
- const sensor = getLiveEntity(world, engine.entityByShapeIndex.get(event.sensorShapeId.index1));
105
- const visitor = getLiveEntity(world, engine.entityByShapeIndex.get(event.visitorShapeId.index1));
136
+ function emitSensorEvent(world, engine, touched, sensorShape, visitorShape, kind) {
137
+ const sensor = getLiveEntity(world, engine.entityByShapeIndex.get(sensorShape));
138
+ const visitor = getLiveEntity(world, engine.entityByShapeIndex.get(visitorShape));
106
139
  if (sensor === undefined || visitor === undefined) {
107
140
  return;
108
141
  }
@@ -122,14 +155,29 @@ function emitSensorEvent(world, engine, touched, event, kind) {
122
155
  events.end.push({ other: visitor });
123
156
  }
124
157
  }
125
- function emitHitEvent(world, engine, touched, event) {
126
- const entityA = getLiveEntity(world, engine.entityByShapeIndex.get(event.shapeIdA.index1));
127
- const entityB = getLiveEntity(world, engine.entityByShapeIndex.get(event.shapeIdB.index1));
158
+ function emitHitEvent(world, engine, touched, i32, f32, at, hit) {
159
+ const entityA = getLiveEntity(world, engine.entityByShapeIndex.get(i32[at + hit.a]));
160
+ const entityB = getLiveEntity(world, engine.entityByShapeIndex.get(i32[at + hit.b]));
128
161
  if (entityA === undefined || entityB === undefined) {
129
162
  return;
130
163
  }
131
- emitHitToEntity(touched, entityA, entityB, event);
132
- emitHitToEntity(touched, entityB, entityA, event);
164
+ emitHitToEntity(touched, entityA, entityB, f32, at, hit);
165
+ emitHitToEntity(touched, entityB, entityA, f32, at, hit);
166
+ }
167
+ /** Avoid replacing V8's Set backing table when there is nothing to clear. */
168
+ function clearSet(set) {
169
+ if (set.size > 0) {
170
+ set.clear();
171
+ }
172
+ }
173
+ function copySet(target, source) {
174
+ clearSet(target);
175
+ if (source.size === 0) {
176
+ return;
177
+ }
178
+ for (const eid of source) {
179
+ target.add(eid);
180
+ }
133
181
  }
134
182
  function emitContactToEntity(touched, entity, other, kind) {
135
183
  const events = entity.get(ContactEvents);
@@ -148,7 +196,7 @@ function emitContactToEntity(touched, entity, other, kind) {
148
196
  events.end.push({ other });
149
197
  }
150
198
  }
151
- function emitHitToEntity(touched, entity, other, event) {
199
+ function emitHitToEntity(touched, entity, other, f32, at, hit) {
152
200
  const events = entity.get(HitEvents);
153
201
  if (events === undefined) {
154
202
  return;
@@ -159,11 +207,11 @@ function emitHitToEntity(touched, entity, other, event) {
159
207
  }
160
208
  events.hits.push({
161
209
  other,
162
- x: event.point.x,
163
- y: event.point.y,
164
- normalX: event.normal.x,
165
- normalY: event.normal.y,
166
- speed: event.approachSpeed,
210
+ x: f32[at + hit.pointX],
211
+ y: f32[at + hit.pointY],
212
+ normalX: f32[at + hit.normalX],
213
+ normalY: f32[at + hit.normalY],
214
+ speed: f32[at + hit.approachSpeed],
167
215
  });
168
216
  }
169
217
  function getLiveEntity(world, entityId) {
@@ -177,11 +225,17 @@ function getLiveEntity(world, entityId) {
177
225
  return entity;
178
226
  }
179
227
  function markModified(world, touched, component) {
228
+ if (touched.size === 0) {
229
+ return;
230
+ }
180
231
  for (const entityId of touched) {
181
232
  world.getEntity(entityId)?.modified(component);
182
233
  }
183
234
  }
184
235
  function clearUntouchedContactEvents(world, previouslyTouched, touched) {
236
+ if (previouslyTouched.size === 0) {
237
+ return;
238
+ }
185
239
  for (const entityId of previouslyTouched) {
186
240
  if (touched.has(entityId)) {
187
241
  continue;
@@ -194,6 +248,9 @@ function clearUntouchedContactEvents(world, previouslyTouched, touched) {
194
248
  }
195
249
  }
196
250
  function clearUntouchedSensorEvents(world, previouslyTouched, touched) {
251
+ if (previouslyTouched.size === 0) {
252
+ return;
253
+ }
197
254
  for (const entityId of previouslyTouched) {
198
255
  if (touched.has(entityId)) {
199
256
  continue;
@@ -206,6 +263,9 @@ function clearUntouchedSensorEvents(world, previouslyTouched, touched) {
206
263
  }
207
264
  }
208
265
  function clearUntouchedHitEvents(world, previouslyTouched, touched) {
266
+ if (previouslyTouched.size === 0) {
267
+ return;
268
+ }
209
269
  for (const entityId of previouslyTouched) {
210
270
  if (touched.has(entityId)) {
211
271
  continue;
@@ -216,9 +276,6 @@ function clearUntouchedHitEvents(world, previouslyTouched, touched) {
216
276
  }
217
277
  }
218
278
  }
219
- function deleteIfPresent(value) {
220
- value.delete?.();
221
- }
222
279
  function isDestroyed(entity) {
223
280
  return entity.destroyed;
224
281
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../src/events/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqC,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAa3C,MAAM,OAAO,kBAAmB,SAAQ,MAAM;IACrC,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;QAE3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK;aACF,MAAM,CAAC,eAAe,CAAC;aACvB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC7B,GAAG,CAAC,GAAG,EAAE;YACR,MAAM,cAAc,GAAG,IAAI,GAAG,EAAO,CAAC;YACtC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAO,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAO,CAAC;YAElC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;YACtE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YAElD,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;YACnD,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;YACjD,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAE3C,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;YAC9E,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;YAC3E,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YAElE,+DAA+D;YAC/D,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAClC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;aACD,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;CACF;AAED,0DAA0D;AAC1D,8EAA8E;AAC9E,qFAAqF;AACrF,wCAAwC;AACxC,gGAAgG;AAChG,iFAAiF;AACjF,SAAS,0BAA0B,CACjC,KAAY,EACZ,MAAqB,EACrB,cAAwB,EACxB,UAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC;gBACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;oBAAS,CAAC;gBACT,eAAe,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC;gBACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAY,EAAE,MAAqB,EAAE,OAAiB;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAY,EACZ,MAAqB,EACrB,OAAiB,EACjB,KAA0C,EAC1C,IAAqB;IAErB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CACtB,KAAY,EACZ,MAAqB,EACrB,OAAiB,EACjB,KAAkB,EAClB,IAAqB;IAErB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAA6B,CAAC;IACpE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,KAAY,EACZ,MAAqB,EACrB,OAAiB,EACjB,KAAsB;IAEtB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClD,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAiB,EACjB,MAAc,EACd,KAAa,EACb,IAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAA8B,CAAC;IACtE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,OAAiB,EACjB,MAAc,EACd,KAAa,EACb,KAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAA0B,CAAC;IAC9D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACf,KAAK;QACL,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,KAAK,EAAE,KAAK,CAAC,aAAa;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAY,EAAE,QAAyB;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CACnB,KAAY,EACZ,OAAiB,EACjB,SAAsB;IAEtB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAY,EACZ,iBAA2B,EAC3B,OAAiB;IAEjB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,aAAa,CAA8B,CAAC;QAC1F,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAY,EACZ,iBAA2B,EAC3B,OAAiB;IAEjB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,YAAY,CAA6B,CAAC;QACxF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAY,EACZ,iBAA2B,EAC3B,OAAiB;IAEjB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,SAAS,CAA0B,CAAC;QAClF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAA8B;IACrD,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../src/events/publish.ts"],"names":[],"mappings":"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"}
package/forces/gather.js CHANGED
@@ -2,7 +2,7 @@ import { ChildOf, Module } from "@vworlds/vecs";
2
2
  import { getPhysicsEngine, PhysicsSystemTag } from "../adapter/engine.js";
3
3
  import { Body } from "../body/components.js";
4
4
  import { Force, Torque } from "./components.js";
5
- import { scr_b2Vec2 } from "../adapter/runtime.js";
5
+ import { rev } from "../adapter/runtime.js";
6
6
  import { PhysicsCoreModule } from "../core/module.js";
7
7
  const forceTargetPredicate = { any: [Body, { parent: Body }] };
8
8
  export class ForceGatherModule extends Module {
@@ -26,9 +26,7 @@ export class ForceGatherModule extends Module {
26
26
  if (bodyId === undefined) {
27
27
  return;
28
28
  }
29
- const vec = scr_b2Vec2[0];
30
- vec.Set(force.x, force.y);
31
- engine.box2d.b2Body_ApplyForceToCenter(bodyId, vec, force.wake);
29
+ engine.fast.module._b2x_Body_ApplyForceToCenter(bodyId.index1, rev(bodyId), force.x, force.y, force.wake ? 1 : 0);
32
30
  })
33
31
  .add(PhysicsSystemTag);
34
32
  world
@@ -45,7 +43,7 @@ export class ForceGatherModule extends Module {
45
43
  if (bodyId === undefined) {
46
44
  return;
47
45
  }
48
- engine.box2d.b2Body_ApplyTorque(bodyId, torque.value, torque.wake);
46
+ engine.fast.module._b2x_Body_ApplyTorque(bodyId.index1, rev(bodyId), torque.value, torque.wake ? 1 : 0);
49
47
  })
50
48
  .add(PhysicsSystemTag);
51
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gather.js","sourceRoot":"","sources":["../../../../src/forces/gather.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gather.js","sourceRoot":"","sources":["../../../../src/forces/gather.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Module } from "@vworlds/vecs";
2
2
  import { AngularImpulse, Impulse } from "./components.js";
3
- import { scr_b2Vec2 } from "../adapter/runtime.js";
3
+ import { rev } from "../adapter/runtime.js";
4
4
  import { getPhysicsEngine, PhysicsSystemTag, } from "../adapter/engine.js";
5
5
  import { PhysicsCoreModule } from "../core/module.js";
6
6
  import { resolveBodyId } from "../util/resolve_body.js";
@@ -50,6 +50,10 @@ export class ImpulseAccumulateModule extends Module {
50
50
  }
51
51
  }
52
52
  function drainLinearImpulses(engine) {
53
+ // Avoid allocating an iterator for an empty queue.
54
+ if (engine.pendingLinearImpulse.size === 0) {
55
+ return;
56
+ }
53
57
  for (const [bodyId, impulse] of engine.pendingLinearImpulse) {
54
58
  // Impulses that cancel out are physically a no-op: skip the wasm call and its wake.
55
59
  if (impulse.x === 0 && impulse.y === 0) {
@@ -58,13 +62,14 @@ function drainLinearImpulses(engine) {
58
62
  if (!engine.entityByBodyIndex.has(bodyId.index1)) {
59
63
  continue;
60
64
  }
61
- const vec = scr_b2Vec2[0];
62
- vec.Set(impulse.x, impulse.y);
63
- engine.box2d.b2Body_ApplyLinearImpulseToCenter(bodyId, vec, impulse.wake);
65
+ engine.fast.module._b2x_Body_ApplyLinearImpulseToCenter(bodyId.index1, rev(bodyId), impulse.x, impulse.y, impulse.wake ? 1 : 0);
64
66
  }
65
67
  engine.pendingLinearImpulse.clear();
66
68
  }
67
69
  function drainAngularImpulses(engine) {
70
+ if (engine.pendingAngularImpulse.size === 0) {
71
+ return;
72
+ }
68
73
  for (const [bodyId, impulse] of engine.pendingAngularImpulse) {
69
74
  if (impulse.value === 0) {
70
75
  continue;
@@ -72,7 +77,7 @@ function drainAngularImpulses(engine) {
72
77
  if (!engine.entityByBodyIndex.has(bodyId.index1)) {
73
78
  continue;
74
79
  }
75
- engine.box2d.b2Body_ApplyAngularImpulse(bodyId, impulse.value, impulse.wake);
80
+ engine.fast.module._b2x_Body_ApplyAngularImpulse(bodyId.index1, rev(bodyId), impulse.value, impulse.wake ? 1 : 0);
76
81
  }
77
82
  engine.pendingAngularImpulse.clear();
78
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"impulses.js","sourceRoot":"","sources":["../../../../src/forces/impulses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"impulses.js","sourceRoot":"","sources":["../../../../src/forces/impulses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,MAAM,OAAO,uBAAwB,SAAQ,MAAM;IAC1C,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,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YACrD,qFAAqF;YACrF,oFAAoF;YACpF,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzD,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;YAC3B,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;YAC3B,WAAW,CAAC,IAAI,KAAhB,WAAW,CAAC,IAAI,GAAK,OAAO,CAAC,IAAI,EAAC;QACpC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YAC5D,uCAAuC;YACvC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1D,WAAW,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;YACnC,WAAW,CAAC,IAAI,KAAhB,WAAW,CAAC,IAAI,GAAK,OAAO,CAAC,IAAI,EAAC;QACpC,CAAC,CAAC,CAAC;QAEH,KAAK;aACF,MAAM,CAAC,0BAA0B,CAAC;aAClC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5B,GAAG,CAAC,GAAG,EAAE;YACR,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC;aACD,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;CACF;AAED,SAAS,mBAAmB,CAAC,MAAqB;IAChD,mDAAmD;IACnD,IAAI,MAAM,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC5D,oFAAoF;QACpF,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,oCAAoC,CACrD,MAAM,CAAC,MAAM,EACb,GAAG,CAAC,MAAM,CAAC,EACX,OAAO,CAAC,CAAC,EACT,OAAO,CAAC,CAAC,EACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAqB;IACjD,IAAI,MAAM,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAC9C,MAAM,CAAC,MAAM,EACb,GAAG,CAAC,MAAM,CAAC,EACX,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAqB,EAAE,MAAgB;IACnE,IAAI,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC1C,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAqB,EAAE,MAAgB;IACpE,IAAI,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/index.d.ts CHANGED
@@ -3,7 +3,8 @@ export { preloadPhysics } from "./adapter/runtime.js";
3
3
  export { Body, BodyType, Position, Rotation, LinearVelocity, AngularVelocity, } from "./body/components.js";
4
4
  export { Damping, GravityScale, MotionLocks, Sleep } from "./body/tuning.js";
5
5
  export { ShapePosition, ShapeRotation } from "./shapes/pose_components.js";
6
- export { Shape, Box, Circle, Capsule, Segment, Polygon, Chain, type Vec2, } from "./shapes/components.js";
6
+ export { Shape, Box, Circle, Capsule, Segment, Polygon, Chain } from "./shapes/components.js";
7
+ export type { Vec2 } from "@vworlds/vecs";
7
8
  export { Material, CollisionFilter, Sensor, Detectable } from "./materials/components.js";
8
9
  export { Force, Torque, Impulse, AngularImpulse } from "./forces/components.js";
9
10
  export { KinematicTargetPosition, KinematicTargetRotation } from "./kinematic/components.js";
package/index.js CHANGED
@@ -11,7 +11,7 @@ export { Damping, GravityScale, MotionLocks, Sleep } from "./body/tuning.js";
11
11
  // Shape pose
12
12
  export { ShapePosition, ShapeRotation } from "./shapes/pose_components.js";
13
13
  // Geometry
14
- export { Shape, Box, Circle, Capsule, Segment, Polygon, Chain, } from "./shapes/components.js";
14
+ export { Shape, Box, Circle, Capsule, Segment, Polygon, Chain } from "./shapes/components.js";
15
15
  // Material / filter / sensor
16
16
  export { Material, CollisionFilter, Sensor, Detectable } from "./materials/components.js";
17
17
  // Forces & impulses
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gFAAgF;AAChF,uBAAuB;AAEvB,cAAc;AACd,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO;AACP,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,gBAAgB;AAChB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE7E,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE3E,WAAW;AACX,OAAO,EACL,KAAK,EACL,GAAG,EACH,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GAEN,MAAM,wBAAwB,CAAC;AAEhC,6BAA6B;AAC7B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE1F,oBAAoB;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEhF,oBAAoB;AACpB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAE7F,SAAS;AACT,OAAO,EACL,KAAK,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAEhC,SAAS;AACT,OAAO,EACL,aAAa,EAEb,YAAY,EAEZ,SAAS,GAEV,MAAM,wBAAwB,CAAC;AAEhC,UAAU;AACV,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gFAAgF;AAChF,uBAAuB;AAEvB,cAAc;AACd,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO;AACP,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,gBAAgB;AAChB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE7E,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE3E,WAAW;AACX,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG9F,6BAA6B;AAC7B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE1F,oBAAoB;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEhF,oBAAoB;AACpB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAE7F,SAAS;AACT,OAAO,EACL,KAAK,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAEhC,SAAS;AACT,OAAO,EACL,aAAa,EAEb,YAAY,EAEZ,SAAS,GAEV,MAAM,wBAAwB,CAAC;AAEhC,UAAU;AACV,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Relationship } from "@vworlds/vecs";
2
- import type { Vec2 } from "../shapes/components.js";
2
+ import type { Vec2 } from "@vworlds/vecs";
3
3
  /**
4
4
  * Empty umbrella marker for every concrete joint type. A joint entity carries
5
5
  * exactly one of `RevoluteJoint`, `DistanceJoint`, `PrismaticJoint`,
@@ -2,7 +2,7 @@ import { Module } from "@vworlds/vecs";
2
2
  import { getPhysicsEngine, PhysicsSystemTag, } from "../adapter/engine.js";
3
3
  import { Body } from "../body/components.js";
4
4
  import { KinematicTargetPosition, KinematicTargetRotation } from "./components.js";
5
- import { scr_b2Vec2 } from "../adapter/runtime.js";
5
+ import { rev, scr_fastOut } from "../adapter/runtime.js";
6
6
  import { PhysicsCoreModule } from "../core/module.js";
7
7
  export class KinematicTargetsModule extends Module {
8
8
  init() {
@@ -32,61 +32,60 @@ function drivePositionTarget(engine, bodyId, target, dt) {
32
32
  if (target === undefined) {
33
33
  return;
34
34
  }
35
- const position = engine.box2d.b2Body_GetPosition(bodyId);
36
- try {
37
- const dx = target.x - position.x;
38
- const dy = target.y - position.y;
39
- const dist = Math.hypot(dx, dy);
40
- if (dist > target.tolerance) {
41
- let vx = dx / dt;
42
- let vy = dy / dt;
43
- const speed = Math.hypot(vx, vy);
44
- if (speed > engine.maximumLinearSpeed) {
45
- const scale = engine.maximumLinearSpeed / speed;
46
- vx *= scale;
47
- vy *= scale;
48
- }
49
- setLinearVelocity(engine, bodyId, vx, vy);
50
- if (target.wake) {
51
- engine.box2d.b2Body_SetAwake(bodyId, true);
52
- }
35
+ const fast = engine.fast;
36
+ fast.module._b2x_Body_GetPosition(bodyId.index1, rev(bodyId), scr_fastOut);
37
+ fast.sync();
38
+ const out = scr_fastOut >> 2;
39
+ const px = fast.f32[out];
40
+ const py = fast.f32[out + 1];
41
+ const dx = target.x - px;
42
+ const dy = target.y - py;
43
+ const dist = Math.hypot(dx, dy);
44
+ if (dist > target.tolerance) {
45
+ let vx = dx / dt;
46
+ let vy = dy / dt;
47
+ const speed = Math.hypot(vx, vy);
48
+ if (speed > engine.maximumLinearSpeed) {
49
+ const scale = engine.maximumLinearSpeed / speed;
50
+ vx *= scale;
51
+ vy *= scale;
53
52
  }
54
- else {
55
- setLinearVelocity(engine, bodyId, 0, 0);
53
+ setLinearVelocity(engine, bodyId, vx, vy);
54
+ if (target.wake) {
55
+ fast.module._b2x_Body_SetAwake(bodyId.index1, rev(bodyId), 1);
56
56
  }
57
57
  }
58
- finally {
59
- position.delete();
58
+ else {
59
+ setLinearVelocity(engine, bodyId, 0, 0);
60
60
  }
61
61
  }
62
62
  function driveRotationTarget(engine, bodyId, target, dt) {
63
63
  if (target === undefined) {
64
64
  return;
65
65
  }
66
- const rotation = engine.box2d.b2Body_GetRotation(bodyId);
67
- try {
68
- const da = wrap(target.angle - rotation.GetAngle(), -Math.PI, Math.PI);
69
- if (Math.abs(da) > target.tolerance) {
70
- engine.box2d.b2Body_SetAngularVelocity(bodyId, da / dt);
71
- if (target.wake) {
72
- engine.box2d.b2Body_SetAwake(bodyId, true);
73
- }
74
- }
75
- else {
76
- engine.box2d.b2Body_SetAngularVelocity(bodyId, 0);
66
+ const fast = engine.fast;
67
+ const r = rev(bodyId);
68
+ fast.module._b2x_Body_GetPose(bodyId.index1, r, scr_fastOut);
69
+ fast.sync();
70
+ // The exact Box2D b2Atan2 result used by embind's GetAngle.
71
+ const angle = fast.f32[(scr_fastOut + fast.layout.pose.angle) >> 2];
72
+ const da = wrap(target.angle - angle, -Math.PI, Math.PI);
73
+ if (Math.abs(da) > target.tolerance) {
74
+ fast.module._b2x_Body_SetAngularVelocity(bodyId.index1, r, da / dt);
75
+ if (target.wake) {
76
+ fast.module._b2x_Body_SetAwake(bodyId.index1, r, 1);
77
77
  }
78
78
  }
79
- finally {
80
- rotation.delete();
79
+ else {
80
+ fast.module._b2x_Body_SetAngularVelocity(bodyId.index1, r, 0);
81
81
  }
82
82
  }
83
83
  function isKinematicBody(engine, bodyId) {
84
- return engine.box2d.b2Body_GetType(bodyId) === engine.box2d.b2BodyType.b2_kinematicBody;
84
+ return (engine.fast.module._b2x_Body_GetType(bodyId.index1, rev(bodyId)) ===
85
+ engine.box2d.b2BodyType.b2_kinematicBody.value);
85
86
  }
86
87
  function setLinearVelocity(engine, bodyId, x, y) {
87
- const vec = scr_b2Vec2[0];
88
- vec.Set(x, y);
89
- engine.box2d.b2Body_SetLinearVelocity(bodyId, vec);
88
+ engine.fast.module._b2x_Body_SetLinearVelocity(bodyId.index1, rev(bodyId), x, y);
90
89
  }
91
90
  function wrap(value, min, max) {
92
91
  const range = max - min;