Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
Map.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRE_MAP_H
7#define SKYFIRE_MAP_H
8
9#include "Define.h"
10
11#include "Cell.h"
12#include "DBCStructure.h"
13#include "DynamicTree.h"
14#include "GameObjectModel.h"
15#include "GridDefines.h"
16#include "GridRefManager.h"
17#include "MapRefManager.h"
18#include "SharedDefines.h"
19#include "Timer.h"
20
21#include <bitset>
22#include <list>
23#include <mutex>
24
25class Unit;
26class WorldPacket;
27class InstanceScript;
28class Group;
29class InstanceSave;
30class Object;
31class WorldObject;
32class TempSummon;
33class Player;
34class CreatureGroup;
35struct ScriptInfo;
36struct ScriptAction;
37struct Position;
38class Battleground;
39class MapInstanced;
40class InstanceMap;
41class Transport;
42namespace Skyfire { struct ObjectUpdater; }
43
51
54{
55 char asChar[4];
57};
58
59// ******************************************
60// Map file format defines
61// ******************************************
76
77#define MAP_AREA_NO_AREA 0x0001
78
85
86#define MAP_HEIGHT_NO_HEIGHT 0x0001
87#define MAP_HEIGHT_AS_INT16 0x0002
88#define MAP_HEIGHT_AS_INT8 0x0004
89
97
98#define MAP_LIQUID_NO_TYPE 0x0001
99#define MAP_LIQUID_NO_HEIGHT 0x0002
100
112
121
122#define MAP_LIQUID_TYPE_NO_WATER 0x00
123#define MAP_LIQUID_TYPE_WATER 0x01
124#define MAP_LIQUID_TYPE_OCEAN 0x02
125#define MAP_LIQUID_TYPE_MAGMA 0x04
126#define MAP_LIQUID_TYPE_SLIME 0x08
127
128#define MAP_ALL_LIQUIDS (MAP_LIQUID_TYPE_WATER | MAP_LIQUID_TYPE_OCEAN | MAP_LIQUID_TYPE_MAGMA | MAP_LIQUID_TYPE_SLIME)
129
130#define MAP_LIQUID_TYPE_DARK_WATER 0x10
131#define MAP_LIQUID_TYPE_WMO_WATER 0x20
132
140
141#define MAX_HEIGHT 100000.0f // can be use for find ground height at surface
142#define INVALID_HEIGHT -100000.0f // for check, must be equal to VMAP_INVALID_HEIGHT, real value for unknown height is VMAP_INVALID_HEIGHT_VALUE
143#define MAX_FALL_DISTANCE 250000.0f // "unlimited fall" to find VMap ground if it is available, just larger than MAX_HEIGHT - INVALID_HEIGHT
144#define DEFAULT_HEIGHT_SEARCH 50.0f // default search distance to find height at nearby locations
145#define MIN_UNLOAD_DELAY 1 // immediate unload
146
148{
150 union {
151 float* m_V9;
154 };
155 union {
156 float* m_V8;
159 };
160 // Height level data
163
164 // Area data
166
167 // Liquid data
178
179
180 bool loadAreaData(FILE* in, uint32 offset, uint32 size);
181 bool loadHeightData(FILE* in, uint32 offset, uint32 size);
182 bool loadLiquidData(FILE* in, uint32 offset, uint32 size);
183
184 // Get height functions and pointers
185 typedef float (GridMap::* GetHeightPtr) (float x, float y) const;
187 float getHeightFromFloat(float x, float y) const;
188 float getHeightFromUint16(float x, float y) const;
189 float getHeightFromUint8(float x, float y) const;
190 float getHeightFromFlat(float x, float y) const;
191
192public:
199
200 bool loadData(char* filaname);
201 void unloadData();
202
203 uint16 getArea(float x, float y) const;
204 inline float getHeight(float x, float y) const { return (this->*m_gridGetHeight)(x, y); }
205 float getLiquidLevel(float x, float y) const;
206 uint8 getTerrainType(float x, float y) const;
207 ZLiquidStatus getLiquidStatus(float x, float y, float z, uint8 ReqLiquidType, LiquidData* data = 0);
208};
209
210// GCC have alternative #pragma pack(N) syntax and old gcc version not support pack(push, N), also any gcc version not support it at some platform
211#if defined(__GNUC__)
212#pragma pack(1)
213#else
214#pragma pack(push, 1)
215#endif
216
223
228
229#if defined(__GNUC__)
230#pragma pack()
231#else
232#pragma pack(pop)
233#endif
234
235typedef std::map<uint32/*leaderDBGUID*/, CreatureGroup*> CreatureGroupHolderType;
236
237class Map : public GridRefManager<NGridType>
238{
239 friend class MapReference;
240public:
241 Map(uint32 id, time_t, uint32 InstanceId, uint8 SpawnMode, Map* _parent = NULL);
242 virtual ~Map();
243
244 MapEntry const* GetEntry() const { return i_mapEntry; }
245
246 // currently unused for normal maps
247 bool CanUnload(uint32 diff)
248 {
249 if (!m_unloadTimer)
250 return false;
251
252 if (m_unloadTimer <= diff)
253 return true;
254
255 m_unloadTimer -= diff;
256 return false;
257 }
258
259 virtual bool AddPlayerToMap(Player*);
260 virtual void RemovePlayerFromMap(Player*, bool);
261 template<class T> bool AddToMap(T*);
262 template<class T> void RemoveFromMap(T*, bool);
263
265 virtual void Update(const uint32);
266
267 float GetVisibilityRange() const { return m_VisibleDistance; }
268 //function for setting up visibility distance for maps on per-type/per-Id basis
269 virtual void InitVisibilityDistance();
270
271 void PlayerRelocation(Player*, float x, float y, float z, float orientation);
272 void CreatureRelocation(Creature* creature, float x, float y, float z, float ang, bool respawnRelocationOnFail = true);
273 void GameObjectRelocation(GameObject* go, float x, float y, float z, float orientation, bool respawnRelocationOnFail = true);
274
275 template<class T, class CONTAINER> void Visit(const Cell& cell, TypeContainerVisitor<T, CONTAINER>& visitor);
276
277 bool IsRemovalGrid(float x, float y) const
278 {
281 }
282
283 bool IsGridLoaded(float x, float y) const
284 {
286 }
287
288 bool GetUnloadLock(const GridCoord& p) const { return getNGrid(p.x_coord, p.y_coord)->getUnloadLock(); }
289 void SetUnloadLock(const GridCoord& p, bool on) { getNGrid(p.x_coord, p.y_coord)->setUnloadExplicitLock(on); }
290 void LoadGrid(float x, float y);
291 bool UnloadGrid(NGridType& ngrid, bool pForce);
292 virtual void UnloadAll();
293
294 void ResetGridExpiry(NGridType& grid, float factor = 1) const
295 {
296 grid.ResetTimeTracker(time_t(float(i_gridExpiry) * factor));
297 }
298
299 time_t GetGridExpiry(void) const { return i_gridExpiry; }
300 uint32 GetId(void) const { return i_mapEntry->MapID; }
301
302 static bool ExistMap(uint32 mapid, int gx, int gy);
303 static bool ExistVMap(uint32 mapid, int gx, int gy);
304
305 static void InitStateMachine();
306 static void DeleteStateMachine();
307
308 Map const* GetParent() const { return m_parentMap; }
309
310 // some calls like isInWater should not use vmaps due to processor power
311 // can return INVALID_HEIGHT if under z+2 z coord not found height
312 float GetHeight(float x, float y, float z, bool checkVMap = true, float maxSearchDist = DEFAULT_HEIGHT_SEARCH) const;
313
314 ZLiquidStatus getLiquidStatus(float x, float y, float z, uint8 ReqLiquidType, LiquidData* data = 0) const;
315
316 uint16 GetAreaFlag(float x, float y, float z, bool* isOutdoors = 0) const;
317 bool GetAreaInfo(float x, float y, float z, uint32& mogpflags, int32& adtId, int32& rootId, int32& groupId) const;
318
319 bool IsOutdoors(float x, float y, float z) const;
320
321 uint8 GetTerrainType(float x, float y) const;
322 float GetWaterLevel(float x, float y) const;
323 bool IsInWater(float x, float y, float z, LiquidData* data = 0) const;
324 bool IsUnderWater(float x, float y, float z) const;
325
328 static void GetZoneAndAreaIdByAreaFlag(uint32& zoneid, uint32& areaid, uint16 areaflag, uint32 map_id);
329
330 uint32 GetAreaId(float x, float y, float z) const
331 {
332 return GetAreaIdByAreaFlag(GetAreaFlag(x, y, z), GetId());
333 }
334
335 uint32 GetZoneId(float x, float y, float z) const
336 {
337 return GetZoneIdByAreaFlag(GetAreaFlag(x, y, z), GetId());
338 }
339
340 void GetZoneAndAreaId(uint32& zoneid, uint32& areaid, float x, float y, float z) const
341 {
342 GetZoneAndAreaIdByAreaFlag(zoneid, areaid, GetAreaFlag(x, y, z), GetId());
343 }
344
348 virtual void RemoveAllPlayers();
349
350 // used only in MoveAllCreaturesInMoveList and ObjectGridUnloader
351 bool CreatureRespawnRelocation(Creature* c, bool diffGridOnly);
352 bool GameObjectRespawnRelocation(GameObject* go, bool diffGridOnly);
353
354 // assert print helper
355 bool CheckGridIntegrity(Creature* c, bool moved) const;
356
358 uint8 GetSpawnMode() const { return (i_spawnMode); }
359 virtual bool CanEnter(Player* /*player*/) { return true; }
360 const char* GetMapName() const;
361
362 // have meaning only for instanced map (that have set real difficulty)
364 bool IsRegularDifficulty() const { return GetDifficulty() == 0; }
365 MapDifficulty const* GetMapDifficulty() const;
366
367 bool Instanceable() const { return i_mapEntry && i_mapEntry->Instanceable(); }
368 bool IsInstance() const { return IsRaid() || IsDungeon() || IsScenario(); }
369 bool IsDungeon() const { return i_mapEntry && i_mapEntry->IsDungeon(); }
370 bool IsScenario() const { return i_mapEntry && i_mapEntry->IsScenario(); }
371 bool IsNonRaidInstance() const { return i_mapEntry && i_mapEntry->IsNonRaidInstance(); }
372 bool IsRaid() const { return i_mapEntry && i_mapEntry->IsRaid(); }
374 bool IsHeroic() const;
375 bool Is25ManRaid() const;
376 bool IsBattleground() const { return i_mapEntry && i_mapEntry->IsBattleground(); }
377 bool IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); }
378 bool IsBattlegroundOrArena() const { return i_mapEntry && i_mapEntry->IsBattlegroundOrArena(); }
379 bool GetEntrancePos(int32& mapid, float& x, float& y)
380 {
381 if (!i_mapEntry)
382 return false;
383 return i_mapEntry->GetEntrancePos(mapid, x, y);
384 }
385
387 void AddObjectToSwitchList(WorldObject* obj, bool on);
388 virtual void DelayedUpdate(const uint32 diff);
389
390 void UpdateObjectVisibility(WorldObject* obj, Cell cell, CellCoord cellpair);
391 void UpdateObjectsVisibilityFor(Player* player, Cell cell, CellCoord cellpair);
392
393 void resetMarkedCells() { marked_cells.reset(); }
394 bool isCellMarked(uint32 pCellId) { return marked_cells.test(pCellId); }
395 void markCell(uint32 pCellId) { marked_cells.set(pCellId); }
396
397 bool HavePlayers() const { return !m_mapRefManager.isEmpty(); }
399 bool ActiveObjectsNearGrid(NGridType const& ngrid) const;
400
401 void AddWorldObject(WorldObject* obj) { i_worldObjects.insert(obj); }
403
404 void SendToPlayers(WorldPacket const* data) const;
405
407 PlayerList const& GetPlayers() const { return m_mapRefManager; }
408
409 //per-map script storage
410 void ScriptsStart(std::map<uint32, std::multimap<uint32, ScriptInfo> > const& scripts, uint32 id, Object* source, Object* target);
411 void ScriptCommandStart(ScriptInfo const& script, uint32 delay, Object* source, Object* target);
412
413 // must called with AddToWorld
414 template<class T>
415 void AddToActive(T* obj);
416
417 // must called with RemoveFromWorld
418 template<class T>
419 void RemoveFromActive(T* obj);
420
421 template<class T> void SwitchGridContainers(T* obj, bool on);
422 template<class NOTIFIER> void VisitAll(const float& x, const float& y, float radius, NOTIFIER& notifier);
423 template<class NOTIFIER> void VisitFirstFound(const float& x, const float& y, float radius, NOTIFIER& notifier);
424 template<class NOTIFIER> void VisitWorld(const float& x, const float& y, float radius, NOTIFIER& notifier);
425 template<class NOTIFIER> void VisitGrid(const float& x, const float& y, float radius, NOTIFIER& notifier);
427
428 void UpdateIteratorBack(Player* player);
429
430 TempSummon* SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties = NULL, uint32 duration = 0, Unit* summoner = NULL, uint32 spellId = 0, uint32 vehId = 0);
431 void SummonCreatureGroup(uint8 group, std::list<TempSummon*>* list = NULL);
436
437 MapInstanced* ToMapInstanced() { if (Instanceable()) return reinterpret_cast<MapInstanced*>(this); else return NULL; }
438 const MapInstanced* ToMapInstanced() const { if (Instanceable()) return (const MapInstanced*)((MapInstanced*)this); else return NULL; }
439
440 InstanceMap* ToInstanceMap() { if (IsInstance()) return reinterpret_cast<InstanceMap*>(this); else return NULL; }
441 const InstanceMap* ToInstanceMap() const { if (IsInstance()) return (const InstanceMap*)((InstanceMap*)this); else return NULL; }
442 float GetWaterOrGroundLevel(float x, float y, float z, float* ground = NULL, bool swim = false) const;
443 float GetHeight(uint32 phasemask, float x, float y, float z, bool vmap = true, float maxSearchDist = DEFAULT_HEIGHT_SEARCH) const;
444 bool isInLineOfSight(float x1, float y1, float z1, float x2, float y2, float z2, uint32 phasemask) const;
445 void Balance() { _dynamicTree.balance(); }
446 void RemoveGameObjectModel(const GameObjectModel& model) { _dynamicTree.remove(model); }
447 void InsertGameObjectModel(const GameObjectModel& model) { _dynamicTree.insert(model); }
448 bool ContainsGameObjectModel(const GameObjectModel& model) const { return _dynamicTree.contains(model); }
449 bool getObjectHitPos(uint32 phasemask, float x1, float y1, float z1, float x2, float y2, float z2, float& rx, float& ry, float& rz, float modifyDist);
450
451 virtual uint32 GetOwnerGuildId(uint32 /*team*/ = TEAM_OTHER) const { return 0; }
452 /*
453 RESPAWN TIMES
454 */
455 time_t GetLinkedRespawnTime(uint64 guid) const;
456 time_t GetCreatureRespawnTime(uint32 dbGuid) const
457 {
458 UNORDERED_MAP<uint32 /*dbGUID*/, time_t>::const_iterator itr = _creatureRespawnTimes.find(dbGuid);
459 if (itr != _creatureRespawnTimes.end())
460 return itr->second;
461
462 return time_t(0);
463 }
464
465 time_t GetGORespawnTime(uint32 dbGuid) const
466 {
467 UNORDERED_MAP<uint32 /*dbGUID*/, time_t>::const_iterator itr = _goRespawnTimes.find(dbGuid);
468 if (itr != _goRespawnTimes.end())
469 return itr->second;
470
471 return time_t(0);
472 }
473
474 void SaveCreatureRespawnTime(uint32 dbGuid, time_t respawnTime);
476 void SaveGORespawnTime(uint32 dbGuid, time_t respawnTime);
477 void RemoveGORespawnTime(uint32 dbGuid);
478 void LoadRespawnTimes();
479 void DeleteRespawnTimes();
480
481 static void DeleteRespawnTimesInDB(uint16 mapId, uint32 instanceId);
482
483 void SendInitTransports(Player* player);
484 void SendRemoveTransports(Player* player);
485 void PreserveTransportVisibility(std::set<uint64>& guids) const;
486
487private:
488 void LoadMapAndVMap(int gx, int gy);
489 void LoadVMap(int gx, int gy);
490 void LoadMap(int gx, int gy, bool reload = false);
491 void LoadMMap(int gx, int gy);
492 GridMap* GetGrid(float x, float y);
493
495
496 void SendInitSelf(Player* player);
497
498 bool CreatureCellRelocation(Creature* creature, Cell new_cell);
499 bool GameObjectCellRelocation(GameObject* go, Cell new_cell);
500
501 template<class T> void InitializeObject(T* obj);
502 void AddCreatureToMoveList(Creature* c, float x, float y, float z, float ang);
504 void AddGameObjectToMoveList(GameObject* go, float x, float y, float z, float ang);
506
508 std::vector<Creature*> _creaturesToMove;
509
511 std::vector<GameObject*> _gameObjectsToMove;
512
513 bool IsGridLoaded(const GridCoord&) const;
514 void EnsureGridCreated(const GridCoord&);
515 void EnsureGridCreated_i(const GridCoord&);
516 bool EnsureGridLoaded(Cell const&);
518
519 void buildNGridLinkage(NGridType* pNGridType) { pNGridType->link(this); }
520
522 {
524 return i_grids[x][y];
525 }
526
528 void setGridObjectDataLoaded(bool pLoaded, uint32 x, uint32 y) { getNGrid(x, y)->setGridObjectDataLoaded(pLoaded); }
529
530 void setNGrid(NGridType* grid, uint32 x, uint32 y);
531 void ScriptsProcess();
532
533 void UpdateActiveCells(const float& x, const float& y, const uint32 t_diff);
534
535protected:
537
538 std::mutex Lock;
539 std::mutex GridLock;
540
547
550
552
553 typedef std::set<WorldObject*> ActiveNonPlayers;
555 ActiveNonPlayers::iterator m_activeNonPlayersIter;
556
557 // Objects that must update even in inactive grids without activating them
558 typedef std::set<Transport*> TransportsContainer;
560 TransportsContainer::iterator _transportsUpdateIter;
561
562private:
563 Player* _GetScriptPlayerSourceOrTarget(Object* source, Object* target, const ScriptInfo* scriptInfo) const;
564 Creature* _GetScriptCreatureSourceOrTarget(Object* source, Object* target, const ScriptInfo* scriptInfo, bool bReverse = false) const;
565 Unit* _GetScriptUnit(Object* obj, bool isSource, const ScriptInfo* scriptInfo) const;
566 Player* _GetScriptPlayer(Object* obj, bool isSource, const ScriptInfo* scriptInfo) const;
567 Creature* _GetScriptCreature(Object* obj, bool isSource, const ScriptInfo* scriptInfo) const;
568 WorldObject* _GetScriptWorldObject(Object* obj, bool isSource, const ScriptInfo* scriptInfo) const;
569 void _ScriptProcessDoor(Object* source, Object* target, const ScriptInfo* scriptInfo) const;
570 GameObject* _FindGameObject(WorldObject* pWorldObject, uint32 guid) const;
571
573
574 //used for fast base_map (e.g. MapInstanced class object) search for
575 //InstanceMaps and BattlegroundMaps...
577
580 std::bitset<TOTAL_NUMBER_OF_CELLS_PER_MAP* TOTAL_NUMBER_OF_CELLS_PER_MAP> marked_cells;
581
582 //these functions used to process player/mob aggro reactions and
583 //visibility calculations. Highly optimized for massive calculations
584 void ProcessRelocationNotifies(const uint32 diff);
585
587 std::set<WorldObject*> i_objectsToRemove;
588 std::map<WorldObject*, bool> i_objectsToSwitch;
589 std::set<WorldObject*> i_worldObjects;
590
591 typedef std::multimap<time_t, ScriptAction> ScriptScheduleMap;
593
594 // Type specific code for add/remove to/from grid
595 template<class T>
596 void AddToGrid(T* object, Cell const& cell);
597
598 template<class T>
599 void DeleteFromWorld(T*);
600
602 {
603 m_activeNonPlayers.insert(obj);
604 }
605
607 {
608 // Map::Update for active object in proccess
610 {
611 ActiveNonPlayers::iterator itr = m_activeNonPlayers.find(obj);
612 if (itr == m_activeNonPlayers.end())
613 return;
614 if (itr == m_activeNonPlayersIter)
616 m_activeNonPlayers.erase(itr);
617 }
618 else
619 m_activeNonPlayers.erase(obj);
620 }
621
624};
625
635
636class InstanceMap : public Map
637{
638public:
639 InstanceMap(uint32 id, time_t, uint32 InstanceId, uint8 SpawnMode, Map* _parent);
640 ~InstanceMap();
643 void Update(const uint32) OVERRIDE;
644 void CreateInstanceData(bool load);
645 bool Reset(InstanceResetMethod method);
646 uint32 GetScriptId() const { return i_script_id; }
648 void PermBindAllPlayers(Player* source);
649 void UnloadAll() OVERRIDE;
650 bool CanEnter(Player* player) OVERRIDE;
651 void SendResetWarnings(uint32 timeLeft) const;
652 void SetResetSchedule(bool on);
653
654 uint32 GetMaxPlayers() const;
655 uint32 GetMaxResetDelay() const;
656
657 virtual void InitVisibilityDistance() OVERRIDE;
658private:
663};
664
665class BattlegroundMap : public Map
666{
667public:
668 BattlegroundMap(uint32 id, time_t, uint32 InstanceId, Map* _parent, uint8 spawnMode);
670
673 bool CanEnter(Player* player) OVERRIDE;
674 void SetUnload();
675 //void UnloadAll(bool pForce);
677
678 virtual void InitVisibilityDistance() OVERRIDE;
679 Battleground* GetBG() { return m_bg; }
680 void SetBG(Battleground* bg) { m_bg = bg; }
681private:
683};
684
685template<class T, class CONTAINER>
686inline void Map::Visit(Cell const& cell, TypeContainerVisitor<T, CONTAINER>& visitor)
687{
688 const uint32 x = cell.GridX();
689 const uint32 y = cell.GridY();
690 const uint32 cell_x = cell.CellX();
691 const uint32 cell_y = cell.CellY();
692
693 if (!cell.NoCreate() || IsGridLoaded(GridCoord(x, y)))
694 {
695 EnsureGridLoaded(cell);
696 getNGrid(x, y)->VisitGrid(cell_x, cell_y, visitor);
697 }
698}
699
700template<class NOTIFIER>
701inline void Map::VisitAll(float const& x, float const& y, float radius, NOTIFIER& notifier)
702{
704 Cell cell(p);
705 cell.SetNoCreate();
706
707 TypeContainerVisitor<NOTIFIER, WorldTypeMapContainer> world_object_notifier(notifier);
708 cell.Visit(p, world_object_notifier, *this, radius, x, y);
709 TypeContainerVisitor<NOTIFIER, GridTypeMapContainer > grid_object_notifier(notifier);
710 cell.Visit(p, grid_object_notifier, *this, radius, x, y);
711}
712
713// should be used with Searcher notifiers, tries to search world if nothing found in grid
714template<class NOTIFIER>
715inline void Map::VisitFirstFound(const float& x, const float& y, float radius, NOTIFIER& notifier)
716{
718 Cell cell(p);
719 cell.SetNoCreate();
720
721 TypeContainerVisitor<NOTIFIER, WorldTypeMapContainer> world_object_notifier(notifier);
722 cell.Visit(p, world_object_notifier, *this, radius, x, y);
723 if (!notifier.i_object)
724 {
725 TypeContainerVisitor<NOTIFIER, GridTypeMapContainer > grid_object_notifier(notifier);
726 cell.Visit(p, grid_object_notifier, *this, radius, x, y);
727 }
728}
729
730template<class NOTIFIER>
731inline void Map::VisitWorld(const float& x, const float& y, float radius, NOTIFIER& notifier)
732{
734 Cell cell(p);
735 cell.SetNoCreate();
736
737 TypeContainerVisitor<NOTIFIER, WorldTypeMapContainer> world_object_notifier(notifier);
738 cell.Visit(p, world_object_notifier, *this, radius, x, y);
739}
740
741template<class NOTIFIER>
742inline void Map::VisitGrid(const float& x, const float& y, float radius, NOTIFIER& notifier)
743{
745 Cell cell(p);
746 cell.SetNoCreate();
747
748 TypeContainerVisitor<NOTIFIER, GridTypeMapContainer > grid_object_notifier(notifier);
749 cell.Visit(p, grid_object_notifier, *this, radius, x, y);
750}
751#endif
DifficultyID
Definition DBCEnums.h:330
@ DIFFICULTY_HEROIC
Definition DBCEnums.h:333
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
#define ASSERT
Definition Errors.h:29
#define MIN_GRID_DELAY
Definition GridDefines.h:31
CoordPair< MAX_NUMBER_OF_GRIDS > GridCoord
#define MAX_NUMBER_OF_GRIDS
Definition GridDefines.h:24
CoordPair< TOTAL_NUMBER_OF_CELLS_PER_MAP > CellCoord
NGrid< MAX_NUMBER_OF_CELLS, Player, AllWorldObjectTypes, AllGridObjectTypes > NGridType
Definition GridDefines.h:69
ZLiquidStatus
Definition Map.h:114
@ LIQUID_MAP_UNDER_WATER
Definition Map.h:119
@ LIQUID_MAP_NO_WATER
Definition Map.h:115
@ LIQUID_MAP_IN_WATER
Definition Map.h:118
@ LIQUID_MAP_ABOVE_WATER
Definition Map.h:116
@ LIQUID_MAP_WATER_WALK
Definition Map.h:117
#define DEFAULT_HEIGHT_SEARCH
Definition Map.h:144
std::map< uint32, CreatureGroup * > CreatureGroupHolderType
Definition Map.h:235
InstanceResetMethod
Definition Map.h:627
@ INSTANCE_RESET_GROUP_DISBAND
Definition Map.h:631
@ INSTANCE_RESET_GLOBAL
Definition Map.h:630
@ INSTANCE_RESET_CHANGE_DIFFICULTY
Definition Map.h:629
@ INSTANCE_RESET_GROUP_JOIN
Definition Map.h:632
@ INSTANCE_RESET_RESPAWN_DELAY
Definition Map.h:633
LevelRequirementVsMode
Definition Map.h:225
@ LEVELREQUIREMENT_HEROIC
Definition Map.h:226
#define INVALID_HEIGHT
Definition Map.h:142
@ GRID_STATE_REMOVAL
Definition NGrid.h:53
@ TEAM_OTHER
#define UNORDERED_MAP
BattlegroundMap(uint32 id, time_t, uint32 InstanceId, Map *_parent, uint8 spawnMode)
Definition Map.cpp:3105
Battleground * GetBG()
Definition Map.h:679
void SetUnload()
Definition Map.cpp:3165
Battleground * m_bg
Definition Map.h:682
void SetBG(Battleground *bg)
Definition Map.h:680
Definition Map.h:148
uint8 m_liquidOffY
Definition Map.h:175
uint8 m_liquidHeight
Definition Map.h:177
uint32 m_flags
Definition Map.h:149
bool loadAreaData(FILE *in, uint32 offset, uint32 size)
Definition Map.cpp:1465
GetHeightPtr m_gridGetHeight
Definition Map.h:186
float getHeightFromFlat(float x, float y) const
Definition Map.cpp:1575
void unloadData()
Definition Map.cpp:1448
ZLiquidStatus getLiquidStatus(float x, float y, float z, uint8 ReqLiquidType, LiquidData *data=0)
Definition Map.cpp:1829
uint8 * m_uint8_V8
Definition Map.h:158
uint16 m_liquidType
Definition Map.h:173
GridMap()
Definition Map.h:193
uint16 * m_uint16_V8
Definition Map.h:157
~GridMap()
Definition Map.h:198
uint16 getArea(float x, float y) const
Definition Map.cpp:1563
float m_gridHeight
Definition Map.h:161
uint8 getTerrainType(float x, float y) const
Definition Map.cpp:1816
float getHeightFromFloat(float x, float y) const
Definition Map.cpp:1580
float getHeightFromUint16(float x, float y) const
Definition Map.cpp:1729
uint16 m_gridArea
Definition Map.h:172
float(GridMap::* GetHeightPtr)(float x, float y) const
Definition Map.h:185
uint8 * m_uint8_V9
Definition Map.h:153
uint16 * m_areaMap
Definition Map.h:165
bool loadData(char *filaname)
Definition Map.cpp:1398
float getLiquidLevel(float x, float y) const
Definition Map.cpp:1796
float * m_V9
Definition Map.h:151
uint8 * m_liquidFlags
Definition Map.h:170
uint16 * m_uint16_V9
Definition Map.h:152
uint8 m_liquidWidth
Definition Map.h:176
float m_liquidLevel
Definition Map.h:168
float getHeightFromUint8(float x, float y) const
Definition Map.cpp:1662
float getHeight(float x, float y) const
Definition Map.h:204
float * m_liquidMap
Definition Map.h:171
bool loadHeightData(FILE *in, uint32 offset, uint32 size)
Definition Map.cpp:1483
uint16 * m_liquidEntry
Definition Map.h:169
uint8 m_liquidOffX
Definition Map.h:174
bool loadLiquidData(FILE *in, uint32 offset, uint32 size)
Definition Map.cpp:1529
float m_gridIntHeightMultiplier
Definition Map.h:162
float * m_V8
Definition Map.h:156
Definition Group.h:147
bool m_resetAfterUnload
Definition Map.h:659
void CreateInstanceData(bool load)
Definition Map.cpp:2893
bool m_unloadWhenEmpty
Definition Map.h:660
void PermBindAllPlayers(Player *source)
Definition Map.cpp:2971
void SendResetWarnings(uint32 timeLeft) const
Definition Map.cpp:3018
uint32 GetMaxPlayers() const
Definition Map.cpp:3081
uint32 GetScriptId() const
Definition Map.h:646
uint32 GetMaxResetDelay() const
Definition Map.cpp:3097
bool CanEnter(Player *player) OVERRIDE
Definition Map.cpp:2690
bool Reset(InstanceResetMethod method)
Definition Map.cpp:2935
InstanceScript * i_data
Definition Map.h:661
InstanceMap(uint32 id, time_t, uint32 InstanceId, uint8 SpawnMode, Map *_parent)
Definition Map.cpp:2661
bool AddPlayerToMap(Player *) OVERRIDE
Definition Map.cpp:2755
void SetResetSchedule(bool on)
Definition Map.cpp:3024
void Update(const uint32) OVERRIDE
Definition Map.cpp:2874
uint32 i_script_id
Definition Map.h:662
InstanceScript * GetInstanceScript()
Definition Map.h:647
void RemovePlayerFromMap(Player *, bool) OVERRIDE
Definition Map.cpp:2882
virtual void InitVisibilityDistance() OVERRIDE
Definition Map.cpp:2680
void UnloadAll() OVERRIDE
Definition Map.cpp:3008
~InstanceMap()
Definition Map.cpp:2674
MapEntry const * i_mapEntry
Definition Map.h:541
uint8 i_spawnMode
Definition Map.h:542
bool _creatureToMoveLock
Definition Map.h:507
std::map< WorldObject *, bool > i_objectsToSwitch
Definition Map.h:588
void UpdateObjectVisibility(WorldObject *obj, Cell cell, CellCoord cellpair)
Definition Map.cpp:2290
void VisitGrid(const float &x, const float &y, float radius, NOTIFIER &notifier)
Definition Map.h:742
float GetWaterLevel(float x, float y) const
Definition Map.cpp:2195
std::vector< Creature * > _creaturesToMove
Definition Map.h:508
bool isInLineOfSight(float x1, float y1, float z1, float x2, float y2, float z2, uint32 phasemask) const
Definition Map.cpp:2231
void GameObjectRelocation(GameObject *go, float x, float y, float z, float orientation, bool respawnRelocationOnFail=true)
Definition Map.cpp:946
void AddGameObjectToMoveList(GameObject *go, float x, float y, float z, float ang)
Definition Map.cpp:997
bool IsDungeon() const
Definition Map.h:369
void CreatureRelocation(Creature *creature, float x, float y, float z, float ang, bool respawnRelocationOnFail=true)
Definition Map.cpp:909
void ScriptsStart(std::map< uint32, std::multimap< uint32, ScriptInfo > > const &scripts, uint32 id, Object *source, Object *target)
Put scripts in the execution queue.
bool IsBattlegroundOrArena() const
Definition Map.h:378
void RemoveGameObjectModel(const GameObjectModel &model)
Definition Map.h:446
void RemoveFromActive(T *obj)
Definition Map.cpp:2610
bool UnloadGrid(NGridType &ngrid, bool pForce)
Definition Map.cpp:1285
DifficultyID GetDifficulty() const
Definition Map.h:363
static void GetZoneAndAreaIdByAreaFlag(uint32 &zoneid, uint32 &areaid, uint16 areaflag, uint32 map_id)
Definition Map.cpp:2223
TransportsContainer::iterator _transportsUpdateIter
Definition Map.h:560
void InitializeObject(T *obj)
Definition Map.cpp:489
static void DeleteRespawnTimesInDB(uint16 mapId, uint32 instanceId)
Definition Map.cpp:3313
void SwitchGridContainers(T *obj, bool on)
Definition Map.cpp:288
void AddObjectToRemoveList(WorldObject *obj)
Definition Map.cpp:2410
virtual void RemovePlayerFromMap(Player *, bool)
Definition Map.cpp:808
time_t GetGORespawnTime(uint32 dbGuid) const
Definition Map.h:465
void MoveAllGameObjectsInMoveList()
Definition Map.cpp:1067
void RemoveFromActiveHelper(WorldObject *obj)
Definition Map.h:606
const MapInstanced * ToMapInstanced() const
Definition Map.h:438
void LoadGrid(float x, float y)
Definition Map.cpp:455
uint32 GetZoneId(float x, float y, float z) const
Definition Map.h:335
void PreserveTransportVisibility(std::set< uint64 > &guids) const
Definition Map.cpp:2375
GameObject * _FindGameObject(WorldObject *pWorldObject, uint32 guid) const
Map(uint32 id, time_t, uint32 InstanceId, uint8 SpawnMode, Map *_parent=NULL)
Definition Map.cpp:222
Transport * GetTransport(uint64 guid)
Definition Map.cpp:3189
bool AddToMap(T *)
Definition Map.cpp:504
float GetHeight(float x, float y, float z, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) const
Definition Map.cpp:1959
bool getObjectHitPos(uint32 phasemask, float x1, float y1, float z1, float x2, float y2, float z2, float &rx, float &ry, float &rz, float modifyDist)
Definition Map.cpp:2237
uint8 GetTerrainType(float x, float y) const
Definition Map.cpp:2102
void DeleteRespawnTimes()
Definition Map.cpp:3305
virtual uint32 GetOwnerGuildId(uint32=TEAM_OTHER) const
Definition Map.h:451
NGridType * i_grids[MAX_NUMBER_OF_GRIDS][MAX_NUMBER_OF_GRIDS]
Definition Map.h:578
uint32 m_unloadTimer
Definition Map.h:544
MapRefManager PlayerList
Definition Map.h:406
uint8 GetSpawnMode() const
Definition Map.h:358
MapDifficulty const * GetMapDifficulty() const
Definition Map.cpp:3039
std::mutex Lock
Definition Map.h:538
void SaveGORespawnTime(uint32 dbGuid, time_t respawnTime)
Definition Map.cpp:3242
void SetTimer(uint32 t)
Definition Map.h:494
uint32 GetAreaId(float x, float y, float z) const
Definition Map.h:330
bool IsBattleground() const
Definition Map.h:376
void LoadMMap(int gx, int gy)
Definition Map.cpp:123
virtual void Update(const uint32)
Definition Map.cpp:631
bool CanUnload(uint32 diff)
Definition Map.h:247
void VisitFirstFound(const float &x, const float &y, float radius, NOTIFIER &notifier)
Definition Map.h:715
Map * m_parentMap
Definition Map.h:576
void EnsureGridCreated(const GridCoord &)
Definition Map.cpp:377
bool IsRaid() const
Definition Map.h:372
void ProcessRelocationNotifies(const uint32 diff)
Definition Map.cpp:731
virtual void UnloadAll()
Definition Map.cpp:1381
bool GetEntrancePos(int32 &mapid, float &x, float &y)
Definition Map.h:379
NGridType * getNGrid(uint32 x, uint32 y) const
Definition Map.h:521
bool Is25ManRaid() const
Definition Map.cpp:3063
void AddToActiveHelper(WorldObject *obj)
Definition Map.h:601
bool _gameObjectsToMoveLock
Definition Map.h:510
Map const * GetParent() const
Definition Map.h:308
Creature * _GetScriptCreature(Object *obj, bool isSource, const ScriptInfo *scriptInfo) const
static uint32 GetAreaIdByAreaFlag(uint16 areaflag, uint32 map_id)
Definition Map.cpp:2203
const InstanceMap * ToInstanceMap() const
Definition Map.h:441
bool HavePlayers() const
Definition Map.h:397
bool IsRemovalGrid(float x, float y) const
Definition Map.h:277
void UpdateActiveCells(const float &x, const float &y, const uint32 t_diff)
MapRefManager m_mapRefManager
Definition Map.h:548
void resetMarkedCells()
Definition Map.h:393
bool ActiveObjectsNearGrid(NGridType const &ngrid) const
Definition Map.cpp:2531
virtual void DelayedUpdate(const uint32 diff)
Definition Map.cpp:2391
void RemoveCreatureFromMoveList(Creature *c)
Definition Map.cpp:992
void RemoveGORespawnTime(uint32 dbGuid)
Definition Map.cpp:3261
void ScriptsProcess()
Process queued scripts.
ScriptScheduleMap m_scriptSchedule
Definition Map.h:592
void AddWorldObject(WorldObject *obj)
Definition Map.h:401
void ResetGridExpiry(NGridType &grid, float factor=1) const
Definition Map.h:294
DynamicMapTree _dynamicTree
Definition Map.h:546
std::vector< GameObject * > _gameObjectsToMove
Definition Map.h:511
void SummonCreatureGroup(uint8 group, std::list< TempSummon * > *list=NULL)
Definition Object.cpp:2675
void ScriptCommandStart(ScriptInfo const &script, uint32 delay, Object *source, Object *target)
void LoadRespawnTimes()
Definition Map.cpp:3272
bool GameObjectRespawnRelocation(GameObject *go, bool diffGridOnly)
Definition Map.cpp:1260
time_t i_gridExpiry
Definition Map.h:572
int32 m_VisibilityNotifyPeriod
Definition Map.h:551
time_t GetCreatureRespawnTime(uint32 dbGuid) const
Definition Map.h:456
void EnsureGridLoadedForActiveObject(Cell const &, WorldObject *object)
Definition Map.cpp:415
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=NULL, uint32 duration=0, Unit *summoner=NULL, uint32 spellId=0, uint32 vehId=0)
Definition Object.cpp:2564
GameObject * GetGameObject(uint64 guid)
Definition Map.cpp:3184
void LoadMap(int gx, int gy, bool reload=false)
Definition Map.cpp:151
void LoadVMap(int gx, int gy)
Definition Map.cpp:133
bool i_scriptLock
Definition Map.h:586
void SendInitSelf(Player *player)
Definition Map.cpp:2312
virtual void RemoveAllPlayers()
Definition Map.cpp:1364
bool isCellMarked(uint32 pCellId)
Definition Map.h:394
bool GameObjectCellRelocation(GameObject *go, Cell new_cell)
Definition Map.cpp:1169
void SendToPlayers(WorldPacket const *data) const
Definition Map.cpp:2525
std::mutex GridLock
Definition Map.h:539
void SaveCreatureRespawnTime(uint32 dbGuid, time_t respawnTime)
Definition Map.cpp:3212
bool IsUnderWater(float x, float y, float z) const
Definition Map.cpp:2263
GridMap * GetGrid(float x, float y)
Definition Map.cpp:1924
static void DeleteStateMachine()
Definition Map.cpp:214
MapRefManager::iterator m_mapRefIter
Definition Map.h:549
bool CreatureCellRelocation(Creature *creature, Cell new_cell)
Definition Map.cpp:1108
void SetUnloadLock(const GridCoord &p, bool on)
Definition Map.h:289
bool GetUnloadLock(const GridCoord &p) const
Definition Map.h:288
std::multimap< time_t, ScriptAction > ScriptScheduleMap
Definition Map.h:591
std::bitset< TOTAL_NUMBER_OF_CELLS_PER_MAP *TOTAL_NUMBER_OF_CELLS_PER_MAP > marked_cells
Definition Map.h:580
bool IsInWater(float x, float y, float z, LiquidData *data=0) const
Definition Map.cpp:2256
uint16 GetAreaFlag(float x, float y, float z, bool *isOutdoors=0) const
Definition Map.cpp:2063
void Balance()
Definition Map.h:445
Creature * _GetScriptCreatureSourceOrTarget(Object *source, Object *target, const ScriptInfo *scriptInfo, bool bReverse=false) const
WorldObject * _GetScriptWorldObject(Object *obj, bool isSource, const ScriptInfo *scriptInfo) const
virtual ~Map()
Definition Map.cpp:40
virtual bool CanEnter(Player *)
Definition Map.h:359
void VisitAll(const float &x, const float &y, float radius, NOTIFIER &notifier)
Definition Map.h:701
void RemoveGameObjectFromMoveList(GameObject *go)
Definition Map.cpp:1010
void EnsureGridCreated_i(const GridCoord &)
Definition Map.cpp:385
Creature * GetCreature(uint64 guid)
Definition Map.cpp:3179
void RemoveWorldObject(WorldObject *obj)
Definition Map.h:402
std::set< WorldObject * > i_worldObjects
Definition Map.h:589
ActiveNonPlayers m_activeNonPlayers
Definition Map.h:554
void UpdateIteratorBack(Player *player)
Definition Map.cpp:3206
bool Instanceable() const
Definition Map.h:367
float GetWaterOrGroundLevel(float x, float y, float z, float *ground=NULL, bool swim=false) const
Definition Map.cpp:1941
bool IsScenario() const
Definition Map.h:370
void LoadMapAndVMap(int gx, int gy)
Definition Map.cpp:195
std::set< Transport * > TransportsContainer
Definition Map.h:558
UNORDERED_MAP< uint32, time_t > _goRespawnTimes
Definition Map.h:623
void buildNGridLinkage(NGridType *pNGridType)
Definition Map.h:519
void Visit(const Cell &cell, TypeContainerVisitor< T, CONTAINER > &visitor)
Definition Map.h:686
MapEntry const * GetEntry() const
Definition Map.h:244
bool IsRegularDifficulty() const
Definition Map.h:364
std::set< WorldObject * > i_objectsToRemove
Definition Map.h:587
void AddToGrid(T *object, Cell const &cell)
Definition Map.cpp:257
uint32 GetPlayersCountExceptGMs() const
Definition Map.cpp:2516
bool IsGridLoaded(float x, float y) const
Definition Map.h:283
void DeleteFromWorld(T *)
Definition Map.cpp:363
friend class MapReference
Definition Map.h:239
void AddToActive(T *obj)
Definition Map.cpp:2569
void SendInitTransports(Player *player)
Definition Map.cpp:2344
float m_VisibleDistance
Definition Map.h:545
bool IsOutdoors(float x, float y, float z) const
Definition Map.cpp:2025
float GetVisibilityRange() const
Definition Map.h:267
void VisitWorld(const float &x, const float &y, float radius, NOTIFIER &notifier)
Definition Map.h:731
bool IsRaidOrHeroicDungeon() const
Definition Map.h:373
void UpdateObjectsVisibilityFor(Player *player, Cell cell, CellCoord cellpair)
Definition Map.cpp:2298
bool CheckGridIntegrity(Creature *c, bool moved) const
Definition Map.cpp:2268
const char * GetMapName() const
Definition Map.cpp:2285
void SetUnloadReferenceLock(const GridCoord &p, bool on)
Definition Map.h:536
InstanceMap * ToInstanceMap()
Definition Map.h:440
void RemoveAllObjectsInRemoveList()
Definition Map.cpp:2448
void MoveAllCreaturesInMoveList()
Definition Map.cpp:1015
CreatureGroupHolderType CreatureGroupHolder
Definition Map.h:426
std::set< WorldObject * > ActiveNonPlayers
Definition Map.h:553
DynamicObject * GetDynamicObject(uint64 guid)
Definition Map.cpp:3201
void markCell(uint32 pCellId)
Definition Map.h:395
Player * _GetScriptPlayerSourceOrTarget(Object *source, Object *target, const ScriptInfo *scriptInfo) const
void GetZoneAndAreaId(uint32 &zoneid, uint32 &areaid, float x, float y, float z) const
Definition Map.h:340
void AddCreatureToMoveList(Creature *c, float x, float y, float z, float ang)
Definition Map.cpp:979
time_t GetGridExpiry(void) const
Definition Map.h:299
virtual void InitVisibilityDistance()
Definition Map.cpp:248
bool IsHeroic() const
Definition Map.cpp:3044
void setGridObjectDataLoaded(bool pLoaded, uint32 x, uint32 y)
Definition Map.h:528
void VisitNearbyCellsOf(WorldObject *obj, TypeContainerVisitor< Skyfire::ObjectUpdater, GridTypeMapContainer > &gridVisitor, TypeContainerVisitor< Skyfire::ObjectUpdater, WorldTypeMapContainer > &worldVisitor)
Definition Map.cpp:602
bool EnsureGridLoaded(Cell const &)
Definition Map.cpp:431
void RemoveFromMap(T *, bool)
Definition Map.cpp:826
virtual bool AddPlayerToMap(Player *)
Definition Map.cpp:460
bool GetAreaInfo(float x, float y, float z, uint32 &mogpflags, int32 &adtId, int32 &rootId, int32 &groupId) const
Definition Map.cpp:2044
bool IsNonRaidInstance() const
Definition Map.h:371
uint32 GetInstanceId() const
Definition Map.h:357
TransportsContainer _transports
Definition Map.h:559
void SendRemoveTransports(Player *player)
Definition Map.cpp:2362
uint32 GetId(void) const
Definition Map.h:300
PlayerList const & GetPlayers() const
Definition Map.h:407
UNORDERED_MAP< uint32, time_t > _creatureRespawnTimes
Definition Map.h:622
static void InitStateMachine()
Definition Map.cpp:206
time_t GetLinkedRespawnTime(uint64 guid) const
Definition Map.cpp:3326
void _ScriptProcessDoor(Object *source, Object *target, const ScriptInfo *scriptInfo) const
MapInstanced * ToMapInstanced()
Definition Map.h:437
void PlayerRelocation(Player *, float x, float y, float z, float orientation)
Definition Map.cpp:877
bool CreatureRespawnRelocation(Creature *c, bool diffGridOnly)
Definition Map.cpp:1230
static bool ExistVMap(uint32 mapid, int gx, int gy)
Definition Map.cpp:104
void AddObjectToSwitchList(WorldObject *obj, bool on)
Definition Map.cpp:2424
uint32 i_InstanceId
Definition Map.h:543
ActiveNonPlayers::iterator m_activeNonPlayersIter
Definition Map.h:555
void RemoveCreatureRespawnTime(uint32 dbGuid)
Definition Map.cpp:3231
bool ContainsGameObjectModel(const GameObjectModel &model) const
Definition Map.h:448
void InsertGameObjectModel(const GameObjectModel &model)
Definition Map.h:447
ZLiquidStatus getLiquidStatus(float x, float y, float z, uint8 ReqLiquidType, LiquidData *data=0) const
Definition Map.cpp:2110
static uint32 GetZoneIdByAreaFlag(uint16 areaflag, uint32 map_id)
Definition Map.cpp:2213
Player * _GetScriptPlayer(Object *obj, bool isSource, const ScriptInfo *scriptInfo) const
bool isGridObjectDataLoaded(uint32 x, uint32 y) const
Definition Map.h:527
static bool ExistMap(uint32 mapid, int gx, int gy)
Definition Map.cpp:75
GridMap * GridMaps[MAX_NUMBER_OF_GRIDS][MAX_NUMBER_OF_GRIDS]
Definition Map.h:579
bool IsInstance() const
Definition Map.h:368
Unit * _GetScriptUnit(Object *obj, bool isSource, const ScriptInfo *scriptInfo) const
void setNGrid(NGridType *grid, uint32 x, uint32 y)
Definition Map.cpp:2381
bool IsBattleArena() const
Definition Map.h:377
LinkedListHead::Iterator< MapReference > iterator
bool isGridObjectDataLoaded() const
Definition NGrid.h:96
grid_state_t GetGridState(void) const
Definition NGrid.h:87
void ResetTimeTracker(time_t interval)
Definition NGrid.h:106
void setGridObjectDataLoaded(bool pLoaded)
Definition NGrid.h:97
void setUnloadExplicitLock(bool on)
Definition NGrid.h:102
void VisitGrid(const uint32 x, const uint32 y, TypeContainerVisitor< T, TypeMapContainer< TT > > &visitor)
Definition NGrid.h:142
void setUnloadReferenceLock(bool on)
Definition NGrid.h:103
bool getUnloadLock() const
Definition NGrid.h:101
void link(GridRefManager< NGrid< N, ACTIVE_OBJECT, WORLD_OBJECT_TYPES, GRID_OBJECT_TYPES > > *pTo)
Definition NGrid.h:92
Definition Unit.h:1367
CellCoord ComputeCellCoord(float x, float y)
GridCoord ComputeGridCoord(float x, float y)
Definition Cell.h:37
uint32 GridX() const
Definition Cell.h:63
void SetNoCreate()
Definition Cell.h:66
bool NoCreate() const
Definition Cell.h:65
uint32 GridY() const
Definition Cell.h:64
void Visit(CellCoord const &, TypeContainerVisitor< T, CONTAINER > &visitor, Map &, WorldObject const &, float) const
Definition CellImpl.h:109
uint32 CellX() const
Definition Cell.h:61
uint32 CellY() const
Definition Cell.h:62
uint32 x_coord
uint32 y_coord
bool AllowMount
Definition Map.h:221
uint32 Parent
Definition Map.h:219
uint32 ScriptId
Definition Map.h:220
uint32 entry
Definition Map.h:136
float depth_level
Definition Map.h:138
uint32 type_flags
Definition Map.h:135
float level
Definition Map.h:137
uint64 ownerGUID
Definition Map.h:48
uint64 sourceGUID
Definition Map.h:46
ScriptInfo const * script
Definition Map.h:49
uint64 targetGUID
Definition Map.h:47
uint32 fourcc
Definition Map.h:81
uint16 gridArea
Definition Map.h:83
uint16 flags
Definition Map.h:82
u_map_magic mapMagic
Definition Map.h:64
uint32 holesSize
Definition Map.h:74
uint32 liquidMapSize
Definition Map.h:72
uint32 areaMapOffset
Definition Map.h:67
uint32 heightMapSize
Definition Map.h:70
uint32 heightMapOffset
Definition Map.h:69
u_map_magic buildMagic
Definition Map.h:66
uint32 holesOffset
Definition Map.h:73
u_map_magic versionMagic
Definition Map.h:65
uint32 liquidMapOffset
Definition Map.h:71
uint32 areaMapSize
Definition Map.h:68
float gridMaxHeight
Definition Map.h:95
uint32 flags
Definition Map.h:93
float gridHeight
Definition Map.h:94
uint32 fourcc
Definition Map.h:92
uint8 offsetX
Definition Map.h:106
uint32 fourcc
Definition Map.h:103
uint8 width
Definition Map.h:108
uint8 height
Definition Map.h:109
uint16 liquidType
Definition Map.h:105
uint8 offsetY
Definition Map.h:107
float liquidLevel
Definition Map.h:110
uint16 flags
Definition Map.h:104
Represents a map magic value of 4 bytes (used in versions).
Definition Map.h:54
char asChar[4]
Definition Map.h:55
uint32 asUInt
Definition Map.h:56