Skip to content

Commit

Permalink
Defer rollover checks while generating selection decorations
Browse files Browse the repository at this point in the history
  • Loading branch information
abcdefg30 committed Jul 19, 2021
1 parent 1c6ca39 commit 98c3a9a
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions OpenRA.Mods.Common/Traits/Render/SelectionDecorationsBase.cs
Expand Up @@ -69,21 +69,26 @@ IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldR
IEnumerable<IRenderable> DrawDecorations(Actor self, WorldRenderer wr)
{
var selected = self.World.Selection.Contains(self);
var rollover = self.World.Selection.RolloverContains(self);
var regularWorld = self.World.Type == WorldType.Regular;
var statusBars = Game.Settings.Game.StatusBars;

// Health bars are shown when:
// * actor is selected / in active drag rectangle / under the mouse
// * status bar preference is set to "always show"
// * status bar preference is set to "when damaged" and actor is damaged
var displayHealth = selected || rollover || (regularWorld && statusBars == StatusBarsType.AlwaysShow)
var displayHealth = selected || (regularWorld && statusBars == StatusBarsType.AlwaysShow)
|| (regularWorld && statusBars == StatusBarsType.DamageShow && self.GetDamageState() != DamageState.Undamaged);

// Extra bars are shown when:
// * actor is selected / in active drag rectangle / under the mouse
// * status bar preference is set to "always show" or "when damaged"
var displayExtra = selected || rollover || (regularWorld && statusBars != StatusBarsType.Standard);
var displayExtra = selected || (regularWorld && statusBars != StatusBarsType.Standard);

// PERF: Defer rollover checks until we definitely need them
// (i.e. health or extra not enabled through the previous checks)
// If we have a rollover display both health and extra
if ((!displayHealth || !displayExtra) && self.World.Selection.RolloverContains(self))
displayHealth = displayExtra = true;

if (selected)
foreach (var r in RenderSelectionBox(self, wr, info.SelectionBoxColor))
Expand Down

0 comments on commit 98c3a9a

Please sign in to comment.