![]() |
TrinityCore
|
#include <TerrainMgr.h>
Public Member Functions | |
| TerrainInfo (uint32 mapId) | |
| TerrainInfo (TerrainInfo const &)=delete | |
| TerrainInfo (TerrainInfo &&)=delete | |
| TerrainInfo & | operator= (TerrainInfo const &)=delete |
| TerrainInfo & | operator= (TerrainInfo &&)=delete |
| ~TerrainInfo () | |
| uint32 | GetId () const |
| char const * | GetMapName () const |
| void | DiscoverGridMapFiles () |
| bool | HasChildTerrainGridFile (uint32 mapId, int32 gx, int32 gy) const |
| void | AddChildTerrain (std::shared_ptr< TerrainInfo > childTerrain) |
| void | LoadMapAndVMap (int32 gx, int32 gy) |
| void | LoadMMapInstance (uint32 mapId, uint32 instanceId) |
| void | LoadMMap (uint32 instanceId, int32 gx, int32 gy) |
| void | UnloadMap (int32 gx, int32 gy) |
| void | UnloadMMapInstance (uint32 mapId, uint32 instanceId) |
| void | CleanUpGrids (uint32 diff) |
| void | GetFullTerrainStatusForPosition (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, PositionFullTerrainStatus &data, Optional< map_liquidHeaderTypeFlags > reqLiquidType={}, float collisionHeight=2.03128f, DynamicMapTree const *dynamicMapTree=nullptr) |
| ZLiquidStatus | GetLiquidStatus (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, Optional< map_liquidHeaderTypeFlags > ReqLiquidType={}, LiquidData *data=nullptr, float collisionHeight=2.03128f) |
| bool | GetAreaInfo (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, uint32 &mogpflags, int32 &adtId, int32 &rootId, int32 &groupId, DynamicMapTree const *dynamicMapTree=nullptr) |
| uint32 | GetAreaId (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, DynamicMapTree const *dynamicMapTree=nullptr) |
| uint32 | GetAreaId (PhaseShift const &phaseShift, uint32 mapId, Position const &pos, DynamicMapTree const *dynamicMapTree=nullptr) |
| uint32 | GetZoneId (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, DynamicMapTree const *dynamicMapTree=nullptr) |
| uint32 | GetZoneId (PhaseShift const &phaseShift, uint32 mapId, Position const &pos, DynamicMapTree const *dynamicMapTree=nullptr) |
| void | GetZoneAndAreaId (PhaseShift const &phaseShift, uint32 mapId, uint32 &zoneid, uint32 &areaid, float x, float y, float z, DynamicMapTree const *dynamicMapTree=nullptr) |
| void | GetZoneAndAreaId (PhaseShift const &phaseShift, uint32 mapId, uint32 &zoneid, uint32 &areaid, Position const &pos, DynamicMapTree const *dynamicMapTree=nullptr) |
| float | GetMinHeight (PhaseShift const &phaseShift, uint32 mapId, float x, float y) |
| float | GetGridHeight (PhaseShift const &phaseShift, uint32 mapId, float x, float y) |
| float | GetStaticHeight (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) |
| float | GetStaticHeight (PhaseShift const &phaseShift, uint32 mapId, Position const &pos, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) |
| float | GetWaterLevel (PhaseShift const &phaseShift, uint32 mapId, float x, float y) |
| bool | IsInWater (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, LiquidData *data=nullptr) |
| bool | IsUnderWater (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z) |
| float | GetWaterOrGroundLevel (PhaseShift const &phaseShift, uint32 mapId, float x, float y, float z, float *ground=nullptr, bool swim=false, float collisionHeight=2.03128f, DynamicMapTree const *dynamicMapTree=nullptr) |
Static Public Member Functions | |
| static bool | ExistMap (uint32 mapid, int32 gx, int32 gy, bool log=true) |
| static bool | ExistVMap (uint32 mapid, int32 gx, int32 gy) |
Private Member Functions | |
| void | LoadMapAndVMapImpl (int32 gx, int32 gy) |
| void | LoadMMapInstanceImpl (uint32 mapId, uint32 instanceId) |
| void | LoadMap (int32 gx, int32 gy) |
| void | LoadVMap (int32 gx, int32 gy) |
| void | LoadMMapImpl (uint32 instanceId, int32 gx, int32 gy) |
| void | UnloadMapImpl (int32 gx, int32 gy) |
| void | UnloadMMapInstanceImpl (uint32 mapId, uint32 instanceId) |
| GridMap * | GetGrid (uint32 mapId, float x, float y, bool loadIfMissing=true) |
Static Private Member Functions | |
| static constexpr int32 | GetBitsetIndex (int32 gx, int32 gy) |
Private Attributes | |
| uint32 | _mapId |
| TerrainInfo * | _parentTerrain |
| std::vector< std::shared_ptr< TerrainInfo > > | _childTerrain |
| std::mutex | _loadMutex |
| std::unique_ptr< GridMap > | _gridMap [MAX_NUMBER_OF_GRIDS][MAX_NUMBER_OF_GRIDS] |
| std::atomic< uint16 > | _referenceCountFromMap [MAX_NUMBER_OF_GRIDS][MAX_NUMBER_OF_GRIDS] |
| std::array< uint64, MAX_NUMBER_OF_GRIDS > | _loadedGrids |
| std::bitset< MAX_NUMBER_OF_GRIDS *MAX_NUMBER_OF_GRIDS > | _gridFileExists |
| TimeTracker | _cleanupTimer |
Static Private Attributes | |
| static constexpr Milliseconds | CleanupInterval = 1min |
Definition at line 38 of file TerrainMgr.h.
|
explicit |
Definition at line 34 of file TerrainMgr.cpp.
|
delete |
|
delete |
| TerrainInfo::~TerrainInfo | ( | ) |
Definition at line 38 of file TerrainMgr.cpp.
References VMAP::VMapFactory::createOrGetVMapManager(), GetId(), MMAP::MMapManager::instance(), MMAP::MMapManager::unloadMap(), and VMAP::VMapManager::unloadMap().
| void TerrainInfo::AddChildTerrain | ( | std::shared_ptr< TerrainInfo > | childTerrain | ) |
Definition at line 150 of file TerrainMgr.cpp.
References _childTerrain.
| void TerrainInfo::CleanUpGrids | ( | uint32 | diff | ) |
Definition at line 319 of file TerrainMgr.cpp.
References _cleanupTimer, _loadedGrids, _referenceCountFromMap, CleanupInterval, MAX_NUMBER_OF_GRIDS, TimeTracker::Passed(), TimeTracker::Reset(), UI64LIT, UnloadMapImpl(), and TimeTracker::Update().
| void TerrainInfo::DiscoverGridMapFiles | ( | ) |
Definition at line 49 of file TerrainMgr.cpp.
References _gridFileExists, ExistMap(), GetBitsetIndex(), GetId(), MapMagic, MapVersionMagic, MAX_NUMBER_OF_GRIDS, Trinity::StringFormat(), and sWorld.
Definition at line 76 of file TerrainMgr.cpp.
References MapMagic, MapVersionMagic, Trinity::StringFormat(), sWorld, and TC_LOG_ERROR.
Referenced by DiscoverGridMapFiles(), TerrainMgr::ExistMapAndVMap(), and misc_commandscript::HandleGPSCommand().
Definition at line 109 of file TerrainMgr.cpp.
References VMAP::VMapFactory::createOrGetVMapManager(), VMAP::DisabledInConfig, VMAP::FileNotFound, VMAP::VMapManager::getDirFileName(), VMAP::ReadFromFileFailed, VMAP::Success, sWorld, TC_LOG_ERROR, and VMAP::VersionMismatch.
Referenced by TerrainMgr::ExistMapAndVMap(), and misc_commandscript::HandleGPSCommand().
| uint32 TerrainInfo::GetAreaId | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| DynamicMapTree const * | dynamicMapTree = nullptr |
||
| ) |
Definition at line 612 of file TerrainMgr.cpp.
References GetAreaInfo(), GetGrid(), GetId(), PhasingHandler::GetTerrainMapId(), DB2Manager::GetWMOAreaTable(), GROUND_HEIGHT_TOLERANCE, INVALID_HEIGHT, and sMapStore.
Referenced by GetLiquidStatus(), GetZoneAndAreaId(), and GetZoneId().
|
inline |
Definition at line 88 of file TerrainMgr.h.
References GetAreaId(), Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().
Referenced by GetAreaId().
| bool TerrainInfo::GetAreaInfo | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| uint32 & | mogpflags, | ||
| int32 & | adtId, | ||
| int32 & | rootId, | ||
| int32 & | groupId, | ||
| DynamicMapTree const * | dynamicMapTree = nullptr |
||
| ) |
Definition at line 572 of file TerrainMgr.cpp.
References VMAP::AreaAndLiquidData::areaInfo, VMAP::VMapFactory::createOrGetVMapManager(), VMAP::AreaAndLiquidData::floorZ, DynamicMapTree::getAreaAndLiquidData(), VMAP::VMapManager::getAreaAndLiquidData(), GetGrid(), and PhasingHandler::GetTerrainMapId().
Referenced by GetAreaId().
|
inlinestaticconstexprprivate |
Definition at line 106 of file TerrainMgr.h.
References MAX_NUMBER_OF_GRIDS.
Referenced by DiscoverGridMapFiles(), HasChildTerrainGridFile(), and LoadMap().
| void TerrainInfo::GetFullTerrainStatusForPosition | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| PositionFullTerrainStatus & | data, | ||
| Optional< map_liquidHeaderTypeFlags > | reqLiquidType = {}, |
||
| float | collisionHeight = 2.03128f, |
||
| DynamicMapTree const * | dynamicMapTree = nullptr |
||
| ) |
Definition at line 340 of file TerrainMgr.cpp.
References PositionFullTerrainStatus::areaId, VMAP::AreaAndLiquidData::areaInfo, AsUnderlyingType(), VMAP::VMapFactory::createOrGetVMapManager(), LiquidData::entry, VMAP::AreaAndLiquidData::floorZ, PositionFullTerrainStatus::floorZ, ForceIndoors, ForceOutdoors, GridMap::getArea(), DynamicMapTree::getAreaAndLiquidData(), VMAP::VMapManager::getAreaAndLiquidData(), GetGrid(), GridMap::getHeight(), GetId(), DB2Manager::GetLiquidFlags(), GridMap::GetLiquidStatus(), PhasingHandler::GetTerrainMapId(), DB2Manager::GetWMOAreaTable(), GROUND_HEIGHT_TOLERANCE, INVALID_HEIGHT, IsInWMOInterior(), LiquidData::level, LIQUID_MAP_ABOVE_WATER, LIQUID_MAP_IN_WATER, LIQUID_MAP_NO_WATER, LIQUID_MAP_OCEAN_FLOOR, LIQUID_MAP_UNDER_WATER, LIQUID_MAP_WATER_WALK, VMAP::AreaAndLiquidData::liquidInfo, PositionFullTerrainStatus::liquidInfo, PositionFullTerrainStatus::liquidStatus, AreaTableEntry::LiquidTypeID, PositionFullTerrainStatus::outdoors, AreaTableEntry::ParentAreaID, sAreaTableStore, sLiquidTypeStore, sMapStore, VMAP_INVALID_HEIGHT, and PositionFullTerrainStatus::wmoLocation.
|
private |
Definition at line 295 of file TerrainMgr.cpp.
References _childTerrain, _gridMap, _loadedGrids, _loadMutex, CENTER_GRID_ID, GetId(), LoadMapAndVMapImpl(), SIZE_OF_GRIDS, and UI64LIT.
Referenced by GetAreaId(), GetAreaInfo(), GetFullTerrainStatusForPosition(), GetGridHeight(), GetLiquidStatus(), GetMinHeight(), GetWaterLevel(), and GetWaterOrGroundLevel().
| float TerrainInfo::GetGridHeight | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y | ||
| ) |
Definition at line 674 of file TerrainMgr.cpp.
References GetGrid(), PhasingHandler::GetTerrainMapId(), and VMAP_INVALID_HEIGHT_VALUE.
Referenced by GetStaticHeight().
|
inline |
Definition at line 48 of file TerrainMgr.h.
Referenced by DiscoverGridMapFiles(), GetAreaId(), GetFullTerrainStatusForPosition(), GetGrid(), GetLiquidStatus(), GetMapName(), LoadMap(), LoadMMapImpl(), LoadVMap(), UnloadMapImpl(), and ~TerrainInfo().
| ZLiquidStatus TerrainInfo::GetLiquidStatus | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| Optional< map_liquidHeaderTypeFlags > | ReqLiquidType = {}, |
||
| LiquidData * | data = nullptr, |
||
| float | collisionHeight = 2.03128f |
||
| ) |
Definition at line 479 of file TerrainMgr.cpp.
References VMAP::AreaAndLiquidData::areaInfo, AsUnderlyingType(), VMAP::VMapFactory::createOrGetVMapManager(), LiquidData::depth_level, LiquidData::entry, VMAP::AreaAndLiquidData::floorZ, VMAP::VMapManager::getAreaAndLiquidData(), GetAreaId(), GetGrid(), GetId(), DB2Manager::GetLiquidFlags(), PhasingHandler::GetTerrainMapId(), GROUND_HEIGHT_TOLERANCE, IsInWMOInterior(), LiquidData::level, LIQUID_MAP_ABOVE_WATER, LIQUID_MAP_IN_WATER, LIQUID_MAP_NO_WATER, LIQUID_MAP_OCEAN_FLOOR, LIQUID_MAP_UNDER_WATER, LIQUID_MAP_WATER_WALK, VMAP::AreaAndLiquidData::liquidInfo, sAreaTableStore, sLiquidTypeStore, TC_LOG_DEBUG, and LiquidData::type_flags.
Referenced by GetWaterOrGroundLevel(), IsInWater(), and IsUnderWater().
| char const * TerrainInfo::GetMapName | ( | ) | const |
Definition at line 44 of file TerrainMgr.cpp.
References GetId(), sMapStore, and sWorld.
Referenced by LoadMMapImpl(), and LoadVMap().
| float TerrainInfo::GetMinHeight | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y | ||
| ) |
Definition at line 666 of file TerrainMgr.cpp.
References GetGrid(), and PhasingHandler::GetTerrainMapId().
| float TerrainInfo::GetStaticHeight | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| bool | checkVMap = true, |
||
| float | maxSearchDist = DEFAULT_HEIGHT_SEARCH |
||
| ) |
Definition at line 682 of file TerrainMgr.cpp.
References VMAP::VMapFactory::createOrGetVMapManager(), GetGridHeight(), VMAP::VMapManager::getHeight(), PhasingHandler::GetTerrainMapId(), GROUND_HEIGHT_TOLERANCE, INVALID_HEIGHT, VMAP::VMapManager::isHeightCalcEnabled(), and VMAP_INVALID_HEIGHT_VALUE.
Referenced by GetWaterOrGroundLevel().
|
inline |
Definition at line 97 of file TerrainMgr.h.
References Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), and GetStaticHeight().
Referenced by GetStaticHeight().
| float TerrainInfo::GetWaterLevel | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y | ||
| ) |
Definition at line 721 of file TerrainMgr.cpp.
References GetGrid(), and PhasingHandler::GetTerrainMapId().
| float TerrainInfo::GetWaterOrGroundLevel | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| float * | ground = nullptr, |
||
| bool | swim = false, |
||
| float | collisionHeight = 2.03128f, |
||
| DynamicMapTree const * | dynamicMapTree = nullptr |
||
| ) |
Definition at line 741 of file TerrainMgr.cpp.
References GetGrid(), DynamicMapTree::getHeight(), GetLiquidStatus(), GetStaticHeight(), PhasingHandler::GetTerrainMapId(), LiquidData::level, LIQUID_MAP_ABOVE_WATER, LIQUID_MAP_NO_WATER, VMAP_INVALID_HEIGHT_VALUE, and Z_OFFSET_FIND_HEIGHT.
| void TerrainInfo::GetZoneAndAreaId | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| uint32 & | zoneid, | ||
| uint32 & | areaid, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| DynamicMapTree const * | dynamicMapTree = nullptr |
||
| ) |
Definition at line 658 of file TerrainMgr.cpp.
References GetAreaId(), IsSubzone, and sAreaTableStore.
|
inline |
Definition at line 92 of file TerrainMgr.h.
References Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), and GetZoneAndAreaId().
Referenced by GetZoneAndAreaId().
| uint32 TerrainInfo::GetZoneId | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| DynamicMapTree const * | dynamicMapTree = nullptr |
||
| ) |
Definition at line 648 of file TerrainMgr.cpp.
References GetAreaId(), IsSubzone, and sAreaTableStore.
|
inline |
Definition at line 90 of file TerrainMgr.h.
References Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), and GetZoneId().
Referenced by GetZoneId().
Definition at line 144 of file TerrainMgr.cpp.
References _childTerrain, and GetBitsetIndex().
Referenced by PhasingHandler::GetTerrainMapId().
| bool TerrainInfo::IsInWater | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| LiquidData * | data = nullptr |
||
| ) |
Definition at line 729 of file TerrainMgr.cpp.
References GetLiquidStatus(), LIQUID_MAP_IN_WATER, and LIQUID_MAP_UNDER_WATER.
| bool TerrainInfo::IsUnderWater | ( | PhaseShift const & | phaseShift, |
| uint32 | mapId, | ||
| float | x, | ||
| float | y, | ||
| float | z | ||
| ) |
Definition at line 736 of file TerrainMgr.cpp.
References GetLiquidStatus(), LIQUID_MAP_UNDER_WATER, Ocean, and Water.
Definition at line 197 of file TerrainMgr.cpp.
References _gridFileExists, _gridMap, GetBitsetIndex(), GetId(), GridMap::InvalidFile, GridMap::Ok, Trinity::StringFormat(), sWorld, TC_LOG_DEBUG, and TC_LOG_ERROR.
Referenced by LoadMapAndVMapImpl().
Definition at line 156 of file TerrainMgr.cpp.
References _loadMutex, _referenceCountFromMap, and LoadMapAndVMapImpl().
Definition at line 181 of file TerrainMgr.cpp.
References _childTerrain, _loadedGrids, LoadMap(), LoadVMap(), and UI64LIT.
Referenced by GetGrid(), and LoadMapAndVMap().
Definition at line 173 of file TerrainMgr.cpp.
References _childTerrain, and LoadMMapImpl().
Definition at line 242 of file TerrainMgr.cpp.
References _parentTerrain, MMAP::AlreadyLoaded, AsUnderlyingType(), MMAP::FileNotFound, GetId(), GetMapName(), MMAP::MMapManager::instance(), DisableMgr::IsPathfindingEnabled(), MMAP::Success, sWorld, TC_LOG_DEBUG, and TC_LOG_WARN.
Referenced by LoadMMap().
Definition at line 165 of file TerrainMgr.cpp.
References _childTerrain, and LoadMMapInstanceImpl().
Definition at line 192 of file TerrainMgr.cpp.
References _mapId, MMAP::MMapManager::instance(), MMAP::MMapManager::loadMapInstance(), and sWorld.
Referenced by LoadMMapInstance().
Definition at line 220 of file TerrainMgr.cpp.
References VMAP::VMapFactory::createOrGetVMapManager(), VMAP::DisabledInConfig, GetId(), GetMapName(), VMAP::ReadFromFileFailed, VMAP::Success, sWorld, TC_LOG_DEBUG, TC_LOG_ERROR, and VMAP::VersionMismatch.
Referenced by LoadMapAndVMapImpl().
|
delete |
|
delete |
Definition at line 264 of file TerrainMgr.cpp.
References _referenceCountFromMap.
Definition at line 278 of file TerrainMgr.cpp.
References _childTerrain, _gridMap, _loadedGrids, VMAP::VMapFactory::createOrGetVMapManager(), GetId(), MMAP::MMapManager::instance(), UI64LIT, MMAP::MMapManager::unloadMap(), and VMAP::VMapManager::unloadMap().
Referenced by CleanUpGrids().
Definition at line 270 of file TerrainMgr.cpp.
References _childTerrain, and UnloadMMapInstanceImpl().
Definition at line 290 of file TerrainMgr.cpp.
References _mapId, MMAP::MMapManager::instance(), and MMAP::MMapManager::unloadMapInstance().
Referenced by UnloadMMapInstance().
|
private |
Definition at line 111 of file TerrainMgr.h.
Referenced by AddChildTerrain(), GetGrid(), HasChildTerrainGridFile(), LoadMapAndVMapImpl(), LoadMMap(), LoadMMapInstance(), UnloadMapImpl(), and UnloadMMapInstance().
|
private |
Definition at line 122 of file TerrainMgr.h.
Referenced by CleanUpGrids().
|
private |
Definition at line 117 of file TerrainMgr.h.
Referenced by DiscoverGridMapFiles(), and LoadMap().
|
private |
Definition at line 114 of file TerrainMgr.h.
Referenced by GetGrid(), LoadMap(), and UnloadMapImpl().
|
private |
Definition at line 116 of file TerrainMgr.h.
Referenced by CleanUpGrids(), GetGrid(), LoadMapAndVMapImpl(), and UnloadMapImpl().
|
private |
Definition at line 113 of file TerrainMgr.h.
Referenced by GetGrid(), and LoadMapAndVMap().
|
private |
Definition at line 108 of file TerrainMgr.h.
Referenced by LoadMMapInstanceImpl(), and UnloadMMapInstanceImpl().
|
private |
Definition at line 110 of file TerrainMgr.h.
Referenced by LoadMMapImpl().
|
private |
Definition at line 115 of file TerrainMgr.h.
Referenced by CleanUpGrids(), LoadMapAndVMap(), and UnloadMap().
|
staticconstexprprivate |
Definition at line 119 of file TerrainMgr.h.
Referenced by CleanUpGrids().