Joint API and joint motors improvements
This commit is contained in:
committed by
Sébastien Crozet
parent
e740493b98
commit
fb20d72ee2
@@ -14,11 +14,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let platform_handles = positions
|
||||
.into_iter()
|
||||
.map(|pos| {
|
||||
let rigid_body = RigidBodyBuilder::new_kinematic_position_based()
|
||||
.translation(pos)
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_kinematic_position_based().translation(pos);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad * 10.0, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad * 10.0, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
handle
|
||||
})
|
||||
@@ -35,11 +33,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
if state.timestep_id % 10 == 0 {
|
||||
let x = rand::random::<f32>() * 10.0 - 5.0;
|
||||
let y = rand::random::<f32>() * 10.0 + 10.0;
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = physics.bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
physics
|
||||
.colliders
|
||||
.insert_with_parent(collider, handle, &mut physics.bodies);
|
||||
|
||||
@@ -16,27 +16,24 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let ground_size = 25.0;
|
||||
let ground_thickness = 0.1;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static().ccd_enabled(true).build();
|
||||
let rigid_body = RigidBodyBuilder::new_static().ccd_enabled(true);
|
||||
let ground_handle = bodies.insert(rigid_body);
|
||||
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_thickness).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_thickness);
|
||||
colliders.insert_with_parent(collider, ground_handle, &mut bodies);
|
||||
|
||||
let collider = ColliderBuilder::cuboid(ground_thickness, ground_size)
|
||||
.translation(vector![-3.0, 0.0])
|
||||
.build();
|
||||
let collider =
|
||||
ColliderBuilder::cuboid(ground_thickness, ground_size).translation(vector![-3.0, 0.0]);
|
||||
colliders.insert_with_parent(collider, ground_handle, &mut bodies);
|
||||
|
||||
let collider = ColliderBuilder::cuboid(ground_thickness, ground_size)
|
||||
.translation(vector![6.0, 0.0])
|
||||
.build();
|
||||
let collider =
|
||||
ColliderBuilder::cuboid(ground_thickness, ground_size).translation(vector![6.0, 0.0]);
|
||||
colliders.insert_with_parent(collider, ground_handle, &mut bodies);
|
||||
|
||||
let collider = ColliderBuilder::cuboid(ground_thickness, ground_size)
|
||||
.translation(vector![2.5, 0.0])
|
||||
.sensor(true)
|
||||
.active_events(ActiveEvents::INTERSECTION_EVENTS)
|
||||
.build();
|
||||
.active_events(ActiveEvents::INTERSECTION_EVENTS);
|
||||
let sensor_handle = colliders.insert_with_parent(collider, ground_handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -72,19 +69,18 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.linvel(vector![100.0, -10.0])
|
||||
.ccd_enabled(true)
|
||||
.build();
|
||||
.ccd_enabled(true);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
|
||||
// for part in &compound_parts {
|
||||
// let collider = ColliderBuilder::new(part.1.clone())
|
||||
// .position_wrt_parent(part.0)
|
||||
// .build();
|
||||
// ;
|
||||
// colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
// }
|
||||
|
||||
let collider = ColliderBuilder::new(compound_shape.clone()).build();
|
||||
// let collider = ColliderBuilder::cuboid(radx, rady).build();
|
||||
let collider = ColliderBuilder::new(compound_shape.clone());
|
||||
// let collider = ColliderBuilder::cuboid(radx, rady);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
@@ -114,6 +110,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
if parent_handle1 != ground_handle && prox.collider1 != sensor_handle {
|
||||
graphics.set_body_color(parent_handle1, color);
|
||||
}
|
||||
|
||||
if parent_handle2 != ground_handle && prox.collider2 != sensor_handle {
|
||||
graphics.set_body_color(parent_handle2, color);
|
||||
}
|
||||
|
||||
@@ -16,11 +16,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let ground_size = 5.0;
|
||||
let ground_height = 0.1;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.translation(vector![0.0, -ground_height])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height]);
|
||||
let floor_handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height);
|
||||
colliders.insert_with_parent(collider, floor_handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -34,8 +32,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
*/
|
||||
let green_floor = ColliderBuilder::cuboid(1.0, 0.1)
|
||||
.translation(vector![0.0, 1.0])
|
||||
.collision_groups(GREEN_GROUP)
|
||||
.build();
|
||||
.collision_groups(GREEN_GROUP);
|
||||
let green_collider_handle =
|
||||
colliders.insert_with_parent(green_floor, floor_handle, &mut bodies);
|
||||
|
||||
@@ -46,8 +43,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
*/
|
||||
let blue_floor = ColliderBuilder::cuboid(1.0, 0.1)
|
||||
.translation(vector![0.0, 2.0])
|
||||
.collision_groups(BLUE_GROUP)
|
||||
.build();
|
||||
.collision_groups(BLUE_GROUP);
|
||||
let blue_collider_handle = colliders.insert_with_parent(blue_floor, floor_handle, &mut bodies);
|
||||
|
||||
testbed.set_initial_collider_color(blue_collider_handle, [0.0, 0.0, 1.0]);
|
||||
@@ -74,13 +70,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
(BLUE_GROUP, [0.0, 0.0, 1.0])
|
||||
};
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad, rad)
|
||||
.collision_groups(group)
|
||||
.build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).collision_groups(group);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
testbed.set_initial_body_color(handle, color);
|
||||
|
||||
@@ -17,25 +17,23 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
*/
|
||||
let ground_size = 30.0;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static().build();
|
||||
let rigid_body = RigidBodyBuilder::new_static();
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.rotation(std::f32::consts::FRAC_PI_2)
|
||||
.translation(vector![ground_size, ground_size * 2.0])
|
||||
.build();
|
||||
.translation(vector![ground_size, ground_size * 2.0]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size * 2.0, 1.2).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size * 2.0, 1.2);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.rotation(std::f32::consts::FRAC_PI_2)
|
||||
.translation(vector![-ground_size, ground_size * 2.0])
|
||||
.build();
|
||||
.translation(vector![-ground_size, ground_size * 2.0]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size * 2.0, 1.2).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size * 2.0, 1.2);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -57,9 +55,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let x = i as f32 * shift - centerx;
|
||||
let y = j as f32 * shift * 2.0 + centery + 2.0;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
|
||||
let mut points = Vec::new();
|
||||
@@ -69,7 +65,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
points.push(pt * scale);
|
||||
}
|
||||
|
||||
let collider = ColliderBuilder::convex_hull(&points).unwrap().build();
|
||||
let collider = ColliderBuilder::convex_hull(&points).unwrap();
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,12 +27,11 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
.linvel(vector![x * 10.0, y * 10.0])
|
||||
.angvel(100.0)
|
||||
.linear_damping((i + 1) as f32 * subdiv * 10.0)
|
||||
.angular_damping((num - i) as f32 * subdiv * 10.0)
|
||||
.build();
|
||||
.angular_damping((num - i) as f32 * subdiv * 10.0);
|
||||
let rb_handle = bodies.insert(rb);
|
||||
|
||||
// Build the collider.
|
||||
let co = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let co = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(co, rb_handle, &mut bodies);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,19 +16,17 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let rad = 1.0;
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.translation(vector![0.0, -rad])
|
||||
.rotation(std::f32::consts::PI / 4.0)
|
||||
.build();
|
||||
.rotation(std::f32::consts::PI / 4.0);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
// Build the dynamic box rigid body.
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![0.0, 3.0 * rad])
|
||||
.can_sleep(false)
|
||||
.build();
|
||||
.can_sleep(false);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::ball(rad).build();
|
||||
let collider = ColliderBuilder::ball(rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
|
||||
@@ -26,11 +26,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let y = j as f32 * shift - centery;
|
||||
|
||||
// Build the rigid body.
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
@@ -38,7 +36,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
/*
|
||||
* Setup a velocity-based kinematic rigid body.
|
||||
*/
|
||||
let platform_body = RigidBodyBuilder::new_kinematic_velocity_based().build();
|
||||
let platform_body = RigidBodyBuilder::new_kinematic_velocity_based();
|
||||
let velocity_based_platform_handle = bodies.insert(platform_body);
|
||||
|
||||
let sides = [
|
||||
@@ -55,11 +53,11 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
];
|
||||
|
||||
for (hx, hy, pos) in sides {
|
||||
let collider = ColliderBuilder::cuboid(hx, hy).translation(pos).build();
|
||||
let collider = ColliderBuilder::cuboid(hx, hy).translation(pos);
|
||||
colliders.insert_with_parent(collider, velocity_based_platform_handle, &mut bodies);
|
||||
}
|
||||
for (r, pos) in balls {
|
||||
let collider = ColliderBuilder::ball(r).translation(pos).build();
|
||||
let collider = ColliderBuilder::ball(r).translation(pos);
|
||||
colliders.insert_with_parent(collider, velocity_based_platform_handle, &mut bodies);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,9 +25,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
}
|
||||
});
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static().build();
|
||||
let rigid_body = RigidBodyBuilder::new_static();
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::heightfield(heights, ground_size).build();
|
||||
let collider = ColliderBuilder::heightfield(heights, ground_size);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -46,16 +46,14 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let y = j as f32 * shift + centery + 3.0;
|
||||
|
||||
// Build the rigid body.
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
|
||||
if j % 2 == 0 {
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
} else {
|
||||
let collider = ColliderBuilder::ball(rad).build();
|
||||
let collider = ColliderBuilder::ball(rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,17 +35,16 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
RigidBodyType::Dynamic
|
||||
};
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new(status)
|
||||
.translation(vector![fk * shift, -fi * shift])
|
||||
.build();
|
||||
let rigid_body =
|
||||
RigidBodyBuilder::new(status).translation(vector![fk * shift, -fi * shift]);
|
||||
let child_handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::ball(rad).build();
|
||||
let collider = ColliderBuilder::ball(rad);
|
||||
colliders.insert_with_parent(collider, child_handle, &mut bodies);
|
||||
|
||||
// Vertical joint.
|
||||
if i > 0 {
|
||||
let parent_handle = *body_handles.last().unwrap();
|
||||
let joint = RevoluteJoint::new().local_anchor2(point![0.0, shift]);
|
||||
let joint = RevoluteJointBuilder::new().local_anchor2(point![0.0, shift]);
|
||||
impulse_joints.insert(parent_handle, child_handle, joint);
|
||||
}
|
||||
|
||||
@@ -53,7 +52,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
if k > 0 {
|
||||
let parent_index = body_handles.len() - numi;
|
||||
let parent_handle = body_handles[parent_index];
|
||||
let joint = RevoluteJoint::new().local_anchor2(point![-shift, 0.0]);
|
||||
let joint = RevoluteJointBuilder::new().local_anchor2(point![-shift, 0.0]);
|
||||
impulse_joints.insert(parent_handle, child_handle, joint);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,11 +19,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let ground_size = 5.0;
|
||||
let ground_height = 0.1;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.translation(vector![0.0, -ground_height])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -31,10 +29,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
*/
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![0.0, 3.0])
|
||||
.lock_translations()
|
||||
.build();
|
||||
.lock_translations();
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(2.0, 0.6).build();
|
||||
let collider = ColliderBuilder::cuboid(2.0, 0.6);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -43,10 +40,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![0.0, 5.0])
|
||||
.rotation(1.0)
|
||||
.lock_rotations()
|
||||
.build();
|
||||
.lock_rotations();
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::capsule_y(0.6, 0.4).build();
|
||||
let collider = ColliderBuilder::capsule_y(0.6, 0.4);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
|
||||
@@ -68,18 +68,16 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
/*
|
||||
* Ground
|
||||
*/
|
||||
let rigid_body = RigidBodyBuilder::new_static().build();
|
||||
let rigid_body = RigidBodyBuilder::new_static();
|
||||
let handle = bodies.insert(rigid_body);
|
||||
|
||||
let collider = ColliderBuilder::cuboid(25.0, 0.5)
|
||||
.translation(vector![30.0, 2.0])
|
||||
.active_hooks(ActiveHooks::MODIFY_SOLVER_CONTACTS)
|
||||
.build();
|
||||
.active_hooks(ActiveHooks::MODIFY_SOLVER_CONTACTS);
|
||||
let platform1 = colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
let collider = ColliderBuilder::cuboid(25.0, 0.5)
|
||||
.translation(vector![-30.0, -2.0])
|
||||
.active_hooks(ActiveHooks::MODIFY_SOLVER_CONTACTS)
|
||||
.build();
|
||||
.active_hooks(ActiveHooks::MODIFY_SOLVER_CONTACTS);
|
||||
let platform2 = colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -97,10 +95,8 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
testbed.add_callback(move |graphics, physics, _, run_state| {
|
||||
if run_state.timestep_id % 50 == 0 && physics.bodies.len() <= 7 {
|
||||
// Spawn a new cube.
|
||||
let collider = ColliderBuilder::cuboid(1.5, 2.0).build();
|
||||
let body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![20.0, 10.0])
|
||||
.build();
|
||||
let collider = ColliderBuilder::cuboid(1.5, 2.0);
|
||||
let body = RigidBodyBuilder::new_dynamic().translation(vector![20.0, 10.0]);
|
||||
let handle = physics.bodies.insert(body);
|
||||
physics
|
||||
.colliders
|
||||
|
||||
@@ -16,11 +16,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let ground_size = 10.0;
|
||||
let ground_height = 0.1;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.translation(vector![0.0, -ground_height])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -39,11 +37,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let y = j as f32 * shift + centery;
|
||||
|
||||
// Build the rigid body.
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
@@ -52,20 +48,18 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
* Setup a position-based kinematic rigid body.
|
||||
*/
|
||||
let platform_body = RigidBodyBuilder::new_kinematic_velocity_based()
|
||||
.translation(vector![-10.0 * rad, 1.5 + 0.8])
|
||||
.build();
|
||||
.translation(vector![-10.0 * rad, 1.5 + 0.8]);
|
||||
let velocity_based_platform_handle = bodies.insert(platform_body);
|
||||
let collider = ColliderBuilder::cuboid(rad * 10.0, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad * 10.0, rad);
|
||||
colliders.insert_with_parent(collider, velocity_based_platform_handle, &mut bodies);
|
||||
|
||||
/*
|
||||
* Setup a velocity-based kinematic rigid body.
|
||||
*/
|
||||
let platform_body = RigidBodyBuilder::new_kinematic_position_based()
|
||||
.translation(vector![-10.0 * rad, 2.0 + 1.5 + 0.8])
|
||||
.build();
|
||||
.translation(vector![-10.0 * rad, 2.0 + 1.5 + 0.8]);
|
||||
let position_based_platform_handle = bodies.insert(platform_body);
|
||||
let collider = ColliderBuilder::cuboid(rad * 10.0, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad * 10.0, rad);
|
||||
colliders.insert_with_parent(collider, position_based_platform_handle, &mut bodies);
|
||||
|
||||
/*
|
||||
|
||||
@@ -27,9 +27,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
}
|
||||
points.push(point![ground_size / 2.0, 40.0]);
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static().build();
|
||||
let rigid_body = RigidBodyBuilder::new_static();
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::polyline(points, None).build();
|
||||
let collider = ColliderBuilder::polyline(points, None);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -48,16 +48,14 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let y = j as f32 * shift + centery + 3.0;
|
||||
|
||||
// Build the rigid body.
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
|
||||
if j % 2 == 0 {
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
} else {
|
||||
let collider = ColliderBuilder::ball(rad).build();
|
||||
let collider = ColliderBuilder::ball(rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let ground_size = 10.0;
|
||||
let ground_thickness = 1.0;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static().build();
|
||||
let rigid_body = RigidBodyBuilder::new_static();
|
||||
let ground_handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_thickness).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_thickness);
|
||||
colliders.insert_with_parent(collider, ground_handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -39,11 +39,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let y = fi * shift + centery;
|
||||
|
||||
// Build the rigid body.
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,13 +16,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let ground_size = 20.;
|
||||
let ground_height = 1.0;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.translation(vector![0.0, -ground_height])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height)
|
||||
.restitution(1.0)
|
||||
.build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height).restitution(1.0);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
let num = 10;
|
||||
@@ -32,12 +28,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
for i in 0..=num {
|
||||
let x = (i as f32) - num as f32 / 2.0;
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x * 2.0, 10.0 * (j as f32 + 1.0)])
|
||||
.build();
|
||||
.translation(vector![x * 2.0, 10.0 * (j as f32 + 1.0)]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::ball(rad)
|
||||
.restitution((i as f32) / (num as f32))
|
||||
.build();
|
||||
let collider = ColliderBuilder::ball(rad).restitution((i as f32) / (num as f32));
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,11 +16,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let ground_size = 200.1;
|
||||
let ground_height = 0.1;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.translation(vector![0.0, -ground_height])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height]);
|
||||
let ground_handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, ground_height);
|
||||
colliders.insert_with_parent(collider, ground_handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -37,11 +35,9 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let y = 3.0;
|
||||
|
||||
// Build the rigid body.
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![x, y])
|
||||
.build();
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
testbed.set_initial_body_color(handle, [0.5, 0.5, 1.0]);
|
||||
@@ -52,14 +48,12 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
*/
|
||||
|
||||
// Rigid body so that the sensor can move.
|
||||
let sensor = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![0.0, 10.0])
|
||||
.build();
|
||||
let sensor = RigidBodyBuilder::new_dynamic().translation(vector![0.0, 10.0]);
|
||||
let sensor_handle = bodies.insert(sensor);
|
||||
|
||||
// Solid cube attached to the sensor which
|
||||
// other colliders can touch.
|
||||
let collider = ColliderBuilder::cuboid(rad, rad).build();
|
||||
let collider = ColliderBuilder::cuboid(rad, rad);
|
||||
colliders.insert_with_parent(collider, sensor_handle, &mut bodies);
|
||||
|
||||
// We create a collider desc without density because we don't
|
||||
@@ -67,8 +61,7 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
let sensor_collider = ColliderBuilder::ball(rad * 5.0)
|
||||
.density(0.0)
|
||||
.sensor(true)
|
||||
.active_events(ActiveEvents::INTERSECTION_EVENTS)
|
||||
.build();
|
||||
.active_events(ActiveEvents::INTERSECTION_EVENTS);
|
||||
colliders.insert_with_parent(sensor_collider, sensor_handle, &mut bodies);
|
||||
|
||||
testbed.set_initial_body_color(sensor_handle, [0.5, 1.0, 1.0]);
|
||||
|
||||
@@ -21,25 +21,23 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
*/
|
||||
let ground_size = 25.0;
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static().build();
|
||||
let rigid_body = RigidBodyBuilder::new_static();
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.rotation(std::f32::consts::FRAC_PI_2)
|
||||
.translation(vector![ground_size, ground_size])
|
||||
.build();
|
||||
.translation(vector![ground_size, ground_size]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
let rigid_body = RigidBodyBuilder::new_static()
|
||||
.rotation(std::f32::consts::FRAC_PI_2)
|
||||
.translation(vector![-ground_size, ground_size])
|
||||
.build();
|
||||
.translation(vector![-ground_size, ground_size]);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2).build();
|
||||
let collider = ColliderBuilder::cuboid(ground_size, 1.2);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
|
||||
/*
|
||||
@@ -86,12 +84,10 @@ pub fn init_world(testbed: &mut Testbed) {
|
||||
.collect();
|
||||
|
||||
for k in 0..5 {
|
||||
let collider =
|
||||
ColliderBuilder::trimesh(vertices.clone(), indices.clone()).build();
|
||||
let collider = ColliderBuilder::trimesh(vertices.clone(), indices.clone());
|
||||
let rigid_body = RigidBodyBuilder::new_dynamic()
|
||||
.translation(vector![ith as f32 * 8.0 - 20.0, 20.0 + k as f32 * 11.0])
|
||||
.rotation(angle)
|
||||
.build();
|
||||
.rotation(angle);
|
||||
let handle = bodies.insert(rigid_body);
|
||||
colliders.insert_with_parent(collider, handle, &mut bodies);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user