diff options
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 838f5f575c1..c5f5c0986cb 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6761,6 +6761,27 @@ Quest const* ObjectMgr::GetQuestTemplate(uint32 quest_id) const return itr != _questTemplates.end() ? itr->second.get() : nullptr; } +std::vector<Position> ObjectMgr::GetVerticesForAreaTrigger(AreaTriggerEntry const* areaTrigger) const +{ + std::vector<Position> vertices; + if (areaTrigger && areaTrigger->ShapeType == 3 /* Polygon */) + { + if (std::vector<DBCPosition3D> const* pathNodes = sDB2Manager.GetNodesForPath(areaTrigger->ShapeID)) + { + vertices.resize(pathNodes->size()); + std::transform(pathNodes->cbegin(), pathNodes->cend(), vertices.begin(), [](DBCPosition3D dbcPosition) + { + return Position(dbcPosition.X, dbcPosition.Y, dbcPosition.Z); + }); + } + + // Drop first node (areatrigger position) + vertices.erase(vertices.begin()); + } + + return vertices; +} + void ObjectMgr::LoadGraveyardZones() { uint32 oldMSTime = getMSTime(); |