18#ifndef TRINITY_MAPMANAGER_H
19#define TRINITY_MAPMANAGER_H
27#include <boost/dynamic_bitset.hpp>
30struct TransportCreatureProto;
38 Map* FindBaseNonInstanceMap(
uint32 mapId)
const;
44 Map const* m =
const_cast<MapManager*
>(
this)->CreateBaseMap(mapid);
51 Map const* m =
const_cast<MapManager*
>(
this)->CreateBaseMap(mapid);
58 Map const* m =
const_cast<MapManager*
>(
this)->CreateBaseMap(mapid);
61 void GetZoneAndAreaId(
uint32 phaseMask,
uint32& zoneid,
uint32& areaid,
uint32 mapid,
Position const& pos)
const {
GetZoneAndAreaId(phaseMask, zoneid, areaid, mapid, pos.
GetPositionX(), pos.
GetPositionY(), pos.
GetPositionZ()); }
64 void Initialize(
void);
72 i_gridCleanUpDelay = t;
80 i_timer.SetInterval(t);
87 static bool ExistMapAndVMap(
uint32 mapid,
float x,
float y);
88 static bool IsValidMAP(
uint32 mapid,
bool startUp);
112 return IsValidMapCoord(loc.
GetMapId(), loc);
115 void DoDelayedMovesAndRemoves();
118 void InitializeVisibilityDistanceInfo();
122 uint32 GetNumPlayersInInstances();
125 void InitInstanceIds();
126 uint32 GenerateInstanceId();
127 void RegisterInstanceId(
uint32 instanceId);
128 void FreeInstanceId(
uint32 instanceId);
132 template<
typename Worker>
133 void DoForAllMaps(Worker&& worker);
135 template<
typename Worker>
136 void DoForAllMapsWithMapId(
uint32 mapId, Worker&& worker);
144 typedef std::unordered_map<uint32, Trinity::unique_trackable_ptr<Map>>
MapMapType;
152 MapMapType::const_iterator iter = i_maps.find(mapId);
153 return (iter == i_maps.end() ?
nullptr : iter->second.get());
172template<
typename Worker>
175 std::lock_guard<std::mutex> lock(
_mapsLock);
177 for (
auto& mapPair :
i_maps)
179 Map* map = mapPair.second.get();
183 for (
auto& instancePair : instances)
184 worker(instancePair.second.get());
191template<
typename Worker>
194 std::lock_guard<std::mutex> lock(
_mapsLock);
196 auto itr =
i_maps.find(mapId);
199 Map* map = itr->second.get();
203 for (
auto& p : instances)
204 worker(p.second.get());
211#define sMapMgr MapManager::instance()
#define MIN_MAP_UPDATE_DELAY
std::unordered_map< uint32, Trinity::unique_trackable_ptr< Map > > InstancedMaps
uint32 GetZoneId(uint32 phaseMask, uint32 mapid, float x, float y, float z) const
static bool IsValidMapCoord(uint32 mapid, float x, float y, float z, float o)
void DecreaseScheduledScriptCount(std::size_t count)
uint32 GetAreaId(uint32 phaseMask, uint32 mapid, float x, float y, float z) const
void DoForAllMapsWithMapId(uint32 mapId, Worker &&worker)
static bool IsValidMapCoord(uint32 mapid, Position const &pos)
void GetZoneAndAreaId(uint32 phaseMask, uint32 &zoneid, uint32 &areaid, uint32 mapid, float x, float y, float z) const
void SetMapUpdateInterval(uint32 t)
void DecreaseScheduledScriptCount()
boost::dynamic_bitset< size_t > InstanceIds
static bool IsValidMapCoord(uint32 mapid, float x, float y)
MapManager & operator=(MapManager const &)=delete
Map * FindBaseMap(uint32 mapId) const
uint32 i_gridCleanUpDelay
void GetZoneAndAreaId(uint32 phaseMask, uint32 &zoneid, uint32 &areaid, uint32 mapid, Position const &pos) const
void IncreaseScheduledScriptsCount()
MapManager(MapManager const &)=delete
std::atomic< std::size_t > _scheduledScripts
void DoForAllMaps(Worker &&worker)
void SetGridCleanUpDelay(uint32 t)
std::unordered_map< uint32, Trinity::unique_trackable_ptr< Map > > MapMapType
void GetZoneAndAreaId(uint32 phaseMask, uint32 &zoneid, uint32 &areaid, WorldLocation const &loc) const
static bool IsValidMapCoord(WorldLocation const &loc)
MapUpdater * GetMapUpdater()
uint32 GetZoneId(uint32 phaseMask, WorldLocation const &loc) const
uint32 GetZoneId(uint32 phaseMask, uint32 mapid, Position const &pos) const
uint32 GetAreaId(uint32 phaseMask, WorldLocation const &loc) const
bool IsScriptScheduled() const
InstanceIds _freeInstanceIds
uint32 GetAreaId(uint32 phaseMask, uint32 mapid, Position const &pos) const
static bool IsValidMapCoord(uint32 mapid, float x, float y, float z)
uint32 GetZoneId(uint32 phaseMask, float x, float y, float z) const
void GetZoneAndAreaId(uint32 phaseMask, uint32 &zoneid, uint32 &areaid, float x, float y, float z) const
uint32 GetAreaId(uint32 phaseMask, float x, float y, float z) const
MapInstanced * ToMapInstanced()
bool IsValidMapCoord(float c)
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const