Skip to content

tenetxyz/box2d-rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

box2d-rs

A native port of Box2D to Rust.

Minimum Rust version: 1.51.0

Ported Box2D version: 2.4.1 commits

Latest release on crates.io Documentation on docs.rs Build status dependency status codecov

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

TODO

  • convert comments from doxygen to rustdoc
  • fix some comments

Known differences

  • 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 in serialize_test directory
  • query/raycast callback class replaced by closure

Usage

Add this to your Cargo.toml:

[dependencies]
box2d-rs = "0.0.3"

If you want serialize/deserialize world with serde:

[dependencies]
box2d-rs = { version = "0.0.3", 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

Crate features

Optionally, the following dependencies can be enabled:

  • serde_support enables serialize/deserialize of world via the serde crate

Documentation

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%