MapMgr::~MapMgr() { _shutdown=true; sEventMgr.RemoveEvents(this); delete ScriptInterface; // Remove objects if(_cells) { for (uint32 i = 0; i < _sizeX; i++) { if(_cells[i] != 0) { for (uint32 j = 0; j < _sizeY; j++) { if(_cells[i][j] != 0) { _cells[i][j]->_unloadpending=false; _cells[i][j]->RemoveObjects(); } } } } } for(set<Object*>::iterator itr = _mapWideStaticObjects.begin(); itr != _mapWideStaticObjects.end(); ++itr) { if((*itr)->IsInWorld()) (*itr)->RemoveFromWorld(false); delete (*itr); } free(m_GOStorage); free(m_CreatureStorage); Corpse * pCorpse; for(set<Corpse*>::iterator itr = m_corpses.begin(); itr != m_corpses.end();) { pCorpse = *itr; ++itr; if(pCorpse->IsInWorld()) pCorpse->RemoveFromWorld(false); delete pCorpse; } Log.Notice("MapMgr", "Instance %u shut down. (%s)" , m_instanceID, GetBaseMap()->GetName()); }
MapMgr::~MapMgr() { CollideInterface.DeactiveMap(_mapId); _shutdown = true; sEventMgr.RemoveEvents(this); if(ScriptInterface != NULL) { delete ScriptInterface; ScriptInterface = NULL; } delete _terrain; // Remove objects if(_cells) { for(uint32 i = 0; i < _sizeX; i++) { if(_cells[i] != 0) { for(uint32 j = 0; j < _sizeY; j++) { if(_cells[i][j] != 0) { _cells[i][j]->_unloadpending = false; _cells[i][j]->RemoveObjects(); } } } } } for(set<Object*>::iterator itr = _mapWideStaticObjects.begin(); itr != _mapWideStaticObjects.end(); ++itr) { if((*itr)->IsInWorld()) (*itr)->RemoveFromWorld(false); delete(*itr); } _mapWideStaticObjects.clear(); GOStorage.clear(); CreatureStorage.clear(); Corpse* pCorpse; for(set<Corpse*>::iterator itr = m_corpses.begin(); itr != m_corpses.end();) { pCorpse = *itr; ++itr; if(pCorpse->IsInWorld()) pCorpse->RemoveFromWorld(false); delete pCorpse; } m_corpses.clear(); if(mInstanceScript != NULL) mInstanceScript->Destroy(); // Empty remaining containers m_PlayerStorage.clear(); m_PetStorage.clear(); m_DynamicObjectStorage.clear(); _combatProgress.clear(); _updates.clear(); _processQueue.clear(); Sessions.clear(); activeCreatures.clear(); activeGameObjects.clear(); _sqlids_creatures.clear(); _sqlids_gameobjects.clear(); _reusable_guids_creature.clear(); _reusable_guids_gameobject.clear(); if(m_battleground) { m_battleground = NULL; } Log.Notice("MapMgr", "Instance %u shut down. (%s)" , m_instanceID, GetBaseMap()->GetName()); }