Core/Movement: correct no point recalculation on speed change in TargetedMovementGenerator

This commit is contained in:
ccrs
2017-04-11 15:03:34 +02:00
parent bd3cf8f7cd
commit 4d7e7a97b3
2 changed files with 7 additions and 3 deletions

View File

@@ -82,7 +82,9 @@ bool TargetedMovementGenerator<T, D>::DoUpdate(T* owner, uint32 diff)
}
if (targetMoved)
SetTargetLocation(owner, targetMoved);
SetTargetLocation(owner, true);
else if (_speedChanged)
SetTargetLocation(owner, false);
if (!_targetReached && owner->movespline->Finalized())
{
@@ -177,6 +179,7 @@ void TargetedMovementGenerator<T, D>::SetTargetLocation(T* owner, bool updateDes
_targetReached = false;
_recalculateTravel = false;
_speedChanged = false;
AddUnitStateMove(owner);

View File

@@ -43,12 +43,12 @@ template<class T, typename D>
class TargetedMovementGenerator : public MovementGeneratorMedium< T, D >, public TargetedMovementGeneratorBase
{
public:
explicit TargetedMovementGenerator(Unit* target, float offset, float angle) : TargetedMovementGeneratorBase(target), _path(nullptr), _timer(0), _offset(offset), _angle(angle), _recalculateTravel(false), _targetReached(false), _interrupt(false) { }
explicit TargetedMovementGenerator(Unit* target, float offset, float angle) : TargetedMovementGeneratorBase(target), _path(nullptr), _timer(0), _offset(offset), _angle(angle), _recalculateTravel(false), _speedChanged(false), _targetReached(false), _interrupt(false) { }
~TargetedMovementGenerator();
bool DoUpdate(T*, uint32);
void UnitSpeedChanged() override { _recalculateTravel = true; }
void UnitSpeedChanged() override { _speedChanged = true; }
virtual void ClearUnitStateMove(T*) { }
virtual void AddUnitStateMove(T*) { }
@@ -66,6 +66,7 @@ class TargetedMovementGenerator : public MovementGeneratorMedium< T, D >, public
float _offset;
float _angle;
bool _recalculateTravel;
bool _speedChanged;
bool _targetReached;
bool _interrupt;
};