From 3da333f11c93898808eb9233c0cf333743bbf906 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 26 Oct 2020 15:12:10 +0100 Subject: Fix testbed compilation with other backends. --- src_testbed/nphysics_backend.rs | 48 ++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 20 deletions(-) (limited to 'src_testbed/nphysics_backend.rs') diff --git a/src_testbed/nphysics_backend.rs b/src_testbed/nphysics_backend.rs index c2a7fb1..b449c44 100644 --- a/src_testbed/nphysics_backend.rs +++ b/src_testbed/nphysics_backend.rs @@ -177,28 +177,36 @@ fn nphysics_collider_from_rapier_collider( ) -> Option> { let margin = ColliderDesc::::default_margin(); let mut pos = *collider.position_wrt_parent(); - - let shape = match collider.shape() { - Shape::Cuboid(cuboid) => { - ShapeHandle::new(Cuboid::new(cuboid.half_extents.map(|e| e - margin))) + let shape = collider.shape(); + + let shape = if let Some(cuboid) = shape.as_cuboid() { + ShapeHandle::new(Cuboid::new(cuboid.half_extents.map(|e| e - margin))) + } else if let Some(ball) = shape.as_ball() { + ShapeHandle::new(Ball::new(ball.radius - margin)) + } else if let Some(capsule) = shape.as_capsule() { + ShapeHandle::new(Capsule::new(capsule.half_height, capsule.radius)) + } else if let Some(heightfield) = shape.as_heightfield() { + ShapeHandle::new(heightfield.clone()) + } else { + #[cfg(feature = "dim3")] + if let Some(trimesh) = shape.as_trimesh() { + ShapeHandle::new(TriMesh::new( + trimesh.vertices().to_vec(), + trimesh + .indices() + .iter() + .map(|idx| na::convert(*idx)) + .collect(), + None, + )) + } else { + return None; } - Shape::Ball(ball) => ShapeHandle::new(Ball::new(ball.radius - margin)), - Shape::Capsule(capsule) => { - pos *= capsule.transform_wrt_y(); - ShapeHandle::new(Capsule::new(capsule.half_height(), capsule.radius)) + + #[cfg(feature = "dim2")] + { + return None; } - Shape::HeightField(heightfield) => ShapeHandle::new(heightfield.clone()), - #[cfg(feature = "dim3")] - Shape::Trimesh(trimesh) => ShapeHandle::new(TriMesh::new( - trimesh.vertices().to_vec(), - trimesh - .indices() - .iter() - .map(|idx| na::convert(*idx)) - .collect(), - None, - )), - _ => return None, }; let density = if is_dynamic { collider.density() } else { 0.0 }; -- cgit From 2b628f9580a826722346983ef42672d4e8dd8053 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 26 Oct 2020 15:58:30 +0100 Subject: Redefine capsules as a segment with a radius, allowing us to reuse the pfm_pfm_contact generator for it. --- src_testbed/nphysics_backend.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src_testbed/nphysics_backend.rs') diff --git a/src_testbed/nphysics_backend.rs b/src_testbed/nphysics_backend.rs index b449c44..a2b0331 100644 --- a/src_testbed/nphysics_backend.rs +++ b/src_testbed/nphysics_backend.rs @@ -184,7 +184,8 @@ fn nphysics_collider_from_rapier_collider( } else if let Some(ball) = shape.as_ball() { ShapeHandle::new(Ball::new(ball.radius - margin)) } else if let Some(capsule) = shape.as_capsule() { - ShapeHandle::new(Capsule::new(capsule.half_height, capsule.radius)) + pos *= capsule.transform_wrt_y(); + ShapeHandle::new(Capsule::new(capsule.half_height(), capsule.radius)) } else if let Some(heightfield) = shape.as_heightfield() { ShapeHandle::new(heightfield.clone()) } else { -- cgit From 08930b1238c90bec16db84c50ac4ea7c9a1e0a5b Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 26 Oct 2020 16:36:07 +0100 Subject: Fix multiple warnings. --- src_testbed/nphysics_backend.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src_testbed/nphysics_backend.rs') diff --git a/src_testbed/nphysics_backend.rs b/src_testbed/nphysics_backend.rs index a2b0331..3a0e487 100644 --- a/src_testbed/nphysics_backend.rs +++ b/src_testbed/nphysics_backend.rs @@ -12,7 +12,7 @@ use rapier::counters::Counters; use rapier::dynamics::{ IntegrationParameters, JointParams, JointSet, RigidBodyHandle, RigidBodySet, }; -use rapier::geometry::{Collider, ColliderSet, Shape}; +use rapier::geometry::{Collider, ColliderSet}; use rapier::math::Vector; use std::collections::HashMap; #[cfg(feature = "dim3")] -- cgit