@vworlds/vecs-physics 1.0.48 → 1.0.50
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/queries.d.ts +61 -0
- package/adapter/queries.js +77 -0
- package/adapter/queries.js.map +1 -1
- package/body/pose_out.js +54 -12
- package/body/pose_out.js.map +1 -1
- package/forces/components.d.ts +40 -0
- package/forces/components.js +43 -2
- package/forces/components.js.map +1 -1
- package/forces/gather.js +11 -0
- package/forces/gather.js.map +1 -1
- package/forces/impulses.js +16 -0
- package/forces/impulses.js.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/joints/components.d.ts +10 -6
- package/joints/components.js +10 -6
- package/joints/components.js.map +1 -1
- package/joints/module.js +10 -3
- package/joints/module.js.map +1 -1
- package/package.json +2 -2
package/adapter/queries.d.ts
CHANGED
|
@@ -20,6 +20,49 @@ export interface PhysicsStats {
|
|
|
20
20
|
/** Contacts currently alive in Box2D, touching or not. */
|
|
21
21
|
contactCount: number;
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* The resolved settings of a physics world, read by {@link PhysicsQueries.settings}: the values
|
|
25
|
+
* `PhysicsModule` built the Box2D world with, defaults filled in.
|
|
26
|
+
*/
|
|
27
|
+
export interface PhysicsSettings {
|
|
28
|
+
/** World gravity in m/s². */
|
|
29
|
+
readonly gravity: Readonly<Vec2>;
|
|
30
|
+
/** Duration of one physics step, in seconds. */
|
|
31
|
+
readonly fixedTimeStep: number;
|
|
32
|
+
/** Box2D substeps per physics step. */
|
|
33
|
+
readonly subSteps: number;
|
|
34
|
+
/** Box2D's cap on the linear speed of a body, in m/s. */
|
|
35
|
+
readonly maximumLinearSpeed: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A body's motion as Box2D holds it, filled by {@link PhysicsQueries.bodyMotion}: what a peer needs
|
|
39
|
+
* to extrapolate the body, such as a dead-reckoning baseline. Plain data; allocate one and reuse it.
|
|
40
|
+
*/
|
|
41
|
+
export declare class BodyMotion {
|
|
42
|
+
/** Whether the body is awake. A sleeping body does not move and reports zero velocities. */
|
|
43
|
+
awake: boolean;
|
|
44
|
+
/** Linear velocity of the center of mass, x, in m/s. */
|
|
45
|
+
vx: number;
|
|
46
|
+
/** Linear velocity of the center of mass, y, in m/s. */
|
|
47
|
+
vy: number;
|
|
48
|
+
/** Angular velocity in rad/s. */
|
|
49
|
+
w: number;
|
|
50
|
+
/** Linear damping, per second. */
|
|
51
|
+
linearDamping: number;
|
|
52
|
+
/** Angular damping, per second. */
|
|
53
|
+
angularDamping: number;
|
|
54
|
+
/** Center of mass in body coordinates, x, in meters. */
|
|
55
|
+
localCenterX: number;
|
|
56
|
+
/** Center of mass in body coordinates, y, in meters. */
|
|
57
|
+
localCenterY: number;
|
|
58
|
+
/**
|
|
59
|
+
* The gravity scale Box2D applies: the body's own scale, or 0 for a body without mass (a static
|
|
60
|
+
* or kinematic body), which Box2D never accelerates by gravity.
|
|
61
|
+
*/
|
|
62
|
+
gravityScale: number;
|
|
63
|
+
/** Whether the body is exempt from Box2D's cap on rotation per step (`Body.allowFastRotation`). */
|
|
64
|
+
allowFastRotation: boolean;
|
|
65
|
+
}
|
|
23
66
|
/** A single ray-cast hit, resolved to a Vecs shape entity with plain-data
|
|
24
67
|
* geometry — never a Box2D handle. */
|
|
25
68
|
export interface RayHit {
|
|
@@ -67,6 +110,24 @@ export interface PhysicsQueries {
|
|
|
67
110
|
* which makes them suitable for asserting that handles return to baseline after teardown.
|
|
68
111
|
*/
|
|
69
112
|
stats(): PhysicsStats;
|
|
113
|
+
/** Returns the settings the Box2D world was built with. The object is shared: do not mutate it. */
|
|
114
|
+
settings(): PhysicsSettings;
|
|
115
|
+
/**
|
|
116
|
+
* Returns whether `entity`'s body is awake: `false` for an entity without a live body. It
|
|
117
|
+
* allocates nothing, so it is cheap enough to call per body per step.
|
|
118
|
+
*/
|
|
119
|
+
isAwake(entity: Entity): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Reads `entity`'s body motion into `out`: whether it is awake, its velocities, its damping, its
|
|
122
|
+
* center of mass and the gravity scale Box2D applies to it. Each call reads Box2D, and the two
|
|
123
|
+
* vectors cost a short-lived wasm copy each, so call it when the values are needed, not every
|
|
124
|
+
* step.
|
|
125
|
+
*
|
|
126
|
+
* @param entity The body entity.
|
|
127
|
+
* @param out The object to overwrite.
|
|
128
|
+
* @returns `false`, leaving `out` untouched, when `entity` has no live body.
|
|
129
|
+
*/
|
|
130
|
+
bodyMotion(entity: Entity, out: BodyMotion): boolean;
|
|
70
131
|
/** Casts a ray from `from` to `to` and returns the closest hit, or `undefined`
|
|
71
132
|
* if the ray hits nothing (or only hits shapes whose entity has since been
|
|
72
133
|
* destroyed / removed). */
|
package/adapter/queries.js
CHANGED
|
@@ -8,12 +8,44 @@
|
|
|
8
8
|
// that boundary. Scratch allocations (b2Vec2, b2QueryFilter, b2AABB,
|
|
9
9
|
// b2ShapeProxy) reuse global pools allocated at module load. Transient
|
|
10
10
|
// allocations like b2RayResult are freed via explicit `finally { .delete() }`.
|
|
11
|
+
import { Body } from "../body/components.js";
|
|
11
12
|
import { Box, Capsule, Circle, Segment } from "../shapes/components.js";
|
|
12
13
|
import { scr_b2AABB, scr_b2QueryFilter, scr_b2ShapeProxy, scr_b2Vec2, } from "./runtime.js";
|
|
13
14
|
import { getPhysicsEngine, } from "./engine.js";
|
|
14
15
|
/** Box2D's `B2_MAX_POLYGON_VERTICES` — the most points a cast {@link Polygon}
|
|
15
16
|
* (and a `b2ShapeProxy`) can carry. Mirrors `src/shapes/lifecycle.ts`. */
|
|
16
17
|
const MAX_POLYGON_VERTICES = 8;
|
|
18
|
+
/**
|
|
19
|
+
* A body's motion as Box2D holds it, filled by {@link PhysicsQueries.bodyMotion}: what a peer needs
|
|
20
|
+
* to extrapolate the body, such as a dead-reckoning baseline. Plain data; allocate one and reuse it.
|
|
21
|
+
*/
|
|
22
|
+
export class BodyMotion {
|
|
23
|
+
constructor() {
|
|
24
|
+
/** Whether the body is awake. A sleeping body does not move and reports zero velocities. */
|
|
25
|
+
this.awake = false;
|
|
26
|
+
/** Linear velocity of the center of mass, x, in m/s. */
|
|
27
|
+
this.vx = 0;
|
|
28
|
+
/** Linear velocity of the center of mass, y, in m/s. */
|
|
29
|
+
this.vy = 0;
|
|
30
|
+
/** Angular velocity in rad/s. */
|
|
31
|
+
this.w = 0;
|
|
32
|
+
/** Linear damping, per second. */
|
|
33
|
+
this.linearDamping = 0;
|
|
34
|
+
/** Angular damping, per second. */
|
|
35
|
+
this.angularDamping = 0;
|
|
36
|
+
/** Center of mass in body coordinates, x, in meters. */
|
|
37
|
+
this.localCenterX = 0;
|
|
38
|
+
/** Center of mass in body coordinates, y, in meters. */
|
|
39
|
+
this.localCenterY = 0;
|
|
40
|
+
/**
|
|
41
|
+
* The gravity scale Box2D applies: the body's own scale, or 0 for a body without mass (a static
|
|
42
|
+
* or kinematic body), which Box2D never accelerates by gravity.
|
|
43
|
+
*/
|
|
44
|
+
this.gravityScale = 1;
|
|
45
|
+
/** Whether the body is exempt from Box2D's cap on rotation per step (`Body.allowFastRotation`). */
|
|
46
|
+
this.allowFastRotation = false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
17
49
|
/**
|
|
18
50
|
* Returns the {@link PhysicsQueries} facade for `world`.
|
|
19
51
|
*
|
|
@@ -31,6 +63,51 @@ class PhysicsQueriesImpl {
|
|
|
31
63
|
this.world = world;
|
|
32
64
|
this.engine = engine;
|
|
33
65
|
}
|
|
66
|
+
bodyMotion(entity, out) {
|
|
67
|
+
const body = entity.get(Body);
|
|
68
|
+
const bodyId = body?._bodyId;
|
|
69
|
+
if (body === undefined || bodyId === undefined) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
const { box2d } = this.engine;
|
|
73
|
+
out.awake = box2d.b2Body_IsAwake(bodyId);
|
|
74
|
+
const linear = box2d.b2Body_GetLinearVelocity(bodyId);
|
|
75
|
+
try {
|
|
76
|
+
out.vx = linear.x;
|
|
77
|
+
out.vy = linear.y;
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
linear.delete();
|
|
81
|
+
}
|
|
82
|
+
out.w = box2d.b2Body_GetAngularVelocity(bodyId);
|
|
83
|
+
out.linearDamping = box2d.b2Body_GetLinearDamping(bodyId);
|
|
84
|
+
out.angularDamping = box2d.b2Body_GetAngularDamping(bodyId);
|
|
85
|
+
const center = box2d.b2Body_GetLocalCenterOfMass(bodyId);
|
|
86
|
+
try {
|
|
87
|
+
out.localCenterX = center.x;
|
|
88
|
+
out.localCenterY = center.y;
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
center.delete();
|
|
92
|
+
}
|
|
93
|
+
// Box2D applies gravity times the scale only to a body with mass (src/solver.c:99).
|
|
94
|
+
out.gravityScale = box2d.b2Body_GetMass(bodyId) > 0 ? box2d.b2Body_GetGravityScale(bodyId) : 0;
|
|
95
|
+
out.allowFastRotation = body.allowFastRotation;
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
isAwake(entity) {
|
|
99
|
+
const bodyId = entity.get(Body)?._bodyId;
|
|
100
|
+
return bodyId !== undefined && this.engine.box2d.b2Body_IsAwake(bodyId);
|
|
101
|
+
}
|
|
102
|
+
settings() {
|
|
103
|
+
const engine = this.engine;
|
|
104
|
+
return (this._settings ?? (this._settings = Object.freeze({
|
|
105
|
+
gravity: Object.freeze({ x: engine.gravityX, y: engine.gravityY }),
|
|
106
|
+
fixedTimeStep: engine.fixedTimeStep,
|
|
107
|
+
subSteps: engine.subSteps,
|
|
108
|
+
maximumLinearSpeed: engine.maximumLinearSpeed,
|
|
109
|
+
})));
|
|
110
|
+
}
|
|
34
111
|
stats() {
|
|
35
112
|
const { box2d, worldId } = this.engine;
|
|
36
113
|
const counters = box2d.b2World_GetCounters(worldId);
|
package/adapter/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/adapter/queries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/adapter/queries.ts"],"names":[],"mappings":"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"}
|
package/body/pose_out.js
CHANGED
|
@@ -40,28 +40,70 @@ export class BodyPoseOutModule extends Module {
|
|
|
40
40
|
.add(PhysicsSystemTag);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Copy one moved body's Box2D pose into its pose components, writing only the components whose
|
|
45
|
+
* values changed.
|
|
46
|
+
*
|
|
47
|
+
* Box2D reports every awake body on every step and returns bit-identical values for a body that
|
|
48
|
+
* did not move or turn, while every `entity.set` counts as a modification: it fires `set` hooks,
|
|
49
|
+
* routes `update` events to every system watching the component and, for a networked component,
|
|
50
|
+
* is replicated to every client that sees the entity. Writing unchanged values would make a body
|
|
51
|
+
* flying straight re-send its constant `Rotation` every step and an awake body at rest re-send its
|
|
52
|
+
* whole pose. So each component the body carries is compared with the new values field by field
|
|
53
|
+
* using exact equality (no epsilon) and `set` runs only when at least one field differs.
|
|
54
|
+
*
|
|
55
|
+
* `Position` is always maintained and is created by the first write. `Rotation`, `LinearVelocity`
|
|
56
|
+
* and `AngularVelocity` are maintained only on bodies that already carry them, so a body never
|
|
57
|
+
* gains a component it did not ask for.
|
|
58
|
+
*
|
|
59
|
+
* Inside a system `entity.get` returns the committed state, because writes are deferred until the
|
|
60
|
+
* system finishes. That state includes every write earlier systems made this frame, a user
|
|
61
|
+
* teleport for one, and is exactly what the new values must be compared with. The check allocates
|
|
62
|
+
* nothing per body: the new values are read into locals and compared directly, and the `{ x, y }`
|
|
63
|
+
* literals exist only on the write path.
|
|
64
|
+
*
|
|
65
|
+
* Embind handle rules, which the compare must keep: `move.transform`, `.p` and `.q` are views into
|
|
66
|
+
* the move event's own memory (same address on every read, `transform.p` even shares the
|
|
67
|
+
* transform's), not copies. Read each once and leave them alone: calling `delete()` on a view runs
|
|
68
|
+
* the C++ destructor on an interior pointer of the event, which corrupts the wasm heap. The event's
|
|
69
|
+
* single `move.delete()` releases the memory. The linear velocity is a by-value return, a heap copy
|
|
70
|
+
* this function owns and deletes.
|
|
71
|
+
*/
|
|
47
72
|
function writePose(engine, entity, transform, bodyId) {
|
|
48
73
|
const p = transform.p;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
74
|
+
const x = p.x;
|
|
75
|
+
const y = p.y;
|
|
76
|
+
const position = entity.get(Position);
|
|
77
|
+
if (position === undefined || position.x !== x || position.y !== y) {
|
|
78
|
+
entity.set(Position, { x, y });
|
|
52
79
|
}
|
|
53
|
-
|
|
54
|
-
|
|
80
|
+
const rotation = entity.get(Rotation);
|
|
81
|
+
if (rotation !== undefined) {
|
|
82
|
+
const angle = transform.q.GetAngle();
|
|
83
|
+
if (rotation.angle !== angle) {
|
|
84
|
+
entity.set(Rotation, { angle });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const linearVelocity = entity.get(LinearVelocity);
|
|
88
|
+
if (linearVelocity !== undefined) {
|
|
55
89
|
const linear = engine.box2d.b2Body_GetLinearVelocity(bodyId);
|
|
56
90
|
try {
|
|
57
|
-
|
|
91
|
+
const vx = linear.x;
|
|
92
|
+
const vy = linear.y;
|
|
93
|
+
if (linearVelocity.x !== vx || linearVelocity.y !== vy) {
|
|
94
|
+
entity.set(LinearVelocity, { x: vx, y: vy });
|
|
95
|
+
}
|
|
58
96
|
}
|
|
59
97
|
finally {
|
|
60
98
|
linear.delete();
|
|
61
99
|
}
|
|
62
100
|
}
|
|
63
|
-
|
|
64
|
-
|
|
101
|
+
const angularVelocity = entity.get(AngularVelocity);
|
|
102
|
+
if (angularVelocity !== undefined) {
|
|
103
|
+
const value = engine.box2d.b2Body_GetAngularVelocity(bodyId);
|
|
104
|
+
if (angularVelocity.value !== value) {
|
|
105
|
+
entity.set(AngularVelocity, { value });
|
|
106
|
+
}
|
|
65
107
|
}
|
|
66
108
|
}
|
|
67
109
|
//# sourceMappingURL=pose_out.js.map
|
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,EACL,gBAAgB,EAChB,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAUtD,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,oBAAoB,CAAC;aAC5B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC7B,GAAG,CAAC,GAAG,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtE,IAAI,CAAC;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;wBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC7D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC3B,SAAS;wBACX,CAAC;wBAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC9B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;4BACpC,SAAS;wBACX,CAAC;wBAED,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACpD,CAAC;4BAAS,CAAC;wBACT,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;aACD,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;CACF;AAED
|
|
1
|
+
{"version":3,"file":"pose_out.js","sourceRoot":"","sources":["../../../../src/body/pose_out.ts"],"names":[],"mappings":"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"}
|
package/forces/components.d.ts
CHANGED
|
@@ -2,21 +2,61 @@
|
|
|
2
2
|
export declare class Force {
|
|
3
3
|
x: number;
|
|
4
4
|
y: number;
|
|
5
|
+
/**
|
|
6
|
+
* Whether a non-zero force wakes a sleeping body. Defaults to `true`.
|
|
7
|
+
*
|
|
8
|
+
* With `wake: false` a sleeping body stays asleep and ignores the force. A zero force
|
|
9
|
+
* (`x === 0 && y === 0`) is never applied and never wakes a body, whatever `wake` says, so a
|
|
10
|
+
* body holding an idle `Force { x: 0, y: 0 }` can still fall asleep. To wake a body, or keep it
|
|
11
|
+
* awake, use the `Sleep` component: `awake: true` wakes it and `enabled: false` stops it from
|
|
12
|
+
* falling asleep.
|
|
13
|
+
*/
|
|
5
14
|
wake: boolean;
|
|
6
15
|
}
|
|
7
16
|
/** Persistent torque (angular force). */
|
|
8
17
|
export declare class Torque {
|
|
9
18
|
value: number;
|
|
19
|
+
/**
|
|
20
|
+
* Whether a non-zero torque wakes a sleeping body. Defaults to `true`.
|
|
21
|
+
*
|
|
22
|
+
* With `wake: false` a sleeping body stays asleep and ignores the torque. A zero torque
|
|
23
|
+
* (`value === 0`) is never applied and never wakes a body, whatever `wake` says, so a body
|
|
24
|
+
* holding an idle `Torque { value: 0 }` can still fall asleep. To wake a body, or keep it
|
|
25
|
+
* awake, use the `Sleep` component: `awake: true` wakes it and `enabled: false` stops it from
|
|
26
|
+
* falling asleep.
|
|
27
|
+
*/
|
|
10
28
|
wake: boolean;
|
|
11
29
|
}
|
|
12
30
|
/** One-shot linear impulse in newton-seconds. Zeroed silently after applied. */
|
|
13
31
|
export declare class Impulse {
|
|
14
32
|
x: number;
|
|
15
33
|
y: number;
|
|
34
|
+
/**
|
|
35
|
+
* Whether a non-zero impulse wakes a sleeping body. Defaults to `true`.
|
|
36
|
+
*
|
|
37
|
+
* Non-zero impulses set on a body before a step are summed, and the sum wakes the body if any
|
|
38
|
+
* of them has `wake: true`. With `wake: false` throughout, a sleeping body stays asleep and
|
|
39
|
+
* ignores the impulse. A zero impulse is ignored when it is set: it is not summed and its
|
|
40
|
+
* `wake` does not count. A sum that is exactly zero, such as `{ x: 5 }` followed by
|
|
41
|
+
* `{ x: -5 }`, is skipped when the impulses are applied. Neither wakes a body. To wake a body,
|
|
42
|
+
* or keep it awake, use the `Sleep` component: `awake: true` wakes it and `enabled: false`
|
|
43
|
+
* stops it from falling asleep.
|
|
44
|
+
*/
|
|
16
45
|
wake: boolean;
|
|
17
46
|
}
|
|
18
47
|
/** One-shot angular impulse. Zeroed silently after applied. */
|
|
19
48
|
export declare class AngularImpulse {
|
|
20
49
|
value: number;
|
|
50
|
+
/**
|
|
51
|
+
* Whether a non-zero angular impulse wakes a sleeping body. Defaults to `true`.
|
|
52
|
+
*
|
|
53
|
+
* Non-zero angular impulses set on a body before a step are summed, and the sum wakes the body
|
|
54
|
+
* if any of them has `wake: true`. With `wake: false` throughout, a sleeping body stays asleep
|
|
55
|
+
* and ignores the impulse. A zero impulse is ignored when it is set: it is not summed and its
|
|
56
|
+
* `wake` does not count. A sum that is exactly zero, such as `3` followed by `-3`, is skipped
|
|
57
|
+
* when the impulses are applied. Neither wakes a body. To wake a body, or keep it awake, use
|
|
58
|
+
* the `Sleep` component: `awake: true` wakes it and `enabled: false` stops it from falling
|
|
59
|
+
* asleep.
|
|
60
|
+
*/
|
|
21
61
|
wake: boolean;
|
|
22
62
|
}
|
package/forces/components.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
// Force, torque, and one-shot impulse components. May live on a body entity or
|
|
2
|
-
// an immediate child of one. `wake` controls whether applying
|
|
3
|
-
// sleeping body
|
|
2
|
+
// an immediate child of one. `wake` controls whether applying a non-zero load
|
|
3
|
+
// wakes a sleeping body; a zero load is never applied and never wakes one.
|
|
4
|
+
// Impulses are zeroed silently after they are applied (see PLAN →
|
|
4
5
|
// PhysicsImpulseZero). Public API — see `docs/components.md`.
|
|
5
6
|
/** Persistent force in newtons. */
|
|
6
7
|
export class Force {
|
|
7
8
|
constructor() {
|
|
8
9
|
this.x = 0;
|
|
9
10
|
this.y = 0;
|
|
11
|
+
/**
|
|
12
|
+
* Whether a non-zero force wakes a sleeping body. Defaults to `true`.
|
|
13
|
+
*
|
|
14
|
+
* With `wake: false` a sleeping body stays asleep and ignores the force. A zero force
|
|
15
|
+
* (`x === 0 && y === 0`) is never applied and never wakes a body, whatever `wake` says, so a
|
|
16
|
+
* body holding an idle `Force { x: 0, y: 0 }` can still fall asleep. To wake a body, or keep it
|
|
17
|
+
* awake, use the `Sleep` component: `awake: true` wakes it and `enabled: false` stops it from
|
|
18
|
+
* falling asleep.
|
|
19
|
+
*/
|
|
10
20
|
this.wake = true;
|
|
11
21
|
}
|
|
12
22
|
}
|
|
@@ -14,6 +24,15 @@ export class Force {
|
|
|
14
24
|
export class Torque {
|
|
15
25
|
constructor() {
|
|
16
26
|
this.value = 0;
|
|
27
|
+
/**
|
|
28
|
+
* Whether a non-zero torque wakes a sleeping body. Defaults to `true`.
|
|
29
|
+
*
|
|
30
|
+
* With `wake: false` a sleeping body stays asleep and ignores the torque. A zero torque
|
|
31
|
+
* (`value === 0`) is never applied and never wakes a body, whatever `wake` says, so a body
|
|
32
|
+
* holding an idle `Torque { value: 0 }` can still fall asleep. To wake a body, or keep it
|
|
33
|
+
* awake, use the `Sleep` component: `awake: true` wakes it and `enabled: false` stops it from
|
|
34
|
+
* falling asleep.
|
|
35
|
+
*/
|
|
17
36
|
this.wake = true;
|
|
18
37
|
}
|
|
19
38
|
}
|
|
@@ -22,6 +41,17 @@ export class Impulse {
|
|
|
22
41
|
constructor() {
|
|
23
42
|
this.x = 0;
|
|
24
43
|
this.y = 0;
|
|
44
|
+
/**
|
|
45
|
+
* Whether a non-zero impulse wakes a sleeping body. Defaults to `true`.
|
|
46
|
+
*
|
|
47
|
+
* Non-zero impulses set on a body before a step are summed, and the sum wakes the body if any
|
|
48
|
+
* of them has `wake: true`. With `wake: false` throughout, a sleeping body stays asleep and
|
|
49
|
+
* ignores the impulse. A zero impulse is ignored when it is set: it is not summed and its
|
|
50
|
+
* `wake` does not count. A sum that is exactly zero, such as `{ x: 5 }` followed by
|
|
51
|
+
* `{ x: -5 }`, is skipped when the impulses are applied. Neither wakes a body. To wake a body,
|
|
52
|
+
* or keep it awake, use the `Sleep` component: `awake: true` wakes it and `enabled: false`
|
|
53
|
+
* stops it from falling asleep.
|
|
54
|
+
*/
|
|
25
55
|
this.wake = true;
|
|
26
56
|
}
|
|
27
57
|
}
|
|
@@ -29,6 +59,17 @@ export class Impulse {
|
|
|
29
59
|
export class AngularImpulse {
|
|
30
60
|
constructor() {
|
|
31
61
|
this.value = 0;
|
|
62
|
+
/**
|
|
63
|
+
* Whether a non-zero angular impulse wakes a sleeping body. Defaults to `true`.
|
|
64
|
+
*
|
|
65
|
+
* Non-zero angular impulses set on a body before a step are summed, and the sum wakes the body
|
|
66
|
+
* if any of them has `wake: true`. With `wake: false` throughout, a sleeping body stays asleep
|
|
67
|
+
* and ignores the impulse. A zero impulse is ignored when it is set: it is not summed and its
|
|
68
|
+
* `wake` does not count. A sum that is exactly zero, such as `3` followed by `-3`, is skipped
|
|
69
|
+
* when the impulses are applied. Neither wakes a body. To wake a body, or keep it awake, use
|
|
70
|
+
* the `Sleep` component: `awake: true` wakes it and `enabled: false` stops it from falling
|
|
71
|
+
* asleep.
|
|
72
|
+
*/
|
|
32
73
|
this.wake = true;
|
|
33
74
|
}
|
|
34
75
|
}
|
package/forces/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/forces/components.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/forces/components.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,kEAAkE;AAClE,8DAA8D;AAE9D,mCAAmC;AACnC,MAAM,OAAO,KAAK;IAAlB;QACE,MAAC,GAAG,CAAC,CAAC;QACN,MAAC,GAAG,CAAC,CAAC;QACN;;;;;;;;WAQG;QACH,SAAI,GAAG,IAAI,CAAC;IACd,CAAC;CAAA;AAED,yCAAyC;AACzC,MAAM,OAAO,MAAM;IAAnB;QACE,UAAK,GAAG,CAAC,CAAC;QACV;;;;;;;;WAQG;QACH,SAAI,GAAG,IAAI,CAAC;IACd,CAAC;CAAA;AAED,gFAAgF;AAChF,MAAM,OAAO,OAAO;IAApB;QACE,MAAC,GAAG,CAAC,CAAC;QACN,MAAC,GAAG,CAAC,CAAC;QACN;;;;;;;;;;WAUG;QACH,SAAI,GAAG,IAAI,CAAC;IACd,CAAC;CAAA;AAED,+DAA+D;AAC/D,MAAM,OAAO,cAAc;IAA3B;QACE,UAAK,GAAG,CAAC,CAAC;QACV;;;;;;;;;;WAUG;QACH,SAAI,GAAG,IAAI,CAAC;IACd,CAAC;CAAA"}
|
package/forces/gather.js
CHANGED
|
@@ -16,6 +16,12 @@ export class ForceGatherModule extends Module {
|
|
|
16
16
|
.with(Force, forceTargetPredicate)
|
|
17
17
|
.phase(phase)
|
|
18
18
|
.each([Force, Body, { target: [ChildOf, [Body]] }], (_entity, [force, body, parentBody]) => {
|
|
19
|
+
// A zero force changes nothing, but Box2D would still wake a sleeping body for it when
|
|
20
|
+
// `wake` is set, so a body holding an idle `Force { x: 0, y: 0 }` could never stay asleep.
|
|
21
|
+
// Skip it: no wasm call and no wake.
|
|
22
|
+
if (force.x === 0 && force.y === 0) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
19
25
|
const bodyId = body?._bodyId ?? parentBody?._bodyId;
|
|
20
26
|
if (bodyId === undefined) {
|
|
21
27
|
return;
|
|
@@ -30,6 +36,11 @@ export class ForceGatherModule extends Module {
|
|
|
30
36
|
.with(Torque, forceTargetPredicate)
|
|
31
37
|
.phase(phase)
|
|
32
38
|
.each([Torque, Body, { target: [ChildOf, [Body]] }], (_entity, [torque, body, parentBody]) => {
|
|
39
|
+
// Same as a zero force: skip it so an idle `Torque { value: 0 }` cannot keep waking
|
|
40
|
+
// its body.
|
|
41
|
+
if (torque.value === 0) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
33
44
|
const bodyId = body?._bodyId ?? parentBody?._bodyId;
|
|
34
45
|
if (bodyId === undefined) {
|
|
35
46
|
return;
|
package/forces/gather.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gather.js","sourceRoot":"","sources":["../../../../src/forces/gather.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAExE,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,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,KAAK;aACF,MAAM,CAAC,0BAA0B,CAAC;aAClC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC;aACjC,KAAK,CAAC,KAAK,CAAC;aACZ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;YACzF,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,CAAC;YACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC,CAAC;aACD,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEzB,KAAK;aACF,MAAM,CAAC,2BAA2B,CAAC;aACnC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,IAAI,CACH,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAC7C,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,CAAC;YACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC,CACF;aACA,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"gather.js","sourceRoot":"","sources":["../../../../src/forces/gather.ts"],"names":[],"mappings":"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"}
|
package/forces/impulses.js
CHANGED
|
@@ -10,6 +10,11 @@ export class ImpulseAccumulateModule extends Module {
|
|
|
10
10
|
world.module(PhysicsCoreModule);
|
|
11
11
|
const engine = getPhysicsEngine(world);
|
|
12
12
|
world.component(Impulse).on("set", (entity, impulse) => {
|
|
13
|
+
// A zero impulse adds nothing and its `wake` must not count, so ignore it before any
|
|
14
|
+
// lookup: no body resolve, no accumulator, nothing for PhysicsImpulseZero to clear.
|
|
15
|
+
if (impulse.x === 0 && impulse.y === 0) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
13
18
|
const bodyId = resolveBodyId(entity);
|
|
14
19
|
if (bodyId === undefined) {
|
|
15
20
|
return;
|
|
@@ -21,6 +26,10 @@ export class ImpulseAccumulateModule extends Module {
|
|
|
21
26
|
accumulator.wake || (accumulator.wake = impulse.wake);
|
|
22
27
|
});
|
|
23
28
|
world.component(AngularImpulse).on("set", (entity, impulse) => {
|
|
29
|
+
// Same as a zero linear impulse above.
|
|
30
|
+
if (impulse.value === 0) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
24
33
|
const bodyId = resolveBodyId(entity);
|
|
25
34
|
if (bodyId === undefined) {
|
|
26
35
|
return;
|
|
@@ -42,6 +51,10 @@ export class ImpulseAccumulateModule extends Module {
|
|
|
42
51
|
}
|
|
43
52
|
function drainLinearImpulses(engine) {
|
|
44
53
|
for (const [bodyId, impulse] of engine.pendingLinearImpulse) {
|
|
54
|
+
// Impulses that cancel out are physically a no-op: skip the wasm call and its wake.
|
|
55
|
+
if (impulse.x === 0 && impulse.y === 0) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
45
58
|
if (!engine.entityByBodyIndex.has(bodyId.index1)) {
|
|
46
59
|
continue;
|
|
47
60
|
}
|
|
@@ -53,6 +66,9 @@ function drainLinearImpulses(engine) {
|
|
|
53
66
|
}
|
|
54
67
|
function drainAngularImpulses(engine) {
|
|
55
68
|
for (const [bodyId, impulse] of engine.pendingAngularImpulse) {
|
|
69
|
+
if (impulse.value === 0) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
56
72
|
if (!engine.entityByBodyIndex.has(bodyId.index1)) {
|
|
57
73
|
continue;
|
|
58
74
|
}
|
package/forces/impulses.js.map
CHANGED
|
@@ -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":"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"}
|
package/index.d.ts
CHANGED
|
@@ -9,5 +9,5 @@ export { Force, Torque, Impulse, AngularImpulse } from "./forces/components.js";
|
|
|
9
9
|
export { KinematicTargetPosition, KinematicTargetRotation } from "./kinematic/components.js";
|
|
10
10
|
export { Joint, JointBodyA, JointBodyB, JointFrame, RevoluteJoint, DistanceJoint, PrismaticJoint, WheelJoint, WeldJoint, FilterJoint, MotorJoint, JointMotor, JointLimit, JointLinearSpring, JointAngularSpring, JointSettings, } from "./joints/components.js";
|
|
11
11
|
export { ContactEvents, type ContactEvent, SensorEvents, type SensorEvent, HitEvents, type HitEvent, } from "./events/components.js";
|
|
12
|
-
export { physics } from "./adapter/queries.js";
|
|
13
|
-
export type { CastGeometry, PhysicsQueries, PhysicsStats, QueryFilter, RayHit, ShapeCastHit, } from "./adapter/queries.js";
|
|
12
|
+
export { BodyMotion, physics } from "./adapter/queries.js";
|
|
13
|
+
export type { CastGeometry, PhysicsQueries, PhysicsSettings, PhysicsStats, QueryFilter, RayHit, ShapeCastHit, } from "./adapter/queries.js";
|
package/index.js
CHANGED
|
@@ -23,5 +23,5 @@ export { Joint, JointBodyA, JointBodyB, JointFrame, RevoluteJoint, DistanceJoint
|
|
|
23
23
|
// Events
|
|
24
24
|
export { ContactEvents, SensorEvents, HitEvents, } from "./events/components.js";
|
|
25
25
|
// Queries
|
|
26
|
-
export { physics } from "./adapter/queries.js";
|
|
26
|
+
export { BodyMotion, physics } from "./adapter/queries.js";
|
|
27
27
|
//# sourceMappingURL=index.js.map
|
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,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,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"}
|
package/joints/components.d.ts
CHANGED
|
@@ -12,17 +12,21 @@ export declare abstract class Joint {
|
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Relationship to the first connected body ("body A"). Set its `target` to the
|
|
15
|
-
* body entity. Destroying body A destroys the joint entity
|
|
16
|
-
* body's joints with it)
|
|
17
|
-
*
|
|
15
|
+
* body entity. Destroying body A destroys the joint entity, with every component
|
|
16
|
+
* on it, as Box2D destroys a body's joints with it (`CleanupPolicy.Delete`); body
|
|
17
|
+
* B is left alone. Removing `Body` from A only tears the constraint down.
|
|
18
|
+
* Anchors/limits/reference angle are expressed relative to A through
|
|
19
|
+
* {@link JointFrame}.
|
|
18
20
|
*/
|
|
19
21
|
export declare class JointBodyA extends Relationship {
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* Relationship to the second connected body ("body B"). Set its `target` to the
|
|
23
|
-
* body entity. Destroying body B destroys the joint entity
|
|
24
|
-
*
|
|
25
|
-
* B
|
|
25
|
+
* body entity. Destroying body B destroys the joint entity, with every component
|
|
26
|
+
* on it (`CleanupPolicy.Delete`); body A is left alone. Removing `Body` from B
|
|
27
|
+
* only tears the constraint down. The A/B roles are asymmetric: motors drive B
|
|
28
|
+
* relative to A and the reference angle is measured as B's rest angle relative
|
|
29
|
+
* to A.
|
|
26
30
|
*/
|
|
27
31
|
export declare class JointBodyB extends Relationship {
|
|
28
32
|
}
|
package/joints/components.js
CHANGED
|
@@ -30,17 +30,21 @@ export class Joint {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Relationship to the first connected body ("body A"). Set its `target` to the
|
|
33
|
-
* body entity. Destroying body A destroys the joint entity
|
|
34
|
-
* body's joints with it)
|
|
35
|
-
*
|
|
33
|
+
* body entity. Destroying body A destroys the joint entity, with every component
|
|
34
|
+
* on it, as Box2D destroys a body's joints with it (`CleanupPolicy.Delete`); body
|
|
35
|
+
* B is left alone. Removing `Body` from A only tears the constraint down.
|
|
36
|
+
* Anchors/limits/reference angle are expressed relative to A through
|
|
37
|
+
* {@link JointFrame}.
|
|
36
38
|
*/
|
|
37
39
|
export class JointBodyA extends Relationship {
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
42
|
* Relationship to the second connected body ("body B"). Set its `target` to the
|
|
41
|
-
* body entity. Destroying body B destroys the joint entity
|
|
42
|
-
*
|
|
43
|
-
* B
|
|
43
|
+
* body entity. Destroying body B destroys the joint entity, with every component
|
|
44
|
+
* on it (`CleanupPolicy.Delete`); body A is left alone. Removing `Body` from B
|
|
45
|
+
* only tears the constraint down. The A/B roles are asymmetric: motors drive B
|
|
46
|
+
* relative to A and the reference angle is measured as B's rest angle relative
|
|
47
|
+
* to A.
|
|
44
48
|
*/
|
|
45
49
|
export class JointBodyB extends Relationship {
|
|
46
50
|
}
|
package/joints/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/joints/components.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,iFAAiF;AACjF,kFAAkF;AAClF,EAAE;AACF,kFAAkF;AAClF,sEAAsE;AACtE,mFAAmF;AACnF,kFAAkF;AAClF,iFAAiF;AACjF,4DAA4D;AAC5D,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,wFAAwF;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C;;;;;;;GAOG;AACH,MAAM,OAAgB,KAAK;IAA3B;QACE,oFAAoF;QACpF,aAAQ,GAA0B,SAAS,CAAC;IAC9C,CAAC;CAAA;AAED
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/joints/components.ts"],"names":[],"mappings":"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"}
|
package/joints/module.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Exclusive, Implements, Module } from "@vworlds/vecs";
|
|
1
|
+
import { CleanupPolicy, Exclusive, Implements, Module } from "@vworlds/vecs";
|
|
2
2
|
import { BodyModule } from "../body/module.js";
|
|
3
3
|
import { PhysicsCoreModule } from "../core/module.js";
|
|
4
4
|
import { DistanceJoint, FilterJoint, Joint, JointAngularSpring, JointBodyA, JointBodyB, JointFrame, JointLimit, JointLinearSpring, JointMotor, JointSettings, MotorJoint, PrismaticJoint, RevoluteJoint, WeldJoint, WheelJoint, } from "./components.js";
|
|
@@ -9,8 +9,15 @@ export class JointsModule extends Module {
|
|
|
9
9
|
const world = this.world;
|
|
10
10
|
world.module(PhysicsCoreModule);
|
|
11
11
|
world.module(BodyModule);
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
// Destroying a connected body destroys the joint entity, as Box2D destroys a
|
|
13
|
+
// body's joints with it. Without the policy the default `Remove` would only drop
|
|
14
|
+
// the edge and leave a bodiless joint entity behind.
|
|
15
|
+
const jointBodyA = world.component(JointBodyA);
|
|
16
|
+
jointBodyA.add(Exclusive);
|
|
17
|
+
jointBodyA.meta.onDeleteTarget = CleanupPolicy.Delete;
|
|
18
|
+
const jointBodyB = world.component(JointBodyB);
|
|
19
|
+
jointBodyB.add(Exclusive);
|
|
20
|
+
jointBodyB.meta.onDeleteTarget = CleanupPolicy.Delete;
|
|
14
21
|
world.component(Joint);
|
|
15
22
|
world.component(RevoluteJoint);
|
|
16
23
|
world.component(DistanceJoint);
|
package/joints/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/joints/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/joints/module.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vworlds/vecs-physics",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"url": "git+https://github.com/vworlds/vecs.git"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@vworlds/vecs": "1.0.
|
|
18
|
+
"@vworlds/vecs": "1.0.50",
|
|
19
19
|
"box2d3-wasm": "^5.2.0"
|
|
20
20
|
},
|
|
21
21
|
"license": "MIT"
|