diff --git a/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs b/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs new file mode 100644 index 0000000000..7d057e0766 --- /dev/null +++ b/Content.Client/GameObjects/Components/Atmos/PipeVisualizer.cs @@ -0,0 +1,69 @@ +using Content.Shared.GameObjects.Components.Atmos; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Client.Interfaces.ResourceManagement; +using Robust.Client.ResourceManagement; +using Robust.Shared.GameObjects.Components.Renderable; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Utility; +using System; +using System.Collections.Generic; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Atmos +{ + [UsedImplicitly] + public class PipeVisualizer : AppearanceVisualizer + { + private RSI _pipeRSI; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + var rsiString = node.GetNode("pipeRSI").ToString(); + var rsiPath = SharedSpriteComponent.TextureRoot / rsiString; + try + { + var resourceCache = IoCManager.Resolve(); + var resource = resourceCache.GetResource(rsiPath); + _pipeRSI = resource.RSI; + } + catch (Exception e) + { + Logger.ErrorS("go.pipevisualizer", "Unable to load RSI '{0}'. Trace:\n{1}", rsiPath, e); + } + } + + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + if (!component.Owner.TryGetComponent(out ISpriteComponent sprite)) + { + return; + } + if (!component.TryGetData(PipeVisuals.VisualState, out PipeVisualStateSet pipeVisualStateSet)) + { + return; + } + for (var i = 0; i < pipeVisualStateSet.PipeVisualStates.Length; i++) + { + var pipeVisualState = pipeVisualStateSet.PipeVisualStates[i]; + var rsiState = "pipe"; + rsiState += pipeVisualState.PipeDirection.ToString(); + rsiState += ((int) pipeVisualState.ConduitLayer).ToString(); + + var pipeLayerKey = "pipeLayer" + i.ToString(); + sprite.LayerMapReserveBlank(pipeLayerKey); + var currentPipeLayer = sprite.LayerMapGet(pipeLayerKey); + sprite.LayerSetRSI(currentPipeLayer, _pipeRSI); + sprite.LayerSetState(currentPipeLayer, rsiState); + sprite.LayerSetVisible(currentPipeLayer, true); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs index 0099549e84..23e9f63c33 100644 --- a/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs +++ b/Content.Server/GameObjects/Components/Atmos/Piping/Pumps/BasePumpComponent.cs @@ -1,6 +1,7 @@ using Content.Server.Atmos; using Content.Server.GameObjects.Components.NodeContainer; using Content.Server.GameObjects.Components.NodeContainer.Nodes; +using Content.Shared.GameObjects.Components.Atmos; using Robust.Shared.Log; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; diff --git a/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs b/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs index b35d16280f..ddd2d57c9a 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/Nodes/PipeNode.cs @@ -1,7 +1,8 @@ using Content.Server.Atmos; using Content.Server.GameObjects.Components.NodeContainer.NodeGroups; using Content.Server.Interfaces; -using Content.Shared.Atmos; +using Content.Shared.GameObjects.Components.Atmos; +using Robust.Server.GameObjects; using Robust.Shared.GameObjects.Components.Transform; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Maths; @@ -23,6 +24,12 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes public PipeDirection PipeDirection => _pipeDirection; private PipeDirection _pipeDirection; + /// + /// Controls what visuals are applied in . + /// + public ConduitLayer ConduitLayer => _conduitLayer; + private ConduitLayer _conduitLayer; + [ViewVariables] private IPipeNet _pipeNet = PipeNet.NullNet; @@ -55,17 +62,24 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes [ViewVariables] public float Volume { get; private set; } + private AppearanceComponent _appearance; + + private PipeVisualState PipeVisualState => new PipeVisualState(PipeDirection, ConduitLayer); + public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); serializer.DataField(ref _pipeDirection, "pipeDirection", PipeDirection.None); serializer.DataField(this, x => Volume, "volume", 10); + serializer.DataField(ref _conduitLayer, "conduitLayer", ConduitLayer.Two); } public override void Initialize(IEntity owner) { base.Initialize(owner); LocalAir = new GasMixture(Volume); + Owner.TryGetComponent(out _appearance); + UpdateAppearance(); } public void JoinPipeNet(IPipeNet pipeNet) @@ -128,6 +142,16 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes } } + private void UpdateAppearance() + { + var pipeVisualStates = Owner.GetComponent() + .Nodes + .OfType() + .Select(pipeNode => pipeNode.PipeVisualState) + .ToArray(); + _appearance?.SetData(PipeVisuals.VisualState, new PipeVisualStateSet(pipeVisualStates)); + } + private enum CardinalDirection { North = Direction.North, @@ -136,36 +160,4 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes West = Direction.West, } } - - public enum PipeDirection - { - None = 0, - - //Half of a pipe in a direction - North = 1 << 0, - South = 1 << 1, - West = 1 << 2, - East = 1 << 3, - - //Straight pipes - Longitudinal = North | South, - Lateral = West | East, - - //Bends - NWBend = North | West, - NEBend = North | East, - SWBend = South | West, - SEBend = South | East, - - //T-Junctions - TNorth = North | Lateral, - TSouth = South | Lateral, - TWest = West | Longitudinal, - TEast = East | Longitudinal, - - //Four way - FourWay = North | South | East | West, - - All = -1, - } } diff --git a/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs b/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs new file mode 100644 index 0000000000..f588dc44da --- /dev/null +++ b/Content.Shared/GameObjects/Components/Atmos/SharedPipeComponent.cs @@ -0,0 +1,74 @@ +using Robust.Shared.Serialization; +using System; + +namespace Content.Shared.GameObjects.Components.Atmos +{ + [Serializable, NetSerializable] + public enum PipeVisuals + { + VisualState + } + + [Serializable, NetSerializable] + public class PipeVisualStateSet + { + public readonly PipeVisualState[] PipeVisualStates; + + public PipeVisualStateSet(PipeVisualState[] pipeVisualStates) + { + PipeVisualStates = pipeVisualStates; + } + } + + [Serializable, NetSerializable] + public class PipeVisualState + { + public readonly PipeDirection PipeDirection; + public readonly ConduitLayer ConduitLayer; + + public PipeVisualState(PipeDirection pipeDirection, ConduitLayer conduitLayer) + { + PipeDirection = pipeDirection; + ConduitLayer = conduitLayer; + } + } + + public enum PipeDirection + { + None = 0, + + //Half of a pipe in a direction + North = 1 << 0, + South = 1 << 1, + West = 1 << 2, + East = 1 << 3, + + //Straight pipes + Longitudinal = North | South, + Lateral = West | East, + + //Bends + NWBend = North | West, + NEBend = North | East, + SWBend = South | West, + SEBend = South | East, + + //T-Junctions + TNorth = North | Lateral, + TSouth = South | Lateral, + TWest = West | Longitudinal, + TEast = East | Longitudinal, + + //Four way + Fourway = North | South | East | West, + + All = -1, + } + + public enum ConduitLayer + { + One = 1, + Two = 2, + Three = 3, + } +} diff --git a/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml index 5dcbab768c..da29191613 100644 --- a/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml +++ b/Resources/Prototypes/Entities/Constructible/Ground/pipes.yml @@ -12,32 +12,31 @@ - type: Icon texture: Constructible/Power/eightdirwire.png - type: Sprite - sprite: Constructible/Power/hv_cable.rsi - type: Destructible thresholdvalue: 100 + - type: Appearance + visuals: + - type: PipeVisualizer + pipeRSI: Constructible/Atmos/pipe.rsi - type: entity parent: PipeBase id: FourwayPipe name: Fourway Pipe components: - - type: Sprite - state: hvcable_15 - type: NodeContainer nodes: - !type:PipeNode nodeGroupID: Pipe - pipeDirection: FourWay + pipeDirection: Fourway - type: entity parent: PipeBase id: LongitudinalPipe name: Longitudinal Pipe components: - - type: Sprite - state: hvcable_3 - type: NodeContainer nodes: - !type:PipeNode nodeGroupID: Pipe - pipeDirection: Longitudinal + pipeDirection: Longitudinal \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json new file mode 100644 index 0000000000..92a08111a2 --- /dev/null +++ b/Resources/Textures/Constructible/Atmos/pipe.rsi/meta.json @@ -0,0 +1,196 @@ +{ + "version":1, + "size":{ + "x":32, + "y":32 + }, + "license":"CC-BY-SA-3.0", + "copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", + "states":[ + { + "name":"pipeEast2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeNorth2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeSouth2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeWest2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeFourway1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeFourway2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeFourway3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeLateral1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeLateral2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeLateral3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeLongitudinal1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeLongitudinal2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeLongitudinal3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeNEBend1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeNEBend2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeNEBend3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeNWBend1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeNWBend2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeNWBend3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeSEBend1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeSEBend2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeSEBend3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeSWBend1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeSWBend2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeSWBend3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTEast1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTEast2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTEast3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTNorth1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTNorth2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTNorth3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTSouth1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTSouth2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTSouth3", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTWest1", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTWest2", + "directions":1, + "delays":[ [ 1.0 ] ] + }, + { + "name":"pipeTWest3", + "directions":1, + "delays":[ [ 1.0 ] ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeEast2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeEast2.png new file mode 100644 index 0000000000..a44e27011f Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeEast2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway1.png new file mode 100644 index 0000000000..3da5ae8a6a Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway2.png new file mode 100644 index 0000000000..7c29562995 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway3.png new file mode 100644 index 0000000000..069f5e6573 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeFourway3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral1.png new file mode 100644 index 0000000000..b8f1f66190 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral2.png new file mode 100644 index 0000000000..aad6e9f0f6 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral3.png new file mode 100644 index 0000000000..e715454f7e Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLateral3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal1.png new file mode 100644 index 0000000000..92bbfb0722 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal2.png new file mode 100644 index 0000000000..9bc0fd7997 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal3.png new file mode 100644 index 0000000000..3666086c91 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeLongitudinal3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend1.png new file mode 100644 index 0000000000..54b5c5782a Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend2.png new file mode 100644 index 0000000000..e5766e903b Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend3.png new file mode 100644 index 0000000000..f861f8b49e Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNEBend3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend1.png new file mode 100644 index 0000000000..2d02ced038 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend2.png new file mode 100644 index 0000000000..f88805cd27 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend3.png new file mode 100644 index 0000000000..36061210b8 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNWBend3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNorth2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNorth2.png new file mode 100644 index 0000000000..2dbddd2c44 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeNorth2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend1.png new file mode 100644 index 0000000000..568023bc17 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend2.png new file mode 100644 index 0000000000..e81dfe290c Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend3.png new file mode 100644 index 0000000000..496ab8c7a8 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSEBend3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend1.png new file mode 100644 index 0000000000..ca044b85d3 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend2.png new file mode 100644 index 0000000000..7ea0ed3efe Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend3.png new file mode 100644 index 0000000000..902c626149 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSWBend3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSouth2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSouth2.png new file mode 100644 index 0000000000..ba98a65841 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeSouth2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast1.png new file mode 100644 index 0000000000..083cbfc9ea Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast2.png new file mode 100644 index 0000000000..60b75434b0 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast3.png new file mode 100644 index 0000000000..817e74e7fb Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTEast3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth1.png new file mode 100644 index 0000000000..e082a773c5 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth2.png new file mode 100644 index 0000000000..0557b014c5 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth3.png new file mode 100644 index 0000000000..2780655438 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTNorth3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth1.png new file mode 100644 index 0000000000..04e434edcf Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth2.png new file mode 100644 index 0000000000..21517957ee Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth3.png new file mode 100644 index 0000000000..51fa53dde6 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTSouth3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest1.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest1.png new file mode 100644 index 0000000000..4711725c00 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest1.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest2.png new file mode 100644 index 0000000000..bf87ae1f25 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest2.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest3.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest3.png new file mode 100644 index 0000000000..2a4bf92267 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeTWest3.png differ diff --git a/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeWest2.png b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeWest2.png new file mode 100644 index 0000000000..bac3e06608 Binary files /dev/null and b/Resources/Textures/Constructible/Atmos/pipe.rsi/pipeWest2.png differ