aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Position.cpp5
-rw-r--r--src/server/game/Entities/Object/Position.h2
-rw-r--r--src/server/game/Movement/MotionMaster.cpp4
-rw-r--r--src/server/game/Movement/MotionMaster.h2
4 files changed, 13 insertions, 0 deletions
diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp
index c5b4cda29e4..c1bd90290eb 100644
--- a/src/server/game/Entities/Object/Position.cpp
+++ b/src/server/game/Entities/Object/Position.cpp
@@ -27,6 +27,11 @@ Position::Position(G3D::Vector3 const& vect)
Relocate(vect.x, vect.y, vect.z, 0.f);
}
+Position::operator G3D::Vector3() const
+{
+ return { m_positionX, m_positionY, m_positionZ };
+}
+
bool Position::operator==(Position const &a)
{
return (G3D::fuzzyEq(a.m_positionX, m_positionX) &&
diff --git a/src/server/game/Entities/Object/Position.h b/src/server/game/Entities/Object/Position.h
index e01afe4cc71..b0909463162 100644
--- a/src/server/game/Entities/Object/Position.h
+++ b/src/server/game/Entities/Object/Position.h
@@ -36,6 +36,8 @@ struct TC_GAME_API Position
Position(G3D::Vector3 const& vect);
+ operator G3D::Vector3() const;
+
struct PositionXYStreamer
{
explicit PositionXYStreamer(Position& pos) : Pos(&pos) { }
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index 26873451649..aab8db633ae 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -449,7 +449,11 @@ void MotionMaster::MoveCirclePath(float x, float y, float z, float radius, bool
void MotionMaster::MoveSmoothPath(uint32 pointId, G3D::Vector3 const* pathPoints, size_t pathSize, bool walk)
{
Movement::PointsArray path(pathPoints, pathPoints + pathSize);
+ MoveSmoothPath(pointId, path, walk);
+}
+void MotionMaster::MoveSmoothPath(uint32 pointId, Movement::PointsArray const& path, bool walk)
+{
Movement::MoveSplineInit init(_owner);
init.MovebyPath(path);
init.SetSmooth();
diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h
index 005f10b44af..2a760bceb0b 100644
--- a/src/server/game/Movement/MotionMaster.h
+++ b/src/server/game/Movement/MotionMaster.h
@@ -23,6 +23,7 @@
#include <vector>
#include "SharedDefines.h"
#include "Object.h"
+#include "MoveSplineInitArgs.h"
class MovementGenerator;
class Unit;
@@ -194,6 +195,7 @@ class TC_GAME_API MotionMaster //: private std::stack<MovementGenerator *>
void MoveJump(float x, float y, float z, float o, float speedXY, float speedZ, uint32 id = EVENT_JUMP, bool hasOrientation = false);
void MoveCirclePath(float x, float y, float z, float radius, bool clockwise, uint8 stepCount);
void MoveSmoothPath(uint32 pointId, G3D::Vector3 const* pathPoints, size_t pathSize, bool walk);
+ void MoveSmoothPath(uint32 pointId, Movement::PointsArray const& points, bool walk);
void MoveFall(uint32 id = 0);
void MoveSeekAssistance(float x, float y, float z);