diff --git a/OpenRA.Game/Traits/Render/RenderUnit.cs b/OpenRA.Game/Traits/Render/RenderUnit.cs index c766d0af8a..b40a615fbf 100644 --- a/OpenRA.Game/Traits/Render/RenderUnit.cs +++ b/OpenRA.Game/Traits/Render/RenderUnit.cs @@ -20,6 +20,8 @@ using System; using OpenRA.Graphics; +using System.Collections.Generic; +using OpenRA.FileFormats; namespace OpenRA.Traits { @@ -28,14 +30,17 @@ namespace OpenRA.Traits public override object Create(Actor self) { return new RenderUnit(self); } } - class RenderUnit : RenderSimple, INotifyDamage + class RenderUnit : RenderSimple, INotifyDamage, IRenderModifier { + Shroud shroud; + public RenderUnit(Actor self) : base(self, () => self.traits.Get().Facing) { anim.Play("idle"); - anims.Add( "smoke", new AnimationWithOffset( new Animation( "smoke_m" ), null, () => !isSmoking ) ); + + shroud = self.World.WorldActor.traits.Get(); } public void PlayCustomAnimation(Actor self, string newAnim, Action after) @@ -57,5 +62,14 @@ namespace OpenRA.Traits () => smoke.PlayBackwardsThen( "end", () => isSmoking = false ) ) ); } + + public IEnumerable ModifyRender(Actor self, IEnumerable r) + { + if (self.Owner == self.World.LocalPlayer || + shroud.visibleCells[self.Location.X, self.Location.Y] > 0) + return r; + + return new Renderable[] { }; + } } }