aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2022-02-20 12:55:00 +0100
committerSébastien Crozet <sebastien@crozet.re>2022-03-20 21:49:16 +0100
commitfb20d72ee29de9311a81aec6eb9f02fd2aa35fc4 (patch)
tree45827ac4c754c3670d1ddb2f91fc498515d6b3b8
parente740493b980dc9856864ead3206a4fa02aff965f (diff)
downloadrapier-fb20d72ee29de9311a81aec6eb9f02fd2aa35fc4.tar.gz
rapier-fb20d72ee29de9311a81aec6eb9f02fd2aa35fc4.tar.bz2
rapier-fb20d72ee29de9311a81aec6eb9f02fd2aa35fc4.zip
Joint API and joint motors improvements
-rw-r--r--.vscode/tasks.json97
-rw-r--r--benchmarks2d/balls2.rs6
-rw-r--r--benchmarks2d/boxes2.rs20
-rw-r--r--benchmarks2d/capsules2.rs20
-rw-r--r--benchmarks2d/convex_polygons2.rs20
-rw-r--r--benchmarks2d/heightfield2.rs12
-rw-r--r--benchmarks2d/joint_ball2.rs11
-rw-r--r--benchmarks2d/joint_fixed2.rs13
-rw-r--r--benchmarks2d/joint_prismatic2.rs16
-rw-r--r--benchmarks2d/pyramid2.rs10
-rw-r--r--benchmarks3d/balls3.rs6
-rw-r--r--benchmarks3d/boxes3.rs12
-rw-r--r--benchmarks3d/capsules3.rs12
-rw-r--r--benchmarks3d/ccd3.rs11
-rw-r--r--benchmarks3d/compound3.rs28
-rw-r--r--benchmarks3d/convex_polyhedron3.rs14
-rw-r--r--benchmarks3d/heightfield3.rs12
-rw-r--r--benchmarks3d/joint_ball3.rs11
-rw-r--r--benchmarks3d/joint_fixed3.rs16
-rw-r--r--benchmarks3d/joint_prismatic3.rs18
-rw-r--r--benchmarks3d/joint_revolute3.rs22
-rw-r--r--benchmarks3d/keva3.rs34
-rw-r--r--benchmarks3d/pyramid3.rs12
-rw-r--r--benchmarks3d/stacks3.rs24
-rw-r--r--benchmarks3d/trimesh3.rs12
-rw-r--r--examples2d/add_remove2.rs12
-rw-r--r--examples2d/ccd2.rs27
-rw-r--r--examples2d/collision_groups2.rs20
-rw-r--r--examples2d/convex_polygons2.rs20
-rw-r--r--examples2d/damping2.rs5
-rw-r--r--examples2d/debug_box_ball2.rs10
-rw-r--r--examples2d/drum2.rs12
-rw-r--r--examples2d/heightfield2.rs12
-rw-r--r--examples2d/joints2.rs11
-rw-r--r--examples2d/locked_rotations2.rs16
-rw-r--r--examples2d/one_way_platforms2.rs14
-rw-r--r--examples2d/platform2.rs22
-rw-r--r--examples2d/polyline2.rs12
-rw-r--r--examples2d/pyramid2.rs10
-rw-r--r--examples2d/restitution2.rs15
-rw-r--r--examples2d/sensor2.rs21
-rw-r--r--examples2d/trimesh2.rs20
-rw-r--r--examples3d/articulations3.rs226
-rw-r--r--examples3d/ccd3.rs24
-rw-r--r--examples3d/collision_groups3.rs20
-rw-r--r--examples3d/compound3.rs20
-rw-r--r--examples3d/convex_decomposition3.rs12
-rw-r--r--examples3d/convex_polyhedron3.rs14
-rw-r--r--examples3d/damping3.rs5
-rw-r--r--examples3d/debug_add_remove_collider3.rs12
-rw-r--r--examples3d/debug_articulations3.rs23
-rw-r--r--examples3d/debug_big_colliders3.rs10
-rw-r--r--examples3d/debug_boxes3.rs12
-rw-r--r--examples3d/debug_cylinder3.rs12
-rw-r--r--examples3d/debug_dynamic_collider_add3.rs18
-rw-r--r--examples3d/debug_friction3.rs11
-rw-r--r--examples3d/debug_infinite_fall3.rs16
-rw-r--r--examples3d/debug_prismatic3.rs56
-rw-r--r--examples3d/debug_rollback3.rs11
-rw-r--r--examples3d/debug_shape_modification3.rs25
-rw-r--r--examples3d/debug_triangle3.rs11
-rw-r--r--examples3d/debug_trimesh3.rs11
-rw-r--r--examples3d/domino3.rs10
-rw-r--r--examples3d/fountain3.rs16
-rw-r--r--examples3d/harness_capsules3.rs12
-rw-r--r--examples3d/heightfield3.rs20
-rw-r--r--examples3d/joints3.rs282
-rw-r--r--examples3d/keva3.rs34
-rw-r--r--examples3d/locked_rotations3.rs18
-rw-r--r--examples3d/one_way_platforms3.rs14
-rw-r--r--examples3d/platform3.rs32
-rw-r--r--examples3d/primitives3.rs20
-rw-r--r--examples3d/restitution3.rs20
-rw-r--r--examples3d/sensor3.rs21
-rw-r--r--examples3d/trimesh3.rs20
-rw-r--r--src/dynamics/integration_parameters.rs29
-rw-r--r--src/dynamics/island_manager.rs32
-rw-r--r--src/dynamics/joint/fixed_joint.rs93
-rw-r--r--src/dynamics/joint/generic_joint.rs501
-rw-r--r--src/dynamics/joint/impulse_joint/impulse_joint.rs4
-rw-r--r--src/dynamics/joint/impulse_joint/impulse_joint_set.rs4
-rw-r--r--src/dynamics/joint/joint_data.rs275
-rw-r--r--src/dynamics/joint/mod.rs12
-rw-r--r--src/dynamics/joint/motor_model.rs49
-rw-r--r--src/dynamics/joint/multibody_joint/multibody_joint.rs40
-rw-r--r--src/dynamics/joint/multibody_joint/multibody_joint_set.rs4
-rw-r--r--src/dynamics/joint/multibody_joint/unit_multibody_joint.rs27
-rw-r--r--src/dynamics/joint/prismatic_joint.rs188
-rw-r--r--src/dynamics/joint/revolute_joint.rs171
-rw-r--r--src/dynamics/joint/spherical_joint.rs140
-rw-r--r--src/dynamics/rigid_body.rs6
-rw-r--r--src/dynamics/rigid_body_set.rs3
-rw-r--r--src/dynamics/solver/generic_velocity_constraint.rs2
-rw-r--r--src/dynamics/solver/generic_velocity_ground_constraint.rs2
-rw-r--r--src/dynamics/solver/island_solver.rs2
-rw-r--r--src/dynamics/solver/joint_constraint/joint_generic_velocity_constraint.rs151
-rw-r--r--src/dynamics/solver/joint_constraint/joint_generic_velocity_constraint_builder.rs98
-rw-r--r--src/dynamics/solver/joint_constraint/joint_velocity_constraint.rs253
-rw-r--r--src/dynamics/solver/joint_constraint/joint_velocity_constraint_builder.rs405
-rw-r--r--src/dynamics/solver/velocity_constraint.rs18
-rw-r--r--src/dynamics/solver/velocity_constraint_wide.rs14
-rw-r--r--src/dynamics/solver/velocity_ground_constraint.rs18
-rw-r--r--src/dynamics/solver/velocity_ground_constraint_wide.rs12
-rw-r--r--src/geometry/collider.rs6
-rw-r--r--src/geometry/collider_set.rs6
-rw-r--r--src_testbed/harness/mod.rs38
-rw-r--r--src_testbed/testbed.rs2
-rw-r--r--src_testbed/ui.rs15
108 files changed, 2606 insertions, 1810 deletions
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);