From 075bae7519494fd8b5bfbb46f871a238829a0ec8 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Wed, 15 Dec 2021 19:46:42 +1300 Subject: [PATCH] Fix disposal pipe visibility in entity menu (#5790) --- .../SubFloor/SubFloorShowLayerVisualizer.cs | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/Content.Client/SubFloor/SubFloorShowLayerVisualizer.cs b/Content.Client/SubFloor/SubFloorShowLayerVisualizer.cs index 7052d30ecb..aec3c9e32c 100644 --- a/Content.Client/SubFloor/SubFloorShowLayerVisualizer.cs +++ b/Content.Client/SubFloor/SubFloorShowLayerVisualizer.cs @@ -17,22 +17,23 @@ namespace Content.Client.SubFloor if (!entities.TryGetComponent(component.Owner, out SpriteComponent? sprite)) return; - if (component.TryGetData(SubFloorVisuals.SubFloor, out bool subfloor)) + if (!component.TryGetData(SubFloorVisuals.SubFloor, out bool subfloor)) + return; + + foreach (var layer in sprite.AllLayers) { - sprite.Visible = true; - - // Due to the way this visualizer works, you might want to specify it before any other - // visualizer that hides/shows layers depending on certain conditions, such as PipeConnectorVisualizer. - foreach (var layer in sprite.AllLayers) - { - layer.Visible = subfloor; - } - - if (sprite.LayerMapTryGet(Layers.FirstLayer, out var firstLayer)) - { - sprite.LayerSetVisible(firstLayer, true); - } + layer.Visible = subfloor; } + + if (!sprite.LayerMapTryGet(Layers.FirstLayer, out var firstLayer)) + { + sprite.Visible = subfloor; + return; + } + + // show the top part of the sprite. E.g. the grille-part of a vent, but not the connecting pipes. + sprite.LayerSetVisible(firstLayer, true); + sprite.Visible = true; } public enum Layers : byte