aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Movement/Spline
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-06-04 01:00:45 +0200
committerShauren <shauren.trinity@gmail.com>2017-06-04 01:00:45 +0200
commitb453e124231a90321fe79fbf3a62acdcfa54a691 (patch)
treeca2a815b923080385ed9a3a69aefe20ee54a7969 /src/server/game/Movement/Spline
parentec72a59b08e71ebc7ba00b32592ec903a7995a84 (diff)
Core/Game: Include cleanup part 5
* ObjectMgr.h * Player.h * Unit.h * G3D should no longer propagate everywhere from Spline/MotionMaster
Diffstat (limited to 'src/server/game/Movement/Spline')
-rw-r--r--src/server/game/Movement/Spline/MoveSpline.cpp8
-rw-r--r--src/server/game/Movement/Spline/MoveSpline.h1
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.cpp31
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.h28
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInitArgs.h14
-rw-r--r--src/server/game/Movement/Spline/Spline.h1
-rw-r--r--src/server/game/Movement/Spline/SplineChain.h6
7 files changed, 51 insertions, 38 deletions
diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp
index a30c91c070c..9dc75a1225d 100644
--- a/src/server/game/Movement/Spline/MoveSpline.cpp
+++ b/src/server/game/Movement/Spline/MoveSpline.cpp
@@ -257,6 +257,14 @@ bool MoveSplineInitArgs::_checkPathLengths() const
return false;
return true;
}
+MoveSplineInitArgs::MoveSplineInitArgs(size_t path_capacity /*= 16*/) : path_Idx_offset(0), velocity(0.f),
+parabolic_amplitude(0.f), time_perc(0.f), splineId(0), initialOrientation(0.f),
+walk(false), HasVelocity(false), TransformForTransport(true)
+{
+ path.reserve(path_capacity);
+}
+
+MoveSplineInitArgs::~MoveSplineInitArgs() = default;
/// ============================================================================================
diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h
index 2df68eb94e8..c88037b7506 100644
--- a/src/server/game/Movement/Spline/MoveSpline.h
+++ b/src/server/game/Movement/Spline/MoveSpline.h
@@ -21,6 +21,7 @@
#include "Spline.h"
#include "MoveSplineInitArgs.h"
+#include <G3D/Vector3.h>
namespace WorldPackets
{
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp
index 1f36a292bbf..1745ef24a39 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.cpp
+++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp
@@ -17,10 +17,11 @@
*/
#include "MoveSplineInit.h"
+#include "MovementPackets.h"
#include "MoveSpline.h"
-#include "Unit.h"
+#include "PathGenerator.h"
#include "Transport.h"
-#include "MovementPackets.h"
+#include "Unit.h"
namespace Movement
{
@@ -189,7 +190,19 @@ namespace Movement
args.flags.steering = unit->HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_STEERING);
}
- void MoveSplineInit::SetFacing(const Unit* target)
+ MoveSplineInit::~MoveSplineInit() = default;
+
+ void MoveSplineInit::SetFacing(Vector3 const& spot)
+ {
+ TransportPathTransform transform(unit, args.TransformForTransport);
+ Vector3 finalSpot = transform(spot);
+ args.facing.f.x = finalSpot.x;
+ args.facing.f.y = finalSpot.y;
+ args.facing.f.z = finalSpot.z;
+ args.facing.type = MONSTER_MOVE_FACING_SPOT;
+ }
+
+ void MoveSplineInit::SetFacing(Unit const* target)
{
args.facing.angle = unit->GetAngle(target);
args.facing.target = target->GetGUID();
@@ -210,6 +223,18 @@ namespace Movement
args.facing.type = MONSTER_MOVE_FACING_ANGLE;
}
+ void MoveSplineInit::MovebyPath(const PointsArray& controls, int32 path_offset)
+ {
+ args.path_Idx_offset = path_offset;
+ args.path.reserve(controls.size());
+ std::transform(controls.begin(), controls.end(), std::back_inserter(args.path), TransportPathTransform(unit, args.TransformForTransport));
+ }
+
+ void MoveSplineInit::MoveTo(float x, float y, float z, bool generatePath, bool forceDestination)
+ {
+ MoveTo(G3D::Vector3(x, y, z), generatePath, forceDestination);
+ }
+
void MoveSplineInit::MoveTo(const Vector3& dest, bool generatePath, bool forceDestination)
{
if (generatePath)
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h
index e02f840f107..cca4c32ef2b 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.h
+++ b/src/server/game/Movement/Spline/MoveSplineInit.h
@@ -20,7 +20,6 @@
#define TRINITYSERVER_MOVESPLINEINIT_H
#include "MoveSplineInitArgs.h"
-#include "PathGenerator.h"
class Unit;
@@ -54,6 +53,9 @@ namespace Movement
public:
explicit MoveSplineInit(Unit* m);
+ ~MoveSplineInit();
+ MoveSplineInit(MoveSplineInit const&) = delete;
+ MoveSplineInit& operator=(MoveSplineInit const&) = delete;
/* Final pass of initialization that launches spline movement.
*/
@@ -80,7 +82,7 @@ namespace Movement
*/
void SetFacing(float angle);
void SetFacing(Vector3 const& point);
- void SetFacing(const Unit* target);
+ void SetFacing(Unit const* target);
/* Initializes movement by path
* @param path - array of points, shouldn't be empty
@@ -170,18 +172,6 @@ namespace Movement
inline void MoveSplineInit::SetTransportExit() { args.flags.EnableTransportExit(); }
inline void MoveSplineInit::SetOrientationFixed(bool enable) { args.flags.orientationFixed = enable; }
- inline void MoveSplineInit::MovebyPath(const PointsArray& controls, int32 path_offset)
- {
- args.path_Idx_offset = path_offset;
- args.path.resize(controls.size());
- std::transform(controls.begin(), controls.end(), args.path.begin(), TransportPathTransform(unit, args.TransformForTransport));
- }
-
- inline void MoveSplineInit::MoveTo(float x, float y, float z, bool generatePath, bool forceDestination)
- {
- MoveTo(G3D::Vector3(x, y, z), generatePath, forceDestination);
- }
-
inline void MoveSplineInit::SetParabolic(float amplitude, float time_shift)
{
args.time_perc = time_shift;
@@ -195,16 +185,6 @@ namespace Movement
args.flags.EnableAnimation((uint8)anim);
}
- inline void MoveSplineInit::SetFacing(Vector3 const& spot)
- {
- TransportPathTransform transform(unit, args.TransformForTransport);
- Vector3 finalSpot = transform(spot);
- args.facing.f.x = finalSpot.x;
- args.facing.f.y = finalSpot.y;
- args.facing.f.z = finalSpot.z;
- args.facing.type = MONSTER_MOVE_FACING_SPOT;
- }
-
inline void MoveSplineInit::DisableTransportPathTransformations() { args.TransformForTransport = false; }
inline void MoveSplineInit::SetSpellEffectExtraData(SpellEffectExtraData const& spellEffectExtraData)
diff --git a/src/server/game/Movement/Spline/MoveSplineInitArgs.h b/src/server/game/Movement/Spline/MoveSplineInitArgs.h
index d9688674dfc..f0011bcb9fb 100644
--- a/src/server/game/Movement/Spline/MoveSplineInitArgs.h
+++ b/src/server/game/Movement/Spline/MoveSplineInitArgs.h
@@ -22,7 +22,6 @@
#include "MoveSplineFlag.h"
#include "ObjectGuid.h"
#include "Optional.h"
-#include <G3D/Vector3.h>
class Unit;
@@ -32,7 +31,10 @@ namespace Movement
struct FacingInfo
{
- G3D::Vector3 f;
+ struct
+ {
+ float x, y, z;
+ } f;
ObjectGuid target;
float angle;
@@ -51,12 +53,8 @@ namespace Movement
struct MoveSplineInitArgs
{
- MoveSplineInitArgs(size_t path_capacity = 16) : path_Idx_offset(0), velocity(0.f),
- parabolic_amplitude(0.f), time_perc(0.f), splineId(0), initialOrientation(0.f),
- walk(false), HasVelocity(false), TransformForTransport(true)
- {
- path.reserve(path_capacity);
- }
+ explicit MoveSplineInitArgs(size_t path_capacity = 16);
+ ~MoveSplineInitArgs();
PointsArray path;
FacingInfo facing;
diff --git a/src/server/game/Movement/Spline/Spline.h b/src/server/game/Movement/Spline/Spline.h
index e0f7cdce7fc..a029eb295bf 100644
--- a/src/server/game/Movement/Spline/Spline.h
+++ b/src/server/game/Movement/Spline/Spline.h
@@ -23,6 +23,7 @@
#include "Errors.h"
#include <G3D/Vector3.h>
#include <limits>
+#include <vector>
namespace Movement {
diff --git a/src/server/game/Movement/Spline/SplineChain.h b/src/server/game/Movement/Spline/SplineChain.h
index 33d816712b7..e189dc3ecbf 100644
--- a/src/server/game/Movement/Spline/SplineChain.h
+++ b/src/server/game/Movement/Spline/SplineChain.h
@@ -19,6 +19,7 @@
#define TRINITY_SPLINECHAIN_H
#include "MoveSplineInitArgs.h"
+#include <G3D/Vector3.h>
struct TC_GAME_API SplineChainLink
{
@@ -29,17 +30,16 @@ struct TC_GAME_API SplineChainLink
uint32 ExpectedDuration;
uint32 TimeToNext;
};
-typedef std::vector<SplineChainLink> SplineChain;
struct TC_GAME_API SplineChainResumeInfo
{
SplineChainResumeInfo() : PointID(0), Chain(nullptr), IsWalkMode(false), SplineIndex(0), PointIndex(0), TimeToNext(0) { }
- SplineChainResumeInfo(uint32 id, SplineChain const* chain, bool walk, uint8 splineIndex, uint8 wpIndex, uint32 msToNext) :
+ SplineChainResumeInfo(uint32 id, std::vector<SplineChainLink> const* chain, bool walk, uint8 splineIndex, uint8 wpIndex, uint32 msToNext) :
PointID(id), Chain(chain), IsWalkMode(walk), SplineIndex(splineIndex), PointIndex(wpIndex), TimeToNext(msToNext) { }
bool Empty() const { return Chain == nullptr; }
void Clear() { Chain = nullptr; }
uint32 PointID;
- SplineChain const* Chain;
+ std::vector<SplineChainLink> const* Chain;
bool IsWalkMode;
uint8 SplineIndex;
uint8 PointIndex;