diff --git a/OpenRA.Game/Actor.cs b/OpenRA.Game/Actor.cs index 28e872c039..68033b0e96 100644 --- a/OpenRA.Game/Actor.cs +++ b/OpenRA.Game/Actor.cs @@ -65,6 +65,9 @@ namespace OpenRA } } + readonly IEnumerable traitsImplementingRenderModifier; + readonly IEnumerable traitsImplementingRender; + internal Actor(World world, string name, TypeDictionary initDict) { var init = new ActorInitializer(this, initDict); @@ -104,6 +107,9 @@ namespace OpenRA return new Rectangle(offset.X, offset.Y, size.X, size.Y); }); + + traitsImplementingRenderModifier = TraitsImplementing(); + traitsImplementingRender = TraitsImplementing(); } public void Tick() @@ -119,14 +125,14 @@ namespace OpenRA public IEnumerable Render(WorldRenderer wr) { var renderables = Renderables(wr); - foreach (var modifier in TraitsImplementing()) + foreach (var modifier in traitsImplementingRenderModifier) renderables = modifier.ModifyRender(this, wr, renderables); return renderables; } IEnumerable Renderables(WorldRenderer wr) { - foreach (var render in TraitsImplementing()) + foreach (var render in traitsImplementingRender) foreach (var renderable in render.Render(this, wr)) yield return renderable; }