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