diff options
Diffstat (limited to 'src/server/game/Maps/TerrainMgr.cpp')
| -rw-r--r-- | src/server/game/Maps/TerrainMgr.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/server/game/Maps/TerrainMgr.cpp b/src/server/game/Maps/TerrainMgr.cpp index b5c2eeea8f8..10151fa4127 100644 --- a/src/server/game/Maps/TerrainMgr.cpp +++ b/src/server/game/Maps/TerrainMgr.cpp @@ -163,6 +163,14 @@ void TerrainInfo::LoadMapAndVMap(int32 gx, int32 gy) LoadMapAndVMapImpl(gx, gy); } +void TerrainInfo::LoadMMapInstance(uint32 mapId, uint32 instanceId) +{ + LoadMMapInstanceImpl(mapId, instanceId); + + for (std::shared_ptr<TerrainInfo> const& childTerrain : _childTerrain) + childTerrain->LoadMMapInstanceImpl(mapId, instanceId); +} + void TerrainInfo::LoadMapAndVMapImpl(int32 gx, int32 gy) { LoadMap(gx, gy); @@ -175,6 +183,11 @@ void TerrainInfo::LoadMapAndVMapImpl(int32 gx, int32 gy) _loadedGrids[GetBitsetIndex(gx, gy)] = true; } +void TerrainInfo::LoadMMapInstanceImpl(uint32 mapId, uint32 instanceId) +{ + MMAP::MMapFactory::createOrGetMMapManager()->loadMapInstance(sWorld->GetDataPath(), _mapId, mapId, instanceId); +} + void TerrainInfo::LoadMap(int32 gx, int32 gy) { if (_gridMap[gx][gy]) @@ -240,6 +253,14 @@ void TerrainInfo::UnloadMap(int32 gx, int32 gy) // unload later } +void TerrainInfo::UnloadMMapInstance(uint32 mapId, uint32 instanceId) +{ + UnloadMMapInstanceImpl(mapId, instanceId); + + for (std::shared_ptr<TerrainInfo> const& childTerrain : _childTerrain) + childTerrain->UnloadMMapInstanceImpl(mapId, instanceId); +} + void TerrainInfo::UnloadMapImpl(int32 gx, int32 gy) { _gridMap[gx][gy] = nullptr; @@ -252,6 +273,11 @@ void TerrainInfo::UnloadMapImpl(int32 gx, int32 gy) _loadedGrids[GetBitsetIndex(gx, gy)] = false; } +void TerrainInfo::UnloadMMapInstanceImpl(uint32 mapId, uint32 instanceId) +{ + MMAP::MMapFactory::createOrGetMMapManager()->unloadMapInstance(_mapId, mapId, instanceId); +} + GridMap* TerrainInfo::GetGrid(uint32 mapId, float x, float y, bool loadIfMissing /*= true*/) { // half opt method |
