Core/Movement: Pass SpellEffectExtraData PointMovementGenerator

This commit is contained in:
Shauren
2017-03-14 16:36:10 +01:00
parent adb42b1195
commit 3731f4087b
3 changed files with 14 additions and 4 deletions

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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;
};