30#include <unordered_map>
48 char const* GetMapName()
const;
50 void DiscoverGridMapFiles();
56 void AddChildTerrain(std::shared_ptr<TerrainInfo> childTerrain);
63 void LoadMMapInstanceImpl(
uint32 mapId,
uint32 instanceId);
70 void UnloadMMapInstance(
uint32 mapId,
uint32 instanceId);
74 void UnloadMMapInstanceImpl(
uint32 mapId,
uint32 instanceId);
76 GridMap* GetGrid(
uint32 mapId,
float x,
float y,
bool loadIfMissing =
true);
79 void CleanUpGrids(
uint32 diff);
90 void GetZoneAndAreaId(
PhaseShift const& phaseShift,
uint32 mapId,
uint32& zoneid,
uint32& areaid,
Position const& pos,
DynamicMapTree const* dynamicMapTree =
nullptr) {
GetZoneAndAreaId(phaseShift, mapId, zoneid, areaid, pos.
GetPositionX(), pos.
GetPositionY(), pos.
GetPositionZ(), dynamicMapTree); }
92 float GetMinHeight(
PhaseShift const& phaseShift,
uint32 mapId,
float x,
float y);
93 float GetGridHeight(
PhaseShift const& phaseShift,
uint32 mapId,
float x,
float y);
95 float GetStaticHeight(
PhaseShift const& phaseShift,
uint32 mapId,
Position const& pos,
bool checkVMap =
true,
float maxSearchDist =
DEFAULT_HEIGHT_SEARCH) {
return GetStaticHeight(phaseShift, mapId, pos.
GetPositionX(), pos.
GetPositionY(), pos.
GetPositionZ(), checkVMap, maxSearchDist); }
97 float GetWaterLevel(
PhaseShift const& phaseShift,
uint32 mapId,
float x,
float y);
99 bool IsUnderWater(
PhaseShift const& phaseShift,
uint32 mapId,
float x,
float y,
float z);
101 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);
135 void InitializeParentMapData(std::unordered_map<
uint32, std::vector<uint32>>
const& mapData);
137 std::shared_ptr<TerrainInfo> LoadTerrain(
uint32 mapId);
151 void GetZoneAndAreaId(
PhaseShift const& phaseShift,
uint32& zoneid,
uint32& areaid,
uint32 mapid,
Position const& pos) {
GetZoneAndAreaId(phaseShift, zoneid, areaid, mapid, pos.
GetPositionX(), pos.
GetPositionY(), pos.
GetPositionZ()); }
154 static bool ExistMapAndVMap(
uint32 mapid,
float x,
float y);
157 std::shared_ptr<TerrainInfo> LoadTerrainImpl(
uint32 mapId);
165#define sTerrainMgr TerrainMgr::Instance()
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
#define DEFAULT_HEIGHT_SEARCH
#define MAX_NUMBER_OF_GRIDS
std::optional< T > Optional
Optional helper class to wrap optional values within.
TerrainInfo & operator=(TerrainInfo &&)=delete
uint32 GetAreaId(PhaseShift const &phaseShift, uint32 mapId, Position const &pos, DynamicMapTree const *dynamicMapTree=nullptr)
float GetStaticHeight(PhaseShift const &phaseShift, uint32 mapId, Position const &pos, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
TimeTracker _cleanupTimer
uint32 GetZoneId(PhaseShift const &phaseShift, uint32 mapId, Position const &pos, DynamicMapTree const *dynamicMapTree=nullptr)
TerrainInfo(TerrainInfo const &)=delete
std::bitset< MAX_NUMBER_OF_GRIDS *MAX_NUMBER_OF_GRIDS > _loadedGrids
TerrainInfo(TerrainInfo &&)=delete
TerrainInfo & operator=(TerrainInfo const &)=delete
std::vector< std::shared_ptr< TerrainInfo > > _childTerrain
std::bitset< MAX_NUMBER_OF_GRIDS *MAX_NUMBER_OF_GRIDS > _gridFileExists
static constexpr int32 GetBitsetIndex(int32 gx, int32 gy)
TerrainInfo * _parentTerrain
void GetZoneAndAreaId(PhaseShift const &phaseShift, uint32 mapId, uint32 &zoneid, uint32 &areaid, Position const &pos, DynamicMapTree const *dynamicMapTree=nullptr)
uint32 GetAreaId(PhaseShift const &phaseShift, WorldLocation const &loc)
TerrainMgr(TerrainMgr const &)=delete
void GetZoneAndAreaId(PhaseShift const &phaseShift, uint32 &zoneid, uint32 &areaid, uint32 mapid, Position const &pos)
TerrainMgr & operator=(TerrainMgr const &)=delete
std::unordered_map< uint32, std::weak_ptr< TerrainInfo > > _terrainMaps
uint32 GetZoneId(PhaseShift const &phaseShift, uint32 mapid, Position const &pos)
uint32 GetAreaId(PhaseShift const &phaseShift, uint32 mapid, Position const &pos)
std::unordered_map< uint32, std::vector< uint32 > > _parentMapData
void GetZoneAndAreaId(PhaseShift const &phaseShift, uint32 &zoneid, uint32 &areaid, WorldLocation const &loc)
TerrainMgr & operator=(TerrainMgr &&)=delete
uint32 GetZoneId(PhaseShift const &phaseShift, WorldLocation const &loc)
TerrainMgr(TerrainMgr &&)=delete
constexpr uint32 GetMapId() const
void Update(VignetteData &vignette, WorldObject const *owner)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetPositionZ() const