From a4949ff1d5fc591d006d78b8746988f64722ba8c Mon Sep 17 00:00:00 2001 From: RoosterDragon Date: Sun, 29 May 2016 20:57:45 +0100 Subject: [PATCH] Only check for and render selection bars for actors on screen. This avoids expensive FogObscures checks and saves drawing selections bars for actors that are offscreen anyway. --- OpenRA.Game/Graphics/WorldRenderer.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index fbeed0b995..06174d88c2 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -190,9 +190,12 @@ namespace OpenRA.Graphics if (World.Type == WorldType.Regular) { - foreach (var g in World.ActorsHavingTrait().Where(a => !a.Disposed - && !World.FogObscures(a) - && !World.Selection.Contains(a))) + foreach (var g in World.ScreenMap.ActorsInBox(Viewport.TopLeft, Viewport.BottomRight) + .Where(a => + !a.Disposed && + !World.Selection.Contains(a) && + a.Info.HasTraitInfo() && + !World.FogObscures(a))) { if (Game.Settings.Game.StatusBars == StatusBarsType.Standard) new SelectionBarsRenderable(g, false, false).Render(this);