LiquidFun Rust

Rust bindings for LiquidFun.

Usage

First, add the following to your Cargo.toml:

toml [dependencies] liquidfun = "*"

Next, add this to your crate root:

rust extern crate liquidfun;

Example

```rust extern crate liquidfun;

use liquidfun::box2d::common::math::; use liquidfun::box2d::dynamics::world::;

[test]

fn hello_world() {

// Define the gravity vector.
let gravity = Vec2::new(0.0, -10.0);

// Construct a world object, which will hold and simulate the rigid bodies.
let mut world = World::new(&gravity);
assert_eq!(gravity, world.get_gravity());

}

```

Status

The LiquidFun Hello World example compiles and runs. More bindings will be added as needed by projects that depend on LiquidFun Rust.

User Data

Some objects in LiquidFun allow you to attach your own data to them. These are bound as usize. You can store raw pointers to your data there.

ground_body_def.user_data = &Vec2::new(6.0, 66.0) as *const Vec2 as usize;

Passing structs by value from C++ to Rust

```cpp // C++ struct b2Vec2 { b2Vec2() {} ... float32 x, y; };

// new C struct typedef struct cb2Vec2 { float32 x, y; } cb2Vec2; ```

```cpp cb2Vec2* cast(b2Vec2* v) { return reinterpretcast(v); }

c_b2Vec2 sendStructFromCppToRustByValue() { b2Vec2 tmp; return *cast(&tmp); } ```

Thank You

Erin Catto for Box2D

Google for LiquidFun

Nicolas Silva for box2d.rs