aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Grids
diff options
context:
space:
mode:
authorMatan Shukry <matanshukry@gmail.com>2021-01-28 05:46:06 +0200
committerShauren <shauren.trinity@gmail.com>2021-01-30 18:10:21 +0100
commit0417c5ff5fd68cd3344dede35afaab364870561b (patch)
treec281641aa9bb74652e2105cbb72905b64d06f3ed /src/server/game/Grids
parent08005a7cf937d2abd3bd164c24c80bb87ec3378c (diff)
Core/AreaTriggers: Implementation for sever side area triggers
- Spawn GridLoader to spawn area triggers correctly now - Removed SAI completely - Removed remnants of smart scripts. Created different issue for it - Calling InitDbPhaseShift and not InDbPhaseShift - changed SpawnId to uint64 rather than uint32 - not using CellGuidSet typedef as to not include ObjectMgr.h in the header
Diffstat (limited to 'src/server/game/Grids')
-rw-r--r--src/server/game/Grids/ObjectGridLoader.cpp16
-rw-r--r--src/server/game/Grids/ObjectGridLoader.h3
2 files changed, 16 insertions, 3 deletions
diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp
index bf33abacea5..9ab947aac18 100644
--- a/src/server/game/Grids/ObjectGridLoader.cpp
+++ b/src/server/game/Grids/ObjectGridLoader.cpp
@@ -17,6 +17,7 @@
#include "ObjectGridLoader.h"
#include "AreaTrigger.h"
+#include "AreaTriggerDataStore.h"
#include "CellImpl.h"
#include "Conversation.h"
#include "Corpse.h"
@@ -124,7 +125,9 @@ void LoadHelper(CellGuidSet const& guid_set, CellCoord &cell, GridRefManager<T>
T* obj = new T;
// Don't spawn at all if there's a respawn time
- if ((obj->GetTypeId() == TYPEID_UNIT && !map->GetCreatureRespawnTime(*i_guid)) || (obj->GetTypeId() == TYPEID_GAMEOBJECT && !map->GetGORespawnTime(*i_guid)))
+ if ((obj->GetTypeId() == TYPEID_UNIT && !map->GetCreatureRespawnTime(*i_guid)) ||
+ (obj->GetTypeId() == TYPEID_GAMEOBJECT && !map->GetGORespawnTime(*i_guid)) ||
+ (obj->GetTypeId() == TYPEID_AREATRIGGER))
{
ObjectGuid::LowType guid = *i_guid;
//TC_LOG_INFO("misc", "DEBUG: LoadHelper from table: %s for (guid: %u) Loading", table, guid);
@@ -175,7 +178,7 @@ void LoadHelper(CellGuidSet const& guid_set, CellCoord &cell, GridRefManager<T>
}
}
-void ObjectGridLoader::Visit(GameObjectMapType &m)
+void ObjectGridLoader::Visit(GameObjectMapType& m)
{
CellCoord cellCoord = i_cell.GetCellCoord();
CellObjectGuids const& cell_guids = sObjectMgr->GetCellObjectGuids(i_map->GetId(), i_map->GetDifficultyID(), cellCoord.GetId());
@@ -189,6 +192,15 @@ void ObjectGridLoader::Visit(CreatureMapType &m)
LoadHelper(cell_guids.creatures, cellCoord, m, i_creatures, i_map);
}
+void ObjectGridLoader::Visit(AreaTriggerMapType &m)
+{
+ CellCoord cellCoord = i_cell.GetCellCoord();
+ CellGuidSet const* areaTriggers = sAreaTriggerDataStore->GetAreaTriggersForMapAndCell(i_map->GetId(), cellCoord.GetId());
+ if (!areaTriggers)
+ return;
+ LoadHelper(*areaTriggers, cellCoord, m, i_areaTriggers, i_map);
+}
+
void ObjectWorldLoader::Visit(CorpseMapType& /*m*/)
{
CellCoord cellCoord = i_cell.GetCellCoord();
diff --git a/src/server/game/Grids/ObjectGridLoader.h b/src/server/game/Grids/ObjectGridLoader.h
index a0638d1069a..c33f372697c 100644
--- a/src/server/game/Grids/ObjectGridLoader.h
+++ b/src/server/game/Grids/ObjectGridLoader.h
@@ -37,9 +37,9 @@ class TC_GAME_API ObjectGridLoader
void Visit(GameObjectMapType &m);
void Visit(CreatureMapType &m);
+ void Visit(AreaTriggerMapType &m);
void Visit(CorpseMapType &) const { }
void Visit(DynamicObjectMapType&) const { }
- void Visit(AreaTriggerMapType &) const { }
void Visit(ConversationMapType &) const { }
void LoadN(void);
@@ -53,6 +53,7 @@ class TC_GAME_API ObjectGridLoader
uint32 i_gameObjects;
uint32 i_creatures;
uint32 i_corpses;
+ uint32 i_areaTriggers;
};
//Stop the creatures before unloading the NGrid