What the safe API, oxijolt, covers today. The roadmap in the README lists
what is planned next.
- Rigid bodies: static, kinematic and dynamic; box, sphere, cylinder, capsule, tapered capsule and
cylinder (cones too), convex hull, triangle mesh (with a material per triangle and a report of
the triangles too thin to collide with, for static and kinematic bodies), heightfield, plane
(static ground cut to a square), compound and scaled shapes, compound edits at run time
(
MutableCompound); physics materials with user data; forces, sleeping, continuous collision; impulses, kinematic moves, waking and sleeping on demand, sensors, per-body user data, locked axes (allowed degrees of freedom), shape and motion type changes, contact-cache invalidation, buoyancy and drag in a fluid, and the list of every body of a world (PhysicsWorld::body_ids) (guide). - Collision groups: tables of sub groups that say which pairs collide, given to rigid and soft bodies at creation, for ragdolls, chains and vehicles that ignore their driver (guide).
- Scene queries: ray casts, shape casts, collide-shape and point queries (in the world and on a shape), filtered by layer, compound child group and body.
- A character controller (Jolt's
CharacterVirtual) with stair walking, floor sticking and an up direction that can change every update, for walking on a planet, and a character contact listener for moving platforms, ignored contacts, push settings and added, persisted and removed contacts (guide); a humanoid preset,CharacterSettings::humanoid(height, radius). - Wheeled vehicles with suspension, engine, automatic transmission, differentials and anti-roll
bars; tracked vehicles (tanks) with two tracks; motorcycles with a lean controller
(guide); presets for a car and a motorcycle (
WheeledVehicleSettings::car,MotorcycleSettings::bike), and each wheel's pose in world space for drawing (VehicleRef::wheel_world_transform). - Ragdolls from a skeleton, posed, motor-driven or kinematic, with settle detection, and a skeleton mapper to and from a detailed animation skeleton (guide).
- Twelve kinds of constraints with motors, springs and limits: fixed, point, distance, hinge, slider, cone, swing-twist, six-DOF, gear, rack and pinion, pulley and path (guide), with impulse readouts for breakable constraints (guide, scene).
- Soft bodies: cloth, pressurised and volume-preserving bodies, with vertex readout and pinning (guide).
- Contact, activation and soft body contact events in an order that does not depend on the thread count, and a contact listener that changes friction, restitution, mass scales or surface velocity per contact, or rejects contacts before they form (one-way platforms), and Jolt's estimate of each new contact's impulses for impact sounds and damage (guide).
- Saving and restoring a world's state for rollback and replays, into reused buffers without allocating, of every body, the bodies that can move or chosen ones, and restoring chosen bodies only (guide).
- Shape cooking: built shapes with their children and materials saved to bytes and restored, checked against the build that wrote them (guide); meshes and hulls tested on real models from open sources (report).
- A floating origin (
PhysicsWorld::rebase) and optionalf64world positions. - Jolt's jobs on Jolt's thread pool, on Jolt's single-threaded job system
(
WorldSettings::single_threaded) or on your own, such as Rayon (guide). - A comparison with Rapier and Avian on Rapier's stress scenes: speed at 1 to 16 threads, quality, determinism and features, with the scripts and raw results.
- Solver velocity and position steps chosen per world (
WorldSettings::velocity_steps,position_steps), within Jolt's limits (limits). - Several collision steps in one update (
PhysicsWorld::step_with_collision_steps, up toMAX_COLLISION_STEPS) to sub-step a fast scene (limits). - Debug wireframes as line data (feature
debug-renderer); nothing is drawn. - Optional
glam032andmintfeatures with exact conversions forVec3,RVec3andQuat. - The poses of every awake body in one call, in a deterministic order
(
PhysicsWorld::active_body_poses). oxijolt::preludefor the common types, andoxijolt::error::{Error, Result}that wraps the error of every area.- Prebuilt native libraries on x86_64 Windows (MSVC) and Linux (GNU): the build script downloads
the release archive that matches the build, checks it against a sha256 packaged in the crate and
builds from source when none fits (feature
prebuilt, on by default; building). - One set of API rules for names, constructors, settings, errors and derives (api-guidelines.md), and Rust 1.88 as the minimum version, checked in CI.
The playground shows them in thirteen small scenes with a window, and runs the same scenes headless. In its breakable wall, pieces that land hard break again where they hit (scene).
The raw layer, oxijolt-sys, has the joltc functions for all of them.
coverage.md lists every bound feature with the tests that check it, and
the rest of what is not bound yet.