From f2e270ce06e1e069f2ec09f2f777a1f3b3b89d68 Mon Sep 17 00:00:00 2001 From: RoosterDragon Date: Sat, 10 Mar 2018 18:10:29 +0000 Subject: [PATCH] Return IRenderable[] rather than IEnumerable for animations. Since some callers now know they have an array, then can enumerate it more efficiently and without allocating an enumerator. --- OpenRA.Game/Graphics/Animation.cs | 4 ++-- OpenRA.Game/Graphics/AnimationWithOffset.cs | 2 +- OpenRA.Game/Graphics/SpriteRenderable.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/OpenRA.Game/Graphics/Animation.cs b/OpenRA.Game/Graphics/Animation.cs index c3ecfea61f..f291df973b 100644 --- a/OpenRA.Game/Graphics/Animation.cs +++ b/OpenRA.Game/Graphics/Animation.cs @@ -53,7 +53,7 @@ namespace OpenRA.Graphics public int CurrentFrame { get { return backwards ? CurrentSequence.Start + CurrentSequence.Length - frame - 1 : frame; } } public Sprite Image { get { return CurrentSequence.GetSprite(CurrentFrame, facingFunc()); } } - public IEnumerable Render(WPos pos, WVec offset, int zOffset, PaletteReference palette, float scale) + public IRenderable[] Render(WPos pos, WVec offset, int zOffset, PaletteReference palette, float scale) { var imageRenderable = new SpriteRenderable(Image, pos, offset, CurrentSequence.ZOffset + zOffset, palette, scale, IsDecoration); @@ -78,7 +78,7 @@ namespace OpenRA.Graphics xy.Y + (int)(cb.Bottom * scale)); } - public IEnumerable Render(WPos pos, PaletteReference palette) + public IRenderable[] Render(WPos pos, PaletteReference palette) { return Render(pos, WVec.Zero, 0, palette, 1f); } diff --git a/OpenRA.Game/Graphics/AnimationWithOffset.cs b/OpenRA.Game/Graphics/AnimationWithOffset.cs index 758194c254..4778119f88 100644 --- a/OpenRA.Game/Graphics/AnimationWithOffset.cs +++ b/OpenRA.Game/Graphics/AnimationWithOffset.cs @@ -36,7 +36,7 @@ namespace OpenRA.Graphics ZOffset = zOffset; } - public IEnumerable Render(Actor self, WorldRenderer wr, PaletteReference pal, float scale) + public IRenderable[] Render(Actor self, WorldRenderer wr, PaletteReference pal, float scale) { var center = self.CenterPosition; var offset = OffsetFunc != null ? OffsetFunc() : WVec.Zero; diff --git a/OpenRA.Game/Graphics/SpriteRenderable.cs b/OpenRA.Game/Graphics/SpriteRenderable.cs index 296d755fa7..57b160376c 100644 --- a/OpenRA.Game/Graphics/SpriteRenderable.cs +++ b/OpenRA.Game/Graphics/SpriteRenderable.cs @@ -17,7 +17,7 @@ namespace OpenRA.Graphics { public struct SpriteRenderable : IRenderable, IFinalizedRenderable { - public static readonly IEnumerable None = new IRenderable[0].AsEnumerable(); + public static readonly IEnumerable None = new IRenderable[0]; readonly Sprite sprite; readonly WPos pos;