aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-03-14 16:36:10 +0100
committerShauren <shauren.trinity@gmail.com>2017-03-14 16:36:10 +0100
commit3731f4087b770d487dde5727482cd3e74589acba (patch)
tree31ed60384e6101150b8d28e87432027eab84d459 /src
parentadb42b1195f861cadde2c066c07bd25b5892e9ee (diff)
Core/Movement: Pass SpellEffectExtraData PointMovementGenerator
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Movement/MotionMaster.cpp4
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp2
-rw-r--r--src/server/game/Movement/MovementGenerators/PointMovementGenerator.h12
3 files changed, 14 insertions, 4 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index 76568705373..271207558c1 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -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);
}
}
diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
index 113eafadb74..39ee3fbf6d4 100755
--- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
@@ -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
diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
index ee804f83820..e07d4b5a2d9 100644
--- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
@@ -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;
};