From fb20d72ee29de9311a81aec6eb9f02fd2aa35fc4 Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sun, 20 Feb 2022 12:55:00 +0100 Subject: Joint API and joint motors improvements --- .vscode/tasks.json | 97 ++++ benchmarks2d/balls2.rs | 6 +- benchmarks2d/boxes2.rs | 20 +- benchmarks2d/capsules2.rs | 20 +- benchmarks2d/convex_polygons2.rs | 20 +- benchmarks2d/heightfield2.rs | 12 +- benchmarks2d/joint_ball2.rs | 11 +- benchmarks2d/joint_fixed2.rs | 13 +- benchmarks2d/joint_prismatic2.rs | 16 +- benchmarks2d/pyramid2.rs | 10 +- benchmarks3d/balls3.rs | 6 +- benchmarks3d/boxes3.rs | 12 +- benchmarks3d/capsules3.rs | 12 +- benchmarks3d/ccd3.rs | 11 +- benchmarks3d/compound3.rs | 28 +- benchmarks3d/convex_polyhedron3.rs | 14 +- benchmarks3d/heightfield3.rs | 12 +- benchmarks3d/joint_ball3.rs | 11 +- benchmarks3d/joint_fixed3.rs | 16 +- benchmarks3d/joint_prismatic3.rs | 18 +- benchmarks3d/joint_revolute3.rs | 22 +- benchmarks3d/keva3.rs | 34 +- benchmarks3d/pyramid3.rs | 12 +- benchmarks3d/stacks3.rs | 24 +- benchmarks3d/trimesh3.rs | 12 +- examples2d/add_remove2.rs | 12 +- examples2d/ccd2.rs | 27 +- examples2d/collision_groups2.rs | 20 +- examples2d/convex_polygons2.rs | 20 +- examples2d/damping2.rs | 5 +- examples2d/debug_box_ball2.rs | 10 +- examples2d/drum2.rs | 12 +- examples2d/heightfield2.rs | 12 +- examples2d/joints2.rs | 11 +- examples2d/locked_rotations2.rs | 16 +- examples2d/one_way_platforms2.rs | 14 +- examples2d/platform2.rs | 22 +- examples2d/polyline2.rs | 12 +- examples2d/pyramid2.rs | 10 +- examples2d/restitution2.rs | 15 +- examples2d/sensor2.rs | 21 +- examples2d/trimesh2.rs | 20 +- examples3d/articulations3.rs | 226 ++++------ examples3d/ccd3.rs | 24 +- examples3d/collision_groups3.rs | 20 +- examples3d/compound3.rs | 20 +- examples3d/convex_decomposition3.rs | 12 +- examples3d/convex_polyhedron3.rs | 14 +- examples3d/damping3.rs | 5 +- examples3d/debug_add_remove_collider3.rs | 12 +- examples3d/debug_articulations3.rs | 23 +- examples3d/debug_big_colliders3.rs | 10 +- examples3d/debug_boxes3.rs | 12 +- examples3d/debug_cylinder3.rs | 12 +- examples3d/debug_dynamic_collider_add3.rs | 18 +- examples3d/debug_friction3.rs | 11 +- examples3d/debug_infinite_fall3.rs | 16 +- examples3d/debug_prismatic3.rs | 56 +-- examples3d/debug_rollback3.rs | 11 +- examples3d/debug_shape_modification3.rs | 25 +- examples3d/debug_triangle3.rs | 11 +- examples3d/debug_trimesh3.rs | 11 +- examples3d/domino3.rs | 10 +- examples3d/fountain3.rs | 16 +- examples3d/harness_capsules3.rs | 12 +- examples3d/heightfield3.rs | 20 +- examples3d/joints3.rs | 282 +++++------- examples3d/keva3.rs | 34 +- examples3d/locked_rotations3.rs | 18 +- examples3d/one_way_platforms3.rs | 14 +- examples3d/platform3.rs | 32 +- examples3d/primitives3.rs | 20 +- examples3d/restitution3.rs | 20 +- examples3d/sensor3.rs | 21 +- examples3d/trimesh3.rs | 20 +- src/dynamics/integration_parameters.rs | 29 +- src/dynamics/island_manager.rs | 32 +- src/dynamics/joint/fixed_joint.rs | 93 +++- src/dynamics/joint/generic_joint.rs | 501 +++++++++++++++++++++ src/dynamics/joint/impulse_joint/impulse_joint.rs | 4 +- .../joint/impulse_joint/impulse_joint_set.rs | 4 +- src/dynamics/joint/joint_data.rs | 275 ----------- src/dynamics/joint/mod.rs | 12 +- src/dynamics/joint/motor_model.rs | 49 +- .../joint/multibody_joint/multibody_joint.rs | 40 +- .../joint/multibody_joint/multibody_joint_set.rs | 4 +- .../joint/multibody_joint/unit_multibody_joint.rs | 27 +- src/dynamics/joint/prismatic_joint.rs | 188 ++++++-- src/dynamics/joint/revolute_joint.rs | 171 +++++-- src/dynamics/joint/spherical_joint.rs | 140 +++++- src/dynamics/rigid_body.rs | 6 + src/dynamics/rigid_body_set.rs | 3 +- src/dynamics/solver/generic_velocity_constraint.rs | 2 +- .../solver/generic_velocity_ground_constraint.rs | 2 +- src/dynamics/solver/island_solver.rs | 2 +- .../joint_generic_velocity_constraint.rs | 151 ++++--- .../joint_generic_velocity_constraint_builder.rs | 98 ++-- .../joint_constraint/joint_velocity_constraint.rs | 253 ++++++++--- .../joint_velocity_constraint_builder.rs | 405 ++++++++++++++--- src/dynamics/solver/velocity_constraint.rs | 18 +- src/dynamics/solver/velocity_constraint_wide.rs | 14 +- src/dynamics/solver/velocity_ground_constraint.rs | 18 +- .../solver/velocity_ground_constraint_wide.rs | 12 +- src/geometry/collider.rs | 6 + src/geometry/collider_set.rs | 6 +- src_testbed/harness/mod.rs | 38 +- src_testbed/testbed.rs | 2 +- src_testbed/ui.rs | 15 +- 108 files changed, 2606 insertions(+), 1810 deletions(-) create mode 100644 src/dynamics/joint/generic_joint.rs delete mode 100644 src/dynamics/joint/joint_data.rs diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 0bc892b..de94b50 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -98,6 +98,103 @@ "--pause" ], "group": "build" + }, + { + "label": "bench 3d (no-simd - release) ", + "type": "shell", + "command": "cargo", + "args": [ + "run", + "--bin", + "all_benchmarks3", + "--release", + "--features", + "other-backends", + "--", + "--pause" + ], + "group": "build" + }, + { + "label": "bench 3d (simd - release) ", + "type": "shell", + "command": "cargo", + "args": [ + "run", + "--bin", + "all_benchmarks3", + "--release", + "--features", + "simd-stable,other-backends", + "--", + "--pause" + ], + "group": "build" + }, + { + "label": "bench 3d (simd - parallel - release) ", + "type": "shell", + "command": "cargo", + "args": [ + "run", + "--bin", + "all_benchmarks3", + "--release", + "--features", + "simd-stable,other-backends,parallel", + "--", + "--pause" + ], + "group": "build" + }, + { + "label": "bench 2d (no-simd - release) ", + "type": "shell", + "command": "cargo", + "args": [ + "run", + "--bin", + "all_benchmarks2", + "--release", + "--features", + "other-backends", + "--", + "--pause" + ], + "group": "build" + }, + { + "label": "bench 2d (simd - release) ", + "type": "shell", + "command": "cargo", + "args": [ + "run", + "--bin", + "all_benchmarks2", + "--release", + "--features", + "simd-stable,other-backends", + "--", + "--pause" + ], + "group": "build" + }, + { + "label": "bench 2d (simd - parallel - release) ", + "type": "shell", + "command": "cargo", + "args": [ + "run", + "--bin", + "all_benchmarks2", + "--release", + "--features", + "simd-stable,other-backends,parallel", + "--", + "--pause" + ], + "group": "build" } ] +] } \ No newline at end of file diff --git a/benchmarks2d/balls2.rs b/benchmarks2d/balls2.rs index 168acaf..a560d65 100644 --- a/benchmarks2d/balls2.rs +++ b/benchmarks2d/balls2.rs @@ -48,11 +48,9 @@ pub fn init_world(testbed: &mut Testbed) { }; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new(status) - .translation(vector![x, y]) - .build(); + let rigid_body = RigidBodyBuilder::new(status).translation(vector![x, y]); 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); } } diff --git a/benchmarks2d/boxes2.rs b/benchmarks2d/boxes2.rs index c3d7445..0da76a9 100644 --- a/benchmarks2d/boxes2.rs +++ b/benchmarks2d/boxes2.rs @@ -15,25 +15,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 * 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); /* @@ -52,11 +50,9 @@ pub fn init_world(testbed: &mut Testbed) { let y = j as f32 * shift + centery + 2.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); } } diff --git a/benchmarks2d/capsules2.rs b/benchmarks2d/capsules2.rs index 3bfa6ab..86e1004 100644 --- a/benchmarks2d/capsules2.rs +++ b/benchmarks2d/capsules2.rs @@ -15,25 +15,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 * 4.0]) - .build(); + .translation(vector![ground_size, ground_size * 4.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size * 4.0, 1.2).build(); + let collider = ColliderBuilder::cuboid(ground_size * 4.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 * 4.0]) - .build(); + .translation(vector![-ground_size, ground_size * 4.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size * 4.0, 1.2).build(); + let collider = ColliderBuilder::cuboid(ground_size * 4.0, 1.2); colliders.insert_with_parent(collider, handle, &mut bodies); /* @@ -54,11 +52,9 @@ pub fn init_world(testbed: &mut Testbed) { let y = j as f32 * shifty + 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); - let collider = ColliderBuilder::capsule_y(rad * 1.5, rad).build(); + let collider = ColliderBuilder::capsule_y(rad * 1.5, rad); colliders.insert_with_parent(collider, handle, &mut bodies); } } diff --git a/benchmarks2d/convex_polygons2.rs b/benchmarks2d/convex_polygons2.rs index 6678460..c340143 100644 --- a/benchmarks2d/convex_polygons2.rs +++ b/benchmarks2d/convex_polygons2.rs @@ -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); } } diff --git a/benchmarks2d/heightfield2.rs b/benchmarks2d/heightfield2.rs index 04c56da..60fc45f 100644 --- a/benchmarks2d/heightfield2.rs +++ b/benchmarks2d/heightfield2.rs @@ -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); } } diff --git a/benchmarks2d/joint_ball2.rs b/benchmarks2d/joint_ball2.rs index e856556..9d819fc 100644 --- a/benchmarks2d/joint_ball2.rs +++ b/benchmarks2d/joint_ball2.rs @@ -32,17 +32,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); } @@ -50,7 +49,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); } diff --git a/benchmarks2d/joint_fixed2.rs b/benchmarks2d/joint_fixed2.rs index 690b8cb..f492bd5 100644 --- a/benchmarks2d/joint_fixed2.rs +++ b/benchmarks2d/joint_fixed2.rs @@ -38,17 +38,16 @@ pub fn init_world(testbed: &mut Testbed) { }; let rigid_body = RigidBodyBuilder::new(status) - .translation(vector![x + fk * shift, y - fi * shift]) - .build(); + .translation(vector![x + fk * shift, y - 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 = - FixedJoint::new().local_frame2(Isometry::translation(0.0, shift)); + let joint = FixedJointBuilder::new() + .local_frame2(Isometry::translation(0.0, shift)); impulse_joints.insert(parent_handle, child_handle, joint); } @@ -56,8 +55,8 @@ pub fn init_world(testbed: &mut Testbed) { if k > 0 { let parent_index = body_handles.len() - num; let parent_handle = body_handles[parent_index]; - let joint = - FixedJoint::new().local_frame2(Isometry::translation(-shift, 0.0)); + let joint = FixedJointBuilder::new() + .local_frame2(Isometry::translation(-shift, 0.0)); impulse_joints.insert(parent_handle, child_handle, joint); } diff --git a/benchmarks2d/joint_prismatic2.rs b/benchmarks2d/joint_prismatic2.rs index 20d423e..65e7fe1 100644 --- a/benchmarks2d/joint_prismatic2.rs +++ b/benchmarks2d/joint_prismatic2.rs @@ -24,21 +24,17 @@ pub fn init_world(testbed: &mut Testbed) { for j in 0..50 { let x = j as f32 * shift * 4.0; - let ground = RigidBodyBuilder::new_static() - .translation(vector![x, y]) - .build(); + let ground = RigidBodyBuilder::new_static().translation(vector![x, y]); let mut curr_parent = bodies.insert(ground); - let collider = ColliderBuilder::cuboid(rad, rad).build(); + let collider = ColliderBuilder::cuboid(rad, rad); colliders.insert_with_parent(collider, curr_parent, &mut bodies); for i in 0..num { let y = y - (i + 1) as f32 * shift; let density = 1.0; - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y]); let curr_child = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(rad, rad).density(density).build(); + let collider = ColliderBuilder::cuboid(rad, rad).density(density); colliders.insert_with_parent(collider, curr_child, &mut bodies); let axis = if i % 2 == 0 { @@ -47,9 +43,9 @@ pub fn init_world(testbed: &mut Testbed) { UnitVector::new_normalize(vector![-1.0, 1.0]) }; - let prism = PrismaticJoint::new(axis) + let prism = PrismaticJointBuilder::new(axis) .local_anchor2(point![0.0, shift]) - .limit_axis([-1.5, 1.5]); + .limits([-1.5, 1.5]); impulse_joints.insert(curr_parent, curr_child, prism); curr_parent = curr_child; diff --git a/benchmarks2d/pyramid2.rs b/benchmarks2d/pyramid2.rs index 61636b9..7453344 100644 --- a/benchmarks2d/pyramid2.rs +++ b/benchmarks2d/pyramid2.rs @@ -16,9 +16,9 @@ pub fn init_world(testbed: &mut Testbed) { let ground_size = 100.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); } } diff --git a/benchmarks3d/balls3.rs b/benchmarks3d/balls3.rs index b4d5102..4ccf594 100644 --- a/benchmarks3d/balls3.rs +++ b/benchmarks3d/balls3.rs @@ -36,11 +36,9 @@ pub fn init_world(testbed: &mut Testbed) { let density = 0.477; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new(status) - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new(status).translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::ball(rad).density(density).build(); + let collider = ColliderBuilder::ball(rad).density(density); colliders.insert_with_parent(collider, handle, &mut bodies); } } diff --git a/benchmarks3d/boxes3.rs b/benchmarks3d/boxes3.rs index 0250619..e816a63 100644 --- a/benchmarks3d/boxes3.rs +++ b/benchmarks3d/boxes3.rs @@ -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, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, handle, &mut bodies); /* @@ -44,11 +42,9 @@ pub fn init_world(testbed: &mut Testbed) { let z = k as f32 * shift - centerz + offset; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(rad, rad, rad).build(); + let collider = ColliderBuilder::cuboid(rad, rad, rad); colliders.insert_with_parent(collider, handle, &mut bodies); } } diff --git a/benchmarks3d/capsules3.rs b/benchmarks3d/capsules3.rs index 5b05f23..ec00e2d 100644 --- a/benchmarks3d/capsules3.rs +++ b/benchmarks3d/capsules3.rs @@ -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, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, handle, &mut bodies); /* @@ -45,11 +43,9 @@ pub fn init_world(testbed: &mut Testbed) { let z = k as f32 * shift - centerz + offset; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::capsule_y(rad, rad).build(); + let collider = ColliderBuilder::capsule_y(rad, rad); colliders.insert_with_parent(collider, handle, &mut bodies); } } diff --git a/benchmarks3d/ccd3.rs b/benchmarks3d/ccd3.rs index d54ebc1..ed137a2 100644 --- a/benchmarks3d/ccd3.rs +++ b/benchmarks3d/ccd3.rs @@ -16,11 +16,9 @@ pub fn init_world(testbed: &mut Testbed) { let ground_size = 100.1; let ground_height = 0.1; - let rigid_body = RigidBodyBuilder::new_static() - .translation(vector![0.0, -ground_height, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, handle, &mut bodies); /* @@ -50,8 +48,7 @@ pub fn init_world(testbed: &mut Testbed) { let rigid_body = RigidBodyBuilder::new_dynamic() .translation(vector![x, y, z]) .linvel(vector![0.0, -1000.0, 0.0]) - .ccd_enabled(true) - .build(); + .ccd_enabled(true); let handle = bodies.insert(rigid_body); let collider = match j % 5 { @@ -64,7 +61,7 @@ pub fn init_world(testbed: &mut Testbed) { _ => ColliderBuilder::capsule_y(rad, rad), }; - colliders.insert_with_parent(collider.build(), handle, &mut bodies); + colliders.insert_with_parent(collider, handle, &mut bodies); } } diff --git a/benchmarks3d/compound3.rs b/benchmarks3d/compound3.rs index 872923c..04e8c78 100644 --- a/benchmarks3d/compound3.rs +++ b/benchmarks3d/compound3.rs @@ -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, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, handle, &mut bodies); /* @@ -44,17 +42,19 @@ pub fn init_world(testbed: &mut Testbed) { let z = k as f32 * shift * 2.0 - centerz + offset; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); - let collider1 = ColliderBuilder::cuboid(rad * 10.0, rad, rad).build(); - let collider2 = ColliderBuilder::cuboid(rad, rad * 10.0, rad) - .translation(vector![rad * 10.0, rad * 10.0, 0.0]) - .build(); - let collider3 = ColliderBuilder::cuboid(rad, rad * 10.0, rad) - .translation(vector![-rad * 10.0, rad * 10.0, 0.0]) - .build(); + let collider1 = ColliderBuilder::cuboid(rad * 10.0, rad, rad); + let collider2 = ColliderBuilder::cuboid(rad, rad * 10.0, rad).translation(vector![ + rad * 10.0, + rad * 10.0, + 0.0 + ]); + let collider3 = ColliderBuilder::cuboid(rad, rad * 10.0, rad).translation(vector![ + -rad * 10.0, + rad * 10.0, + 0.0 + ]); colliders.insert_with_parent(collider1, handle, &mut bodies); colliders.insert_with_parent(collider2, handle, &mut bodies); colliders.insert_with_parent(collider3, handle, &mut bodies); diff --git a/benchmarks3d/convex_polyhedron3.rs b/benchmarks3d/convex_polyhedron3.rs index cb834ea..5d9f363 100644 --- a/benchmarks3d/convex_polyhedron3.rs +++ b/benchmarks3d/convex_polyhedron3.rs @@ -18,11 +18,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, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, handle, &mut bodies); /* @@ -57,13 +55,9 @@ pub fn init_world(testbed: &mut Testbed) { } // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::round_convex_hull(&points, border_rad) - .unwrap() - .build(); + let collider = ColliderBuilder::round_convex_hull(&points, border_rad).unwrap(); colliders.insert_with_parent(collider, handle, &mut bodies); } } diff --git a/benchmarks3d/heightfield3.rs b/benchmarks3d/heightfield3.rs index b95f1ee..6bf6fc0 100644 --- a/benchmarks3d/heightfield3.rs +++ b/benchmarks3d/heightfield3.rs @@ -31,9 +31,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); /* @@ -55,16 +55,14 @@ pub fn init_world(testbed: &mut Testbed) { let z = k as f32 * shift - centerz; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); if j % 2 == 0 { - let collider = ColliderBuilder::cuboid(rad, rad, rad).build(); + let collider = ColliderBuilder::cuboid(rad, 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); } } diff --git a/benchmarks3d/joint_ball3.rs b/benchmarks3d/joint_ball3.rs index 64128ba..4b509af 100644 --- a/benchmarks3d/joint_ball3.rs +++ b/benchmarks3d/joint_ball3.rs @@ -27,17 +27,16 @@ pub fn init_world(testbed: &mut Testbed) { RigidBodyType::Dynamic }; - let rigid_body = RigidBodyBuilder::new(status) - .translation(vector![fk * shift, 0.0, fi * shift]) - .build(); + let rigid_body = + RigidBodyBuilder::new(status).translation(vector![fk * shift, 0.0, 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 = SphericalJoint::new().local_anchor2(point![0.0, 0.0, -shift]); + let joint = SphericalJointBuilder::new().local_anchor2(point![0.0, 0.0, -shift]); impulse_joints.insert(parent_handle, child_handle, joint); } @@ -45,7 +44,7 @@ pub fn init_world(testbed: &mut Testbed) { if k > 0 { let parent_index = body_handles.len() - num; let parent_handle = body_handles[parent_index]; - let joint = SphericalJoint::new().local_anchor2(point![-shift, 0.0, 0.0]); + let joint = SphericalJointBuilder::new().local_anchor2(point![-shift, 0.0, 0.0]); impulse_joints.insert(parent_handle, child_handle, joint); } diff --git a/benchmarks3d/joint_fixed3.rs b/benchmarks3d/joint_fixed3.rs index b3f4039..5fdba9c 100644 --- a/benchmarks3d/joint_fixed3.rs +++ b/benchmarks3d/joint_fixed3.rs @@ -40,17 +40,20 @@ pub fn init_world(testbed: &mut Testbed) { RigidBodyType::Dynamic }; - let rigid_body = RigidBodyBuilder::new(status) - .translation(vector![x + fk * shift, y, z + fi * shift]) - .build(); + let rigid_body = RigidBodyBuilder::new(status).translation(vector![ + x + fk * shift, + y, + z + 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 = FixedJoint::new().local_anchor2(point![0.0, 0.0, -shift]); + let joint = + FixedJointBuilder::new().local_anchor2(point![0.0, 0.0, -shift]); impulse_joints.insert(parent_handle, child_handle, joint); } @@ -58,7 +61,8 @@ pub fn init_world(testbed: &mut Testbed) { if k > 0 { let parent_index = body_handles.len() - num; let parent_handle = body_handles[parent_index]; - let joint = FixedJoint::new().local_anchor2(point![-shift, 0.0, 0.0]); + let joint = + FixedJointBuilder::new().local_anchor2(point![-shift, 0.0, 0.0]); impulse_joints.insert(parent_handle, child_handle, joint); } diff --git a/benchmarks3d/joint_prismatic3.rs b/benchmarks3d/joint_prismatic3.rs index 80839d7..faa5f93 100644 --- a/benchmarks3d/joint_prismatic3.rs +++ b/benchmarks3d/joint_prismatic3.rs @@ -23,23 +23,17 @@ pub fn init_world(testbed: &mut Testbed) { for j in 0..50 { let x = j as f32 * shift * 4.0; - let ground = RigidBodyBuilder::new_static() - .translation(vector![x, y, z]) - .build(); + let ground = RigidBodyBuilder::new_static().translation(vector![x, y, z]); let mut curr_parent = bodies.insert(ground); - let collider = ColliderBuilder::cuboid(rad, rad, rad).build(); + let collider = ColliderBuilder::cuboid(rad, rad, rad); colliders.insert_with_parent(collider, curr_parent, &mut bodies); for i in 0..num { let z = z + (i + 1) as f32 * shift; let density = 1.0; - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let curr_child = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(rad, rad, rad) - .density(density) - .build(); + let collider = ColliderBuilder::cuboid(rad, rad, rad).density(density); colliders.insert_with_parent(collider, curr_child, &mut bodies); let axis = if i % 2 == 0 { @@ -48,9 +42,9 @@ pub fn init_world(testbed: &mut Testbed) { UnitVector::new_normalize(vector![-1.0, 1.0, 0.0]) }; - let prism = PrismaticJoint::new(axis) + let prism = PrismaticJointBuilder::new(axis) .local_anchor2(point![0.0, 0.0, -shift]) - .limit_axis([-2.0, 0.0]); + .limits([-2.0, 0.0]); impulse_joints.insert(curr_parent, curr_child, prism); curr_parent = curr_child; diff --git a/benchmarks3d/joint_revolute3.rs b/benchmarks3d/joint_revolute3.rs index 8bdf0e9..aa1be50 100644 --- a/benchmarks3d/joint_revolute3.rs +++ b/benchmarks3d/joint_revolute3.rs @@ -20,11 +20,9 @@ pub fn init_world(testbed: &mut Testbed) { for j in 0..50 { let x = j as f32 * shift * 4.0; - let ground = RigidBodyBuilder::new_static() - .translation(vector![x, y, 0.0]) - .build(); + let ground = RigidBodyBuilder::new_static().translation(vector![x, y, 0.0]); let mut curr_parent = bodies.insert(ground); - let collider = ColliderBuilder::cuboid(rad, rad, rad).build(); + let collider = ColliderBuilder::cuboid(rad, rad, rad); colliders.insert_with_parent(collider, curr_parent, &mut bodies); for i in 0..num { @@ -40,13 +38,9 @@ pub fn init_world(testbed: &mut Testbed) { let mut handles = [curr_parent; 4]; for k in 0..4 { let density = 1.0; - let rigid_body = RigidBodyBuilder::new_dynamic() - .position(positions[k]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().position(positions[k]); handles[k] = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(rad, rad, rad) - .density(density) - .build(); + let collider = ColliderBuilder::cuboid(rad, rad, rad).density(density); colliders.insert_with_parent(collider, handles[k], &mut bodies); } @@ -55,10 +49,10 @@ pub fn init_world(testbed: &mut Testbed) { let z = Vector::z_axis(); let revs = [ - RevoluteJoint::new(z).local_anchor2(point![0.0, 0.0, -shift]), - RevoluteJoint::new(x).local_anchor2(point![-shift, 0.0, 0.0]), - RevoluteJoint::new(z).local_anchor2(point![0.0, 0.0, -shift]), - RevoluteJoint::new(x).local_anchor2(point![shift, 0.0, 0.0]), + RevoluteJointBuilder::new(z).local_anchor2(point![0.0, 0.0, -shift]), + RevoluteJointBuilder::new(x).local_anchor2(point![-shift, 0.0, 0.0]), + RevoluteJointBuilder::new(z).local_anchor2(point![0.0, 0.0, -shift]), + RevoluteJointBuilder::new(x).local_anchor2(point![shift, 0.0, 0.0]), ]; impulse_joints.insert(curr_parent, handles[0], revs[0]); diff --git a/benchmarks3d/keva3.rs b/benchmarks3d/keva3.rs index ad9e1ae..30e5246 100644 --- a/benchmarks3d/keva3.rs +++ b/benchmarks3d/keva3.rs @@ -38,15 +38,13 @@ pub fn build_block( }; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![ - x + dim.x + shift.x, - y + dim.y + shift.y, - z + dim.z + shift.z - ]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![ + x + dim.x + shift.x, + y + dim.y + shift.y, + z + dim.z + shift.z + ]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(dim.x, dim.y, dim.z).build(); + let collider = ColliderBuilder::cuboid(dim.x, dim.y, dim.z); colliders.insert_with_parent(collider, handle, bodies); testbed.set_initial_body_color(handle, color0); @@ -61,15 +59,13 @@ pub fn build_block( for i in 0..(block_width / (dim.x as f32 * 2.0)) as usize { for j in 0..(block_width / (dim.z as f32 * 2.0)) as usize { // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![ - i as f32 * dim.x * 2.0 + dim.x + shift.x, - dim.y + shift.y + block_height, - j as f32 * dim.z * 2.0 + dim.z + shift.z - ]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![ + i as f32 * dim.x * 2.0 + dim.x + shift.x, + dim.y + shift.y + block_height, + j as f32 * dim.z * 2.0 + dim.z + shift.z + ]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(dim.x, dim.y, dim.z).build(); + let collider = ColliderBuilder::cuboid(dim.x, dim.y, dim.z); colliders.insert_with_parent(collider, handle, bodies); testbed.set_initial_body_color(handle, color0); std::mem::swap(&mut color0, &mut color1); @@ -92,11 +88,9 @@ pub fn init_world(testbed: &mut Testbed) { let ground_size = 50.0; let ground_height = 0.1; - let rigid_body = RigidBodyBuilder::new_static() - .translation(vector![0.0, -ground_height, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, handle, &mut bodies); /* diff --git a/benchmarks3d/pyramid3.rs b/benchmarks3d/pyramid3.rs index b378da4..572db45 100644 --- a/benchmarks3d/pyramid3.rs +++ b/benchmarks3d/pyramid3.rs @@ -22,13 +22,11 @@ fn create_pyramid( - stack_height as f32 * half_extents.z; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let rigid_body_handle = bodies.insert(rigid_body); let collider = - ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z).build(); + ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z); colliders.insert_with_parent(collider, rigid_body_handle, bodies); } } @@ -50,11 +48,9 @@ pub fn init_world(testbed: &mut Testbed) { let ground_size = 50.0; let ground_height = 0.1; - let rigid_body = RigidBodyBuilder::new_static() - .translation(vector![0.0, -ground_height, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let ground_handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, ground_handle, &mut bodies); /* diff --git a/benchmarks3d/stacks3.rs b/benchmarks3d/stacks3.rs index 7fc9097..ff67917 100644 --- a/benchmarks3d/stacks3.rs +++ b/benchmarks3d/stacks3.rs @@ -23,10 +23,9 @@ fn create_tower_circle( * Translation::new(0.0, y, radius); // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic().position(pos).build(); + let rigid_body = RigidBodyBuilder::new_dynamic().position(pos); let handle = bodies.insert(rigid_body); - let collider = - ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z).build(); + let collider = ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z); colliders.insert_with_parent(collider, handle, bodies); } } @@ -50,12 +49,9 @@ fn create_wall( - stack_height as f32 * half_extents.z; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); - let collider = - ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z).build(); + let collider = ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z); colliders.insert_with_parent(collider, handle, bodies); } } @@ -83,12 +79,10 @@ fn create_pyramid( - stack_height as f32 * half_extents.z; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); let collider = - ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z).build(); + ColliderBuilder::cuboid(half_extents.x, half_extents.y, half_extents.z); colliders.insert_with_parent(collider, handle, bodies); } } @@ -110,11 +104,9 @@ pub fn init_world(testbed: &mut Testbed) { let ground_size = 200.0; let ground_height = 0.1; - let rigid_body = RigidBodyBuilder::new_static() - .translation(vector![0.0, -ground_height, 0.0]) - .build(); + let rigid_body = RigidBodyBuilder::new_static().translation(vector![0.0, -ground_height, 0.0]); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size).build(); + let collider = ColliderBuilder::cuboid(ground_size, ground_height, ground_size); colliders.insert_with_parent(collider, handle, &mut bodies); /* diff --git a/benchmarks3d/trimesh3.rs b/benchmarks3d/trimesh3.rs index 1039a09..e9d73ee 100644 --- a/benchmarks3d/trimesh3.rs +++ b/benchmarks3d/trimesh3.rs @@ -36,9 +36,9 @@ pub fn init_world(testbed: &mut Testbed) { let heightfield = HeightField::new(heights, ground_size); let (vertices, indices) = heightfield.to_trimesh(); - let rigid_body = RigidBodyBuilder::new_static().build(); + let rigid_body = RigidBodyBuilder::new_static(); let handle = bodies.insert(rigid_body); - let collider = ColliderBuilder::trimesh(vertices, indices).build(); + let collider = ColliderBuilder::trimesh(vertices, indices); colliders.insert_with_parent(collider, handle, &mut bodies); /* @@ -60,16 +60,14 @@ pub fn init_world(testbed: &mut Testbed) { let z = k as f32 * shift - centerz; // Build the rigid body. - let rigid_body = RigidBodyBuilder::new_dynamic() - .translation(vector![x, y, z]) - .build(); + let rigid_body = RigidBodyBuilder::new_dynamic().translation(vector![x, y, z]); let handle = bodies.insert(rigid_body); if j % 2 == 0 { - let collider = ColliderBuilder::cuboid(rad, rad, rad).build(); + let collider = ColliderBuilder::cuboid(rad, 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); } } diff --git a/examples2d/add_remove2.rs b/examples2d/add_remove2.rs index 0919da9..dfc96d9 100644 --- a/examples2d/add_remove2.rs +++ b/examples2d/add_remove2.rs @@ -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::() * 10.0 - 5.0; let y = rand::random::() * 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); diff --git a/examples2d/ccd2.rs b/examples2d/ccd2.rs index 808c2e5..0e64713 100644 --- a/examples2d/ccd2.rs +++ b/examples2d/ccd2.rs @@ -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); } diff --git a/examples2d/collision_groups2.rs b/examples2d/collision_groups2.rs index 110c32a..9c9cd30 100644 --- a/examples2d/collision_groups2.rs +++ b/examples2d/collision_groups2.rs @@ -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); diff --git a/examples2d/convex_polygons2.rs b/examples2d/convex_polygons2.rs index 060e0c5..b3139c4 100644 --- a/examples2d/convex_polygons2.rs +++ b/examples2d/convex_polygons2.rs @@ -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