TrinityCore
Loading...
Searching...
No Matches
TerrainInfo Class Reference

#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
 

Detailed Description

Definition at line 38 of file TerrainMgr.h.

Constructor & Destructor Documentation

◆ TerrainInfo() [1/3]

TerrainInfo::TerrainInfo ( uint32  mapId)
explicit

Definition at line 34 of file TerrainMgr.cpp.

◆ TerrainInfo() [2/3]

TerrainInfo::TerrainInfo ( TerrainInfo const &  )
delete

◆ TerrainInfo() [3/3]

TerrainInfo::TerrainInfo ( TerrainInfo &&  )
delete

◆ ~TerrainInfo()

Member Function Documentation

◆ AddChildTerrain()

void TerrainInfo::AddChildTerrain ( std::shared_ptr< TerrainInfo >  childTerrain)

Definition at line 150 of file TerrainMgr.cpp.

References _childTerrain.

◆ CleanUpGrids()

◆ DiscoverGridMapFiles()

void TerrainInfo::DiscoverGridMapFiles ( )

◆ ExistMap()

bool TerrainInfo::ExistMap ( uint32  mapid,
int32  gx,
int32  gy,
bool  log = true 
)
static

◆ ExistVMap()

◆ GetAreaId() [1/2]

uint32 TerrainInfo::GetAreaId ( PhaseShift const &  phaseShift,
uint32  mapId,
float  x,
float  y,
float  z,
DynamicMapTree const *  dynamicMapTree = nullptr 
)

◆ GetAreaId() [2/2]

uint32 TerrainInfo::GetAreaId ( PhaseShift const &  phaseShift,
uint32  mapId,
Position const &  pos,
DynamicMapTree const *  dynamicMapTree = nullptr 
)
inline

◆ GetAreaInfo()

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 
)

◆ GetBitsetIndex()

static constexpr int32 TerrainInfo::GetBitsetIndex ( int32  gx,
int32  gy 
)
inlinestaticconstexprprivate

Definition at line 106 of file TerrainMgr.h.

References MAX_NUMBER_OF_GRIDS.

Referenced by DiscoverGridMapFiles(), HasChildTerrainGridFile(), and LoadMap().

◆ GetFullTerrainStatusForPosition()

◆ GetGrid()

GridMap * TerrainInfo::GetGrid ( uint32  mapId,
float  x,
float  y,
bool  loadIfMissing = true 
)
private

◆ GetGridHeight()

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().

◆ GetId()

◆ GetLiquidStatus()

◆ GetMapName()

char const * TerrainInfo::GetMapName ( ) const

Definition at line 44 of file TerrainMgr.cpp.

References GetId(), sMapStore, and sWorld.

Referenced by LoadMMapImpl(), and LoadVMap().

◆ GetMinHeight()

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().

◆ GetStaticHeight() [1/2]

float TerrainInfo::GetStaticHeight ( PhaseShift const &  phaseShift,
uint32  mapId,
float  x,
float  y,
float  z,
bool  checkVMap = true,
float  maxSearchDist = DEFAULT_HEIGHT_SEARCH 
)

◆ GetStaticHeight() [2/2]

float TerrainInfo::GetStaticHeight ( PhaseShift const &  phaseShift,
uint32  mapId,
Position const &  pos,
bool  checkVMap = true,
float  maxSearchDist = DEFAULT_HEIGHT_SEARCH 
)
inline

◆ GetWaterLevel()

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().

◆ GetWaterOrGroundLevel()

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 
)

◆ GetZoneAndAreaId() [1/2]

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.

◆ GetZoneAndAreaId() [2/2]

void TerrainInfo::GetZoneAndAreaId ( PhaseShift const &  phaseShift,
uint32  mapId,
uint32 &  zoneid,
uint32 &  areaid,
Position const &  pos,
DynamicMapTree const *  dynamicMapTree = nullptr 
)
inline

◆ GetZoneId() [1/2]

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.

◆ GetZoneId() [2/2]

uint32 TerrainInfo::GetZoneId ( PhaseShift const &  phaseShift,
uint32  mapId,
Position const &  pos,
DynamicMapTree const *  dynamicMapTree = nullptr 
)
inline

◆ HasChildTerrainGridFile()

bool TerrainInfo::HasChildTerrainGridFile ( uint32  mapId,
int32  gx,
int32  gy 
) const

Definition at line 144 of file TerrainMgr.cpp.

References _childTerrain, and GetBitsetIndex().

Referenced by PhasingHandler::GetTerrainMapId().

◆ IsInWater()

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.

◆ IsUnderWater()

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.

◆ LoadMap()

void TerrainInfo::LoadMap ( int32  gx,
int32  gy 
)
private

◆ LoadMapAndVMap()

void TerrainInfo::LoadMapAndVMap ( int32  gx,
int32  gy 
)

