46#include <unordered_set>
84namespace Trinity {
struct ObjectUpdater; }
85namespace Vignettes {
struct VignetteData; }
87namespace MMAP {
class DynamicTileBuilder; }
156#define MIN_UNLOAD_DELAY 1
157#define MAP_INVALID_ZONE 0xFFFFFFFF
189template <
typename ObjectType>
192 using Container = std::unordered_map<ObjectGuid, ObjectType*>;
198 auto [itr, isNew] = container.try_emplace(object->GetGUID(),
object);
199 ASSERT(isNew || itr->second ==
object,
"Object with certain key already in but objects are different!");
205 container.erase(object->GetGUID());
211 return container.size();
216 auto itr = container.find(key);
217 return itr != container.end() ? itr->second :
nullptr;
239 if (m_unloadTimer <= diff)
242 m_unloadTimer -= diff;
246 virtual bool AddPlayerToMap(
Player* player,
bool initPlayer =
true);
247 virtual void RemovePlayerFromMap(
Player*,
bool);
249 template<
class T>
bool AddToMap(T *);
250 template<
class T>
void RemoveFromMap(T *,
bool);
253 virtual void Update(
uint32);
257 virtual void InitVisibilityDistance();
259 void PlayerRelocation(
Player*,
float x,
float y,
float z,
float orientation);
260 void CreatureRelocation(
Creature* creature,
float x,
float y,
float z,
float ang,
bool respawnRelocationOnFail =
true);
261 void GameObjectRelocation(
GameObject* go,
float x,
float y,
float z,
float orientation,
bool respawnRelocationOnFail =
true);
262 void DynamicObjectRelocation(
DynamicObject* go,
float x,
float y,
float z,
float orientation);
263 void AreaTriggerRelocation(
AreaTrigger* at,
float x,
float y,
float z,
float orientation);
265 template<
class T,
class CONTAINER>
281 void LoadGrid(
float x,
float y);
282 void LoadGridForActiveObject(
float x,
float y,
WorldObject const*
object);
284 bool UnloadGrid(
NGridType& ngrid,
bool pForce);
296 static void InitStateMachine();
297 static void DeleteStateMachine();
319 void GetZoneAndAreaId(
PhaseShift const& phaseShift,
uint32& zoneid,
uint32& areaid,
float x,
float y,
float z);
322 float GetMinHeight(
PhaseShift const& phaseShift,
float x,
float y);
323 float GetGridHeight(
PhaseShift const& phaseShift,
float x,
float y);
326 float GetHeight(
PhaseShift const& phaseShift,
float x,
float y,
float z,
bool vmap =
true,
float maxSearchDist =
DEFAULT_HEIGHT_SEARCH) {
return std::max<float>(GetStaticHeight(phaseShift, x, y, z, vmap, maxSearchDist), GetGameObjectFloor(phaseShift, x, y, z, maxSearchDist)); }
329 float GetWaterLevel(
PhaseShift const& phaseShift,
float x,
float y);
330 bool IsInWater(
PhaseShift const& phaseShift,
float x,
float y,
float z,
LiquidData* data =
nullptr);
331 bool IsUnderWater(
PhaseShift const& phaseShift,
float x,
float y,
float z);
333 float GetWaterOrGroundLevel(
PhaseShift const& phaseShift,
float x,
float y,
float z,
float* ground =
nullptr,
bool swim =
false,
float collisionHeight = 2.03128f);
335 void MoveAllCreaturesInMoveList();
336 void MoveAllGameObjectsInMoveList();
337 void MoveAllDynamicObjectsInMoveList();
338 void MoveAllAreaTriggersInMoveList();
339 void RemoveAllObjectsInRemoveList();
340 virtual void RemoveAllPlayers();
343 bool CreatureRespawnRelocation(
Creature* c,
bool diffGridOnly);
344 bool GameObjectRespawnRelocation(
GameObject* go,
bool diffGridOnly);
347 template <
typename T>
348 static bool CheckGridIntegrity(T*
object,
bool moved,
char const* objType);
357 char const* GetMapName()
const;
364 bool Instanceable()
const;
365 bool IsDungeon()
const;
366 bool IsNonRaidDungeon()
const;
369 bool IsNormal()
const;
370 bool IsHeroic()
const;
371 bool IsMythic()
const;
372 bool IsMythicPlus()
const;
373 bool IsHeroicOrHigher()
const;
374 bool Is25ManRaid()
const;
375 bool IsTimewalking()
const;
376 bool IsBattleground()
const;
377 bool IsBattleArena()
const;
378 bool IsBattlegroundOrArena()
const;
379 bool IsScenario()
const;
382 bool IsAlwaysActive()
const;
383 bool GetEntrancePos(
int32& mapid,
float& x,
float& y);
386 void AddObjectToSwitchList(
WorldObject* obj,
bool on);
387 virtual void DelayedUpdate(
uint32 diff);
394 uint32 GetPlayersCountExceptGMs()
const;
395 bool ActiveObjectsNearGrid(
NGridType const& ngrid)
const;
405 template <
typename T>
409 if (
Player* player = ref.GetSource())
414 void ScriptsStart(std::map<
uint32, std::multimap<uint32, ScriptInfo>>
const& scripts,
uint32 id,
Object* source,
Object* target);
423 template<
class T>
void SwitchGridContainers(T* obj,
bool on);
426 void UpdateIteratorBack(
Player* player);
448 return reinterpret_cast<WorldObject*
>(GetCreatureBySpawnId(spawnId));
450 return reinterpret_cast<WorldObject*
>(GetGameObjectBySpawnId(spawnId));
452 return reinterpret_cast<WorldObject*
>(GetAreaTriggerBySpawnId(spawnId));
474 auto itr = _corpsesByCell.find(cellId);
475 if (itr != _corpsesByCell.end())
483 auto itr = _corpsesByPlayer.find(ownerGuid);
484 if (itr != _corpsesByPlayer.end())
504 return _dynamicTree.getHeight(x, y, z, maxSearchDist, phaseShift);
506 bool getObjectHitPos(
PhaseShift const& phaseShift,
float x1,
float y1,
float z1,
float x2,
float y2,
float z2,
float& rx,
float &ry,
float& rz,
float modifyDist);
514 time_t GetLinkedRespawnTime(
ObjectGuid guid)
const;
517 if (
auto map = GetRespawnMapForType(type))
519 auto it = map->find(spawnId);
520 return (it == map->end()) ? 0 : it->second->respawnTime;
527 void UpdatePlayerZoneStats(
uint32 oldZone,
uint32 newZone);
531 void LoadRespawnTimes();
533 void DeleteRespawnTimesInDB();
535 void LoadCorpseData();
536 void DeleteCorpseData();
537 void AddCorpse(
Corpse* corpse);
538 void RemoveCorpse(
Corpse* corpse);
539 Corpse* ConvertCorpseToBones(
ObjectGuid const& ownerGuid,
bool insignia =
false);
540 void RemoveOldCorpses();
542 void SendInitTransports(
Player* player);
543 void SendRemoveTransports(
Player* player);
544 void SendUpdateTransportVisibility(
Player* player);
545 void SendZoneDynamicInfo(
uint32 zoneId,
Player* player)
const;
546 void SendZoneWeather(
uint32 zoneId,
Player* player)
const;
555 void UpdateAreaDependentAuras();
557 template<HighGu
id high>
561 return GetGuidSequenceGenerator(high).Generate();
564 template<HighGu
id high>
568 return GetGuidSequenceGenerator(high).GetNextAfterMaxUsed();
573 _updateObjects.insert(obj);
578 _updateObjects.erase(obj);
583 return m_activeNonPlayers.size();
592 void SendInitSelf(
Player* player);
594 template <
typename T>
595 bool MapObjectCellRelocation(T*
object,
Cell new_cell,
char const* objType);
597 bool CreatureCellRelocation(
Creature* creature,
Cell new_cell);
602 template<
class T>
void InitializeObject(T* obj);
603 void AddCreatureToMoveList(
Creature* c,
float x,
float y,
float z,
float ang);
604 void RemoveCreatureFromMoveList(
Creature* c);
605 void AddGameObjectToMoveList(
GameObject* go,
float x,
float y,
float z,
float ang);
606 void RemoveGameObjectFromMoveList(
GameObject* go);
607 void AddDynamicObjectToMoveList(
DynamicObject* go,
float x,
float y,
float z,
float ang);
609 void AddAreaTriggerToMoveList(
AreaTrigger* at,
float x,
float y,
float z,
float ang);
610 void RemoveAreaTriggerFromMoveList(
AreaTrigger* at);
624 bool IsGridLoaded(
GridCoord const&)
const;
625 void EnsureGridCreated(
GridCoord const&);
626 bool EnsureGridLoaded(
Cell const&);
627 void EnsureGridLoadedForActiveObject(
Cell const&,
WorldObject const*
object);
634 return i_grids[x][y];
641 void ScriptsProcess();
643 void SendObjectUpdates();
646 virtual void LoadGridObjects(
NGridType* grid,
Cell const& cell);
689 std::bitset<TOTAL_NUMBER_OF_CELLS_PER_MAP*TOTAL_NUMBER_OF_CELLS_PER_MAP>
marked_cells;
693 void ProcessRelocationNotifies(
const uint32 diff);
704 void ProcessRespawns();
714 void UnloadAllRespawnInfos();
721 void GetRespawnInfo(std::vector<RespawnInfo const*>& respawnData,
SpawnObjectTypeMask types)
const;
724 if (
RespawnInfo* info = GetRespawnInfo(type, spawnId))
725 Respawn(info, dbTrans);
729 if (
RespawnInfo* info = GetRespawnInfo(type, spawnId))
730 DeleteRespawnInfo(info, dbTrans);
732 else if (alwaysDeleteFromDB)
733 DeleteRespawnInfoFromDB(type, spawnId, dbTrans);
742 bool IsSpawnGroupActive(
uint32 groupId)
const;
746 bool SpawnGroupSpawn(
uint32 groupId,
bool ignoreRespawn =
false,
bool force =
false, std::vector<WorldObject*>* spawnedObjects =
nullptr);
749 bool SpawnGroupDespawn(
uint32 groupId,
bool deleteRespawnTimes =
false,
size_t* count =
nullptr);
761 void InitSpawnGroupState();
762 void UpdateSpawnGroupConditions();
767 void AddToGrid(T*
object,
Cell const& cell);
770 void DeleteFromWorld(T*);
782 return &_creatureRespawnTimesBySpawnId;
784 return &_gameObjectRespawnTimesBySpawnId;
796 return &_creatureRespawnTimesBySpawnId;
798 return &_gameObjectRespawnTimesBySpawnId;
804 void SetSpawnGroupActive(
uint32 groupId,
bool state);
834 void UpdatePersonalPhasesForPlayer(
Player const* player);
843 int32 GetWorldStateValue(
int32 worldStateId)
const;
844 void SetWorldStateValue(
int32 worldStateId,
int32 value,
bool hidden);
883 bool AddPlayerToMap(
Player* player,
bool initPlayer =
true)
override;
884 void RemovePlayerFromMap(
Player*,
bool)
override;
885 void Update(
uint32)
override;
886 void CreateInstanceData();
889 std::string
const& GetScriptName()
const;
898 void CreateInstanceLockForPlayer(
Player* player);
901 uint32 GetMaxPlayers()
const;
902 TeamId GetTeamIdInInstance()
const;
906 virtual void InitVisibilityDistance()
override;
909 void TrySetOwningGroup(
Group* group);
928 bool AddPlayerToMap(
Player* player,
bool initPlayer =
true)
override;
929 void RemovePlayerFromMap(
Player*,
bool)
override;
933 void RemoveAllPlayers()
override;
934 void Update(
uint32 diff)
override;
936 virtual void InitVisibilityDistance()
override;
941 std::string
const& GetScriptName()
const;
945 void InitScriptData();
952template<
class T,
class CONTAINER>
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::string GetDebugInfo()
#define DEFAULT_HEIGHT_SEARCH
CoordPair< MAX_NUMBER_OF_GRIDS > GridCoord
#define MAX_NUMBER_OF_GRIDS
std::conditional_t< IntrusiveLink !=nullptr, Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >, Trinity::Impl::MPSCQueueNonIntrusive< T > > MPSCQueue
std::unordered_map< ObjectGuid::LowType, RespawnInfo * > RespawnInfoMap
std::unordered_map< uint32, ZoneDynamicInfo > ZoneDynamicInfoMap
TypeListContainer< MapStoredObjectsUnorderedMap, Creature, GameObject, DynamicObject, Pet, Corpse, AreaTrigger, SceneObject, Conversation > MapStoredObjectTypesContainer
@ TRANSFER_ABORT_TOO_MANY_INSTANCES
@ TRANSFER_ABORT_NOT_CROSS_FACTION_COMPATIBLE
@ TRANSFER_ABORT_XREALM_ZONE_DOWN
@ TRANSFER_ABORT_NOT_FOUND_2
@ TRANSFER_ABORT_DIFFICULTY
@ TRANSFER_ABORT_UNIQUE_MESSAGE
@ TRANSFER_ABORT_MAP_NOT_ALLOWED
@ TRANSFER_ABORT_INSUF_EXPAN_LVL
@ TRANSFER_ABORT_TOO_MANY_REALM_INSTANCES
@ TRANSFER_ABORT_MAX_PLAYERS
@ TRANSFER_ABORT_NOT_FOUND_4
@ TRANSFER_ABORT_ZONE_IN_COMBAT
@ TRANSFER_ABORT_DIFFICULTY_NOT_FOUND
@ TRANSFER_ABORT_ALREADY_COMPLETED_ENCOUNTER
@ TRANSFER_ABORT_SOLO_PLAYER_SWITCH_DIFFICULTY
@ TRANSFER_ABORT_NOT_FOUND
@ TRANSFER_ABORT_LOCKED_TO_DIFFERENT_INSTANCE
@ TRANSFER_ABORT_NEED_GROUP
@ TRANSFER_ABORT_NOT_FOUND_3
@ TRANSFER_ABORT_REALM_ONLY
static void SummonCreatureGroup(uint32 summonerId, SummonerType summonerType, uint8 group, std::list< TempSummon * > *summoned, SummonCreature summonCreature)
std::optional< T > Optional
Optional helper class to wrap optional values within.
std::unordered_map< int32, int32 > WorldStateValueContainer
BattlegroundScript const * GetBattlegroundScript() const
std::unique_ptr< BattlegroundScript > _battlegroundScript
Battleground * GetBG() const
uint32 GetScriptId() const
void SetBG(Battleground *bg)
BattlegroundScript * GetBattlegroundScript()
Optional< SystemTimePoint > i_instanceExpireEvent
InstanceLock * i_instanceLock
InstanceScript const * GetInstanceScript() const
InstanceScenario * GetInstanceScenario()
std::unique_ptr< InstanceScenario > i_scenario
Optional< uint32 > i_lfgDungeonsId
uint32 GetScriptId() const
Team GetTeamInInstance() const
InstanceLock const * GetInstanceLock() const
GroupInstanceReference i_owningGroupRef
Optional< uint32 > GetLfgDungeonsId() const
InstanceScenario const * GetInstanceScenario() const
Group * GetOwningGroup() const
InstanceScript * GetInstanceScript()
MapEntry const * i_mapEntry
std::map< WorldObject *, bool > i_objectsToSwitch
WorldObject * GetWorldObjectBySpawnId(SpawnObjectType type, ObjectGuid::LowType spawnId) const
std::unordered_map< uint32, uint32 > _zonePlayerCountMap
std::vector< Creature * > _creaturesToMove
uint16 m_forceDisabledNavMeshFilterFlags
CreatureBySpawnIdContainer const & GetCreatureBySpawnIdStore() const
bool IsRemovalGrid(Position const &pos) const
RespawnInfoMap const * GetRespawnMapForType(SpawnObjectType type) const
float GetStaticHeight(PhaseShift const &phaseShift, Position const &pos, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
void SetSpawnGroupInactive(uint32 groupId)
std::unordered_set< Corpse * > const * GetCorpsesInCell(uint32 cellId) const
std::unordered_multimap< ObjectGuid::LowType, Creature * > CreatureBySpawnIdContainer
std::unordered_map< ObjectGuid, Corpse * > _corpsesByPlayer
void SetWeakPtr(Trinity::unique_weak_ptr< Map > weakRef)
bool ShouldBeSpawnedOnGridLoad(ObjectGuid::LowType spawnId) const
MapStoredObjectTypesContainer & GetObjectsStore()
TransportsContainer::iterator _transportsUpdateIter
void RemoveForceEnabledNavMeshFilterFlag(uint16 flag)
std::map< HighGuid, ObjectGuidGenerator > _guidGenerators
InstanceMap const * ToInstanceMap() const
uint32 GetAreaId(PhaseShift const &phaseShift, Position const &pos)
void GetZoneAndAreaId(PhaseShift const &phaseShift, uint32 &zoneid, uint32 &areaid, Position const &pos)
std::function< void(Map *)> FarSpellCallback
PeriodicTimer _vignetteUpdateTimer
std::shared_ptr< MMAP::DynamicTileBuilder > m_mmapTileRebuilder
bool GetUnloadLock(GridCoord const &p) const
void RemoveGameObjectModel(GameObjectModel const &model)
RespawnInfoMap * GetRespawnMapForType(SpawnObjectType type)
virtual TransferAbortParams CannotEnter(Player *)
void DeleteRespawnTimes()
RespawnInfoMap _gameObjectRespawnTimesBySpawnId
uint16 GetForceDisabledNavMeshFilterFlags() const
bool IsGridLoaded(Position const &pos) const
AreaTriggerBySpawnIdContainer & GetAreaTriggerBySpawnIdStore()
void RemoveUpdateObject(BaseEntity *obj)
std::bitset< TOTAL_NUMBER_OF_CELLS_PER_MAP *TOTAL_NUMBER_OF_CELLS_PER_MAP > marked_cells
uint32 GetZoneId(PhaseShift const &phaseShift, Position const &pos)
SpawnedPoolData const & GetPoolData() const
virtual ObjectGuid::LowType GetOwnerGuildId(uint32=TEAM_OTHER) const
BattlegroundMap const * ToBattlegroundMap() const
bool CanUnload(uint32 diff)
std::span< GameObjectModel const *const > GetGameObjectModelsInGrid(uint32 gx, uint32 gy) const
WorldStateValueContainer _worldStateValues
IntervalTimer _weatherUpdateTimer
std::unordered_set< BaseEntity * > _updateObjects
void RemoveForceDisabledNavMeshFilterFlag(uint16 flag)
void RemoveRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans=nullptr, bool alwaysDeleteFromDB=false)
bool _dynamicObjectsToMoveLock
NGridType * getNGrid(uint32 x, uint32 y) const
std::shared_ptr< TerrainInfo > m_terrain
bool _gameObjectsToMoveLock
bool ContainsGameObjectModel(GameObjectModel const &model) const
void SetForceEnabledNavMeshFilterFlag(uint16 flag)
uint32 _respawnCheckTimer
WorldStateValueContainer const & GetWorldStateValues() const
bool IsRemovalGrid(float x, float y) const
std::unordered_map< uint32, std::unordered_set< Corpse * > > _corpsesByCell
MapRefManager m_mapRefManager
void Visit(Cell const &cell, TypeContainerVisitor< T, CONTAINER > &visitor)
ScriptScheduleMap m_scriptSchedule
ObjectGuid::LowType GetMaxLowGuid()
void ResetGridExpiry(NGridType &grid, float factor=1) const
DynamicMapTree _dynamicTree
void Respawn(SpawnObjectType type, ObjectGuid::LowType spawnId, CharacterDatabaseTransaction dbTrans=nullptr)
std::vector< GameObject * > _gameObjectsToMove
ObjectGuid::LowType GenerateLowGuid()
std::unordered_map< ObjectGuid::LowType, CreatureGroup * > CreatureGroupHolder
AreaTriggerBySpawnIdContainer _areaTriggerBySpawnIdStore
int32 m_VisibilityNotifyPeriod
std::unordered_set< Corpse * > _corpseBones
MPSCQueue< FarSpellCallback > _farSpellCallbacks
time_t GetGORespawnTime(ObjectGuid::LowType spawnId) const
uint16 GetForceEnabledNavMeshFilterFlags() const
std::unordered_set< uint32 > _toggledSpawnGroupIds
bool isCellMarked(uint32 pCellId)
uint16 m_forceEnabledNavMeshFilterFlags
time_t GetCreatureRespawnTime(ObjectGuid::LowType spawnId) const
MultiPersonalPhaseTracker & GetMultiPersonalPhaseTracker()
BattlegroundMap * ToBattlegroundMap()
Trinity::unique_weak_ptr< Map > m_weakRef
MultiPersonalPhaseTracker _multiPersonalPhaseTracker
MapRefManager::iterator m_mapRefIter
std::multimap< time_t, ScriptAction > ScriptScheduleMap
std::unique_ptr< RespawnListContainer > _respawnTimes
void AddUpdateObject(BaseEntity *obj)
time_t GetRespawnTime(SpawnObjectType type, ObjectGuid::LowType spawnId) const
ZoneDynamicInfoMap _zoneDynamicInfo
bool _areaTriggersToMoveLock
std::vector< Vignettes::VignetteData * > _infiniteAOIVignettes
std::vector< AreaTrigger * > _areaTriggersToMove
std::set< WorldObject * > i_worldObjects
Difficulty GetDifficultyID() const
ActiveNonPlayers m_activeNonPlayers
GameObjectBySpawnIdContainer & GetGameObjectBySpawnIdStore()
void InsertGameObjectModel(GameObjectModel const &model)
void SetUnloadLock(GridCoord const &p, bool on)
std::set< Transport * > TransportsContainer
void buildNGridLinkage(NGridType *pNGridType)
MapEntry const * GetEntry() const
Trinity::unique_weak_ptr< Map > GetWeakPtr() const
std::set< WorldObject * > i_objectsToRemove
MapStoredObjectTypesContainer _objectsStore
bool IsGridLoaded(float x, float y) const
std::unordered_multimap< ObjectGuid::LowType, AreaTrigger * > AreaTriggerBySpawnIdContainer
friend class MapReference
float GetVisibilityRange() const
float GetHeight(PhaseShift const &phaseShift, float x, float y, float z, bool vmap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
InstanceMap * ToInstanceMap()
Corpse * GetCorpseByPlayer(ObjectGuid const &ownerGuid) const
bool IsGridLoaded(uint32 gridId) const
std::set< WorldObject * > ActiveNonPlayers
void markCell(uint32 pCellId)
float GetHeight(PhaseShift const &phaseShift, Position const &pos, bool vmap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
void SetForceDisabledNavMeshFilterFlag(uint16 flag)
AreaTriggerBySpawnIdContainer const & GetAreaTriggerBySpawnIdStore() const
CreatureBySpawnIdContainer & GetCreatureBySpawnIdStore()
void setGridObjectDataLoaded(bool pLoaded, uint32 x, uint32 y)
bool EnsureGridLoaded(Cell const &)
std::vector< DynamicObject * > _dynamicObjectsToMove
uint32 GetInstanceId() const
TransportsContainer _transports
PlayerList const & GetPlayers() const
GameObjectBySpawnIdContainer const & GetGameObjectBySpawnIdStore() const
SpawnedPoolData & GetPoolData()
RespawnInfoMap _creatureRespawnTimesBySpawnId
CreatureBySpawnIdContainer _creatureBySpawnIdStore
std::vector< Vignettes::VignetteData * > const & GetInfiniteAOIVignettes() const
ActiveNonPlayers::iterator m_activeNonPlayersIter
time_t GetGridExpiry() const
std::unordered_multimap< ObjectGuid::LowType, GameObject * > GameObjectBySpawnIdContainer
bool isGridObjectDataLoaded(uint32 x, uint32 y) const
TerrainInfo * GetTerrain() const
float GetGameObjectFloor(PhaseShift const &phaseShift, float x, float y, float z, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) const
GameObjectBySpawnIdContainer _gameobjectBySpawnIdStore
std::unique_ptr< SpawnedPoolData > _poolData
size_t GetActiveNonPlayersCount() const
void VisitGrid(uint32 x, uint32 y, TypeContainerVisitor< VISITOR, WORLD_OBJECT_CONTAINER > &visitor)
void ResetTimeTracker(time_t interval)
void link(GridRefManager< NGrid > *pTo)
static ObjectGuid const Empty
Trinity::unique_trackable_ptr companion class, replicating what std::weak_ptr is to std::shared_ptr.
GridCoord ComputeGridCoord(float x, float y)
bool operator()(RespawnInfo const *a, RespawnInfo const *b) const
static std::size_t Size(Container const &container)
std::unordered_map< ObjectGuid, ObjectType * > Container
static bool Insert(Container &container, ValueType object)
static bool Remove(Container &container, ValueType object)
static ValueType Find(Container const &container, KeyType const &key)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetPositionZ() const
ObjectGuid::LowType spawnId
ScriptInfo const * script
owner of source if source is item
int32 MapDifficultyXConditionId
TransferAbortReason Reason
TransferAbortParams(TransferAbortReason reason, uint8 arg=0, int32 mapDifficultyXConditionId=0)
uint32 TransitionMilliseconds
std::vector< LightOverride > LightOverrides
std::unique_ptr< Weather > DefaultWeather