rubullet 0.1.0-alpha-3

Rust interface to the Bullet Physics SDK simmilar to PyBullet
Documentation
use anyhow::Result;
use rubullet::*;
fn draw_aabb(a: Aabb, client: &mut PhysicsClient) {
    let to = [a.max.x, a.min.y, a.min.z];
    client
        .add_user_debug_line(
            a.min,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 0., 0.],
                ..Default::default()
            },
        )
        .unwrap();
    let to = [a.min.x, a.max.y, a.min.z];
    client
        .add_user_debug_line(
            a.min,
            to,
            AddDebugLineOptions {
                line_color_rgb: [0., 1., 0.],
                ..Default::default()
            },
        )
        .unwrap();
    let to = [a.min.x, a.min.y, a.max.z];
    client
        .add_user_debug_line(
            a.min,
            to,
            AddDebugLineOptions {
                line_color_rgb: [0., 0., 1.],
                ..Default::default()
            },
        )
        .unwrap();

    let from = [a.min.x, a.min.y, a.max.z];
    let to = [a.min.x, a.max.y, a.max.z];
    client
        .add_user_debug_line(
            from,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();
    let to = [a.max.x, a.min.y, a.max.z];
    client
        .add_user_debug_line(
            from,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();
    let from = [a.max.x, a.min.y, a.min.z];

    client
        .add_user_debug_line(
            from,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();

    let to = [a.max.x, a.max.y, a.min.z];
    client
        .add_user_debug_line(
            from,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();
    let from = [a.max.x, a.max.y, a.min.z];
    let to = [a.min.x, a.max.y, a.min.z];
    client
        .add_user_debug_line(
            from,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();

    let from = [a.min.x, a.max.y, a.min.z];
    let to = [a.min.x, a.max.y, a.max.z];
    client
        .add_user_debug_line(
            from,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();

    client
        .add_user_debug_line(
            a.max,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();

    let to = [a.max.x, a.min.y, a.max.z];
    client
        .add_user_debug_line(
            a.max,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();
    let to = [a.max.x, a.max.y, a.min.z];
    client
        .add_user_debug_line(
            a.max,
            to,
            AddDebugLineOptions {
                line_color_rgb: [1., 1., 1.],
                ..Default::default()
            },
        )
        .unwrap();
}
fn main() -> Result<()> {
    let mut physics_client = PhysicsClient::connect(Mode::Gui)?;
    physics_client.set_additional_search_path("../rubullet-sys/bullet3/libbullet3/data")?;
    let r2d2 = physics_client.load_urdf("r2d2.urdf", None)?;
    let aabb = physics_client.get_aabb(r2d2, None)?;
    println!("{:?}", aabb);
    draw_aabb(aabb, &mut physics_client);
    for i in 0..physics_client.get_num_joints(r2d2) {
        let aabb = physics_client.get_aabb(r2d2, i)?;
        println!("{:?}", aabb);
        draw_aabb(aabb, &mut physics_client);
    }
    loop {
        physics_client.step_simulation()?;
    }
}