aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Berger <contact@thierryberger.com>2024-08-02 11:49:45 +0200
committerGitHub <noreply@github.com>2024-08-02 11:49:45 +0200
commit364b5b7c37c30af745ad77555d56b6c47ce7de8e (patch)
tree90e871ba08f6912f219f3a55fc89c438eab895fd
parent595b952c52fd953709b0a7131f7b8ba113a050a7 (diff)
downloadrapier-364b5b7c37c30af745ad77555d56b6c47ce7de8e.tar.gz
rapier-364b5b7c37c30af745ad77555d56b6c47ce7de8e.tar.bz2
rapier-364b5b7c37c30af745ad77555d56b6c47ce7de8e.zip
Color visualization for grounded character controller (#705)
-rw-r--r--examples2d/character_controller2.rs1
-rw-r--r--examples3d/character_controller3.rs1
-rw-r--r--src_testbed/testbed.rs15
3 files changed, 17 insertions, 0 deletions
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,