Mark cells that have changed MovementType as dirty
This commit is contained in:
@@ -90,12 +90,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
protected override void TraitEnabled(Actor self)
|
||||
{
|
||||
self.World.ActorMap.UpdatePosition(self, self.OccupiesSpace);
|
||||
self.World.ActorMap.UpdateOccupiedCells(self.OccupiesSpace);
|
||||
}
|
||||
|
||||
protected override void TraitDisabled(Actor self)
|
||||
{
|
||||
self.World.ActorMap.UpdatePosition(self, self.OccupiesSpace);
|
||||
self.World.ActorMap.UpdateOccupiedCells(self.OccupiesSpace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,8 +159,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
var oldValue = movementTypes;
|
||||
movementTypes = value;
|
||||
if (value != oldValue)
|
||||
{
|
||||
self.World.ActorMap.UpdateOccupiedCells(self.OccupiesSpace);
|
||||
foreach (var n in notifyMoving)
|
||||
n.MovementTypeChanged(self, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -410,6 +410,15 @@ namespace OpenRA.Mods.Common.Traits
|
||||
influenceNode = influenceNode.Next;
|
||||
}
|
||||
|
||||
public void UpdateOccupiedCells(IOccupySpace ios)
|
||||
{
|
||||
if (CellUpdated == null)
|
||||
return;
|
||||
|
||||
foreach (var c in ios.OccupiedCells())
|
||||
CellUpdated(c.First);
|
||||
}
|
||||
|
||||
void ITick.Tick(Actor self)
|
||||
{
|
||||
// Position updates are done in one pass
|
||||
|
||||
Reference in New Issue
Block a user