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.
This commit is contained in:
RoosterDragon
2016-05-29 20:57:45 +01:00
parent 29efba58b9
commit a4949ff1d5

View File

@@ -190,9 +190,12 @@ namespace OpenRA.Graphics
if (World.Type == WorldType.Regular)
{
foreach (var g in World.ActorsHavingTrait<Selectable>().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<SelectableInfo>() &&
!World.FogObscures(a)))
{
if (Game.Settings.Game.StatusBars == StatusBarsType.Standard)
new SelectionBarsRenderable(g, false, false).Render(this);