diff options
author | treeston <treeston.mmoc@gmail.com> | 2016-08-31 21:41:23 +0200 |
---|---|---|
committer | treeston <treeston.mmoc@gmail.com> | 2016-08-31 21:41:23 +0200 |
commit | 9f15482b849d7a77a4a0cc68f18aabb8ee6c58c9 (patch) | |
tree | f745dcdd9e2d6d013efed155c3c9e1c62b583456 /src | |
parent | b7112d0fbe457043418415f45f68f159896477d4 (diff) |
Core/Position: Allow implicit casting to G3D::Vector. Also, add a utility overload to MotionMaster.
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Position.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Position.h | 2 | ||||
-rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Movement/MotionMaster.h | 2 |
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); |