Revert "Fix crushables and crates causing HPF to crash."

This reverts commit 5765e51c56.
This commit is contained in:
Gustas
2022-09-26 15:39:28 +03:00
committed by abcdefg30
parent 625dc1dd35
commit 5abbdc37cb
5 changed files with 9 additions and 32 deletions

View File

@@ -120,11 +120,8 @@ namespace OpenRA.Mods.Common.Activities
var move = actor.Trait<IMove>();
var pos = actor.Trait<IPositionable>();
// HACK: Call SetCenterPosition before SetPosition
// So when SetPosition calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
pos.SetCenterPosition(actor, spawn);
pos.SetPosition(actor, exitSubCell.Value.Cell, exitSubCell.Value.SubCell);
pos.SetCenterPosition(actor, spawn);
actor.CancelActivity();
w.Add(actor);

View File

@@ -46,12 +46,9 @@ namespace OpenRA.Mods.Common.Scripting
[Desc("Moves from outside the world into the cell grid.")]
public void MoveIntoWorld(CPos cell)
{
// HACK: Call SetCenterPosition before SetPosition
// So when SetPosition calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
var pos = Self.CenterPosition;
mobile.SetCenterPosition(Self, pos);
mobile.SetPosition(Self, cell);
mobile.SetCenterPosition(Self, pos);
Self.QueueActivity(mobile.ReturnToCell(Self));
}

View File

@@ -183,22 +183,16 @@ namespace OpenRA.Mods.Common.Traits
// Sets the location (Location) and position (CenterPosition)
public void SetPosition(Actor self, WPos pos)
{
// HACK: Call SetCenterPosition before SetLocation
// So when SetLocation calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
var cell = self.World.Map.CellContaining(pos);
SetCenterPosition(self, self.World.Map.CenterOfCell(cell) + new WVec(WDist.Zero, WDist.Zero, self.World.Map.DistanceAboveTerrain(pos)));
SetLocation(self, cell);
SetCenterPosition(self, self.World.Map.CenterOfCell(cell) + new WVec(WDist.Zero, WDist.Zero, self.World.Map.DistanceAboveTerrain(pos)));
}
// Sets the location (Location) and position (CenterPosition)
public void SetPosition(Actor self, CPos cell, SubCell subCell = SubCell.Any)
{
// HACK: Call SetCenterPosition before SetLocation
// So when SetLocation calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
SetCenterPosition(self, self.World.Map.CenterOfCell(cell));
SetLocation(self, cell);
SetCenterPosition(self, self.World.Map.CenterOfCell(cell));
}
// Sets only the CenterPosition

View File

@@ -468,28 +468,22 @@ namespace OpenRA.Mods.Common.Traits
public void SetPosition(Actor self, CPos cell, SubCell subCell = SubCell.Any)
{
subCell = GetValidSubCell(subCell);
SetLocation(cell, subCell, cell, subCell);
var position = cell.Layer == 0 ? self.World.Map.CenterOfCell(cell) :
self.World.GetCustomMovementLayers()[cell.Layer].CenterOfCell(cell);
// HACK: Call SetCenterPosition before SetLocation
// So when SetLocation calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
var subcellOffset = self.World.Map.Grid.OffsetOfSubCell(subCell);
SetCenterPosition(self, position + subcellOffset);
SetLocation(cell, subCell, cell, subCell);
FinishedMoving(self);
}
// Sets the location (fromCell, toCell, FromSubCell, ToSubCell) and CenterPosition
public void SetPosition(Actor self, WPos pos)
{
// HACK: Call SetCenterPosition before SetLocation
// So when SetLocation calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
var cell = self.World.Map.CellContaining(pos);
SetCenterPosition(self, self.World.Map.CenterOfSubCell(cell, FromSubCell) + new WVec(0, 0, self.World.Map.DistanceAboveTerrain(pos).Length));
SetLocation(cell, FromSubCell, cell, FromSubCell);
SetCenterPosition(self, self.World.Map.CenterOfSubCell(cell, FromSubCell) + new WVec(0, 0, self.World.Map.DistanceAboveTerrain(pos).Length));
FinishedMoving(self);
}
@@ -692,11 +686,8 @@ namespace OpenRA.Mods.Common.Traits
subCell = self.World.Map.Grid.DefaultSubCell;
// Reserve the exit cell
// HACK: Call SetCenterPosition before SetPosition
// So when SetPosition calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
mobile.SetCenterPosition(self, pos);
mobile.SetPosition(self, cell, subCell);
mobile.SetCenterPosition(self, pos);
if (delay > 0)
QueueChild(new Wait(delay));

View File

@@ -102,12 +102,10 @@ namespace OpenRA.Mods.Common.Traits
self.World.AddFrameEndTask(w =>
{
// HACK: Call SetCenterPosition before SetPosition
// So when SetPosition calls ActorMap.CellUpdated
// the listeners see the new CenterPosition.
dropPositionable.SetPosition(dropActor, dropCell, dropSubCell);
var dropPosition = dropActor.CenterPosition + new WVec(0, 0, self.CenterPosition.Z - dropActor.CenterPosition.Z);
dropPositionable.SetCenterPosition(dropActor, dropPosition);
dropPositionable.SetPosition(dropActor, dropCell, dropSubCell);
w.Add(dropActor);
});