@rzmps/jolt
v2.0.0
Published
Jolt physics engine extension for rzmps.
Maintainers
Readme
@rzmps/jolt
Jolt Physics collision support for @rzmps/rzmps.
@rzmps/jolt allows particles using the @rzmps/rzmps Collision module to collide with
bodies in an existing Jolt physics simulation.
It integrates with
@barclah/jolt-physics,
a WebAssembly/JavaScript binding for Jolt Physics. The package exposes an
asynchronous initializer that returns the Jolt module used to construct the
simulation.
Installation
npm install @rzmps/jolt @barclah/jolt-physics@rzmps/rzmps, three, and @barclah/jolt-physics are peer dependencies.
Usage
Initialize Jolt and create your JoltInterface normally:
import initJolt from "@barclah/jolt-physics";
import { JoltCollisionBackend } from "@rzmps/jolt";
import { Collision } from "@rzmps/rzmps";
const Jolt = await initJolt();
// Configure JoltSettings...
const physicsInterface = new Jolt.JoltInterface(settings);
const collision = new Collision({
backend: new JoltCollisionBackend({
Jolt,
interface: physicsInterface,
objectLayer: 1,
}),
});The Jolt module must be the same initialized module instance used to create
the supplied JoltInterface.
objectLayer determines which Jolt collision-layer rules are used when querying
the world. It defaults to 1.
Custom query filters can also be supplied:
new JoltCollisionBackend({
Jolt,
interface: physicsInterface,
broadPhaseLayerFilter,
objectLayerFilter,
bodyFilter,
shapeFilter,
});The backend does not initialize, step, or otherwise manage the Jolt simulation itself.
Particle impulses
Particles with a non-zero mass can transfer momentum to Jolt rigid bodies when they collide:
initialValues: {
mass: 0.1,
}Mass defaults to 0, so particles do not affect physics bodies unless
explicitly enabled.
Cleanup
Jolt uses native WebAssembly allocations which are not garbage-collected
automatically. Destroy the backend before destroying the associated
JoltInterface:
backend.destroy();
Jolt.destroy(physicsInterface);Any bodies created by the application should also be removed and destroyed
through Jolt's BodyInterface before destroying the interface.
