18#ifndef TRINITY_MAPMANAGER_H
19#define TRINITY_MAPMANAGER_H
28#include <boost/dynamic_bitset_fwd.hpp>
30#include <shared_mutex>
67 i_gridCleanUpDelay = t;
75 i_timer.SetInterval(t);
81 static bool IsValidMAP(
uint32 mapId);
105 return IsValidMapCoord(loc.
GetMapId(), loc);
108 void InitializeVisibilityDistanceInfo();
111 uint32 GetNumInstances()
const;
112 uint32 GetNumPlayersInInstances()
const;
115 void InitInstanceIds();
116 uint32 GenerateInstanceId();
117 void RegisterInstanceId(
uint32 instanceId);
118 void FreeInstanceId(
uint32 instanceId);
122 template<
typename Worker>
123 void DoForAllMaps(Worker&& worker);
125 template<
typename Worker>
126 void DoForAllMapsWithMapId(
uint32 mapId, Worker&& worker);
133 void AddSC_BuiltInScripts();
136 using MapKey = std::pair<uint32, uint32>;
137 typedef std::map<MapKey, Trinity::unique_trackable_ptr<Map>>
MapMapType;
148 bool DestroyMap(
Map* map);
163template<
typename Worker>
166 std::shared_lock<std::shared_mutex> lock(
_mapsLock);
168 for (
auto const& [key, map] :
i_maps)
172template<
typename Worker>
175 std::shared_lock<std::shared_mutex> lock(
_mapsLock);
178 i_maps.lower_bound({ mapId, 0 }),
179 i_maps.upper_bound({ mapId, std::numeric_limits<uint32>::max() })
182 for (
auto const& [key, map] : range)
186#define sMapMgr MapManager::instance()
#define MIN_MAP_UPDATE_DELAY
std::optional< T > Optional
Optional helper class to wrap optional values within.
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)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const