]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix appearance system (#14425)
author08A <git@08a.re>
Mon, 6 Mar 2023 17:01:35 +0000 (18:01 +0100)
committerGitHub <noreply@github.com>
Mon, 6 Mar 2023 17:01:35 +0000 (09:01 -0800)
Content.Client/Atmos/EntitySystems/AtmosPipeAppearanceSystem.cs

index 1d38e24db9d96c4a0c4cc757bd9d08a164cfb8b6..a9c5b53192abe9ff35df5ad71bd2981ae6413395 100644 (file)
@@ -44,6 +44,18 @@ public sealed class AtmosPipeAppearanceSystem : EntitySystem
         }
     }
 
+    private void HideAllPipeConnection(SpriteComponent sprite)
+    {
+        foreach (PipeConnectionLayer layerKey in Enum.GetValues(typeof(PipeConnectionLayer)))
+        {
+            if (!sprite.LayerMapTryGet(layerKey, out var key))
+                continue;
+
+            var layer = sprite[key];
+            layer.Visible = false;
+        }
+    }
+
     private void OnAppearanceChanged(EntityUid uid, PipeAppearanceComponent component, ref AppearanceChangeEvent args)
     {
         if (args.Sprite == null)
@@ -56,11 +68,14 @@ public sealed class AtmosPipeAppearanceSystem : EntitySystem
             return;
         }
 
-        if (!_appearance.TryGetData<Color>(uid, PipeColorVisuals.Color, out var color, args.Component))
-            color = Color.White;
-
         if (!_appearance.TryGetData<PipeDirection>(uid, PipeVisuals.VisualState, out var worldConnectedDirections, args.Component))
+        {
+            HideAllPipeConnection(args.Sprite);
             return;
+        }
+
+        if (!_appearance.TryGetData<Color>(uid, PipeColorVisuals.Color, out var color, args.Component))
+            color = Color.White;
 
         // transform connected directions to local-coordinates
         var connectedDirections = worldConnectedDirections.RotatePipeDirection(-Transform(uid).LocalRotation);