mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Movement: correct no point recalculation on speed change in TargetedMovementGenerator
(cherry picked from commit 4d7e7a97b3)
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -42,12 +42,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*) { }
|
||||
@@ -65,6 +65,7 @@ class TargetedMovementGenerator : public MovementGeneratorMedium< T, D >, public
|
||||
float _offset;
|
||||
float _angle;
|
||||
bool _recalculateTravel;
|
||||
bool _speedChanged;
|
||||
bool _targetReached;
|
||||
bool _interrupt;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user