Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
Transport.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef TRANSPORTS_H
7#define TRANSPORTS_H
8
9#include "GameObject.h"
10#include "TransportMgr.h"
11#include "VehicleDefines.h"
12
13struct CreatureData;
14
15class Transport : public GameObject, public TransportBase
16{
18 friend Transport* TransportMgr::CreateLocalTransport(uint32, Map*, float, float, float, float, uint32);
20
21 Transport();
22public:
23 ~Transport();
24
25 bool CreateLocal(uint32 guidlow, uint32 entry, Map* map, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress);
26 bool Create(uint32 guidlow, uint32 entry, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress);
27 void Update(uint32 diff);
28
29 void BuildUpdate(UpdateDataMapType& data_map);
30
31 void AddPassenger(WorldObject* passenger);
32 void RemovePassenger(WorldObject* passenger);
33 std::set<WorldObject*> const& GetPassengers() const { return _passengers; }
34
37
39 void CalculatePassengerPosition(float& x, float& y, float& z, float* o /*= NULL*/) const
40 {
42 }
43
45 void CalculatePassengerOffset(float& x, float& y, float& z, float* o /*= NULL*/) const
46 {
48 }
49
53
54 KeyFrameVec const& GetKeyFrames() const { return _transportInfo->keyFrames; }
55
56 void UpdatePosition(float x, float y, float z, float o);
57
60
63
64 void EnableMovement(bool enabled);
65
67
68private:
69 void MoveToNextWaypoint();
70 float CalculateSegmentPos(float perc);
71 bool TeleportTransport(uint32 newMapid, float x, float y, float z);
72 void UpdatePassengerPositions(std::set<WorldObject*>& passengers);
73 void DoEventIfAny(KeyFrame const& node, bool departure);
74
76 bool IsMoving() const { return _isMoving; }
77 void SetMoving(bool val) { _isMoving = val; }
78
80
81 KeyFrameVec::const_iterator _currentFrame;
82 KeyFrameVec::const_iterator _nextFrame;
86
90
91 std::set<WorldObject*> _passengers;
92 std::set<WorldObject*> _staticPassengers;
93};
94
95#endif
std::uint32_t uint32
Definition Define.h:77
UNORDERED_MAP< Player *, UpdateData > UpdateDataMapType
Definition Object.h:107
std::vector< KeyFrame > KeyFrameVec
@ GAMEOBJECT_FIELD_LEVEL
GameObjectValue const * GetGOValue() const
Definition GameObject.h:645
friend class Map
Definition Object.h:589
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:325
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:1038
virtual void CalculatePassengerPosition(float &x, float &y, float &z, float *o=NULL) const =0
This method transforms supplied transport offsets into global coordinates.
virtual void CalculatePassengerOffset(float &x, float &y, float &z, float *o=NULL) const =0
This method transforms supplied global coordinates into local offsets.
void UpdatePosition(float x, float y, float z, float o)
void SetPeriod(uint32 period)
Definition Transport.h:51
std::set< WorldObject * > _staticPassengers
Definition Transport.h:92
void UpdatePassengerPositions(std::set< WorldObject * > &passengers)
void CalculatePassengerPosition(float &x, float &y, float &z, float *o) const
This method transforms supplied transport offsets into global coordinates.
Definition Transport.h:39
bool TeleportTransport(uint32 newMapid, float x, float y, float z)
void LoadStaticPassengers()
Needed when transport moves from inactive to active grid.
bool _triggeredArrivalEvent
These are needed to properly control events triggering only once for each frame.
Definition Transport.h:88
std::set< WorldObject * > const & GetPassengers() const
Definition Transport.h:33
GameObject * CreateGOPassenger(uint32 guid, GameObjectData const *data)
KeyFrameVec::const_iterator _currentFrame
Definition Transport.h:81
void DoEventIfAny(KeyFrame const &node, bool departure)
void EnableMovement(bool enabled)
bool Create(uint32 guidlow, uint32 entry, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress)
Definition Transport.cpp:36
float CalculateSegmentPos(float perc)
void CalculatePassengerOffset(float &x, float &y, float &z, float *o) const
This method transforms supplied global coordinates into local offsets.
Definition Transport.h:45
void RemovePassenger(WorldObject *passenger)
void UnloadStaticPassengers()
Needed when transport enters inactive grid.
void Update(uint32 diff)
KeyFrameVec const & GetKeyFrames() const
Definition Transport.h:54
bool _pendingStop
Definition Transport.h:85
std::set< WorldObject * > _passengers
Definition Transport.h:91
TimeTrackerSmall _positionChangeTimer
Definition Transport.h:83
bool _triggeredDepartureEvent
Definition Transport.h:89
TransportTemplate const * GetTransportTemplate() const
Definition Transport.h:66
void BuildUpdate(UpdateDataMapType &data_map)
bool CreateLocal(uint32 guidlow, uint32 entry, Map *map, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress)
Definition Transport.cpp:91
bool _isMoving
Definition Transport.h:84
KeyFrameVec::const_iterator _nextFrame
Definition Transport.h:82
TransportTemplate const * _transportInfo
Definition Transport.h:79
void MoveToNextWaypoint()
void AddPassenger(WorldObject *passenger)
bool IsMoving() const
Helpers to know if stop frame was reached.
Definition Transport.h:76
uint32 GetPeriod() const
Definition Transport.h:50
Creature * CreateNPCPassenger(uint32 guid, CreatureData const *data)
uint32 GetTimer() const
Definition Transport.h:52
void SetMoving(bool val)
Definition Transport.h:77
Transport * CreateLocalTransport(uint32 guid, Map *map)
Transport * CreateTransport(uint32 entry, uint32 guid=0, Map *map=NULL)
WorldObject(bool isWorldObject)
Definition Object.cpp:1514
float GetPositionZ() const
Definition Object.h:330
float GetOrientation() const
Definition Object.h:331
float GetPositionX() const
Definition Object.h:328
float GetPositionY() const
Definition Object.h:329
struct GameObjectValue::@210223111052332366220354331325332170103204164100 Transport
uint32 PathProgress
Definition GameObject.h:539