diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index eb13325e6c..cd95ffd35a 100644 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -12,22 +12,33 @@ using System; using OpenRA.Mods.RA.Effects; using OpenRA.Traits; using OpenRA.GameRules; +using System.Collections.Generic; +using System.Linq; namespace OpenRA.Mods.RA.Render { public class RenderBuildingInfo : RenderSimpleInfo { public readonly bool HasMakeAnimation = true; + public readonly float2 Origin = float2.Zero; public override object Create(ActorInitializer init) { return new RenderBuilding(init);} } - public class RenderBuilding : RenderSimple, INotifyDamage, INotifySold + public class RenderBuilding : RenderSimple, INotifyDamage, INotifySold, IRenderModifier { + readonly float2 Origin; + public RenderBuilding( ActorInitializer init ) : this( init, () => 0 ) { + Origin = init.self.Info.Traits.Get().Origin; } + public IEnumerable ModifyRender(Actor self, IEnumerable r) + { + return r.Select(a => a.WithPos(a.Pos - Origin)); + } + public RenderBuilding( ActorInitializer init, Func baseFacing ) : base(init.self, baseFacing) {