From 380c204151ce85da0c21ff420e399e7edc31bfe8 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 27 Oct 2020 14:23:41 +0100 Subject: Add collision groups demos. --- src_testbed/testbed.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src_testbed/testbed.rs') diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 2b733a3..3a1b938 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -23,7 +23,9 @@ use rapier::dynamics::{ }; #[cfg(feature = "dim3")] use rapier::geometry::Ray; -use rapier::geometry::{BroadPhase, ColliderSet, ContactEvent, NarrowPhase, ProximityEvent}; +use rapier::geometry::{ + BroadPhase, ColliderHandle, ColliderSet, ContactEvent, NarrowPhase, ProximityEvent, +}; use rapier::math::Vector; use rapier::pipeline::{ChannelEventCollector, PhysicsPipeline, QueryPipeline}; #[cfg(feature = "fluids")] @@ -497,6 +499,10 @@ impl Testbed { self.graphics.set_body_color(body, color); } + pub fn set_collider_initial_color(&mut self, collider: ColliderHandle, color: Point3) { + self.graphics.set_collider_initial_color(collider, color); + } + #[cfg(feature = "fluids")] pub fn set_fluid_color(&mut self, fluid: FluidHandle, color: Point3) { self.graphics.set_fluid_color(fluid, color); -- cgit From b4d322a6ca8dc363c5085ba5539281d50be7a525 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 27 Oct 2020 14:29:58 +0100 Subject: Take collision groups into account for ray-casting. --- src_testbed/testbed.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src_testbed/testbed.rs') diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 3a1b938..456b894 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -24,7 +24,8 @@ use rapier::dynamics::{ #[cfg(feature = "dim3")] use rapier::geometry::Ray; use rapier::geometry::{ - BroadPhase, ColliderHandle, ColliderSet, ContactEvent, NarrowPhase, ProximityEvent, + BroadPhase, ColliderHandle, ColliderSet, ContactEvent, InteractionGroups, NarrowPhase, + ProximityEvent, }; use rapier::math::Vector; use rapier::pipeline::{ChannelEventCollector, PhysicsPipeline, QueryPipeline}; @@ -1188,10 +1189,12 @@ impl Testbed { .camera() .unproject(&self.cursor_pos, &na::convert(size)); let ray = Ray::new(pos, dir); - let hit = self - .physics - .query_pipeline - .cast_ray(&self.physics.colliders, &ray, f32::MAX); + let hit = self.physics.query_pipeline.cast_ray( + &self.physics.colliders, + &ray, + f32::MAX, + InteractionGroups::all(), + ); if let Some((_, collider, _)) = hit { if self.physics.bodies[collider.parent()].is_dynamic() { -- cgit