diff options
author | Shauren <shauren.trinity@gmail.com> | 2013-12-28 12:44:22 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2013-12-28 12:44:22 +0100 |
commit | 29acf99ea626cf71c06fa8fd0481d7f70d33890e (patch) | |
tree | dda646a013299d3bafab5359e12be125c8b195f0 /src/server/game/Maps/Map.cpp | |
parent | 8d57e081e24846e44127f68c1108b661512a1f64 (diff) |
Core/Transports: Fixed new spawned transports not being visible for players already present on map
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 5b22940670f..3723fc4ab45 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -553,6 +553,22 @@ bool Map::AddToMap(Transport* obj) obj->AddToWorld(); _transports.insert(obj); + // Broadcast creation to players + if (!GetPlayers().isEmpty()) + { + for (Map::PlayerList::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) + { + if (itr->GetSource()->GetTransport() != obj) + { + UpdateData data; + obj->BuildCreateUpdateBlockForPlayer(&data, itr->GetSource()); + WorldPacket packet; + data.BuildPacket(&packet); + itr->GetSource()->SendDirectMessage(&packet); + } + } + } + return true; } @@ -801,6 +817,18 @@ void Map::RemoveFromMap(Transport* obj, bool remove) { obj->RemoveFromWorld(); + Map::PlayerList const& players = GetPlayers(); + if (!players.isEmpty()) + { + UpdateData data; + obj->BuildOutOfRangeUpdateBlock(&data); + WorldPacket packet; + data.BuildPacket(&packet); + for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + if (itr->GetSource()->GetTransport() != obj) + itr->GetSource()->SendDirectMessage(&packet); + } + if (_transportsUpdateIter != _transports.end()) { TransportsContainer::iterator itr = _transports.find(obj); |