18#ifndef TRINITY_MAPMANAGER_H
19#define TRINITY_MAPMANAGER_H
27#include <boost/dynamic_bitset_fwd.hpp>
29#include <shared_mutex>
66 i_gridCleanUpDelay = t;
74 i_timer.SetInterval(t);
80 static bool IsValidMAP(
uint32 mapId);
107 void InitializeVisibilityDistanceInfo();
110 uint32 GetNumInstances()
const;
111 uint32 GetNumPlayersInInstances()
const;
114 void InitInstanceIds();
115 uint32 GenerateInstanceId();
116 void RegisterInstanceId(
uint32 instanceId);
117 void FreeInstanceId(
uint32 instanceId);
121 template<
typename Worker>
122 void DoForAllMaps(Worker&& worker);
124 template<
typename Worker>
125 void DoForAllMapsWithMapId(
uint32 mapId, Worker&& worker);
132 void AddSC_BuiltInScripts();
135 using MapKey = std::pair<uint32, uint32>;
136 typedef std::map<MapKey, Trinity::unique_trackable_ptr<Map>>
MapMapType;
146 bool DestroyMap(
Map* map);
161template<
typename Worker>
164 std::shared_lock<std::shared_mutex> lock(
_mapsLock);
166 for (
auto const& [key, map] :
i_maps)
170template<
typename Worker>
173 std::shared_lock<std::shared_mutex> lock(
_mapsLock);
176 i_maps.lower_bound({ mapId, 0 }),
177 i_maps.upper_bound({ mapId, std::numeric_limits<uint32>::max() })
180 for (
auto const& [key, map] : range)
184#define sMapMgr MapManager::instance()
#define MIN_MAP_UPDATE_DELAY
std::unique_ptr< InstanceIds > _freeInstanceIds
std::shared_mutex _mapsLock
static bool IsValidMapCoord(uint32 mapid, float x, float y, float z, float o)
void DecreaseScheduledScriptCount(std::size_t count)
void DoForAllMapsWithMapId(uint32 mapId, Worker &&worker)
static bool IsValidMapCoord(uint32 mapid, Position const &pos)
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
uint32 i_gridCleanUpDelay
void IncreaseScheduledScriptsCount()
MapManager(MapManager &&)=delete
MapManager(MapManager const &)=delete
std::atomic< std::size_t > _scheduledScripts
void DoForAllMaps(Worker &&worker)
void SetGridCleanUpDelay(uint32 t)
static bool IsValidMapCoord(WorldLocation const &loc)
MapUpdater * GetMapUpdater()
std::pair< uint32, uint32 > MapKey
std::map< MapKey, Trinity::unique_trackable_ptr< Map > > MapMapType
bool IsScriptScheduled() const
MapManager & operator=(MapManager &&)=delete
static bool IsValidMapCoord(uint32 mapid, float x, float y, float z)
constexpr uint32 GetMapId() const
constexpr IteratorPair< iterator, end_iterator > MakeIteratorPair(iterator first, end_iterator second)
bool IsValidMapCoord(float c)
void Update(VignetteData &vignette, WorldObject const *owner)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const