From ce387d853552cef4e1d7912e2e9fb45f2c776b1f Mon Sep 17 00:00:00 2001 From: Wyk3d Date: Thu, 27 Nov 2008 00:22:03 +0200 Subject: [PATCH] [6850] Use the HashMapHolder instead of MapReference in Map::Update for now (the refs can get invalidated during the loop). --- src/game/Map.cpp | 13 +++++++++++-- src/shared/revision_nr.h | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 606d53df6..924901864 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -573,12 +573,21 @@ void Map::Update(const uint32 &t_diff) // for pets TypeContainerVisitor world_object_update(updater); - for(MapRefManager::iterator iter = m_mapRefManager.begin(); iter != m_mapRefManager.end(); ++iter) + //TODO: Player guard + HashMapHolder::MapType& playerMap = HashMapHolder::GetContainer(); + for(HashMapHolder::MapType::iterator iter = playerMap.begin(); iter != playerMap.end(); ++iter) { - Player* plr = iter->getSource(); + Player* plr = iter->second; + if(!plr->IsInWorld()) continue; + if(plr->GetMapId() != GetId()) + continue; + + if(plr->GetInstanceId() != GetInstanceId()) + continue; + CellPair standing_cell(MaNGOS::ComputeCellPair(plr->GetPositionX(), plr->GetPositionY())); // Check for correctness of standing_cell, it also avoids problems with update_cell diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 4cca1495f..fe6de2022 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 "6849" + #define REVISION_NR "6850" #endif // __REVISION_NR_H__