@vworlds/vecs-physics 1.0.38 → 1.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapter/engine.d.ts +1 -0
- package/adapter/engine.js.map +1 -1
- package/adapter/queries.d.ts +46 -3
- package/adapter/queries.js +106 -4
- package/adapter/queries.js.map +1 -1
- package/adapter/runtime.d.ts +2 -1
- package/adapter/runtime.js +7 -2
- package/adapter/runtime.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 +71 -11
- package/joints/components.js +74 -11
- package/joints/components.js.map +1 -1
- package/joints/features.js +47 -1
- package/joints/features.js.map +1 -1
- package/joints/lifecycle.js +64 -1
- package/joints/lifecycle.js.map +1 -1
- package/joints/module.js +7 -1
- package/joints/module.js.map +1 -1
- package/package.json +2 -2
package/adapter/engine.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type b2JointDefBase = ReturnType<Box2DModule["b2DefaultRevoluteJointDef"]
|
|
|
14
14
|
export type b2Vec2 = ReturnType<Box2DModule["b2Body_GetPosition"]>;
|
|
15
15
|
export type b2QueryFilter = Parameters<Box2DModule["b2World_OverlapAABB"]>[2];
|
|
16
16
|
export type b2AABB = Parameters<Box2DModule["b2World_OverlapAABB"]>[1];
|
|
17
|
+
export type b2ShapeProxy = ReturnType<Box2DModule["b2MakeProxy"]>;
|
|
17
18
|
/** The transient result object passed to a `b2World_CastRay` collector callback
|
|
18
19
|
* (the binding types the callback parameter as `any`). */
|
|
19
20
|
export type b2RayCallbackResult = InstanceType<Box2DModule["b2RayCallbackResult"]>;
|
package/adapter/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/adapter/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqC,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAiB,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/adapter/engine.ts"],"names":[],"mappings":"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"}
|
package/adapter/queries.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Entity, type World } from "@vworlds/vecs";
|
|
2
|
-
import { type Vec2 } from "../shapes/components.js";
|
|
2
|
+
import { Box, Capsule, Circle, Polygon, Segment, type Vec2 } from "../shapes/components.js";
|
|
3
3
|
/** Category/mask filter applied to a query. Unlike a shape's own filter
|
|
4
4
|
* (default `categoryBits = 1`), a query's default `categoryBits` is
|
|
5
5
|
* `0xffffffff` so the query is not itself filtered out. */
|
|
@@ -21,10 +21,32 @@ export interface RayHit {
|
|
|
21
21
|
/** Fraction along `from` → `to`, in `[0, 1]`. */
|
|
22
22
|
fraction: number;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Geometry accepted by shape casts: any single-shape geometry component, in
|
|
26
|
+
* local space exactly as it would sit on a shape entity. Pass a live entity's
|
|
27
|
+
* component (`entity.get(Circle)!`) or a standalone instance (`new Circle()`).
|
|
28
|
+
* `Chain` is excluded — Box2D cannot sweep a chain.
|
|
29
|
+
*/
|
|
30
|
+
export type CastGeometry = Box | Capsule | Circle | Polygon | Segment;
|
|
31
|
+
/** A single shape-cast hit, resolved to a Vecs shape entity with plain-data
|
|
32
|
+
* geometry — never a Box2D handle. */
|
|
33
|
+
export interface ShapeCastHit {
|
|
34
|
+
/** The shape entity that was hit. */
|
|
35
|
+
entity: Entity;
|
|
36
|
+
/** World-space contact point at first touch. */
|
|
37
|
+
point: Vec2;
|
|
38
|
+
/** World-space unit surface normal at the contact point. Zero vector when
|
|
39
|
+
* `fraction` is `0` (cast started overlapping this shape). */
|
|
40
|
+
normal: Vec2;
|
|
41
|
+
/** Fraction along `from` → `to` at first touch, in `[0, 1]`. `0` means the
|
|
42
|
+
* cast geometry already touches or overlaps this shape at `from`. */
|
|
43
|
+
fraction: number;
|
|
44
|
+
}
|
|
24
45
|
/**
|
|
25
46
|
* Stable, world-scoped facade for synchronous read-only physics queries: ray
|
|
26
|
-
* casts and spatial overlaps. Obtained via {@link physics}.
|
|
27
|
-
* world, never creates or destroys entities, and never
|
|
47
|
+
* casts, shape casts, and spatial overlaps. Obtained via {@link physics}.
|
|
48
|
+
* Never mutates the world, never creates or destroys entities, and never
|
|
49
|
+
* wakes bodies.
|
|
28
50
|
*/
|
|
29
51
|
export interface PhysicsQueries {
|
|
30
52
|
/** Casts a ray from `from` to `to` and returns the closest hit, or `undefined`
|
|
@@ -41,6 +63,27 @@ export interface PhysicsQueries {
|
|
|
41
63
|
to: Vec2;
|
|
42
64
|
filter?: QueryFilter;
|
|
43
65
|
}): RayHit[];
|
|
66
|
+
/** Sweeps `shape` — placed with its local origin at `from`, rotated by
|
|
67
|
+
* `rotation` radians (default `0`) — until the origin reaches `to`, and
|
|
68
|
+
* returns the closest hit, or `undefined` if the sweep touches nothing.
|
|
69
|
+
* Throws if `shape` is a {@link Polygon} with no vertices or more than 8. */
|
|
70
|
+
shapeCastClosest(query: {
|
|
71
|
+
shape: CastGeometry;
|
|
72
|
+
from: Vec2;
|
|
73
|
+
to: Vec2;
|
|
74
|
+
rotation?: number;
|
|
75
|
+
filter?: QueryFilter;
|
|
76
|
+
}): ShapeCastHit | undefined;
|
|
77
|
+
/** Sweeps `shape` along `from` → `to` like {@link shapeCastClosest} and
|
|
78
|
+
* returns every shape the sweep would touch, each with its own
|
|
79
|
+
* first-contact point, normal, and fraction. */
|
|
80
|
+
shapeCastAll(query: {
|
|
81
|
+
shape: CastGeometry;
|
|
82
|
+
from: Vec2;
|
|
83
|
+
to: Vec2;
|
|
84
|
+
rotation?: number;
|
|
85
|
+
filter?: QueryFilter;
|
|
86
|
+
}): ShapeCastHit[];
|
|
44
87
|
/** Returns every shape entity whose fat AABB overlaps `[min, max]`. This is
|
|
45
88
|
* a broad-phase query: it can over-report relative to exact shape
|
|
46
89
|
* overlap. */
|
package/adapter/queries.js
CHANGED
|
@@ -5,11 +5,15 @@
|
|
|
5
5
|
// entities (shape entities) and plain data — never Box2D handles.
|
|
6
6
|
//
|
|
7
7
|
// box2d3-wasm imports are confined to `src/adapter/`; this file is part of
|
|
8
|
-
// that boundary. Scratch allocations (b2Vec2, b2QueryFilter, b2AABB
|
|
9
|
-
// global pools allocated at module load. Transient
|
|
10
|
-
// are freed via explicit `finally { .delete() }`.
|
|
11
|
-
import {
|
|
8
|
+
// that boundary. Scratch allocations (b2Vec2, b2QueryFilter, b2AABB,
|
|
9
|
+
// b2ShapeProxy) reuse global pools allocated at module load. Transient
|
|
10
|
+
// allocations like b2RayResult are freed via explicit `finally { .delete() }`.
|
|
11
|
+
import { Box, Capsule, Circle, Segment } from "../shapes/components.js";
|
|
12
|
+
import { scr_b2AABB, scr_b2QueryFilter, scr_b2ShapeProxy, scr_b2Vec2, } from "./runtime.js";
|
|
12
13
|
import { getPhysicsEngine, } from "./engine.js";
|
|
14
|
+
/** Box2D's `B2_MAX_POLYGON_VERTICES` — the most points a cast {@link Polygon}
|
|
15
|
+
* (and a `b2ShapeProxy`) can carry. Mirrors `src/shapes/lifecycle.ts`. */
|
|
16
|
+
const MAX_POLYGON_VERTICES = 8;
|
|
13
17
|
/**
|
|
14
18
|
* Returns the {@link PhysicsQueries} facade for `world`.
|
|
15
19
|
*
|
|
@@ -74,6 +78,51 @@ class PhysicsQueriesImpl {
|
|
|
74
78
|
});
|
|
75
79
|
return hits;
|
|
76
80
|
}
|
|
81
|
+
shapeCastClosest(query) {
|
|
82
|
+
const { box2d, worldId } = this.engine;
|
|
83
|
+
const proxy = to_b2ShapeProxy(box2d, query.shape, query.from, query.rotation ?? 0);
|
|
84
|
+
const translation = scr_b2Vec2[1];
|
|
85
|
+
translation.Set(query.to.x - query.from.x, query.to.y - query.from.y);
|
|
86
|
+
let closest;
|
|
87
|
+
box2d.b2World_CastShape(worldId, proxy, translation, to_b2QueryFilter(query.filter), (result) => {
|
|
88
|
+
const entity = resolveShapeEntity(this.engine, this.world, result.shapeId);
|
|
89
|
+
if (entity === undefined) {
|
|
90
|
+
// -1 filters the hit out without tightening the clip fraction.
|
|
91
|
+
return -1;
|
|
92
|
+
}
|
|
93
|
+
if (closest === undefined || result.fraction < closest.fraction) {
|
|
94
|
+
closest = {
|
|
95
|
+
entity,
|
|
96
|
+
point: { x: result.point.x, y: result.point.y },
|
|
97
|
+
normal: { x: result.normal.x, y: result.normal.y },
|
|
98
|
+
fraction: result.fraction,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// Clip the sweep so only nearer hits are reported from here on.
|
|
102
|
+
return result.fraction;
|
|
103
|
+
});
|
|
104
|
+
return closest;
|
|
105
|
+
}
|
|
106
|
+
shapeCastAll(query) {
|
|
107
|
+
const { box2d, worldId } = this.engine;
|
|
108
|
+
const proxy = to_b2ShapeProxy(box2d, query.shape, query.from, query.rotation ?? 0);
|
|
109
|
+
const translation = scr_b2Vec2[1];
|
|
110
|
+
translation.Set(query.to.x - query.from.x, query.to.y - query.from.y);
|
|
111
|
+
const hits = [];
|
|
112
|
+
box2d.b2World_CastShape(worldId, proxy, translation, to_b2QueryFilter(query.filter), (result) => {
|
|
113
|
+
const entity = resolveShapeEntity(this.engine, this.world, result.shapeId);
|
|
114
|
+
if (entity !== undefined) {
|
|
115
|
+
hits.push({
|
|
116
|
+
entity,
|
|
117
|
+
point: { x: result.point.x, y: result.point.y },
|
|
118
|
+
normal: { x: result.normal.x, y: result.normal.y },
|
|
119
|
+
fraction: result.fraction,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return 1;
|
|
123
|
+
});
|
|
124
|
+
return hits;
|
|
125
|
+
}
|
|
77
126
|
overlapAABB(query) {
|
|
78
127
|
const { box2d, worldId } = this.engine;
|
|
79
128
|
const aabb = scr_b2AABB;
|
|
@@ -114,6 +163,59 @@ class PhysicsQueriesImpl {
|
|
|
114
163
|
}
|
|
115
164
|
}
|
|
116
165
|
}
|
|
166
|
+
/** Fills the scratch `b2ShapeProxy` with `shape`'s geometry transformed to
|
|
167
|
+
* world space: each local point is rotated by `rotation` and translated by
|
|
168
|
+
* `at`. `setPoint` copies by value, so the scratch `b2Vec2` and the returned
|
|
169
|
+
* proxy are free for reuse as soon as the consuming cast returns. Throws for
|
|
170
|
+
* a {@link Polygon} whose vertex count Box2D cannot represent (0, or more
|
|
171
|
+
* than `B2_MAX_POLYGON_VERTICES` = 8). */
|
|
172
|
+
function to_b2ShapeProxy(box2d, shape, at, rotation) {
|
|
173
|
+
const proxy = scr_b2ShapeProxy;
|
|
174
|
+
const cos = Math.cos(rotation);
|
|
175
|
+
const sin = Math.sin(rotation);
|
|
176
|
+
const point = scr_b2Vec2[0];
|
|
177
|
+
const setPoint = (index, x, y) => {
|
|
178
|
+
point.Set(at.x + cos * x - sin * y, at.y + sin * x + cos * y);
|
|
179
|
+
proxy.setPoint(index, point);
|
|
180
|
+
};
|
|
181
|
+
if (shape instanceof Box) {
|
|
182
|
+
setPoint(0, -shape.hx, -shape.hy);
|
|
183
|
+
setPoint(1, shape.hx, -shape.hy);
|
|
184
|
+
setPoint(2, shape.hx, shape.hy);
|
|
185
|
+
setPoint(3, -shape.hx, shape.hy);
|
|
186
|
+
proxy.count = 4;
|
|
187
|
+
proxy.radius = 0;
|
|
188
|
+
}
|
|
189
|
+
else if (shape instanceof Circle) {
|
|
190
|
+
setPoint(0, 0, 0);
|
|
191
|
+
proxy.count = 1;
|
|
192
|
+
proxy.radius = shape.radius;
|
|
193
|
+
}
|
|
194
|
+
else if (shape instanceof Capsule) {
|
|
195
|
+
setPoint(0, shape.x1, shape.y1);
|
|
196
|
+
setPoint(1, shape.x2, shape.y2);
|
|
197
|
+
proxy.count = 2;
|
|
198
|
+
proxy.radius = shape.radius;
|
|
199
|
+
}
|
|
200
|
+
else if (shape instanceof Segment) {
|
|
201
|
+
setPoint(0, shape.x1, shape.y1);
|
|
202
|
+
setPoint(1, shape.x2, shape.y2);
|
|
203
|
+
proxy.count = 2;
|
|
204
|
+
proxy.radius = 0;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const count = shape.vertices.length;
|
|
208
|
+
if (count < 1 || count > MAX_POLYGON_VERTICES) {
|
|
209
|
+
throw new Error(`shape cast Polygon must have 1 to ${MAX_POLYGON_VERTICES} vertices, got ${count}`);
|
|
210
|
+
}
|
|
211
|
+
for (let i = 0; i < count; i++) {
|
|
212
|
+
setPoint(i, shape.vertices[i].x, shape.vertices[i].y);
|
|
213
|
+
}
|
|
214
|
+
proxy.count = count;
|
|
215
|
+
proxy.radius = shape.radius;
|
|
216
|
+
}
|
|
217
|
+
return proxy;
|
|
218
|
+
}
|
|
117
219
|
/** Maps a {@link QueryFilter} (default `0xffffffff`/`0xffffffff` — "sees and
|
|
118
220
|
* is seen by everything") and returns a scratch `b2QueryFilter`. `b2QueryFilter` is not
|
|
119
221
|
* `b2DefaultQueryFilter` here: the default-constructed filter is all zeros,
|
package/adapter/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/adapter/queries.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,kEAAkE;AAClE,EAAE;AACF,2EAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/adapter/queries.ts"],"names":[],"mappings":"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"}
|
package/adapter/runtime.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import Box2DFactory from "box2d3-wasm";
|
|
2
|
-
import type { b2AABB, b2QueryFilter, b2Vec2 } from "./engine.js";
|
|
2
|
+
import type { b2AABB, b2QueryFilter, b2ShapeProxy, b2Vec2 } from "./engine.js";
|
|
3
3
|
export type Box2DModule = Awaited<ReturnType<typeof Box2DFactory>>;
|
|
4
4
|
export declare const scr_b2Vec2: b2Vec2[];
|
|
5
5
|
export declare const scr_b2QueryFilter: b2QueryFilter[];
|
|
6
6
|
export declare let scr_b2AABB: b2AABB | null;
|
|
7
|
+
export declare let scr_b2ShapeProxy: b2ShapeProxy | null;
|
|
7
8
|
export declare function preloadPhysics(): Promise<void>;
|
|
8
9
|
export declare function getBox2D(): Box2DModule;
|
package/adapter/runtime.js
CHANGED
|
@@ -7,6 +7,7 @@ let module = null;
|
|
|
7
7
|
export const scr_b2Vec2 = [];
|
|
8
8
|
export const scr_b2QueryFilter = [];
|
|
9
9
|
export let scr_b2AABB = null;
|
|
10
|
+
export let scr_b2ShapeProxy = null;
|
|
10
11
|
export async function preloadPhysics() {
|
|
11
12
|
var _a;
|
|
12
13
|
if (modulePromise) {
|
|
@@ -25,8 +26,9 @@ export async function preloadPhysics() {
|
|
|
25
26
|
await modulePromise;
|
|
26
27
|
}
|
|
27
28
|
function initializeScratchPools(box2d) {
|
|
28
|
-
// b2Vec2: ray casts need 2 simultaneous (origin +
|
|
29
|
-
// can reuse serially. Allocate 3 for
|
|
29
|
+
// b2Vec2: ray and shape casts need 2 simultaneous (origin/proxy point +
|
|
30
|
+
// translation), polygon/chain creation can reuse serially. Allocate 3 for
|
|
31
|
+
// safety margin.
|
|
30
32
|
for (let i = 0; i < 3; i++) {
|
|
31
33
|
scr_b2Vec2.push(new box2d.b2Vec2());
|
|
32
34
|
}
|
|
@@ -37,6 +39,9 @@ function initializeScratchPools(box2d) {
|
|
|
37
39
|
}
|
|
38
40
|
// b2AABB: overlapAABB needs exactly 1.
|
|
39
41
|
scr_b2AABB = new box2d.b2AABB();
|
|
42
|
+
// b2ShapeProxy: shape casts need exactly 1 (proxy points are copied in by
|
|
43
|
+
// value, so the pool entry is free again as soon as the cast returns).
|
|
44
|
+
scr_b2ShapeProxy = new box2d.b2ShapeProxy();
|
|
40
45
|
}
|
|
41
46
|
export function getBox2D() {
|
|
42
47
|
if (!module) {
|
package/adapter/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/adapter/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,YAAY,MAAM,aAAa,CAAC;AAMvC,IAAI,aAAa,GAAgC,IAAI,CAAC;AACtD,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,gFAAgF;AAChF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAoB,EAAE,CAAC;AACrD,MAAM,CAAC,IAAI,UAAU,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/adapter/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,YAAY,MAAM,aAAa,CAAC;AAMvC,IAAI,aAAa,GAAgC,IAAI,CAAC;AACtD,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,gFAAgF;AAChF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAoB,EAAE,CAAC;AACrD,MAAM,CAAC,IAAI,UAAU,GAAkB,IAAI,CAAC;AAC5C,MAAM,CAAC,IAAI,gBAAgB,GAAwB,IAAI,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,cAAc;;IAClC,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,aAAa,CAAC;QACpB,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,MAAM,MAAM,GAAG,UAA2D,CAAC;IAC3E,MAAM,CAAC,SAAS,KAAhB,MAAM,CAAC,SAAS,GAAK,EAAE,EAAC;IACxB,MAAC,MAAM,CAAC,SAA8C,EAAC,mBAAmB,QAAnB,mBAAmB,GAAK,IAAI,EAAE,CAAC,MAAM,EAAC;IAE7F,aAAa,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;QACnD,MAAM,GAAG,YAAY,CAAC;QACtB,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACrC,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,CAAC;AACtB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAkB;IAChD,wEAAwE;IACxE,0EAA0E;IAC1E,iBAAiB;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,yBAAyB;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,iBAAiB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,uCAAuC;IACvC,UAAU,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;IAEhC,0EAA0E;IAC1E,uEAAuE;IACvE,gBAAgB,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { Shape, Box, Circle, Capsule, Segment, Polygon, Chain, type Vec2, } from
|
|
|
7
7
|
export { Material, CollisionFilter, Sensor, Detectable } from "./materials/components.js";
|
|
8
8
|
export { Force, Torque, Impulse, AngularImpulse } from "./forces/components.js";
|
|
9
9
|
export { KinematicTargetPosition, KinematicTargetRotation } from "./kinematic/components.js";
|
|
10
|
-
export { Joint, JointBodyA, JointBodyB, JointFrame, RevoluteJoint, DistanceJoint, WeldJoint, FilterJoint, JointMotor, JointLimit, JointLinearSpring, JointAngularSpring, JointSettings, } from "./joints/components.js";
|
|
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
12
|
export { physics } from "./adapter/queries.js";
|
|
13
|
-
export type { PhysicsQueries, QueryFilter, RayHit } from "./adapter/queries.js";
|
|
13
|
+
export type { CastGeometry, PhysicsQueries, QueryFilter, RayHit, ShapeCastHit, } from "./adapter/queries.js";
|
package/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export { Force, Torque, Impulse, AngularImpulse } from "./forces/components.js";
|
|
|
19
19
|
// Kinematic targets
|
|
20
20
|
export { KinematicTargetPosition, KinematicTargetRotation } from "./kinematic/components.js";
|
|
21
21
|
// Joints
|
|
22
|
-
export { Joint, JointBodyA, JointBodyB, JointFrame, RevoluteJoint, DistanceJoint, WeldJoint, FilterJoint, JointMotor, JointLimit, JointLinearSpring, JointAngularSpring, JointSettings, } from "./joints/components.js";
|
|
22
|
+
export { Joint, JointBodyA, JointBodyB, JointFrame, RevoluteJoint, DistanceJoint, PrismaticJoint, WheelJoint, WeldJoint, FilterJoint, MotorJoint, JointMotor, JointLimit, JointLinearSpring, JointAngularSpring, JointSettings, } from "./joints/components.js";
|
|
23
23
|
// Events
|
|
24
24
|
export { ContactEvents, SensorEvents, HitEvents, } from "./events/components.js";
|
|
25
25
|
// Queries
|
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,SAAS,EACT,WAAW,EACX,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,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
|
package/joints/components.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ import { Relationship } from "@vworlds/vecs";
|
|
|
2
2
|
import type { Vec2 } from "../shapes/components.js";
|
|
3
3
|
/**
|
|
4
4
|
* Empty umbrella marker for every concrete joint type. A joint entity carries
|
|
5
|
-
* exactly one of `RevoluteJoint`, `DistanceJoint`, `
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* joint type maps to
|
|
5
|
+
* exactly one of `RevoluteJoint`, `DistanceJoint`, `PrismaticJoint`,
|
|
6
|
+
* `WheelJoint`, `WeldJoint`, `FilterJoint`, or `MotorJoint`; each implements
|
|
7
|
+
* `Joint` so queries and systems can match any joint without enumerating every
|
|
8
|
+
* concrete type. Holds the single Box2D handle, since every joint type maps to
|
|
9
|
+
* exactly one `b2JointId`.
|
|
9
10
|
*/
|
|
10
11
|
export declare abstract class Joint {
|
|
11
12
|
}
|
|
@@ -31,7 +32,11 @@ export declare class JointBodyB extends Relationship {
|
|
|
31
32
|
* `referenceAngle` is body B's angle relative to body A at rest (radians).
|
|
32
33
|
*
|
|
33
34
|
* Optional: a missing `JointFrame` anchors both bodies at their origins with a
|
|
34
|
-
* zero reference angle. `DistanceJoint`
|
|
35
|
+
* zero reference angle. `DistanceJoint` and `FilterJoint` ignore
|
|
36
|
+
* `referenceAngle`. `PrismaticJoint` and `WheelJoint` read it instead as their
|
|
37
|
+
* sliding axis's angle in body A's local frame (0 = body A's local x-axis);
|
|
38
|
+
* `PrismaticJoint` additionally locks the bodies' relative angle at that value
|
|
39
|
+
* (like `WeldJoint`), while `WheelJoint` leaves rotation free.
|
|
35
40
|
*/
|
|
36
41
|
export declare class JointFrame {
|
|
37
42
|
localAnchorA: Vec2;
|
|
@@ -55,6 +60,26 @@ export declare class RevoluteJoint extends Joint {
|
|
|
55
60
|
export declare class DistanceJoint extends Joint {
|
|
56
61
|
length: number;
|
|
57
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Prismatic joint: locks the two bodies' relative angle (like {@link WeldJoint})
|
|
65
|
+
* but lets body B slide along one axis relative to body A. The axis is body A's
|
|
66
|
+
* local x-axis, rotated by {@link JointFrame.referenceAngle}. Add
|
|
67
|
+
* {@link JointMotor} to drive the slide (m/s, force), {@link JointLimit} to
|
|
68
|
+
* bound the translation (meters), or {@link JointLinearSpring} for a soft rest
|
|
69
|
+
* position along the axis.
|
|
70
|
+
*/
|
|
71
|
+
export declare class PrismaticJoint extends Joint {
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Wheel joint: like {@link PrismaticJoint} — body B slides along an axis fixed
|
|
75
|
+
* by {@link JointFrame.referenceAngle} — but leaves the bodies' relative
|
|
76
|
+
* rotation completely free (a wheel spinning on its axle) instead of locking
|
|
77
|
+
* it. Add {@link JointMotor} to drive that rotation (rad/s, torque, like
|
|
78
|
+
* {@link RevoluteJoint}), {@link JointLimit} to bound the suspension travel
|
|
79
|
+
* (meters), or {@link JointLinearSpring} for the suspension spring.
|
|
80
|
+
*/
|
|
81
|
+
export declare class WheelJoint extends Joint {
|
|
82
|
+
}
|
|
58
83
|
/**
|
|
59
84
|
* Weld joint: rigidly fixes the two bodies' relative position and orientation
|
|
60
85
|
* (at the reference angle). Add {@link JointLinearSpring} and/or
|
|
@@ -69,11 +94,44 @@ export declare class WeldJoint extends Joint {
|
|
|
69
94
|
*/
|
|
70
95
|
export declare class FilterJoint extends Joint {
|
|
71
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Motor joint: drives body B toward a target pose relative to body A —
|
|
99
|
+
* {@link JointFrame}'s anchors and `referenceAngle` set that target — using a
|
|
100
|
+
* velocity-tracking motor and a positional spring that are both always active.
|
|
101
|
+
* Unlike every other joint type, Box2D has no enable flags for this behaviour,
|
|
102
|
+
* so it does not compose with {@link JointMotor}, {@link JointLimit},
|
|
103
|
+
* {@link JointLinearSpring}, or {@link JointAngularSpring}: it carries its own
|
|
104
|
+
* fields directly, mirroring `DistanceJoint.length`. Common use: kinematic-feel
|
|
105
|
+
* player or platform control that still collides normally.
|
|
106
|
+
*/
|
|
107
|
+
export declare class MotorJoint extends Joint {
|
|
108
|
+
/** Target linear velocity of body B relative to body A (m/s), tracked by the velocity motor. */
|
|
109
|
+
linearVelocity: Vec2;
|
|
110
|
+
/** Maximum force (N) the velocity motor may use to track `linearVelocity`. */
|
|
111
|
+
maxVelocityForce: number;
|
|
112
|
+
/** Target angular velocity of body B relative to body A (rad/s), tracked by the velocity motor. */
|
|
113
|
+
angularVelocity: number;
|
|
114
|
+
/** Maximum torque (N·m) the velocity motor may use to track `angularVelocity`. */
|
|
115
|
+
maxVelocityTorque: number;
|
|
116
|
+
/** Linear spring stiffness (Hz) pulling body B toward the frame's target position. Zero disables the spring's pull, leaving only the velocity motor. */
|
|
117
|
+
linearHertz: number;
|
|
118
|
+
/** Linear spring damping ratio. */
|
|
119
|
+
linearDampingRatio: number;
|
|
120
|
+
/** Maximum force (N) the linear spring may use. */
|
|
121
|
+
maxSpringForce: number;
|
|
122
|
+
/** Angular spring stiffness (Hz) pulling body B toward the frame's reference angle. Zero disables the spring's pull, leaving only the velocity motor. */
|
|
123
|
+
angularHertz: number;
|
|
124
|
+
/** Angular spring damping ratio. */
|
|
125
|
+
angularDampingRatio: number;
|
|
126
|
+
/** Maximum torque (N·m) the angular spring may use. */
|
|
127
|
+
maxSpringTorque: number;
|
|
128
|
+
}
|
|
72
129
|
/**
|
|
73
130
|
* Optional motor feature. Present = motor enabled. Drives the joint toward
|
|
74
|
-
* `targetSpeed`
|
|
75
|
-
*
|
|
76
|
-
* `DistanceJoint
|
|
131
|
+
* `targetSpeed` bounded by `maxForce`. Angular joints (`RevoluteJoint`,
|
|
132
|
+
* `WheelJoint`) interpret this as rad/s and a torque; linear joints
|
|
133
|
+
* (`DistanceJoint`, `PrismaticJoint`) interpret it as m/s and a force. Does not
|
|
134
|
+
* apply to `WeldJoint`, `FilterJoint`, or `MotorJoint`.
|
|
77
135
|
*/
|
|
78
136
|
export declare class JointMotor {
|
|
79
137
|
targetSpeed: number;
|
|
@@ -81,8 +139,9 @@ export declare class JointMotor {
|
|
|
81
139
|
}
|
|
82
140
|
/**
|
|
83
141
|
* Optional limit feature. Present = limit enabled. `lower`/`upper` are an angle
|
|
84
|
-
* range (radians) for `RevoluteJoint` and a length range (meters)
|
|
85
|
-
* `DistanceJoint`.
|
|
142
|
+
* range (radians) for `RevoluteJoint` and a length/translation range (meters)
|
|
143
|
+
* for `DistanceJoint`, `PrismaticJoint`, and `WheelJoint`. Does not apply to
|
|
144
|
+
* `WeldJoint`, `FilterJoint`, or `MotorJoint`.
|
|
86
145
|
*/
|
|
87
146
|
export declare class JointLimit {
|
|
88
147
|
lower: number;
|
|
@@ -91,7 +150,8 @@ export declare class JointLimit {
|
|
|
91
150
|
/**
|
|
92
151
|
* Optional linear spring feature (soft constraint along the joint's linear axis).
|
|
93
152
|
* Present = spring enabled. `hertz` is the stiffness frequency, `dampingRatio`
|
|
94
|
-
* the damping. Applies to `DistanceJoint` and
|
|
153
|
+
* the damping. Applies to `DistanceJoint`, `PrismaticJoint`, `WheelJoint`, and
|
|
154
|
+
* the linear axis of `WeldJoint`.
|
|
95
155
|
*/
|
|
96
156
|
export declare class JointLinearSpring {
|
|
97
157
|
hertz: number;
|
package/joints/components.js
CHANGED
|
@@ -16,10 +16,11 @@
|
|
|
16
16
|
import { Relationship } from "@vworlds/vecs";
|
|
17
17
|
/**
|
|
18
18
|
* Empty umbrella marker for every concrete joint type. A joint entity carries
|
|
19
|
-
* exactly one of `RevoluteJoint`, `DistanceJoint`, `
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* joint type maps to
|
|
19
|
+
* exactly one of `RevoluteJoint`, `DistanceJoint`, `PrismaticJoint`,
|
|
20
|
+
* `WheelJoint`, `WeldJoint`, `FilterJoint`, or `MotorJoint`; each implements
|
|
21
|
+
* `Joint` so queries and systems can match any joint without enumerating every
|
|
22
|
+
* concrete type. Holds the single Box2D handle, since every joint type maps to
|
|
23
|
+
* exactly one `b2JointId`.
|
|
23
24
|
*/
|
|
24
25
|
export class Joint {
|
|
25
26
|
constructor() {
|
|
@@ -49,7 +50,11 @@ export class JointBodyB extends Relationship {
|
|
|
49
50
|
* `referenceAngle` is body B's angle relative to body A at rest (radians).
|
|
50
51
|
*
|
|
51
52
|
* Optional: a missing `JointFrame` anchors both bodies at their origins with a
|
|
52
|
-
* zero reference angle. `DistanceJoint`
|
|
53
|
+
* zero reference angle. `DistanceJoint` and `FilterJoint` ignore
|
|
54
|
+
* `referenceAngle`. `PrismaticJoint` and `WheelJoint` read it instead as their
|
|
55
|
+
* sliding axis's angle in body A's local frame (0 = body A's local x-axis);
|
|
56
|
+
* `PrismaticJoint` additionally locks the bodies' relative angle at that value
|
|
57
|
+
* (like `WeldJoint`), while `WheelJoint` leaves rotation free.
|
|
53
58
|
*/
|
|
54
59
|
export class JointFrame {
|
|
55
60
|
constructor() {
|
|
@@ -78,6 +83,26 @@ export class DistanceJoint extends Joint {
|
|
|
78
83
|
this.length = 1;
|
|
79
84
|
}
|
|
80
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Prismatic joint: locks the two bodies' relative angle (like {@link WeldJoint})
|
|
88
|
+
* but lets body B slide along one axis relative to body A. The axis is body A's
|
|
89
|
+
* local x-axis, rotated by {@link JointFrame.referenceAngle}. Add
|
|
90
|
+
* {@link JointMotor} to drive the slide (m/s, force), {@link JointLimit} to
|
|
91
|
+
* bound the translation (meters), or {@link JointLinearSpring} for a soft rest
|
|
92
|
+
* position along the axis.
|
|
93
|
+
*/
|
|
94
|
+
export class PrismaticJoint extends Joint {
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Wheel joint: like {@link PrismaticJoint} — body B slides along an axis fixed
|
|
98
|
+
* by {@link JointFrame.referenceAngle} — but leaves the bodies' relative
|
|
99
|
+
* rotation completely free (a wheel spinning on its axle) instead of locking
|
|
100
|
+
* it. Add {@link JointMotor} to drive that rotation (rad/s, torque, like
|
|
101
|
+
* {@link RevoluteJoint}), {@link JointLimit} to bound the suspension travel
|
|
102
|
+
* (meters), or {@link JointLinearSpring} for the suspension spring.
|
|
103
|
+
*/
|
|
104
|
+
export class WheelJoint extends Joint {
|
|
105
|
+
}
|
|
81
106
|
/**
|
|
82
107
|
* Weld joint: rigidly fixes the two bodies' relative position and orientation
|
|
83
108
|
* (at the reference angle). Add {@link JointLinearSpring} and/or
|
|
@@ -92,11 +117,47 @@ export class WeldJoint extends Joint {
|
|
|
92
117
|
*/
|
|
93
118
|
export class FilterJoint extends Joint {
|
|
94
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Motor joint: drives body B toward a target pose relative to body A —
|
|
122
|
+
* {@link JointFrame}'s anchors and `referenceAngle` set that target — using a
|
|
123
|
+
* velocity-tracking motor and a positional spring that are both always active.
|
|
124
|
+
* Unlike every other joint type, Box2D has no enable flags for this behaviour,
|
|
125
|
+
* so it does not compose with {@link JointMotor}, {@link JointLimit},
|
|
126
|
+
* {@link JointLinearSpring}, or {@link JointAngularSpring}: it carries its own
|
|
127
|
+
* fields directly, mirroring `DistanceJoint.length`. Common use: kinematic-feel
|
|
128
|
+
* player or platform control that still collides normally.
|
|
129
|
+
*/
|
|
130
|
+
export class MotorJoint extends Joint {
|
|
131
|
+
constructor() {
|
|
132
|
+
super(...arguments);
|
|
133
|
+
/** Target linear velocity of body B relative to body A (m/s), tracked by the velocity motor. */
|
|
134
|
+
this.linearVelocity = { x: 0, y: 0 };
|
|
135
|
+
/** Maximum force (N) the velocity motor may use to track `linearVelocity`. */
|
|
136
|
+
this.maxVelocityForce = 0;
|
|
137
|
+
/** Target angular velocity of body B relative to body A (rad/s), tracked by the velocity motor. */
|
|
138
|
+
this.angularVelocity = 0;
|
|
139
|
+
/** Maximum torque (N·m) the velocity motor may use to track `angularVelocity`. */
|
|
140
|
+
this.maxVelocityTorque = 0;
|
|
141
|
+
/** Linear spring stiffness (Hz) pulling body B toward the frame's target position. Zero disables the spring's pull, leaving only the velocity motor. */
|
|
142
|
+
this.linearHertz = 0;
|
|
143
|
+
/** Linear spring damping ratio. */
|
|
144
|
+
this.linearDampingRatio = 0;
|
|
145
|
+
/** Maximum force (N) the linear spring may use. */
|
|
146
|
+
this.maxSpringForce = 0;
|
|
147
|
+
/** Angular spring stiffness (Hz) pulling body B toward the frame's reference angle. Zero disables the spring's pull, leaving only the velocity motor. */
|
|
148
|
+
this.angularHertz = 0;
|
|
149
|
+
/** Angular spring damping ratio. */
|
|
150
|
+
this.angularDampingRatio = 0;
|
|
151
|
+
/** Maximum torque (N·m) the angular spring may use. */
|
|
152
|
+
this.maxSpringTorque = 0;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
95
155
|
/**
|
|
96
156
|
* Optional motor feature. Present = motor enabled. Drives the joint toward
|
|
97
|
-
* `targetSpeed`
|
|
98
|
-
*
|
|
99
|
-
* `DistanceJoint
|
|
157
|
+
* `targetSpeed` bounded by `maxForce`. Angular joints (`RevoluteJoint`,
|
|
158
|
+
* `WheelJoint`) interpret this as rad/s and a torque; linear joints
|
|
159
|
+
* (`DistanceJoint`, `PrismaticJoint`) interpret it as m/s and a force. Does not
|
|
160
|
+
* apply to `WeldJoint`, `FilterJoint`, or `MotorJoint`.
|
|
100
161
|
*/
|
|
101
162
|
export class JointMotor {
|
|
102
163
|
constructor() {
|
|
@@ -106,8 +167,9 @@ export class JointMotor {
|
|
|
106
167
|
}
|
|
107
168
|
/**
|
|
108
169
|
* Optional limit feature. Present = limit enabled. `lower`/`upper` are an angle
|
|
109
|
-
* range (radians) for `RevoluteJoint` and a length range (meters)
|
|
110
|
-
* `DistanceJoint`.
|
|
170
|
+
* range (radians) for `RevoluteJoint` and a length/translation range (meters)
|
|
171
|
+
* for `DistanceJoint`, `PrismaticJoint`, and `WheelJoint`. Does not apply to
|
|
172
|
+
* `WeldJoint`, `FilterJoint`, or `MotorJoint`.
|
|
111
173
|
*/
|
|
112
174
|
export class JointLimit {
|
|
113
175
|
constructor() {
|
|
@@ -118,7 +180,8 @@ export class JointLimit {
|
|
|
118
180
|
/**
|
|
119
181
|
* Optional linear spring feature (soft constraint along the joint's linear axis).
|
|
120
182
|
* Present = spring enabled. `hertz` is the stiffness frequency, `dampingRatio`
|
|
121
|
-
* the damping. Applies to `DistanceJoint` and
|
|
183
|
+
* the damping. Applies to `DistanceJoint`, `PrismaticJoint`, `WheelJoint`, and
|
|
184
|
+
* the linear axis of `WeldJoint`.
|
|
122
185
|
*/
|
|
123
186
|
export class JointLinearSpring {
|
|
124
187
|
constructor() {
|
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
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/joints/components.ts"],"names":[],"mappings":"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"}
|
package/joints/features.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// destroyed) by the time a callback runs.
|
|
11
11
|
import { Module } from "@vworlds/vecs";
|
|
12
12
|
import { getPhysicsEngine, PhysicsSystemTag, } from "../adapter/engine.js";
|
|
13
|
-
import { DistanceJoint, Joint, JointAngularSpring, JointLimit, JointLinearSpring, JointMotor, RevoluteJoint, WeldJoint, } from "./components.js";
|
|
13
|
+
import { DistanceJoint, Joint, JointAngularSpring, JointLimit, JointLinearSpring, JointMotor, PrismaticJoint, RevoluteJoint, WeldJoint, WheelJoint, } from "./components.js";
|
|
14
14
|
import { PhysicsCoreModule } from "../core/module.js";
|
|
15
15
|
import { jointWithBothBodies } from "./predicates.js";
|
|
16
16
|
export class JointFeaturesModule extends Module {
|
|
@@ -87,6 +87,16 @@ function applyMotor(box2d, joint, jointId, motor) {
|
|
|
87
87
|
box2d.b2DistanceJoint_SetMotorSpeed(jointId, motor.targetSpeed);
|
|
88
88
|
box2d.b2DistanceJoint_SetMaxMotorForce(jointId, motor.maxForce);
|
|
89
89
|
}
|
|
90
|
+
else if (joint instanceof PrismaticJoint) {
|
|
91
|
+
box2d.b2PrismaticJoint_EnableMotor(jointId, true);
|
|
92
|
+
box2d.b2PrismaticJoint_SetMotorSpeed(jointId, motor.targetSpeed);
|
|
93
|
+
box2d.b2PrismaticJoint_SetMaxMotorForce(jointId, motor.maxForce);
|
|
94
|
+
}
|
|
95
|
+
else if (joint instanceof WheelJoint) {
|
|
96
|
+
box2d.b2WheelJoint_EnableMotor(jointId, true);
|
|
97
|
+
box2d.b2WheelJoint_SetMotorSpeed(jointId, motor.targetSpeed);
|
|
98
|
+
box2d.b2WheelJoint_SetMaxMotorTorque(jointId, motor.maxForce);
|
|
99
|
+
}
|
|
90
100
|
}
|
|
91
101
|
function disableMotor(box2d, joint, jointId) {
|
|
92
102
|
if (joint instanceof RevoluteJoint) {
|
|
@@ -95,6 +105,12 @@ function disableMotor(box2d, joint, jointId) {
|
|
|
95
105
|
else if (joint instanceof DistanceJoint) {
|
|
96
106
|
box2d.b2DistanceJoint_EnableMotor(jointId, false);
|
|
97
107
|
}
|
|
108
|
+
else if (joint instanceof PrismaticJoint) {
|
|
109
|
+
box2d.b2PrismaticJoint_EnableMotor(jointId, false);
|
|
110
|
+
}
|
|
111
|
+
else if (joint instanceof WheelJoint) {
|
|
112
|
+
box2d.b2WheelJoint_EnableMotor(jointId, false);
|
|
113
|
+
}
|
|
98
114
|
}
|
|
99
115
|
function applyLimit(box2d, joint, jointId, limit) {
|
|
100
116
|
if (joint instanceof RevoluteJoint) {
|
|
@@ -105,6 +121,14 @@ function applyLimit(box2d, joint, jointId, limit) {
|
|
|
105
121
|
box2d.b2DistanceJoint_EnableLimit(jointId, true);
|
|
106
122
|
box2d.b2DistanceJoint_SetLengthRange(jointId, limit.lower, limit.upper);
|
|
107
123
|
}
|
|
124
|
+
else if (joint instanceof PrismaticJoint) {
|
|
125
|
+
box2d.b2PrismaticJoint_EnableLimit(jointId, true);
|
|
126
|
+
box2d.b2PrismaticJoint_SetLimits(jointId, limit.lower, limit.upper);
|
|
127
|
+
}
|
|
128
|
+
else if (joint instanceof WheelJoint) {
|
|
129
|
+
box2d.b2WheelJoint_EnableLimit(jointId, true);
|
|
130
|
+
box2d.b2WheelJoint_SetLimits(jointId, limit.lower, limit.upper);
|
|
131
|
+
}
|
|
108
132
|
}
|
|
109
133
|
function disableLimit(box2d, joint, jointId) {
|
|
110
134
|
if (joint instanceof RevoluteJoint) {
|
|
@@ -113,6 +137,12 @@ function disableLimit(box2d, joint, jointId) {
|
|
|
113
137
|
else if (joint instanceof DistanceJoint) {
|
|
114
138
|
box2d.b2DistanceJoint_EnableLimit(jointId, false);
|
|
115
139
|
}
|
|
140
|
+
else if (joint instanceof PrismaticJoint) {
|
|
141
|
+
box2d.b2PrismaticJoint_EnableLimit(jointId, false);
|
|
142
|
+
}
|
|
143
|
+
else if (joint instanceof WheelJoint) {
|
|
144
|
+
box2d.b2WheelJoint_EnableLimit(jointId, false);
|
|
145
|
+
}
|
|
116
146
|
}
|
|
117
147
|
function applyLinearSpring(box2d, joint, jointId, spring) {
|
|
118
148
|
if (joint instanceof DistanceJoint) {
|
|
@@ -120,6 +150,16 @@ function applyLinearSpring(box2d, joint, jointId, spring) {
|
|
|
120
150
|
box2d.b2DistanceJoint_SetSpringHertz(jointId, spring.hertz);
|
|
121
151
|
box2d.b2DistanceJoint_SetSpringDampingRatio(jointId, spring.dampingRatio);
|
|
122
152
|
}
|
|
153
|
+
else if (joint instanceof PrismaticJoint) {
|
|
154
|
+
box2d.b2PrismaticJoint_EnableSpring(jointId, true);
|
|
155
|
+
box2d.b2PrismaticJoint_SetSpringHertz(jointId, spring.hertz);
|
|
156
|
+
box2d.b2PrismaticJoint_SetSpringDampingRatio(jointId, spring.dampingRatio);
|
|
157
|
+
}
|
|
158
|
+
else if (joint instanceof WheelJoint) {
|
|
159
|
+
box2d.b2WheelJoint_EnableSpring(jointId, true);
|
|
160
|
+
box2d.b2WheelJoint_SetSpringHertz(jointId, spring.hertz);
|
|
161
|
+
box2d.b2WheelJoint_SetSpringDampingRatio(jointId, spring.dampingRatio);
|
|
162
|
+
}
|
|
123
163
|
else if (joint instanceof WeldJoint) {
|
|
124
164
|
box2d.b2WeldJoint_SetLinearHertz(jointId, spring.hertz);
|
|
125
165
|
box2d.b2WeldJoint_SetLinearDampingRatio(jointId, spring.dampingRatio);
|
|
@@ -129,6 +169,12 @@ function disableLinearSpring(box2d, joint, jointId) {
|
|
|
129
169
|
if (joint instanceof DistanceJoint) {
|
|
130
170
|
box2d.b2DistanceJoint_EnableSpring(jointId, false);
|
|
131
171
|
}
|
|
172
|
+
else if (joint instanceof PrismaticJoint) {
|
|
173
|
+
box2d.b2PrismaticJoint_EnableSpring(jointId, false);
|
|
174
|
+
}
|
|
175
|
+
else if (joint instanceof WheelJoint) {
|
|
176
|
+
box2d.b2WheelJoint_EnableSpring(jointId, false);
|
|
177
|
+
}
|
|
132
178
|
else if (joint instanceof WeldJoint) {
|
|
133
179
|
// A weld has no spring enable flag; zero hertz is a rigid weld.
|
|
134
180
|
box2d.b2WeldJoint_SetLinearHertz(jointId, 0);
|
package/joints/features.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../../src/joints/features.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,iEAAiE;AACjE,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,0CAA0C;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EACb,KAAK,EACL,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../../src/joints/features.ts"],"names":[],"mappings":"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"}
|
package/joints/lifecycle.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { Module } from "@vworlds/vecs";
|
|
15
15
|
import { getPhysicsEngine, PhysicsSystemTag, } from "../adapter/engine.js";
|
|
16
16
|
import { Body } from "../body/components.js";
|
|
17
|
-
import { DistanceJoint, FilterJoint, Joint, JointAngularSpring, JointBodyA, JointBodyB, JointFrame, JointLimit, JointLinearSpring, JointMotor, JointSettings, RevoluteJoint, WeldJoint, } from "./components.js";
|
|
17
|
+
import { DistanceJoint, FilterJoint, Joint, JointAngularSpring, JointBodyA, JointBodyB, JointFrame, JointLimit, JointLinearSpring, JointMotor, JointSettings, MotorJoint, PrismaticJoint, RevoluteJoint, WeldJoint, WheelJoint, } from "./components.js";
|
|
18
18
|
import { withAllocated } from "../adapter/disposal.js";
|
|
19
19
|
import { PhysicsCoreModule } from "../core/module.js";
|
|
20
20
|
import { jointWithBothBodies } from "./predicates.js";
|
|
@@ -180,12 +180,75 @@ function createBox2dJoint(engine, entity, joint, bodyAId, bodyBId) {
|
|
|
180
180
|
return box2d.b2CreateWeldJoint(engine.worldId, def);
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
|
+
if (joint instanceof PrismaticJoint) {
|
|
184
|
+
return withAllocated(box2d.b2DefaultPrismaticJointDef, (def) => {
|
|
185
|
+
applyBase(def.base);
|
|
186
|
+
if (motor !== undefined) {
|
|
187
|
+
def.enableMotor = true;
|
|
188
|
+
def.motorSpeed = motor.targetSpeed;
|
|
189
|
+
def.maxMotorForce = motor.maxForce;
|
|
190
|
+
}
|
|
191
|
+
if (limit !== undefined) {
|
|
192
|
+
def.enableLimit = true;
|
|
193
|
+
def.lowerTranslation = limit.lower;
|
|
194
|
+
def.upperTranslation = limit.upper;
|
|
195
|
+
}
|
|
196
|
+
if (linearSpring !== undefined) {
|
|
197
|
+
def.enableSpring = true;
|
|
198
|
+
def.hertz = linearSpring.hertz;
|
|
199
|
+
def.dampingRatio = linearSpring.dampingRatio;
|
|
200
|
+
}
|
|
201
|
+
return box2d.b2CreatePrismaticJoint(engine.worldId, def);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (joint instanceof WheelJoint) {
|
|
205
|
+
return withAllocated(box2d.b2DefaultWheelJointDef, (def) => {
|
|
206
|
+
applyBase(def.base);
|
|
207
|
+
if (motor !== undefined) {
|
|
208
|
+
def.enableMotor = true;
|
|
209
|
+
def.motorSpeed = motor.targetSpeed;
|
|
210
|
+
def.maxMotorTorque = motor.maxForce;
|
|
211
|
+
}
|
|
212
|
+
if (limit !== undefined) {
|
|
213
|
+
def.enableLimit = true;
|
|
214
|
+
def.lowerTranslation = limit.lower;
|
|
215
|
+
def.upperTranslation = limit.upper;
|
|
216
|
+
}
|
|
217
|
+
if (linearSpring !== undefined) {
|
|
218
|
+
def.enableSpring = true;
|
|
219
|
+
def.hertz = linearSpring.hertz;
|
|
220
|
+
def.dampingRatio = linearSpring.dampingRatio;
|
|
221
|
+
}
|
|
222
|
+
return box2d.b2CreateWheelJoint(engine.worldId, def);
|
|
223
|
+
});
|
|
224
|
+
}
|
|
183
225
|
if (joint instanceof FilterJoint) {
|
|
184
226
|
return withAllocated(box2d.b2DefaultFilterJointDef, (def) => {
|
|
185
227
|
applyBase(def.base);
|
|
186
228
|
return box2d.b2CreateFilterJoint(engine.worldId, def);
|
|
187
229
|
});
|
|
188
230
|
}
|
|
231
|
+
if (joint instanceof MotorJoint) {
|
|
232
|
+
return withAllocated(box2d.b2DefaultMotorJointDef, (def) => {
|
|
233
|
+
applyBase(def.base);
|
|
234
|
+
// Unlike `base.localFrameA.p`, `def.linearVelocity` is a plain value
|
|
235
|
+
// property, not a mutable reference: `.Set(...)` on the getter's result
|
|
236
|
+
// is silently discarded. Assign a real (copied-by-value) `b2Vec2` instead.
|
|
237
|
+
withAllocated(() => new box2d.b2Vec2(joint.linearVelocity.x, joint.linearVelocity.y), (linearVelocity) => {
|
|
238
|
+
def.linearVelocity = linearVelocity;
|
|
239
|
+
});
|
|
240
|
+
def.maxVelocityForce = joint.maxVelocityForce;
|
|
241
|
+
def.angularVelocity = joint.angularVelocity;
|
|
242
|
+
def.maxVelocityTorque = joint.maxVelocityTorque;
|
|
243
|
+
def.linearHertz = joint.linearHertz;
|
|
244
|
+
def.linearDampingRatio = joint.linearDampingRatio;
|
|
245
|
+
def.maxSpringForce = joint.maxSpringForce;
|
|
246
|
+
def.angularHertz = joint.angularHertz;
|
|
247
|
+
def.angularDampingRatio = joint.angularDampingRatio;
|
|
248
|
+
def.maxSpringTorque = joint.maxSpringTorque;
|
|
249
|
+
return box2d.b2CreateMotorJoint(engine.worldId, def);
|
|
250
|
+
});
|
|
251
|
+
}
|
|
189
252
|
return undefined;
|
|
190
253
|
}
|
|
191
254
|
//# sourceMappingURL=lifecycle.js.map
|
package/joints/lifecycle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../src/joints/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../src/joints/lifecycle.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,kFAAkF;AAClF,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,6DAA6D;AAC7D,4EAA4E;AAC5E,iFAAiF;AACjF,gFAAgF;AAChF,gEAAgE;AAEhE,OAAO,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAKjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,EACL,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,sEAAsE;AACtE,6EAA6E;AAC7E,iCAAiC;AACjC,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,EAAW,CAAC;AAC9D,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,EAAW,CAAC;AAE9D,MAAM,OAAO,oBAAqB,SAAQ,MAAM;IACvC,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,uBAAuB,CAAC;aAC/B,IAAI,CAAC,mBAAmB,CAAC;aACzB,KAAK,CAAC,KAAK,CAAC;aACZ,KAAK,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YAC1E,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC;YACF,yEAAyE;YACzE,8EAA8E;YAC9E,4EAA4E;aAC3E,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;YACjC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC;YACF,6EAA6E;aAC5E,MAAM,CACL,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EACpD,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YAChC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC,CACF;aACA,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEzB,gFAAgF;QAChF,KAAK;aACF,MAAM,CAAC,6BAA6B,CAAC;aACrC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC;aACrC,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CACL,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAChE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACxC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC,CACF;aACA,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEzB,0EAA0E;QAC1E,KAAK;aACF,MAAM,CAAC,gCAAgC,CAAC;aACxC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,mBAAmB,CAAC;aACjD,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CACL,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAChE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACtC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC,CACF;aACA,MAAM,CACL,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAChE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACtC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC,CACF;aACA,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;CACF;AAED,SAAS,sBAAsB,CAC7B,MAAqB,EACrB,MAAc,EACd,KAAwB,EACxB,KAAuB,EACvB,KAAuB;IAEvB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAqB,EACrB,MAAc,EACd,KAAwB,EACxB,KAAuB,EACvB,KAAuB;IAEvB,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,kFAAkF;AAClF,SAAS,qBAAqB,CAC5B,MAAqB,EACrB,MAAc,EACd,YAAqB,EACrB,KAAuB;IAEvB,MAAM,aAAa,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,aAAa,EAAE,QAAQ,CAAC;IACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAsB,CAAC;IAC5D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAqB,EACrB,MAAc,EACd,KAAY,EACZ,OAAiB,EACjB,OAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,gBAAgB,IAAI,KAAK,CAAC;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAErD,0EAA0E;IAC1E,yEAAyE;IACzE,oCAAoC;IACpC,MAAM,SAAS,GAAG,CAAC,IAAoB,EAAQ,EAAE;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC,CAAC;IAEF,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,EAAE;YAC5D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;gBACnC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;YACtC,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC7B,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,CAAC;YACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBACxB,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;gBAChC,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;YAChD,CAAC;YACD,OAAO,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,EAAE;YAC5D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBACxB,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gBAC/B,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YAC/C,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC5B,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YAC9B,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;gBACnC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;YACrC,CAAC;YACD,OAAO,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE;YACxD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;gBACrC,GAAG,CAAC,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC;YACrD,CAAC;YACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC;gBACvC,GAAG,CAAC,mBAAmB,GAAG,aAAa,CAAC,YAAY,CAAC;YACvD,CAAC;YACD,OAAO,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,aAAa,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;gBACnC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;YACrC,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;gBACnC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;YACrC,CAAC;YACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBACxB,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gBAC/B,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YAC/C,CAAC;YACD,OAAO,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,GAAG,EAAE,EAAE;YACzD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;gBACnC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;YACtC,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvB,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;gBACnC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;YACrC,CAAC;YACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBACxB,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gBAC/B,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YAC/C,CAAC;YACD,OAAO,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,GAAG,EAAE,EAAE;YACzD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,qEAAqE;YACrE,wEAAwE;YACxE,2EAA2E;YAC3E,aAAa,CACX,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EACtE,CAAC,cAAc,EAAE,EAAE;gBACjB,GAAG,CAAC,cAAc,GAAG,cAAc,CAAC;YACtC,CAAC,CACF,CAAC;YACF,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;YAC9C,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YAC5C,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;YAChD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YACpC,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;YAClD,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;YAC1C,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACtC,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACpD,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YAC5C,OAAO,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/joints/module.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Implements, Module } from "@vworlds/vecs";
|
|
2
2
|
import { BodyModule } from "../body/module.js";
|
|
3
3
|
import { PhysicsCoreModule } from "../core/module.js";
|
|
4
|
-
import { DistanceJoint, FilterJoint, Joint, JointAngularSpring, JointBodyA, JointBodyB, JointFrame, JointLimit, JointLinearSpring, JointMotor, JointSettings, RevoluteJoint, WeldJoint, } from "./components.js";
|
|
4
|
+
import { DistanceJoint, FilterJoint, Joint, JointAngularSpring, JointBodyA, JointBodyB, JointFrame, JointLimit, JointLinearSpring, JointMotor, JointSettings, MotorJoint, PrismaticJoint, RevoluteJoint, WeldJoint, WheelJoint, } from "./components.js";
|
|
5
5
|
import { JointFeaturesModule } from "./features.js";
|
|
6
6
|
import { JointLifecycleModule } from "./lifecycle.js";
|
|
7
7
|
export class JointsModule extends Module {
|
|
@@ -14,8 +14,11 @@ export class JointsModule extends Module {
|
|
|
14
14
|
world.component(Joint);
|
|
15
15
|
world.component(RevoluteJoint);
|
|
16
16
|
world.component(DistanceJoint);
|
|
17
|
+
world.component(PrismaticJoint);
|
|
18
|
+
world.component(WheelJoint);
|
|
17
19
|
world.component(WeldJoint);
|
|
18
20
|
world.component(FilterJoint);
|
|
21
|
+
world.component(MotorJoint);
|
|
19
22
|
world.component(JointFrame);
|
|
20
23
|
world.component(JointMotor);
|
|
21
24
|
world.component(JointLimit);
|
|
@@ -24,8 +27,11 @@ export class JointsModule extends Module {
|
|
|
24
27
|
world.component(JointSettings);
|
|
25
28
|
world.component(RevoluteJoint).set(Implements, { interfaces: [Joint] });
|
|
26
29
|
world.component(DistanceJoint).set(Implements, { interfaces: [Joint] });
|
|
30
|
+
world.component(PrismaticJoint).set(Implements, { interfaces: [Joint] });
|
|
31
|
+
world.component(WheelJoint).set(Implements, { interfaces: [Joint] });
|
|
27
32
|
world.component(WeldJoint).set(Implements, { interfaces: [Joint] });
|
|
28
33
|
world.component(FilterJoint).set(Implements, { interfaces: [Joint] });
|
|
34
|
+
world.component(MotorJoint).set(Implements, { interfaces: [Joint] });
|
|
29
35
|
world.module(JointLifecycleModule);
|
|
30
36
|
world.module(JointFeaturesModule);
|
|
31
37
|
}
|
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,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,EACL,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,aAAa,EACb,SAAS,
|
|
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.40",
|
|
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.40",
|
|
19
19
|
"box2d3-wasm": "^5.2.0"
|
|
20
20
|
},
|
|
21
21
|
"license": "MIT"
|