babylon-box3d 0.7.0 → 0.9.0
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/README.md +53 -9
- package/dist/box3dPlugin.d.ts +22 -0
- package/dist/box3dPlugin.d.ts.map +1 -1
- package/dist/box3dPlugin.js +33 -2
- package/dist/box3dPlugin.js.map +1 -1
- package/lib/esm/box3d.d.ts +14 -0
- package/lib/esm/box3d.js +1 -1
- package/lib/esm/box3d.wasm +0 -0
- package/lib/esm-f64/box3d.d.ts +14 -0
- package/lib/esm-f64/box3d.js +1 -1
- package/lib/esm-f64/box3d.wasm +0 -0
- package/lib/esm-f64-threads/box3d.d.ts +14 -0
- package/lib/esm-f64-threads/box3d.js +1 -1
- package/lib/esm-f64-threads/box3d.wasm +0 -0
- package/lib/esm-threads/box3d.d.ts +14 -0
- package/lib/esm-threads/box3d.js +1 -1
- package/lib/esm-threads/box3d.wasm +0 -0
- package/lib/node/box3d.d.ts +14 -0
- package/lib/node/box3d.mjs +1 -1
- package/lib/node/box3d.wasm +0 -0
- package/lib/node-f64/box3d.d.ts +14 -0
- package/lib/node-f64/box3d.mjs +1 -1
- package/lib/node-f64/box3d.wasm +0 -0
- package/lib/node-f64-threads/box3d.d.ts +14 -0
- package/lib/node-f64-threads/box3d.mjs +1 -1
- package/lib/node-f64-threads/box3d.wasm +0 -0
- package/lib/node-threads/box3d.d.ts +14 -0
- package/lib/node-threads/box3d.mjs +1 -1
- package/lib/node-threads/box3d.wasm +0 -0
- package/lib/umd/box3d.umd.js +1 -1
- package/lib/umd/box3d.umd.wasm +0 -0
- package/package.json +1 -1
- package/umd/babylon.box3d.js +47 -1
- package/umd/babylon.box3d.js.map +3 -3
- package/umd/babylon.box3d.min.js +2 -2
- package/umd/babylon.box3d.min.js.map +4 -4
- package/wasm/box3d_shim.c +175 -0
package/README.md
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
# babylon-box3d
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/babylon-box3d)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
3
6
|
[Box3D](https://github.com/erincatto/box3d) physics for Babylon.js. Box3D is Erin Catto's 3D successor to Box2D v3:
|
|
4
7
|
an MIT licensed rigid body engine with a soft step solver, continuous collision, cross platform determinism and
|
|
5
8
|
SIMD. This extension ships the engine compiled to WebAssembly plus `Box3DPlugin`, an implementation of Babylon's
|
|
6
9
|
physics v2 plugin interface. It supports most of the Physics V2 API, so scenes written for the Havok plugin generally
|
|
7
10
|
run on it unchanged; [What is covered](#what-is-covered) lists where it differs.
|
|
8
11
|
|
|
12
|
+
Live demos: https://pryme8.github.io/babylon-box3d/
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
The package is [`babylon-box3d` on npm](https://www.npmjs.com/package/babylon-box3d). It carries the plugin, its
|
|
17
|
+
typings and every build of the WebAssembly engine (single threaded, threaded, double precision), so nothing else needs
|
|
18
|
+
installing besides Babylon:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
npm install babylon-box3d @babylonjs/core
|
|
22
|
+
```
|
|
23
|
+
|
|
9
24
|
```ts
|
|
10
25
|
import { Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
11
26
|
import "@babylonjs/core/Physics/joinedPhysicsEngineComponent"; // adds scene.enablePhysics
|
|
@@ -15,8 +30,8 @@ const box3d = await Box3D();
|
|
|
15
30
|
scene.enablePhysics(new Vector3(0, -9.81, 0), new Box3DPlugin(true, box3d));
|
|
16
31
|
```
|
|
17
32
|
|
|
18
|
-
Script tags (Playground, plain HTML). A complete Playground scene
|
|
19
|
-
[the documentation page](docs/communityExtensions/box3dPhysics.md#playground):
|
|
33
|
+
Script tags (Playground, plain HTML) load the same package from unpkg, no install needed. A complete Playground scene
|
|
34
|
+
is in [the documentation page](docs/communityExtensions/box3dPhysics.md#playground):
|
|
20
35
|
|
|
21
36
|
```html
|
|
22
37
|
<script src="https://cdn.babylonjs.com/babylon.js"></script>
|
|
@@ -36,9 +51,9 @@ Script tags (Playground, plain HTML). A complete Playground scene is in
|
|
|
36
51
|
|
|
37
52
|
Like Havok's UMD build, this runs from plain files in a folder. Download these three and put them next to your page:
|
|
38
53
|
|
|
39
|
-
- [box3d.umd.js](https://unpkg.com/babylon-box3d
|
|
40
|
-
- [box3d.umd.wasm](https://unpkg.com/babylon-box3d
|
|
41
|
-
- [babylon.box3d.min.js](https://unpkg.com/babylon-box3d
|
|
54
|
+
- [box3d.umd.js](https://unpkg.com/babylon-box3d/lib/umd/box3d.umd.js), the WebAssembly loader (global `Box3D`)
|
|
55
|
+
- [box3d.umd.wasm](https://unpkg.com/babylon-box3d/lib/umd/box3d.umd.wasm), the engine, found next to the loader
|
|
56
|
+
- [babylon.box3d.min.js](https://unpkg.com/babylon-box3d/umd/babylon.box3d.min.js), the plugin (global `BABYLONBOX3D`)
|
|
42
57
|
|
|
43
58
|
Then load them after `babylon.js` with the same three script tags as above, pointing at the local files. The folder
|
|
44
59
|
has to be opened through a web server rather than by double clicking the page: browsers refuse to load a `.wasm` from
|
|
@@ -290,8 +305,31 @@ joint above.
|
|
|
290
305
|
`SIMULATION_CONTROLLED` hands it back to the solver, asleep until something wakes it.
|
|
291
306
|
|
|
292
307
|
Box3D extras on the plugin: `explode`, `createWheelJoint` (suspension, steering, spin motor), `createParallelJoint`,
|
|
293
|
-
`setShapeFilterGroup`, `setShapeRollingResistance`, `setAllowFastRotation`, `getStats`.
|
|
294
|
-
is not supported yet, it depends on Havok internals.
|
|
308
|
+
`setShapeFilterGroup`, `setShapeRollingResistance`, `setAllowFastRotation`, `setBodyClipPlane`, `getStats`.
|
|
309
|
+
`PhysicsCharacterController` is not supported yet, it depends on Havok internals.
|
|
310
|
+
|
|
311
|
+
**Clip planes (portals).** `plugin.setBodyClipPlane(body, plane, collideMask?)` drops every contact point of the body
|
|
312
|
+
on the plane's positive side, the side Babylon's own clip planes hide, so the plane that hides the part of a mesh gone
|
|
313
|
+
into a portal also lets that part pass through the wall and whatever else is behind it, while the rest of the body
|
|
314
|
+
keeps colliding. Each point is tested on its own, against convex shapes, meshes and height fields alike, inside the
|
|
315
|
+
step with no callback into JavaScript, and continuous collision ignores hits there too. Points within 1 cm (twice
|
|
316
|
+
Box3D's linear slop) in front of the plane count as past it, so a surface lying in the plane is open as well, and a
|
|
317
|
+
speculative point, made while the surfaces are still apart, is also tested where it meets the other shape, so a body
|
|
318
|
+
falling fast into a portal does not stop on the surface first. `collideMask`
|
|
319
|
+
limits it to shapes whose membership mask meets it: leave the sides of the opening out and a body hanging over its
|
|
320
|
+
edge rests on them. `null` stops clipping, and `getBodyClipPlane` reads it back.
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
import { Plane } from "@babylonjs/core/Maths/math.plane";
|
|
324
|
+
|
|
325
|
+
// a portal on a wall, its normal pointing out of the wall: clip what is past it
|
|
326
|
+
const clip = Plane.FromPositionAndNormal(portalCenter, portalNormal.negate());
|
|
327
|
+
plugin.setBodyClipPlane(body, clip, ~PORTAL_RIM >>> 0);
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
`?demo=portal` is a working pair: a floor portal and a wall portal, long planks hanging half through, teleporting with
|
|
331
|
+
their velocity turned once their centre crosses, and the rim built from boxes on their own category
|
|
332
|
+
([demo/src/portal.ts](demo/src/portal.ts)). Havok has no equivalent.
|
|
295
333
|
|
|
296
334
|
**Beyond Babylon's API.** A simulation that drives the module directly, without Babylon, also has these raw exports
|
|
297
335
|
(typed in `lib/*/box3d.d.ts`, tested in `test/wasm.*.test.ts`):
|
|
@@ -301,12 +339,15 @@ is not supported yet, it depends on Havok internals.
|
|
|
301
339
|
| `bx_Body_GetContacts`, `bx_BodyContactsPtr` | every touching manifold on a body as the body feels it: the shapes on both sides by index, the normal it is pushed along, friction and twist, and per point the position, separation, impulses, approach speed, and the triangle and material met on a mesh or height field |
|
|
302
340
|
| `bx_Body_SetShapeHull`, `bx_Body_TranslateShape`, `bx_Body_SetShapeFilter`, `bx_Body_RemoveShape`, `bx_Body_HasShape`, `bx_Body_GetShapeInfo` | per-shape handles: change one of a body's shapes and reset only its contacts, where `bx_Body_SetShape` rebuilds them all. A shape keeps its index for the body's lifetime, removed or not, and contact events (two floats appended) and ray hits (the last float) carry it |
|
|
303
341
|
| `bx_Body_SetShapeCrush`, `bx_Body_GetShapeCrush` | crushable contacts, see [Patches to Box3D](#patches-to-box3d) |
|
|
342
|
+
| `bx_Body_SetClipPlane`, `bx_Body_GetClipPlane` | clip planes, see `setBodyClipPlane` above and [Patches to Box3D](#patches-to-box3d) |
|
|
304
343
|
| `bx_World_CastShape`, `bx_World_OverlapShape`, `bx_OverlapsPtr` | a convex point cloud with a radius, from an origin given in doubles, cast along a translation or tested for overlap. The cast's fraction is where the surfaces touch: Box3D stops its own casts a linear slop short of that, and the shim moves the fraction on |
|
|
305
344
|
| `bx_Body_GetShapeGeometry`, `bx_GeometryPtr` | a shape's sphere, capsule or hull points, in the body's frame |
|
|
306
345
|
| `bx_Body_SetFeatureKey`, `bx_Body_GetFeatureKey`, `bx_Body_GetShapeFeatureKey` | canonical pairs, see [Patches to Box3D](#patches-to-box3d): a body's key (1 to 2^44 - 1, as a double) gives each of its shapes the key `(key << 20) \| index`, by which new contacts are made, continuous collision sweeps, and a closest ray or shape cast breaks a tie (then by body slot and shape index) |
|
|
307
346
|
| `bx_ShapeDesc_GetGeometryBytes`, `bx_ShapeDesc_GetGeometryByteCount`, `bx_ShapeDesc_CreateMeshFromBytes`, `bx_ShapeDesc_CreateHeightFieldFromBytes` | a mesh's or height field's data as bytes, and a description made from a copy of them. Box3D keeps either as one block addressed by offsets, with no pointer in it, so an instance with no world (a worker's) can build the geometry and another instance of the same build copies the block in as it is: nothing in it needs fixing up. The import checks the version, the byte count and that every array lies inside the block, and costs a copy |
|
|
308
347
|
| `bx_IsDoublePrecision`, `bx_ScratchF64`, `bx_RayHitPointsF64Ptr`, `bx_BodyContactPointsF64Ptr` | positions in doubles, see [Double precision](#double-precision) |
|
|
309
348
|
| `bx_ShapeDesc_SetInvokeContactCreation`, `bx_ShapeDesc_GetInvokeContactCreation`, `bx_World_GetStackUsed` | Box3D's `invokeContactCreation` per description, on by default. Off, a static shape never enters the broad phase's move buffer: the first step reserves no pair slots for it (486 bytes a static, which the step stack then keeps for good) and it is paired when a moving shape finds it, so a static made late pairs on the same step as one made at the start. Off on a container, it is off for every shape made from its children. `bx_World_GetStackUsed` says the most the step stack has held |
|
|
349
|
+
| `bx_World_EnableTimer`, `bx_World_IsTimerEnabled` | Box3D's clock for one world's steps, on by default, see [Patches to Box3D](#patches-to-box3d) |
|
|
350
|
+
| `bx_Body_SetAabbMargin`, `bx_Body_GetAabbMargin` | the fat AABB margin of a body's shapes, see [Patches to Box3D](#patches-to-box3d) |
|
|
310
351
|
|
|
311
352
|
Box3D creates shapes on bodies while Babylon creates shapes standalone, so a `PhysicsShape` is a description that
|
|
312
353
|
is instantiated on every body it is set on. Changing its filter masks, material or density is applied to the live
|
|
@@ -418,9 +459,12 @@ stays exactly upstream's commit, and a change to the patch set rebuilds every ob
|
|
|
418
459
|
| `0003-crushable-contacts.patch` | `b3Shape_SetCrushLimit(shape, maxForce, plastic)`, `b3Shape_GetCrushLimit` and `b3Shape_IsCrushPlastic` (shim: `bx_Body_SetShapeCrush(body, i, maxForce, plastic)`, `bx_Body_GetShapeCrush`): each contact of a crushable shape pushes with at most `maxForce` newtons, the smaller of its two shapes' limits, shared between its points, so a body meeting something rigid decelerates over a distance instead of stopping within a step. A plastic contact gets no push-out and no restitution, so it keeps the overlap it reaches. Crushable contacts are routed to the scalar solver path, where each point's accumulated impulse is clamped; a point still apart pushes only for the part of the substep after the surfaces meet. Rigid contacts are untouched, bit for bit. The limit may change every step, and a shape turning crushable or rigid keeps its contacts. |
|
|
419
460
|
| `0004-hull-builder-fails-instead-of-spinning.patch` | `b3CreateHull` returns NULL where it used to loop forever. A flat or nearly flat point set a few metres from the origin (a crushed panel, a slab) can leave the builder's half-edge mesh inconsistent: a merge leaves two faces that share every edge and `b3HullBuilder_ConnectFaces` walks round them without end, or a face's ring stops closing and `b3NewellPlane` does. Such a call never returned and locked whatever made it. Now every walk over the mesh counts its steps against the edge pool, the merge loops count merges against the face pool, and the horizon's stack and edge list check their capacity, which only asserts guarded before. None of these limits can be reached by a consistent mesh, and a build that reaches one returns NULL (shim: `bx_ShapeDesc_CreateHull` and `bx_Body_SetShapeHull` return 0, and the plugin throws for a `CONVEX_HULL` shape). Hulls that were built before are built the same, bit for bit. |
|
|
420
461
|
| `0005-canonical-pairs.patch` | `b3ShapeDef::featureKey`, `b3Shape_SetFeatureKey` and `b3Shape_GetFeatureKey` (shim: `bx_Body_SetFeatureKey`): a moved proxy's new pairs are sorted by the other shape's feature key, then child index, then shape id, before their contacts are made. Contact ids, and with them the order the solver meets contacts, came from the order the static tree gave pairs, which is a function of every insertion and removal it has seen, so the same statics in reach could collide differently depending on how and when the world was built. A moved proxy's pairs are no longer dropped past sixteen: if the step's pair slots run out, the pairs are found again with room for all of them. Continuous collision gathers its candidates, sorts them by key and sweeps them in that order, since each sweep is clipped by the ones before it. Shapes without a key fall back to their ids, so a world without keys behaves as before except where a step's new pairs came out of the tree in another order. |
|
|
462
|
+
| `0006-manifold-callback.patch` | `b3World_SetManifoldCallback(world, fcn, context)`: a `b3ManifoldFcn` called with all of a contact's manifolds after they are computed, mesh and height field contacts included, when either shape has pre-solve events on. It may remove points and manifolds and returns how many manifolds are left; a manifold left with no points is dropped and zero disables the contact for the step. Box3D's own pre-solve callback only sees the first point of the first manifold and is never called for meshes or height fields. While the callback is set it replaces the pre-solve callback for these contacts, which still runs for continuous collision, and these contacts are not recycled, so the callback sees every step. The shim uses it for clip planes (`bx_Body_SetClipPlane`); shapes without pre-solve events are untouched, bit for bit. |
|
|
463
|
+
| `0007-timer-can-be-turned-off.patch` | `b3EnableTimer` and `b3IsTimerEnabled` (shim: `bx_World_EnableTimer(world, flag)` and `bx_World_IsTimerEnabled`, which set it around each of that world's steps): Box3D's clock, on by default. A step reads it dozens of times, only to time itself for the profile and to log stalls, and in WebAssembly each read is a call out to JavaScript that allocates. Off, `b3GetTicks` and the `b3GetMilliseconds` functions return zero without reading it: a step makes no call out, its timings (`getStats`) read zero and no stall is logged. Nothing in the simulation reads the clock, so a world steps the same, bit for bit, either way. |
|
|
464
|
+
| `0008-body-aabb-margin.patch` | `b3Body_SetAabbMargin(body, margin)` and `b3Body_GetAabbMargin` (shim: `bx_Body_SetAabbMargin`, `bx_Body_GetAabbMargin`): how far each of a body's shapes may move past its bounds before the broad phase moves its proxy, in meters. Zero, the default, leaves each shape its own margin, an eighth of its extent up to `B3_MAX_AABB_MARGIN` (5 cm). A fast body of many small shapes, such as a car of a hundred crush chunks at 25 m/s and 480 Hz, leaves every shape's bounds every step, and each proxy moved queries the trees again and the dynamic tree is rebuilt round it: about a third of such a step. A wider margin moves the proxies seldom and finds pairs sooner. A body that touches nothing steps the same, bit for bit; one that meets something can touch a step sooner, since a shape within its speculative reach of another touches as soon as their pair is there, and at the shape's own margin the pair is found the step after its bounds reach the other's. A shape's fat AABB takes a new margin the next time the shape leaves it. |
|
|
421
465
|
|
|
422
|
-
`test/wasm.patches.test.ts` covers 0001 and 0002, `test/wasm.crush.test.ts` covers 0003, `test/wasm.hulls.test.ts` covers 0004
|
|
423
|
-
|
|
466
|
+
`test/wasm.patches.test.ts` covers 0001 and 0002, `test/wasm.crush.test.ts` covers 0003, `test/wasm.hulls.test.ts` covers 0004,
|
|
467
|
+
`test/wasm.canonicalPairs.test.ts` covers 0005, `test/wasm.clipPlane.test.ts` covers 0006, `test/wasm.timer.test.ts` covers 0007 and `test/wasm.aabbMargin.test.ts` covers 0008.
|
|
424
468
|
None has been offered upstream.
|
|
425
469
|
|
|
426
470
|
**Crush accuracy.** Against a constant limit the crush depth lands within 1.5% of the continuous answer at 480 Hz
|
package/dist/box3dPlugin.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { type PhysicsShape } from "@babylonjs/core/Physics/v2/physicsShape.js";
|
|
|
9
9
|
import { BoundingBox } from "@babylonjs/core/Culling/boundingBox.js";
|
|
10
10
|
import { type TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
|
11
11
|
import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
12
|
+
import { Plane } from "@babylonjs/core/Maths/math.plane.js";
|
|
12
13
|
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
13
14
|
import { type Nullable } from "@babylonjs/core/types.js";
|
|
14
15
|
/** The cell material that cuts a hole in a height field: nothing collides with the cell and rays pass through it. */
|
|
@@ -323,6 +324,27 @@ export declare class Box3DPlugin implements IPhysicsEnginePluginV2 {
|
|
|
323
324
|
getCollisionEndedObservable(body: PhysicsBody, instanceIndex?: number): Observable<IBasePhysicsCollisionEvent>;
|
|
324
325
|
setGravityFactor(body: PhysicsBody, factor: number, instanceIndex?: number): void;
|
|
325
326
|
getGravityFactor(body: PhysicsBody, instanceIndex?: number): number;
|
|
327
|
+
/**
|
|
328
|
+
* Clips the body's collisions with a world space plane: every contact point on the plane's positive side, where
|
|
329
|
+
* `plane.signedDistanceTo(point) > 0`, is dropped, the side Babylon's own clip planes discard. So the plane that
|
|
330
|
+
* hides the part of a mesh past a portal also lets that part pass through whatever is behind the portal, while the
|
|
331
|
+
* rest of the body keeps colliding. Points within 1 cm (twice Box3D's linear slop) in front of the plane are dropped
|
|
332
|
+
* too, so a surface lying in the plane, such as the wall the portal is on, is passed through as well. Box3D
|
|
333
|
+
* extension, Havok has no equivalent.
|
|
334
|
+
*
|
|
335
|
+
* Each contact point is tested on its own, mesh and height field contacts included, inside the step: there is no
|
|
336
|
+
* callback into JavaScript. A speculative point, made while the surfaces are still apart, is also tested where it
|
|
337
|
+
* meets the other shape, so a body falling fast into a portal does not stop on the surface first. Continuous
|
|
338
|
+
* collision tests its time of impact point the same way.
|
|
339
|
+
* @param plane the plane in world space, or null to stop clipping. It is copied, so change it by calling this again.
|
|
340
|
+
* @param collideMask only contacts with shapes whose membership mask meets this one are clipped. Default all.
|
|
341
|
+
*/
|
|
342
|
+
setBodyClipPlane(body: PhysicsBody, plane: Nullable<Plane>, collideMask?: number, instanceIndex?: number): void;
|
|
343
|
+
/** The body's clip plane and collide mask from {@link setBodyClipPlane}, or null when it has none. */
|
|
344
|
+
getBodyClipPlane(body: PhysicsBody, instanceIndex?: number): Nullable<{
|
|
345
|
+
plane: Plane;
|
|
346
|
+
collideMask: number;
|
|
347
|
+
}>;
|
|
326
348
|
private _registerShape;
|
|
327
349
|
private _withFloatBuffer;
|
|
328
350
|
/** Copies bytes into the module for the length of `fn`; with no bytes, `fn` gets a null pointer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"box3dPlugin.d.ts","sourceRoot":"","sources":["../src/box3dPlugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"box3dPlugin.d.ts","sourceRoot":"","sources":["../src/box3dPlugin.ts"],"names":[],"mappings":"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"}
|
package/dist/box3dPlugin.js
CHANGED
|
@@ -6,6 +6,7 @@ import { BoundingBox } from "@babylonjs/core/Culling/boundingBox.js";
|
|
|
6
6
|
import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
7
7
|
import { InstancedMesh } from "@babylonjs/core/Meshes/instancedMesh.js";
|
|
8
8
|
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
9
|
+
import { Plane } from "@babylonjs/core/Maths/math.plane.js";
|
|
9
10
|
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
10
11
|
/** The cell material that cuts a hole in a height field: nothing collides with the cell and rays pass through it. */
|
|
11
12
|
export const BOX3D_HEIGHT_FIELD_HOLE = 255;
|
|
@@ -314,14 +315,14 @@ const RequiredNativeExports = [
|
|
|
314
315
|
"_bx_Body_GetAngularDamping", "_bx_Body_GetAngularVelocity", "_bx_Body_GetGravityScale", "_bx_Body_GetLinearDamping",
|
|
315
316
|
"_bx_Body_GetLinearVelocity", "_bx_Body_GetMassData", "_bx_Body_GetTransform", "_bx_Body_SetAngularDamping", "_bx_Body_SetAngularVelocity",
|
|
316
317
|
"_bx_Body_SetAwake", "_bx_Body_SetEventFlags", "_bx_Body_SetGravityScale", "_bx_Body_SetLinearDamping", "_bx_Body_SetLinearVelocity",
|
|
317
|
-
"_bx_Body_SetMassDataFull", "_bx_Body_SetMotionLocks", "_bx_Body_SetShape", "_bx_Body_SetTargetTransform", "_bx_Body_SetTransform",
|
|
318
|
+
"_bx_Body_GetClipPlane", "_bx_Body_SetClipPlane", "_bx_Body_SetMassDataFull", "_bx_Body_SetMotionLocks", "_bx_Body_SetShape", "_bx_Body_SetTargetTransform", "_bx_Body_SetTransform",
|
|
318
319
|
"_bx_Body_SetType", "_bx_Body_SyncShapeDesc", "_bx_ComputeAlignedFrameB", "_bx_ContactEventsPtr", "_bx_CreateBody", "_bx_CreateJoint",
|
|
319
320
|
"_bx_CreateWorld", "_bx_DebugIndexCount", "_bx_DebugIndicesPtr", "_bx_DebugPositionsPtr", "_bx_DestroyBody", "_bx_DestroyJoint",
|
|
320
321
|
"_bx_DestroyWorld", "_bx_GetMaxWorkers", "_bx_GetRejectedSlotCount", "_bx_Joint_EnableLimit", "_bx_Joint_EnableMotor",
|
|
321
322
|
"_bx_Joint_EnableSpring", "_bx_Joint_IsValid",
|
|
322
323
|
"_bx_Joint_SetCollideConnected", "_bx_Joint_SetConstraintTuning", "_bx_Joint_SetLimits", "_bx_Joint_SetMaxMotorForce",
|
|
323
324
|
"_bx_Joint_SetMotorSpeed", "_bx_Joint_SetSphericalMotor", "_bx_Joint_SetSphericalTarget", "_bx_Joint_SetSpring", "_bx_Joint_SetTarget",
|
|
324
|
-
"_bx_Joint_SetTwistLimits", "_bx_Joint_UpdateMotorFrame", "_bx_Joint_WakeBodies", "_bx_MoveEventsPtr", "_bx_RayHitsPtr", "_bx_Scratch",
|
|
325
|
+
"_bx_Joint_SetTwistLimits", "_bx_Joint_UpdateMotorFrame", "_bx_Joint_WakeBodies", "_bx_MoveEventsPtr", "_bx_RayHitsPtr", "_bx_Scratch", "_bx_ScratchF64",
|
|
325
326
|
"_bx_SensorEventsPtr", "_bx_ShapeDesc_AddChild", "_bx_ShapeDesc_BuildDebugGeometry", "_bx_ShapeDesc_CreateBox", "_bx_ShapeDesc_CreateCapsule",
|
|
326
327
|
"_bx_ShapeDesc_CreateContainer", "_bx_ShapeDesc_CreateCylinder", "_bx_ShapeDesc_CreateHeightField", "_bx_ShapeDesc_CreateHull",
|
|
327
328
|
"_bx_ShapeDesc_CreateMesh", "_bx_ShapeDesc_CreateSphere", "_bx_ShapeDesc_Destroy", "_bx_ShapeDesc_GetAABB", "_bx_ShapeDesc_GetCategoryBits",
|
|
@@ -1119,6 +1120,36 @@ export class Box3DPlugin {
|
|
|
1119
1120
|
getGravityFactor(body, instanceIndex) {
|
|
1120
1121
|
return this._b3._bx_Body_GetGravityScale(this._getPluginReference(body, instanceIndex).slot);
|
|
1121
1122
|
}
|
|
1123
|
+
/**
|
|
1124
|
+
* Clips the body's collisions with a world space plane: every contact point on the plane's positive side, where
|
|
1125
|
+
* `plane.signedDistanceTo(point) > 0`, is dropped, the side Babylon's own clip planes discard. So the plane that
|
|
1126
|
+
* hides the part of a mesh past a portal also lets that part pass through whatever is behind the portal, while the
|
|
1127
|
+
* rest of the body keeps colliding. Points within 1 cm (twice Box3D's linear slop) in front of the plane are dropped
|
|
1128
|
+
* too, so a surface lying in the plane, such as the wall the portal is on, is passed through as well. Box3D
|
|
1129
|
+
* extension, Havok has no equivalent.
|
|
1130
|
+
*
|
|
1131
|
+
* Each contact point is tested on its own, mesh and height field contacts included, inside the step: there is no
|
|
1132
|
+
* callback into JavaScript. A speculative point, made while the surfaces are still apart, is also tested where it
|
|
1133
|
+
* meets the other shape, so a body falling fast into a portal does not stop on the surface first. Continuous
|
|
1134
|
+
* collision tests its time of impact point the same way.
|
|
1135
|
+
* @param plane the plane in world space, or null to stop clipping. It is copied, so change it by calling this again.
|
|
1136
|
+
* @param collideMask only contacts with shapes whose membership mask meets this one are clipped. Default all.
|
|
1137
|
+
*/
|
|
1138
|
+
setBodyClipPlane(body, plane, collideMask = 0xffffffff, instanceIndex) {
|
|
1139
|
+
this._applyToBodyOrInstances(body, (data) => plane
|
|
1140
|
+
? this._b3._bx_Body_SetClipPlane(data.slot, 1, plane.normal.x, plane.normal.y, plane.normal.z, plane.d, collideMask >>> 0)
|
|
1141
|
+
: this._b3._bx_Body_SetClipPlane(data.slot, 0, 0, 0, 0, 0, 0), instanceIndex);
|
|
1142
|
+
}
|
|
1143
|
+
/** The body's clip plane and collide mask from {@link setBodyClipPlane}, or null when it has none. */
|
|
1144
|
+
getBodyClipPlane(body, instanceIndex) {
|
|
1145
|
+
this._b3._bx_Body_GetClipPlane(this._getPluginReference(body, instanceIndex).slot);
|
|
1146
|
+
const at = this._b3._bx_ScratchF64() >> 3;
|
|
1147
|
+
const f64 = this._b3.HEAPF64;
|
|
1148
|
+
if (!f64[at]) {
|
|
1149
|
+
return null;
|
|
1150
|
+
}
|
|
1151
|
+
return { plane: new Plane(f64[at + 1], f64[at + 2], f64[at + 3], f64[at + 4]), collideMask: f64[at + 5] >>> 0 };
|
|
1152
|
+
}
|
|
1122
1153
|
// ----------------------------------------------------------------------------------------
|
|
1123
1154
|
// shapes
|
|
1124
1155
|
// ----------------------------------------------------------------------------------------
|