A native port of Box2D to Rust.
Minimum Rust version: 1.56.0 (1.61 for dev-dependecies)
When porting, I pursued the following goals
- Keep file system structure as is for simpler further updates
- Keep all identifiers names(except case convertion) and code order(except some specific cases)
- Store all new not original code in separate files
- No unsafe code
- convert comments from doxygen to rustdoc
- fix some comments
- dump() function replaced by serde library (optional dependency)
- comments converted from doxygen to rustdoc
- two additional buttons in the testbed's UI for serialize/deserialize (available only with
serde_support
feature). Serialized data available inserialize_test
directory - query/raycast callback class replaced by closure
Add this to your Cargo.toml
:
[dependencies]
box2d-rs = "0.0.4"
If you want serialize/deserialize world with serde:
[dependencies]
box2d-rs = { version = "0.0.4", features = ["serde_support"] }
Compiling and running the testbed from source
Build and run testbed in debug mode:
# At the reposity root
cargo build --examples --tests
cargo run --example testbed
In debug mode with serde_support
:
cargo build --examples --tests --features serde_support
cargo run --example testbed --features serde_support
Release version with serde_support
:
cargo build --examples --tests --release --features serde_support
cargo run --example testbed --release --features serde_support
Run tests
cargo test --features serde_support
Optionally, the following dependencies can be enabled:
serde_support
enables serialize/deserialize of world via theserde
crate
- You can look at the testbed for examples.
- Rust generated docs
- Manual
- Discord