diff --git a/OpenRA.Game/Traits/Activities/Move.cs b/OpenRA.Game/Traits/Activities/Move.cs index c8ae9be1b0..fe3f0f10c3 100755 --- a/OpenRA.Game/Traits/Activities/Move.cs +++ b/OpenRA.Game/Traits/Activities/Move.cs @@ -156,7 +156,7 @@ namespace OpenRA.Traits.Activities } else { - mobile.SetLocation( mobile.fromCell, nextCell.Value ); + mobile.toCell = nextCell.Value; var move = new MoveFirstHalf( this, Util.CenterOfCell( mobile.fromCell ), @@ -350,7 +350,8 @@ namespace OpenRA.Traits.Activities mobile.Facing, Util.GetNearestFacing( mobile.Facing, Util.GetFacing( nextCell.Value - mobile.toCell, mobile.Facing ) ), moveFraction - moveFractionTotal ); - mobile.SetLocation( mobile.toCell, nextCell.Value ); + mobile.fromCell = mobile.toCell; + mobile.toCell = nextCell.Value; return ret; } else @@ -363,7 +364,7 @@ namespace OpenRA.Traits.Activities mobile.Facing, mobile.Facing, moveFraction - moveFractionTotal ); - mobile.SetLocation( mobile.toCell, mobile.toCell ); + mobile.fromCell = mobile.toCell; return ret2; } } @@ -378,7 +379,7 @@ namespace OpenRA.Traits.Activities protected override MovePart OnComplete( Actor self, Mobile mobile, Move parent ) { self.CenterLocation = Util.CenterOfCell( mobile.toCell ); - mobile.SetLocation( mobile.toCell, mobile.toCell ); + mobile.fromCell = mobile.toCell; mobile.FinishedMoving(self); return null; } diff --git a/OpenRA.Game/Traits/Mobile.cs b/OpenRA.Game/Traits/Mobile.cs index 5de98f9b20..836d6aee15 100644 --- a/OpenRA.Game/Traits/Mobile.cs +++ b/OpenRA.Game/Traits/Mobile.cs @@ -84,18 +84,20 @@ namespace OpenRA.Traits public int2 fromCell { get { return __fromCell; } + set { SetLocation( value, __toCell ); } } [Sync] public int2 toCell { get { return __toCell; } + set { SetLocation( __fromCell, value ); } } [Sync] public int PathHash; // written by Move.EvalPath, to temporarily debug this crap. - public void SetLocation(int2 from, int2 to) + void SetLocation(int2 from, int2 to) { if (fromCell == from && toCell == to) return; RemoveInfluence();