Add FirstNonEmptyBounds method for IDecorationBounds interface.

This provides a more efficient way of determining the bounds by avoiding LINQ. A helper that works directly on arrays prevents allocation of an enumerator when the collection is know to be an array.
This commit is contained in:
RoosterDragon
2017-12-22 12:55:05 +00:00
committed by reaperrr
parent 3b642b1a79
commit d2f2029caf
10 changed files with 38 additions and 21 deletions

View File

@@ -106,7 +106,7 @@ namespace OpenRA.Mods.Common.Traits.Render
if (!ShouldRender(self) || self.World.FogObscures(self))
return Enumerable.Empty<IRenderable>();
var bounds = decorationBounds.Select(b => b.DecorationBounds(self, wr)).FirstOrDefault(b => !b.IsEmpty);
var bounds = decorationBounds.FirstNonEmptyBounds(self, wr);
var halfSize = (0.5f * Anim.Image.Size.XY).ToInt2();
var boundsOffset = new int2(bounds.Left + bounds.Right, bounds.Top + bounds.Bottom) / 2;