Add compound shapes to the heightfield and trimesh demos.

This commit is contained in:
Crozet Sébastien
2021-01-05 16:13:02 +01:00
parent 00da4aaa42
commit 924cb7bbb9
2 changed files with 44 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
use na::{ComplexField, DMatrix, Point3, Vector3};
use na::{ComplexField, DMatrix, Isometry3, Point3, Vector3};
use rapier3d::dynamics::{JointSet, RigidBodyBuilder, RigidBodySet};
use rapier3d::geometry::{ColliderBuilder, ColliderSet};
use rapier3d::geometry::{ColliderBuilder, ColliderSet, ColliderShape};
use rapier_testbed3d::Testbed;
pub fn init_world(testbed: &mut Testbed) {
@@ -58,14 +58,32 @@ pub fn init_world(testbed: &mut Testbed) {
let rigid_body = RigidBodyBuilder::new_dynamic().translation(x, y, z).build();
let handle = bodies.insert(rigid_body);
let collider = match j % 5 {
let collider = match j % 6 {
0 => ColliderBuilder::cuboid(rad, rad, rad).build(),
1 => ColliderBuilder::ball(rad).build(),
// Rounded cylinders are much more efficient that cylinder, even if the
// rounding margin is small.
2 => ColliderBuilder::round_cylinder(rad, rad, rad / 10.0).build(),
3 => ColliderBuilder::cone(rad, rad).build(),
_ => ColliderBuilder::capsule_y(rad, rad).build(),
4 => ColliderBuilder::capsule_y(rad, rad).build(),
_ => {
let shapes = vec![
(
Isometry3::identity(),
ColliderShape::cuboid(rad, rad / 2.0, rad / 2.0),
),
(
Isometry3::translation(rad, 0.0, 0.0),
ColliderShape::cuboid(rad / 2.0, rad, rad / 2.0),
),
(
Isometry3::translation(-rad, 0.0, 0.0),
ColliderShape::cuboid(rad / 2.0, rad, rad / 2.0),
),
];
ColliderBuilder::compound(shapes).build()
}
};
colliders.insert(collider, handle, &mut bodies);