Sort renderables in-place in WorldRenderer.GenerateRenderables
This commit is contained in:
@@ -20,7 +20,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
public sealed class WorldRenderer : IDisposable
|
||||
{
|
||||
public static readonly Func<IRenderable, int> RenderableScreenZPositionComparisonKey =
|
||||
public static readonly Func<IRenderable, int> RenderableZPositionComparisonKey =
|
||||
r => ZPosition(r.Pos, r.ZOffset);
|
||||
|
||||
public readonly Size TileSize;
|
||||
@@ -133,7 +133,9 @@ namespace OpenRA.Graphics
|
||||
foreach (var e in World.ScreenMap.RenderableEffectsInBox(Viewport.TopLeft, Viewport.BottomRight))
|
||||
renderablesBuffer.AddRange(e.Render(this));
|
||||
|
||||
foreach (var renderable in renderablesBuffer.OrderBy(RenderableScreenZPositionComparisonKey))
|
||||
renderablesBuffer.Sort((x, y) => RenderableZPositionComparisonKey(x).CompareTo(RenderableZPositionComparisonKey(y)));
|
||||
|
||||
foreach (var renderable in renderablesBuffer)
|
||||
preparedRenderables.Add(renderable.PrepareRender(this));
|
||||
|
||||
// PERF: Reuse collection to avoid allocations.
|
||||
|
||||
Reference in New Issue
Block a user