mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Movement: Pass SpellEffectExtraData PointMovementGenerator
This commit is contained in:
@@ -550,13 +550,13 @@ void MotionMaster::MoveCharge(float x, float y, float z, float speed /*= SPEED_C
|
||||
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
TC_LOG_DEBUG("misc", "Player (%s) charged point (X: %f Y: %f Z: %f).", _owner->GetGUID().ToString().c_str(), x, y, z);
|
||||
Mutate(new PointMovementGenerator<Player>(id, x, y, z, generatePath, speed, target), MOTION_SLOT_CONTROLLED);
|
||||
Mutate(new PointMovementGenerator<Player>(id, x, y, z, generatePath, speed, target, spellEffectExtraData), MOTION_SLOT_CONTROLLED);
|
||||
}
|
||||
else
|
||||
{
|
||||
TC_LOG_DEBUG("misc", "Creature (Entry: %u %s) charged point (X: %f Y: %f Z: %f).",
|
||||
_owner->GetEntry(), _owner->GetGUID().ToString().c_str(), x, y, z);
|
||||
Mutate(new PointMovementGenerator<Creature>(id, x, y, z, generatePath, speed, target), MOTION_SLOT_CONTROLLED);
|
||||
Mutate(new PointMovementGenerator<Creature>(id, x, y, z, generatePath, speed, target, spellEffectExtraData), MOTION_SLOT_CONTROLLED);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,8 @@ void PointMovementGenerator<T>::DoInitialize(T* unit)
|
||||
init.SetVelocity(speed);
|
||||
if (i_faceTarget)
|
||||
init.SetFacing(i_faceTarget);
|
||||
if (i_spellEffectExtra)
|
||||
init.SetSpellEffectExtraData(*i_spellEffectExtra);
|
||||
init.Launch();
|
||||
|
||||
// Call for creature group update
|
||||
|
||||
@@ -22,12 +22,19 @@
|
||||
#include "MovementGenerator.h"
|
||||
#include "FollowerReference.h"
|
||||
|
||||
namespace Movement
|
||||
{
|
||||
struct SpellEffectExtraData;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
class PointMovementGenerator : public MovementGeneratorMedium< T, PointMovementGenerator<T> >
|
||||
{
|
||||
public:
|
||||
PointMovementGenerator(uint32 _id, float _x, float _y, float _z, bool _generatePath, float _speed = 0.0f, Unit const* faceTarget = nullptr) : id(_id),
|
||||
i_x(_x), i_y(_y), i_z(_z), speed(_speed), i_faceTarget(faceTarget), m_generatePath(_generatePath), i_recalculateSpeed(false) { }
|
||||
PointMovementGenerator(uint32 _id, float _x, float _y, float _z, bool _generatePath, float _speed = 0.0f, Unit const* faceTarget = nullptr,
|
||||
Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr) : id(_id),
|
||||
i_x(_x), i_y(_y), i_z(_z), speed(_speed), i_faceTarget(faceTarget), i_spellEffectExtra(spellEffectExtraData),
|
||||
m_generatePath(_generatePath), i_recalculateSpeed(false) { }
|
||||
|
||||
void DoInitialize(T*);
|
||||
void DoFinalize(T*);
|
||||
@@ -46,6 +53,7 @@ class PointMovementGenerator : public MovementGeneratorMedium< T, PointMovementG
|
||||
float i_x, i_y, i_z;
|
||||
float speed;
|
||||
Unit const* i_faceTarget;
|
||||
Movement::SpellEffectExtraData const* i_spellEffectExtra;
|
||||
bool m_generatePath;
|
||||
bool i_recalculateSpeed;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user