Add support for only rendering effects inside screen bounds

This commit is contained in:
Matthias Mailänder
2016-02-19 19:57:16 +01:00
committed by Paul Chote
parent 8ca43e3d6b
commit 1aebf9857c
5 changed files with 74 additions and 3 deletions

View File

@@ -110,7 +110,13 @@ namespace OpenRA.Graphics
if (World.OrderGenerator != null)
worldRenderables = worldRenderables.Concat(World.OrderGenerator.Render(this, World));
worldRenderables = worldRenderables.Concat(World.Effects.SelectMany(e => e.Render(this)));
// Unpartitioned effects
worldRenderables = worldRenderables.Concat(World.UnpartitionedEffects.SelectMany(e => e.Render(this)));
// Partitioned, currently on-screen effects
var effectRenderables = World.ScreenMap.EffectsInBox(Viewport.TopLeft, Viewport.BottomRight);
worldRenderables = worldRenderables.Concat(effectRenderables.SelectMany(e => e.Render(this)));
worldRenderables = worldRenderables.OrderBy(RenderableScreenZPositionComparisonKey);
Game.Renderer.WorldModelRenderer.BeginFrame();