From 453d59ae169742366d9063e4f10f1b1bf16118cf Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Mon, 19 Jul 2021 22:47:00 +0200 Subject: [PATCH] Defer rollover checks while generating selection decorations --- OpenRA.Mods.Common/Traits/World/Selection.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/World/Selection.cs b/OpenRA.Mods.Common/Traits/World/Selection.cs index 00b7cf5ef3..4c9f9573a7 100644 --- a/OpenRA.Mods.Common/Traits/World/Selection.cs +++ b/OpenRA.Mods.Common/Traits/World/Selection.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits { public class SelectionInfo : TraitInfo { - public override object Create(ActorInitializer init) { return new Selection(this); } + public override object Create(ActorInitializer init) { return new Selection(); } } [TraitLocation(SystemActors.World | SystemActors.EditorWorld)] @@ -29,13 +29,11 @@ namespace OpenRA.Mods.Common.Traits public IEnumerable Actors => actors; readonly HashSet actors = new HashSet(); + readonly List rolloverActors = new List(); World world; - IEnumerable rolloverActors; INotifySelection[] worldNotifySelection; - public Selection(SelectionInfo info) { } - void INotifyCreated.Created(Actor self) { worldNotifySelection = self.TraitsImplementing().ToArray(); @@ -157,12 +155,13 @@ namespace OpenRA.Mods.Common.Traits public void SetRollover(IEnumerable rollover) { - rolloverActors = rollover; + rolloverActors.Clear(); + rolloverActors.AddRange(rollover); } public bool RolloverContains(Actor a) { - return rolloverActors != null && rolloverActors.Contains(a); + return rolloverActors.Contains(a); } void ITick.Tick(Actor self)