From 57dcc84940d84c39c218a56e6da2f4467def71c6 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Sun, 2 May 2010 04:32:52 +0400 Subject: [PATCH] [9824] Use in taxi flight movegen original taxipath data. --- src/game/DBCStores.cpp | 2 +- src/game/DBCStructure.h | 14 +++++- src/game/MotionMaster.cpp | 14 ++++-- src/game/Object.cpp | 16 +++--- src/game/ObjectMgr.cpp | 20 -------- src/game/ObjectMgr.h | 4 -- src/game/Path.h | 69 +++++++++++++------------- src/game/Player.cpp | 24 ++++----- src/game/TaxiHandler.cpp | 2 +- src/game/Transports.cpp | 6 +-- src/game/Unit.cpp | 21 -------- src/game/Unit.h | 37 +++++++++++++- src/game/WaypointMovementGenerator.cpp | 42 +++++++--------- src/game/WaypointMovementGenerator.h | 22 ++++---- src/shared/revision_nr.h | 2 +- 15 files changed, 149 insertions(+), 146 deletions(-) diff --git a/src/game/DBCStores.cpp b/src/game/DBCStores.cpp index 30863e55b..23f2cce7d 100644 --- a/src/game/DBCStores.cpp +++ b/src/game/DBCStores.cpp @@ -550,7 +550,7 @@ void LoadDBCStores(const std::string& dataPath) // fill data (pointers to sTaxiPathNodeStore elements for(uint32 i = 1; i < sTaxiPathNodeStore.GetNumRows(); ++i) if(TaxiPathNodeEntry const* entry = sTaxiPathNodeStore.LookupEntry(i)) - sTaxiPathNodesByPath[entry->path][entry->index] = entry; + sTaxiPathNodesByPath[entry->path].set(entry->index, entry); // Initialize global taxinodes mask // include existed nodes that have at least single not spell base (scripted) path diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index 396877a45..c762e15bb 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -19,7 +19,9 @@ #ifndef MANGOS_DBCSTRUCTURE_H #define MANGOS_DBCSTRUCTURE_H +#include "Common.h" #include "DBCEnums.h" +#include "Path.h" #include "Platform/Define.h" #include @@ -1846,7 +1848,17 @@ struct TaxiPathBySourceAndDestination typedef std::map TaxiPathSetForSource; typedef std::map TaxiPathSetBySource; -typedef std::vector TaxiPathNodeList; +struct TaxiPathNodePtr +{ + TaxiPathNodePtr() : i_ptr(NULL) {} + TaxiPathNodePtr(TaxiPathNodeEntry const* ptr) : i_ptr(ptr) {} + + TaxiPathNodeEntry const* i_ptr; + + operator TaxiPathNodeEntry const& () const { return *i_ptr; } +}; + +typedef Path TaxiPathNodeList; typedef std::vector TaxiPathNodesByPath; #define TaxiMaskSize 12 diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp index ce1008cb3..4e6b12bd3 100644 --- a/src/game/MotionMaster.cpp +++ b/src/game/MotionMaster.cpp @@ -360,9 +360,17 @@ MotionMaster::MoveTaxiFlight(uint32 path, uint32 pathnode) { if(i_owner->GetTypeId()==TYPEID_PLAYER) { - DEBUG_LOG("%s taxi to (Path %u node %u)", i_owner->GetObjectGuid().GetString().c_str(), path, pathnode); - FlightPathMovementGenerator* mgen = new FlightPathMovementGenerator(path,pathnode); - Mutate(mgen); + if(path < sTaxiPathNodesByPath.size()) + { + DEBUG_LOG("%s taxi to (Path %u node %u)", i_owner->GetObjectGuid().GetString().c_str(), path, pathnode); + FlightPathMovementGenerator* mgen = new FlightPathMovementGenerator(sTaxiPathNodesByPath[path],pathnode); + Mutate(mgen); + } + else + { + sLog.outError("%s attempt taxi to (not existed Path %u node %u)", + i_owner->GetObjectGuid().GetString().c_str(), path, pathnode ); + } } else { diff --git a/src/game/Object.cpp b/src/game/Object.cpp index c0d547462..4866e1cc6 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -370,7 +370,7 @@ void Object::BuildMovementUpdate(ByteBuffer * data, uint16 updateFlags) const } } - Path &path = fmg->GetPath(); + TaxiPathNodeList const& path = fmg->GetPath(); float x, y, z; player->GetPosition(x, y, z); @@ -388,21 +388,21 @@ void Object::BuildMovementUpdate(ByteBuffer * data, uint16 updateFlags) const *data << uint32(0); // added in 3.1 - uint32 poscount = uint32(path.Size()); + uint32 poscount = uint32(path.size()); *data << uint32(poscount); // points count for(uint32 i = 0; i < poscount; ++i) { - *data << float(path.GetNodes()[i].x); - *data << float(path.GetNodes()[i].y); - *data << float(path.GetNodes()[i].z); + *data << float(path[i].x); + *data << float(path[i].y); + *data << float(path[i].z); } *data << uint8(0); // splineMode - *data << float(path.GetNodes()[poscount-1].x); - *data << float(path.GetNodes()[poscount-1].y); - *data << float(path.GetNodes()[poscount-1].z); + *data << float(path[poscount-1].x); + *data << float(path[poscount-1].y); + *data << float(path[poscount-1].z); } } else diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 7954f5213..a4bede62b 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -5219,26 +5219,6 @@ uint32 ObjectMgr::GetTaxiMountDisplayId( uint32 id, uint32 team, bool allowed_al return mount_id; } -void ObjectMgr::GetTaxiPathNodes( uint32 path, Path &pathnodes, std::vector& mapIds) -{ - if(path >= sTaxiPathNodesByPath.size()) - return; - - TaxiPathNodeList& nodeList = sTaxiPathNodesByPath[path]; - - pathnodes.Resize(nodeList.size()); - mapIds.resize(nodeList.size()); - - for(size_t i = 0; i < nodeList.size(); ++i) - { - pathnodes[ i ].x = nodeList[i]->x; - pathnodes[ i ].y = nodeList[i]->y; - pathnodes[ i ].z = nodeList[i]->z; - - mapIds[i] = nodeList[i]->mapid; - } -} - void ObjectMgr::LoadGraveyardZones() { mGraveYardMap.clear(); // need for reload case diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index cda993847..ec9e89369 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -27,7 +27,6 @@ #include "GameObject.h" #include "Corpse.h" #include "QuestDef.h" -#include "Path.h" #include "ItemPrototype.h" #include "NPCHandler.h" #include "Database/DatabaseEnv.h" @@ -54,8 +53,6 @@ extern SQLStorage sInstanceTemplate; class Group; class Guild; class ArenaTeam; -class Path; -class TransportPath; class Item; struct GameTele @@ -499,7 +496,6 @@ class ObjectMgr uint32 GetNearestTaxiNode( float x, float y, float z, uint32 mapid, uint32 team ); void GetTaxiPath( uint32 source, uint32 destination, uint32 &path, uint32 &cost); uint32 GetTaxiMountDisplayId( uint32 id, uint32 team, bool allowed_alt_team = false); - void GetTaxiPathNodes( uint32 path, Path &pathnodes, std::vector& mapIds ); Quest const* GetQuestTemplate(uint32 quest_id) const { diff --git a/src/game/Path.h b/src/game/Path.h index d95b08724..74c5c221c 100644 --- a/src/game/Path.h +++ b/src/game/Path.h @@ -22,64 +22,63 @@ #include "Common.h" #include +struct SimplePathNode +{ + float x,y,z; +}; + +template class Path { public: - struct PathNode - { - float x,y,z; - }; + size_t size() const { return i_nodes.size(); } + bool empty() const { return i_nodes.empty(); } + void resize(unsigned int sz) { i_nodes.resize(sz); } + void clear() { i_nodes.clear(); } + void erase(uint32 idx) { i_nodes.erase(i_nodes.begin()+idx); } - void SetLength(const unsigned int sz) - { - i_nodes.resize( sz ); - } - - unsigned int Size() const { return i_nodes.size(); } - bool Empty() const { return i_nodes.empty(); } - void Resize(unsigned int sz) { i_nodes.resize(sz); } - void Clear(void) { i_nodes.clear(); } - PathNode const* GetNodes(uint32 start = 0) const { return &i_nodes[start]; } - float GetTotalLength() const { return GetTotalLength(0,Size()); } float GetTotalLength(uint32 start, uint32 end) const { - float len = 0, xd, yd, zd; + float len = 0.0f; for(unsigned int idx=start+1; idx < end; ++idx) { - xd = i_nodes[ idx ].x - i_nodes[ idx-1 ].x; - yd = i_nodes[ idx ].y - i_nodes[ idx-1 ].y; - zd = i_nodes[ idx ].z - i_nodes[ idx-1 ].z; + PathNode const& node = i_nodes[idx]; + PathNode const& prev = i_nodes[idx-1]; + float xd = node.x - prev.x; + float yd = node.y - prev.y; + float zd = node.z - prev.z; len += sqrtf( xd*xd + yd*yd + zd*zd ); } return len; } - float GetPassedLength(uint32 curnode, float x, float y, float z) + float GetTotalLength() const { return GetTotalLength(0,size()); } + + float GetPassedLength(uint32 curnode, float x, float y, float z) const { - float len = 0, xd, yd, zd; - for(unsigned int idx=1; idx < curnode; ++idx) - { - xd = i_nodes[ idx ].x - i_nodes[ idx-1 ].x; - yd = i_nodes[ idx ].y - i_nodes[ idx-1 ].y; - zd = i_nodes[ idx ].z - i_nodes[ idx-1 ].z; - len += sqrtf( xd*xd + yd*yd + zd*zd ); - } + float len = GetTotalLength(0,curnode); - if(curnode > 0) + if (curnode > 0) { - xd = x - i_nodes[curnode-1].x; - yd = y - i_nodes[curnode-1].y; - zd = z - i_nodes[curnode-1].z; + PathNode const& node = i_nodes[curnode-1]; + float xd = x - node.x; + float yd = y - node.y; + float zd = z - node.z; len += sqrtf( xd*xd + yd*yd + zd*zd ); } return len; } - PathNode& operator[](const unsigned int idx) { return i_nodes[idx]; } - const PathNode& operator()(const unsigned int idx) const { return i_nodes[idx]; } + PathNode& operator[](size_t idx) { return i_nodes[idx]; } + PathNode const& operator[](size_t idx) const { return i_nodes[idx]; } + + void set(size_t idx, PathElem elem) { i_nodes[idx] = elem; } protected: - std::vector i_nodes; + std::vector i_nodes; }; + +typedef Path SimplePath; + #endif diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 0c19cb074..9f99e8851 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -18209,30 +18209,30 @@ void Player::ContinueTaxiFlight() float distPrev = MAP_SIZE*MAP_SIZE; float distNext = - (nodeList[0]->x-GetPositionX())*(nodeList[0]->x-GetPositionX())+ - (nodeList[0]->y-GetPositionY())*(nodeList[0]->y-GetPositionY())+ - (nodeList[0]->z-GetPositionZ())*(nodeList[0]->z-GetPositionZ()); + (nodeList[0].x-GetPositionX())*(nodeList[0].x-GetPositionX())+ + (nodeList[0].y-GetPositionY())*(nodeList[0].y-GetPositionY())+ + (nodeList[0].z-GetPositionZ())*(nodeList[0].z-GetPositionZ()); for(uint32 i = 1; i < nodeList.size(); ++i) { - TaxiPathNodeEntry const* node = nodeList[i]; - TaxiPathNodeEntry const* prevNode = nodeList[i-1]; + TaxiPathNodeEntry const& node = nodeList[i]; + TaxiPathNodeEntry const& prevNode = nodeList[i-1]; // skip nodes at another map - if (node->mapid != GetMapId()) + if (node.mapid != GetMapId()) continue; distPrev = distNext; distNext = - (node->x-GetPositionX())*(node->x-GetPositionX())+ - (node->y-GetPositionY())*(node->y-GetPositionY())+ - (node->z-GetPositionZ())*(node->z-GetPositionZ()); + (node.x-GetPositionX())*(node.x-GetPositionX())+ + (node.y-GetPositionY())*(node.y-GetPositionY())+ + (node.z-GetPositionZ())*(node.z-GetPositionZ()); float distNodes = - (node->x-prevNode->x)*(node->x-prevNode->x)+ - (node->y-prevNode->y)*(node->y-prevNode->y)+ - (node->z-prevNode->z)*(node->z-prevNode->z); + (node.x-prevNode.x)*(node.x-prevNode.x)+ + (node.y-prevNode.y)*(node.y-prevNode.y)+ + (node.z-prevNode.z)*(node.z-prevNode.z); if (distNext + distPrev < distNodes) { diff --git a/src/game/TaxiHandler.cpp b/src/game/TaxiHandler.cpp index 7906f591d..111143728 100644 --- a/src/game/TaxiHandler.cpp +++ b/src/game/TaxiHandler.cpp @@ -215,7 +215,7 @@ void WorldSession::HandleMoveSplineDoneOpcode(WorldPacket& recv_data) flight->Interrupt(*GetPlayer()); // will reset at map landing flight->SetCurrentNodeAfterTeleport(); - Path::PathNode const& node = flight->GetPath()[flight->GetCurrentNode()]; + TaxiPathNodeEntry const& node = flight->GetPath()[flight->GetCurrentNode()]; flight->SkipCurrentNode(); GetPlayer()->TeleportTo(curDestNode->map_id,node.x,node.y,node.z,GetPlayer()->GetOrientation()); diff --git a/src/game/Transports.cpp b/src/game/Transports.cpp index ca6f16c32..e800f5b31 100644 --- a/src/game/Transports.cpp +++ b/src/game/Transports.cpp @@ -217,10 +217,10 @@ bool Transport::GenerateWaypoints(uint32 pathid, std::set &mapids) { if (mapChange == 0) { - TaxiPathNodeEntry const* node_i = path[i]; - if (node_i->mapid == path[i+1]->mapid) + TaxiPathNodeEntry const& node_i = path[i]; + if (node_i.mapid == path[i+1].mapid) { - keyFrame k(node_i->x, node_i->y, node_i->z, node_i->mapid, node_i->actionFlag, node_i->delay); + keyFrame k(node_i.x, node_i.y, node_i.z, node_i.mapid, node_i.actionFlag, node_i.delay); keyFrames.push_back(k); mapids.insert(k.mapid); } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 65285d6a5..430884762 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -400,27 +400,6 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineTy SendMessageToSet( &data, true ); } -void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, SplineFlags flags) -{ - uint32 traveltime = uint32(path.GetTotalLength(start, end) * 32); - - uint32 pathSize = end - start; - - WorldPacket data( SMSG_MONSTER_MOVE, (GetPackGUID().size()+1+4+4+4+4+1+4+4+4+pathSize*4*3) ); - data << GetPackGUID(); - data << uint8(0); - data << GetPositionX(); - data << GetPositionY(); - data << GetPositionZ(); - data << uint32(getMSTime()); - data << uint8(SPLINETYPE_NORMAL); - data << uint32(flags); - data << uint32(traveltime); - data << uint32(pathSize); - data.append((char*)path.GetNodes(start), pathSize * 4 * 3); - SendMessageToSet(&data, true); -} - void Unit::SendMonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime, Player* player) { if (!transitTime) diff --git a/src/game/Unit.h b/src/game/Unit.h index 808d9c392..5576708a9 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -32,6 +32,8 @@ #include "Utilities/EventProcessor.h" #include "MotionMaster.h" #include "DBCStructure.h" +#include "Path.h" +#include "WorldPacket.h" #include enum SpellInterruptFlags @@ -297,7 +299,6 @@ class DynamicObject; class GameObject; class Item; class Pet; -class Path; class PetAura; class Totem; @@ -1388,9 +1389,11 @@ class MANGOS_DLL_SPEC Unit : public WorldObject // recommend use MonsterMove/MonsterMoveWithSpeed for most case that correctly work with movegens // if used additional args in ... part then floats must explicitly casted to double void SendMonsterMove(float x, float y, float z, SplineType type, SplineFlags flags, uint32 Time, Player* player = NULL, ...); - void SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, SplineFlags flags); void SendMonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime = 0, Player* player = NULL); + template + void SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, SplineFlags flags); + void SendHighestThreatUpdate(HostileReference* pHostileReference); void SendThreatClear(); void SendThreatRemove(HostileReference* pHostileReference); @@ -1966,4 +1969,34 @@ bool Unit::CheckAllControlledUnits(Func const& func, bool withTotems, bool withG return false; } + +template +inline void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, SplineFlags flags) +{ + uint32 traveltime = uint32(path.GetTotalLength(start, end) * 32); + + uint32 pathSize = end - start; + + WorldPacket data( SMSG_MONSTER_MOVE, (GetPackGUID().size()+1+4+4+4+4+1+4+4+4+pathSize*4*3) ); + data << GetPackGUID(); + data << uint8(0); + data << GetPositionX(); + data << GetPositionY(); + data << GetPositionZ(); + data << uint32(getMSTime()); + data << uint8(SPLINETYPE_NORMAL); + data << uint32(flags); + data << uint32(traveltime); + data << uint32(pathSize); + + for(uint32 i = start; i < end; ++i) + { + data << float(path[i].x); + data << float(path[i].y); + data << float(path[i].z); + } + + SendMessageToSet(&data, true); +} + #endif diff --git a/src/game/WaypointMovementGenerator.cpp b/src/game/WaypointMovementGenerator.cpp index 54617565d..b10120eb0 100644 --- a/src/game/WaypointMovementGenerator.cpp +++ b/src/game/WaypointMovementGenerator.cpp @@ -280,29 +280,24 @@ bool WaypointMovementGenerator::GetResetPosition( Creature&, float& x, } //----------------------------------------------------// -void FlightPathMovementGenerator::LoadPath(Player &) -{ - sObjectMgr.GetTaxiPathNodes(i_pathId, i_path,i_mapIds); -} - uint32 FlightPathMovementGenerator::GetPathAtMapEnd() const { - if(i_currentNode >= i_mapIds.size()) - return i_mapIds.size(); + if (i_currentNode >= i_path->size()) + return i_path->size(); - uint32 curMapId = i_mapIds[i_currentNode]; - for(uint32 i = i_currentNode; i < i_mapIds.size(); ++i) + uint32 curMapId = (*i_path)[i_currentNode].mapid; + + for(uint32 i = i_currentNode; i < i_path->size(); ++i) { - if(i_mapIds[i] != curMapId) + if ((*i_path)[i].mapid != curMapId) return i; } - return i_mapIds.size(); + return i_path->size(); } void FlightPathMovementGenerator::Initialize(Player &player) { - LoadPath(player); Reset(player); } @@ -343,14 +338,14 @@ void FlightPathMovementGenerator::Reset(Player & player) player.SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT); Traveller traveller(player); // do not send movement, it was sent already - i_destinationHolder.SetDestination(traveller, i_path[i_currentNode].x, i_path[i_currentNode].y, i_path[i_currentNode].z, false); + i_destinationHolder.SetDestination(traveller, (*i_path)[i_currentNode].x, (*i_path)[i_currentNode].y, (*i_path)[i_currentNode].z, false); player.SendMonsterMoveByPath(GetPath(),GetCurrentNode(),GetPathAtMapEnd(), SplineFlags(SPLINEFLAG_WALKMODE|SPLINEFLAG_FLYING)); } bool FlightPathMovementGenerator::Update(Player &player, const uint32 &diff) { - if( MovementInProgress() ) + if (MovementInProgress()) { Traveller traveller(player); if( i_destinationHolder.UpdateTraveller(traveller, diff, false) ) @@ -359,17 +354,17 @@ bool FlightPathMovementGenerator::Update(Player &player, const uint32 &diff) return true; // not expire now, but already lost i_destinationHolder.ResetUpdate(FLIGHT_TRAVEL_UPDATE); - if( i_destinationHolder.HasArrived() ) + if (i_destinationHolder.HasArrived()) { - uint32 curMap = i_mapIds[i_currentNode]; + uint32 curMap = (*i_path)[i_currentNode].mapid; ++i_currentNode; - if( MovementInProgress() ) + if (MovementInProgress()) { DEBUG_LOG("loading node %u for player %s", i_currentNode, player.GetName()); - if(i_mapIds[i_currentNode]==curMap) + if ((*i_path)[i_currentNode].mapid == curMap) { // do not send movement, it was sent already - i_destinationHolder.SetDestination(traveller, i_path[i_currentNode].x, i_path[i_currentNode].y, i_path[i_currentNode].z, false); + i_destinationHolder.SetDestination(traveller, (*i_path)[i_currentNode].x, (*i_path)[i_currentNode].y, (*i_path)[i_currentNode].z, false); } return true; } @@ -388,13 +383,14 @@ bool FlightPathMovementGenerator::Update(Player &player, const uint32 &diff) void FlightPathMovementGenerator::SetCurrentNodeAfterTeleport() { - if(i_mapIds.empty()) + if (i_path->empty()) return; - uint32 map0 = i_mapIds[0]; - for (size_t i = 1; i < i_mapIds.size(); ++i) + uint32 map0 = (*i_path)[0].mapid; + + for (size_t i = 1; i < i_path->size(); ++i) { - if(i_mapIds[i]!=map0) + if ((*i_path)[i].mapid != map0) { i_currentNode = i; return; diff --git a/src/game/WaypointMovementGenerator.h b/src/game/WaypointMovementGenerator.h index 226382790..e852fdaf6 100644 --- a/src/game/WaypointMovementGenerator.h +++ b/src/game/WaypointMovementGenerator.h @@ -39,14 +39,14 @@ #define FLIGHT_TRAVEL_UPDATE 100 #define STOP_TIME_FOR_PLAYER 3 * 60 * 1000 // 3 Minutes -template +template class MANGOS_DLL_SPEC PathMovementBase { public: PathMovementBase() : i_currentNode(0) {} virtual ~PathMovementBase() {}; - bool MovementInProgress(void) const { return i_currentNode < i_path.Size(); } + bool MovementInProgress(void) const { return i_currentNode < i_path->size(); } // template pattern, not defined .. override required void LoadPath(T &); @@ -110,12 +110,14 @@ public PathMovementBase */ class MANGOS_DLL_SPEC FlightPathMovementGenerator : public MovementGeneratorMedium< Player, FlightPathMovementGenerator >, -public PathMovementBase +public PathMovementBase { - uint32 i_pathId; - std::vector i_mapIds; public: - explicit FlightPathMovementGenerator(uint32 id, uint32 startNode = 0) : i_pathId(id) { i_currentNode = startNode; } + explicit FlightPathMovementGenerator(TaxiPathNodeList const& pathnodes, uint32 startNode = 0) + { + i_path = &pathnodes; + i_currentNode = startNode; + } void Initialize(Player &); void Finalize(Player &); void Interrupt(Player &); @@ -123,15 +125,13 @@ public PathMovementBase bool Update(Player &, const uint32 &); MovementGeneratorType GetMovementGeneratorType() const { return FLIGHT_MOTION_TYPE; } - void LoadPath(Player &); - - Path& GetPath() { return i_path; } + TaxiPathNodeList const& GetPath() { return *i_path; } uint32 GetPathAtMapEnd() const; - bool HasArrived() const { return (i_currentNode >= i_path.Size()); } + bool HasArrived() const { return (i_currentNode >= i_path->size()); } void SetCurrentNodeAfterTeleport(); void SkipCurrentNode() { ++i_currentNode; } // allow use for overwrite empty implementation - bool GetDestination(float& x, float& y, float& z) const { return PathMovementBase::GetDestination(x,y,z); } + bool GetDestination(float& x, float& y, float& z) const { return PathMovementBase::GetDestination(x,y,z); } }; #endif diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index ca7072635..434eb80bb 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9823" + #define REVISION_NR "9824" #endif // __REVISION_NR_H__