ActorMap, avoid IPositionable trait lookup.

This commit is contained in:
Vapre
2023-05-27 23:26:20 +02:00
committed by Matthias Mailänder
parent d72b1ffd49
commit 7c0f6ead3a
5 changed files with 7 additions and 9 deletions

View File

@@ -65,8 +65,7 @@ namespace OpenRA.Mods.Common.Traits
if (!info.ValidTargets.Overlaps(collector.GetEnabledTargetTypes()))
return false;
var positionable = collector.TraitOrDefault<IPositionable>();
if (positionable == null)
if (collector.OccupiesSpace is not IPositionable positionable)
return false;
return collector.World.Map.FindTilesInCircle(collector.Location, info.MaxRadius)
@@ -83,7 +82,7 @@ namespace OpenRA.Mods.Common.Traits
public override void Activate(Actor collector)
{
var positionable = collector.Trait<IPositionable>();
var positionable = collector.OccupiesSpace as IPositionable;
var candidateCells = collector.World.Map.FindTilesInCircle(collector.Location, info.MaxRadius)
.Where(c => positionable.CanEnterCell(c)).Shuffle(collector.World.SharedRandom)
.ToArray();