AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
WaypointMovementGenerator.cpp File Reference
#include "WaypointMovementGenerator.h"
#include "Creature.h"
#include "CreatureAI.h"
#include "CreatureGroups.h"
#include "GameTime.h"
#include "MapMgr.h"
#include "MoveSpline.h"
#include "MoveSplineInit.h"
#include "ObjectMgr.h"
#include "Player.h"
#include "Spell.h"
#include "Transport.h"
#include "SmartScriptMgr.h"
#include "World.h"

Go to the source code of this file.

Macros

#define SKIP_SPLINE_POINT_DISTANCE_SQ   (40.0f * 40.0f)
 
#define PLAYER_FLIGHT_SPEED   32.0f
 

Functions

G3D::Vector3 PositionToVector3 (Position const &p)
 
void UpdateHomePosition (Creature *creature, WaypointNode const &waypointNode)
 
bool IsNodeIncludedInShortenedPath (TaxiPathNodeEntry const *p1, TaxiPathNodeEntry const *p2)
 

Macro Definition Documentation

◆ PLAYER_FLIGHT_SPEED

#define PLAYER_FLIGHT_SPEED   32.0f

◆ SKIP_SPLINE_POINT_DISTANCE_SQ

#define SKIP_SPLINE_POINT_DISTANCE_SQ   (40.0f * 40.0f)

Function Documentation

◆ IsNodeIncludedInShortenedPath()

bool IsNodeIncludedInShortenedPath ( TaxiPathNodeEntry const *  p1,
TaxiPathNodeEntry const *  p2 
)
566{
567 return p1->mapid != p2->mapid || std::pow(p1->x - p2->x, 2) + std::pow(p1->y - p2->y, 2) > SKIP_SPLINE_POINT_DISTANCE_SQ;
568}
#define SKIP_SPLINE_POINT_DISTANCE_SQ
Definition WaypointMovementGenerator.cpp:563

References TaxiPathNodeEntry::mapid, SKIP_SPLINE_POINT_DISTANCE_SQ, TaxiPathNodeEntry::x, and TaxiPathNodeEntry::y.

Referenced by FlightPathMovementGenerator::LoadPath().

◆ PositionToVector3()

G3D::Vector3 PositionToVector3 ( Position const &  p)
inline
33{ return { p.GetPositionX(), p.GetPositionY(), p.GetPositionZ() }; }

References Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().

Referenced by WaypointMovementGenerator< Creature >::StartMove().

◆ UpdateHomePosition()

void UpdateHomePosition ( Creature creature,
WaypointNode const &  waypointNode 
)
inline
114{
115 float x = waypointNode.X;
116 float y = waypointNode.Y;
117 float z = waypointNode.Z;
118 float o = creature->GetOrientation();
119
120 bool transportPath = creature->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && creature->GetTransGUID();
121 if (!transportPath)
122 creature->SetHomePosition(x, y, z, o);
123 else
124 {
125 if (Transport* trans = (creature->GetTransport() ? creature->GetTransport()->ToMotionTransport() : nullptr))
126 {
127 o -= trans->GetOrientation();
128 creature->SetTransportHomePosition(x, y, z, o);
129 trans->CalculatePassengerPosition(x, y, z, &o);
130 creature->SetHomePosition(x, y, z, o);
131 }
132 }
133}
@ MOVEMENTFLAG_ONTRANSPORT
Definition UnitDefines.h:381
void SetHomePosition(float x, float y, float z, float o)
Definition Creature.h:345
void SetTransportHomePosition(float x, float y, float z, float o)
Definition Creature.h:350
MotionTransport * ToMotionTransport()
Definition GameObject.h:327
Definition Transport.h:30
bool HasUnitMovementFlag(uint32 f) const
Definition Unit.h:774
ObjectGuid GetTransGUID() const override
Definition Unit.cpp:14981
Transport * GetTransport() const
Definition Object.h:688
float GetOrientation() const
Definition Position.h:124

References Position::GetOrientation(), Unit::GetTransGUID(), WorldObject::GetTransport(), Unit::HasUnitMovementFlag(), MOVEMENTFLAG_ONTRANSPORT, Creature::SetHomePosition(), Creature::SetTransportHomePosition(), GameObject::ToMotionTransport(), WaypointNode::X, WaypointNode::Y, and WaypointNode::Z.

Referenced by WaypointMovementGenerator< Creature >::DoUpdate(), and WaypointMovementGenerator< Creature >::ProcessWaypointArrival().