diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pipeline/debug_render_pipeline/debug_render_pipeline.rs | 12 | ||||
| -rw-r--r-- | src/pipeline/debug_render_pipeline/debug_render_style.rs | 5 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/pipeline/debug_render_pipeline/debug_render_pipeline.rs b/src/pipeline/debug_render_pipeline/debug_render_pipeline.rs index 2f1c737..f214b8c 100644 --- a/src/pipeline/debug_render_pipeline/debug_render_pipeline.rs +++ b/src/pipeline/debug_render_pipeline/debug_render_pipeline.rs @@ -175,7 +175,9 @@ impl DebugRenderPipeline { } if let (Some(rb1), Some(rb2)) = (bodies.get(body1), bodies.get(body2)) { - let coeff = if (rb1.is_fixed() || rb1.is_sleeping()) + let coeff = if !data.is_enabled() || !rb1.is_enabled() || !rb2.is_enabled() { + self.style.disabled_color_multiplier + } else if (rb1.is_fixed() || rb1.is_sleeping()) && (rb2.is_fixed() || rb2.is_sleeping()) { self.style.sleep_color_multiplier @@ -250,7 +252,9 @@ impl DebugRenderPipeline { && backend.filter_object(object) { let basis = rb.rotation().to_rotation_matrix().into_inner(); - let coeff = if rb.is_sleeping() { + let coeff = if !rb.is_enabled() { + self.style.disabled_color_multiplier + } else if rb.is_sleeping() { self.style.sleep_color_multiplier } else { [1.0; 4] @@ -283,7 +287,9 @@ impl DebugRenderPipeline { if backend.filter_object(object) { let color = if let Some(parent) = co.parent().and_then(|p| bodies.get(p)) { - let coeff = if parent.is_sleeping() { + let coeff = if !parent.is_enabled() || !co.is_enabled() { + self.style.disabled_color_multiplier + } else if parent.is_sleeping() { self.style.sleep_color_multiplier } else { [1.0; 4] diff --git a/src/pipeline/debug_render_pipeline/debug_render_style.rs b/src/pipeline/debug_render_pipeline/debug_render_style.rs index 33630aa..c977cab 100644 --- a/src/pipeline/debug_render_pipeline/debug_render_style.rs +++ b/src/pipeline/debug_render_pipeline/debug_render_style.rs @@ -36,6 +36,10 @@ pub struct DebugRenderStyle { /// multiplied by this array. (For a joint, both attached rigid-bodies must be sleeping /// or non-dynamic for this multiplier to be applied). pub sleep_color_multiplier: [f32; 4], + /// If a rigid-body is disabled, its attached entities will have their colors + /// multiplied by this array. (For a joint, both attached rigid-bodies must be disabled + /// for this multiplier to be applied). + pub disabled_color_multiplier: [f32; 4], /// The length of the local coordinate axes rendered for a rigid-body. pub rigid_body_axes_length: Real, /// The collor for the segments joining the two contact points. @@ -62,6 +66,7 @@ impl Default for DebugRenderStyle { multibody_joint_anchor_color: [300.0, 1.0, 0.4, 1.0], multibody_joint_separation_color: [0.0, 1.0, 0.4, 1.0], sleep_color_multiplier: [1.0, 1.0, 0.2, 1.0], + disabled_color_multiplier: [0.0, 0.0, 1.0, 1.0], rigid_body_axes_length: 0.5, contact_depth_color: [120.0, 1.0, 0.4, 1.0], contact_normal_color: [0.0, 1.0, 1.0, 1.0], |
