*Move relocation notify back to map class so that mtmap can work better.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-06-10 16:33:09 -05:00
parent 8fed6e39f5
commit 5daba83c70
3 changed files with 11 additions and 2 deletions
+8
View File
@@ -194,6 +194,8 @@ Map::Map(uint32 id, time_t expiry, uint32 InstanceId, uint8 SpawnMode)
i_gridExpiry(expiry) i_gridExpiry(expiry)
, i_lock(true) , i_lock(true)
{ {
m_notifyTimer.SetInterval(IN_MILISECONDS/2);
for(unsigned int idx=0; idx < MAX_NUMBER_OF_GRIDS; ++idx) for(unsigned int idx=0; idx < MAX_NUMBER_OF_GRIDS; ++idx)
{ {
for(unsigned int j=0; j < MAX_NUMBER_OF_GRIDS; ++j) for(unsigned int j=0; j < MAX_NUMBER_OF_GRIDS; ++j)
@@ -757,6 +759,12 @@ void Map::Update(const uint32 &t_diff)
MoveAllCreaturesInMoveList(); MoveAllCreaturesInMoveList();
RemoveAllObjectsInRemoveList(); RemoveAllObjectsInRemoveList();
if(m_notifyTimer.Passed())
{
m_notifyTimer.Reset();
RelocationNotify();
}
// Don't unload grids if it's battleground, since we may have manually added GOs,creatures, those doesn't load from DB at grid re-load ! // Don't unload grids if it's battleground, since we may have manually added GOs,creatures, those doesn't load from DB at grid re-load !
// This isn't really bother us, since as soon as we have instanced BG-s, the whole map unloads as the BG gets ended // This isn't really bother us, since as soon as we have instanced BG-s, the whole map unloads as the BG gets ended
if (IsBattleGroundOrArena()) if (IsBattleGroundOrArena())
+1
View File
@@ -495,6 +495,7 @@ class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::Obj
std::bitset<TOTAL_NUMBER_OF_CELLS_PER_MAP*TOTAL_NUMBER_OF_CELLS_PER_MAP> marked_cells; std::bitset<TOTAL_NUMBER_OF_CELLS_PER_MAP*TOTAL_NUMBER_OF_CELLS_PER_MAP> marked_cells;
time_t i_gridExpiry; time_t i_gridExpiry;
IntervalTimer m_notifyTimer;
bool i_lock; bool i_lock;
std::vector<Unit*> i_unitsToNotifyBacklog; std::vector<Unit*> i_unitsToNotifyBacklog;
+2 -2
View File
@@ -1752,11 +1752,11 @@ void World::Update(uint32 diff)
///- Update objects when the timer has passed (maps, transport, creatures,...) ///- Update objects when the timer has passed (maps, transport, creatures,...)
MapManager::Instance().Update(diff); // As interval = 0 MapManager::Instance().Update(diff); // As interval = 0
if(m_timers[WUPDATE_OBJECTS].Passed()) /*if(m_timers[WUPDATE_OBJECTS].Passed())
{ {
m_timers[WUPDATE_OBJECTS].Reset(); m_timers[WUPDATE_OBJECTS].Reset();
MapManager::Instance().DoDelayedMovesAndRemoves(); MapManager::Instance().DoDelayedMovesAndRemoves();
} }*/
///- Process necessary scripts ///- Process necessary scripts
if (!m_scriptSchedule.empty()) if (!m_scriptSchedule.empty())