From 364b5b7c37c30af745ad77555d56b6c47ce7de8e Mon Sep 17 00:00:00 2001 From: Thierry Berger Date: Fri, 2 Aug 2024 11:49:45 +0200 Subject: [PATCH] Color visualization for grounded character controller (#705) --- examples2d/character_controller2.rs | 1 + examples3d/character_controller3.rs | 1 + src_testbed/testbed.rs | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/examples2d/character_controller2.rs b/examples2d/character_controller2.rs index 2325101..2acf50f 100644 --- a/examples2d/character_controller2.rs +++ b/examples2d/character_controller2.rs @@ -29,6 +29,7 @@ pub fn init_world(testbed: &mut Testbed) { let character_handle = bodies.insert(rigid_body); let collider = ColliderBuilder::capsule_y(0.3, 0.15); colliders.insert_with_parent(collider, character_handle, &mut bodies); + testbed.set_initial_body_color(character_handle, [0.8, 0.1, 0.1]); /* * Create the cubes diff --git a/examples3d/character_controller3.rs b/examples3d/character_controller3.rs index f031f0a..f668439 100644 --- a/examples3d/character_controller3.rs +++ b/examples3d/character_controller3.rs @@ -45,6 +45,7 @@ pub fn init_world(testbed: &mut Testbed) { let character_handle = bodies.insert(rigid_body); let collider = ColliderBuilder::capsule_y(0.3 * scale, 0.15 * scale); // 0.15, 0.3, 0.15); colliders.insert_with_parent(collider, character_handle, &mut bodies); + testbed.set_initial_body_color(character_handle, [0.8, 0.1, 0.1]); /* * Create the cubes diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 9a2df3e..4986059 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -845,6 +845,21 @@ impl<'a, 'b, 'c, 'd, 'e, 'f> Testbed<'a, 'b, 'c, 'd, 'e, 'f> { QueryFilter::new().exclude_rigid_body(character_handle), |c| collisions.push(c), ); + if let Some(graphics) = &mut self.graphics { + if mvt.grounded { + graphics.graphics.set_body_color( + graphics.materials, + character_handle, + [0.1, 0.8, 0.1], + ); + } else { + graphics.graphics.set_body_color( + graphics.materials, + character_handle, + [0.8, 0.1, 0.1], + ); + } + } controller.solve_character_collision_impulses( phx.integration_parameters.dt, &mut phx.bodies,