Definition at line 156 of file TerrainMgr.cpp.

References _loadMutex, _referenceCountFromMap, and LoadMapAndVMapImpl().

◆ LoadMapAndVMapImpl()

void TerrainInfo::LoadMapAndVMapImpl ( int32  gx,
int32  gy 
)
private

Definition at line 181 of file TerrainMgr.cpp.

References _childTerrain, _loadedGrids, LoadMap(), LoadVMap(), and UI64LIT.

Referenced by GetGrid(), and LoadMapAndVMap().

◆ LoadMMap()

void TerrainInfo::LoadMMap ( uint32  instanceId,
int32  gx,
int32  gy 
)

Definition at line 173 of file TerrainMgr.cpp.

References _childTerrain, and LoadMMapImpl().

◆ LoadMMapImpl()

void TerrainInfo::LoadMMapImpl ( uint32  instanceId,
int32  gx,
int32  gy 
)
private

◆ LoadMMapInstance()

void TerrainInfo::LoadMMapInstance ( uint32  mapId,
uint32  instanceId 
)

Definition at line 165 of file TerrainMgr.cpp.

References _childTerrain, and LoadMMapInstanceImpl().

◆ LoadMMapInstanceImpl()

void TerrainInfo::LoadMMapInstanceImpl ( uint32  mapId,
uint32  instanceId 
)
private

◆ LoadVMap()

◆ operator=() [1/2]

TerrainInfo & TerrainInfo::operator= ( TerrainInfo &&  )
delete

◆ operator=() [2/2]

TerrainInfo & TerrainInfo::operator= ( TerrainInfo const &  )
delete

◆ UnloadMap()

void TerrainInfo::UnloadMap ( int32  gx,
int32  gy 
)

Definition at line 264 of file TerrainMgr.cpp.

References _referenceCountFromMap.

◆ UnloadMapImpl()

◆ UnloadMMapInstance()

void TerrainInfo::UnloadMMapInstance ( uint32  mapId,
uint32  instanceId 
)

Definition at line 270 of file TerrainMgr.cpp.

References _childTerrain, and UnloadMMapInstanceImpl().

◆ UnloadMMapInstanceImpl()

void TerrainInfo::UnloadMMapInstanceImpl ( uint32  mapId,
uint32  instanceId 
)
private

Member Data Documentation

◆ _childTerrain

std::vector<std::shared_ptr<TerrainInfo> > TerrainInfo::_childTerrain
private

◆ _cleanupTimer

TimeTracker TerrainInfo::_cleanupTimer
private

Definition at line 122 of file TerrainMgr.h.

Referenced by CleanUpGrids().

◆ _gridFileExists

std::bitset<MAX_NUMBER_OF_GRIDS * MAX_NUMBER_OF_GRIDS> TerrainInfo::_gridFileExists
private

Definition at line 117 of file TerrainMgr.h.

Referenced by DiscoverGridMapFiles(), and LoadMap().

◆ _gridMap

std::unique_ptr<GridMap> TerrainInfo::_gridMap[MAX_NUMBER_OF_GRIDS][MAX_NUMBER_OF_GRIDS]
private

Definition at line 114 of file TerrainMgr.h.

Referenced by GetGrid(), LoadMap(), and UnloadMapImpl().

◆ _loadedGrids

std::array<uint64, MAX_NUMBER_OF_GRIDS> TerrainInfo::_loadedGrids
private

Definition at line 116 of file TerrainMgr.h.

Referenced by CleanUpGrids(), GetGrid(), LoadMapAndVMapImpl(), and UnloadMapImpl().

◆ _loadMutex

std::mutex TerrainInfo::_loadMutex
private

Definition at line 113 of file TerrainMgr.h.

Referenced by GetGrid(), and LoadMapAndVMap().

◆ _mapId

uint32 TerrainInfo::_mapId
private

Definition at line 108 of file TerrainMgr.h.

Referenced by LoadMMapInstanceImpl(), and UnloadMMapInstanceImpl().

◆ _parentTerrain

TerrainInfo* TerrainInfo::_parentTerrain
private

Definition at line 110 of file TerrainMgr.h.

Referenced by LoadMMapImpl().

◆ _referenceCountFromMap

std::atomic<uint16> TerrainInfo::_referenceCountFromMap[MAX_NUMBER_OF_GRIDS][MAX_NUMBER_OF_GRIDS]
private

Definition at line 115 of file TerrainMgr.h.

Referenced by CleanUpGrids(), LoadMapAndVMap(), and UnloadMap().

◆ CleanupInterval

constexpr Milliseconds TerrainInfo::CleanupInterval = 1min
staticconstexprprivate

Definition at line 119 of file TerrainMgr.h.

Referenced by CleanUpGrids().


The documentation for this class was generated from the following files: