diff options
| author | Crozet Sébastien <developer@crozet.re> | 2020-10-27 14:23:41 +0100 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2020-10-27 14:35:01 +0100 |
| commit | 380c204151ce85da0c21ff420e399e7edc31bfe8 (patch) | |
| tree | 361608f478d8955534196a80d0be4d4b6b500b75 /src_testbed | |
| parent | cb6a7ff9468347735ef63db9a9e38faeb476981b (diff) | |
| download | rapier-380c204151ce85da0c21ff420e399e7edc31bfe8.tar.gz rapier-380c204151ce85da0c21ff420e399e7edc31bfe8.tar.bz2 rapier-380c204151ce85da0c21ff420e399e7edc31bfe8.zip | |
Add collision groups demos.
Diffstat (limited to 'src_testbed')
| -rw-r--r-- | src_testbed/engine.rs | 7 | ||||
| -rw-r--r-- | src_testbed/testbed.rs | 8 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src_testbed/engine.rs b/src_testbed/engine.rs index b02f146..1bafdb6 100644 --- a/src_testbed/engine.rs +++ b/src_testbed/engine.rs @@ -63,6 +63,7 @@ pub struct GraphicsManager { #[cfg(feature = "fluids")] boundary2sn: HashMap<BoundaryHandle, FluidNode>, b2color: HashMap<RigidBodyHandle, Point3<f32>>, + c2color: HashMap<ColliderHandle, Point3<f32>>, b2wireframe: HashMap<RigidBodyHandle, bool>, #[cfg(feature = "fluids")] f2color: HashMap<FluidHandle, Point3<f32>>, @@ -100,6 +101,7 @@ impl GraphicsManager { #[cfg(feature = "fluids")] boundary2sn: HashMap::new(), b2color: HashMap::new(), + c2color: HashMap::new(), #[cfg(feature = "fluids")] f2color: HashMap::new(), ground_color: Point3::new(0.5, 0.5, 0.5), @@ -186,6 +188,10 @@ impl GraphicsManager { } } + pub fn set_collider_initial_color(&mut self, c: ColliderHandle, color: Point3<f32>) { + self.c2color.insert(c, color); + } + pub fn set_body_wireframe(&mut self, b: RigidBodyHandle, enabled: bool) { self.b2wireframe.insert(b, enabled); @@ -324,6 +330,7 @@ impl GraphicsManager { let mut new_nodes = Vec::new(); for collider_handle in bodies[handle].colliders() { + let color = self.c2color.get(collider_handle).copied().unwrap_or(color); let collider = &colliders[*collider_handle]; self.add_collider(window, *collider_handle, collider, color, &mut new_nodes); } 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<f32>) { + self.graphics.set_collider_initial_color(collider, color); + } + #[cfg(feature = "fluids")] pub fn set_fluid_color(&mut self, fluid: FluidHandle, color: Point3<f32>) { self.graphics.set_fluid_color(fluid, color); |
