mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-19 11:55:43 +00:00
fix(Core): Memleaks fixes - Part II. (#5760)
This commit is contained in:
@@ -130,7 +130,7 @@ bool ChaseMovementGenerator<T>::DoUpdate(T* owner, uint32 time_diff)
|
||||
}
|
||||
|
||||
if (!i_path || moveToward != _movingTowards)
|
||||
i_path = new PathGenerator(owner);
|
||||
i_path = std::make_unique<PathGenerator>(owner);
|
||||
|
||||
float x, y, z;
|
||||
bool shortenPath;
|
||||
@@ -188,6 +188,7 @@ bool ChaseMovementGenerator<T>::DoUpdate(T* owner, uint32 time_diff)
|
||||
template<>
|
||||
void ChaseMovementGenerator<Player>::DoInitialize(Player* owner)
|
||||
{
|
||||
i_path = nullptr;
|
||||
_lastTargetPosition.reset();
|
||||
owner->AddUnitState(UNIT_STATE_CHASE);
|
||||
}
|
||||
@@ -195,6 +196,7 @@ void ChaseMovementGenerator<Player>::DoInitialize(Player* owner)
|
||||
template<>
|
||||
void ChaseMovementGenerator<Creature>::DoInitialize(Creature* owner)
|
||||
{
|
||||
i_path = nullptr;
|
||||
_lastTargetPosition.reset();
|
||||
owner->SetWalk(false);
|
||||
owner->AddUnitState(UNIT_STATE_CHASE);
|
||||
@@ -305,7 +307,7 @@ bool FollowMovementGenerator<T>::DoUpdate(T* owner, uint32 time_diff)
|
||||
return true;
|
||||
|
||||
if (!i_path)
|
||||
i_path = new PathGenerator(owner);
|
||||
i_path = std::make_unique<PathGenerator>(owner);
|
||||
|
||||
float x, y, z;
|
||||
// select angle
|
||||
@@ -376,6 +378,7 @@ void FollowMovementGenerator<Creature>::_updateSpeed(Creature* owner)
|
||||
template<class T>
|
||||
void FollowMovementGenerator<T>::DoInitialize(T* owner)
|
||||
{
|
||||
i_path = nullptr;
|
||||
_lastTargetPosition.reset();
|
||||
owner->AddUnitState(UNIT_STATE_FOLLOW);
|
||||
_updateSpeed(owner);
|
||||
|
||||
@@ -29,7 +29,7 @@ class ChaseMovementGenerator : public MovementGeneratorMedium<T, ChaseMovementGe
|
||||
public:
|
||||
ChaseMovementGenerator(Unit* target, std::optional<ChaseRange> range = {}, std::optional<ChaseAngle> angle = {})
|
||||
: TargetedMovementGeneratorBase(target), i_path(nullptr), i_recheckDistance(0), i_recalculateTravel(true), _range(range), _angle(angle) {}
|
||||
~ChaseMovementGenerator() { delete i_path; }
|
||||
~ChaseMovementGenerator() { }
|
||||
|
||||
MovementGeneratorType GetMovementGeneratorType() { return CHASE_MOTION_TYPE; }
|
||||
|
||||
@@ -48,7 +48,7 @@ public:
|
||||
bool HasLostTarget(Unit* unit) const { return unit->GetVictim() != this->GetTarget(); }
|
||||
|
||||
private:
|
||||
PathGenerator* i_path;
|
||||
std::unique_ptr<PathGenerator> i_path;
|
||||
TimeTrackerSmall i_recheckDistance;
|
||||
bool i_recalculateTravel;
|
||||
|
||||
@@ -65,7 +65,7 @@ class FollowMovementGenerator : public MovementGeneratorMedium<T, FollowMovement
|
||||
public:
|
||||
FollowMovementGenerator(Unit* target, float range, ChaseAngle angle)
|
||||
: TargetedMovementGeneratorBase(target), i_path(nullptr), i_recheckDistance(0), i_recalculateTravel(true), _range(range), _angle(angle) {}
|
||||
~FollowMovementGenerator() { delete i_path; }
|
||||
~FollowMovementGenerator() { }
|
||||
|
||||
MovementGeneratorType GetMovementGeneratorType() { return FOLLOW_MOTION_TYPE; }
|
||||
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
void _updateSpeed(T* owner);
|
||||
|
||||
private:
|
||||
PathGenerator* i_path;
|
||||
std::unique_ptr<PathGenerator> i_path;
|
||||
TimeTrackerSmall i_recheckDistance;
|
||||
bool i_recalculateTravel;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user