Core/Maps: Always update the grid of player summons even if far away (#25406)

* Core/Maps: Always update the grid of player summons even if far away

* Code cleanup

* Use a vector instead of unordered_set

(cherry picked from commit c68faf108e)
This commit is contained in:
Giacomo Pozzoni
2020-09-06 21:38:12 +02:00
committed by Shauren
parent ebdb6d80bb
commit ca498ffab2

View File

@@ -910,6 +910,20 @@ void Map::Update(uint32 t_diff)
for (Unit* unit : toVisit)
VisitNearbyCellsOf(unit, grid_object_update, world_object_update);
}
{ // Update player's summons
std::vector<Unit*> toVisit;
// Totems
for (ObjectGuid const& summonGuid : player->m_SummonSlot)
if (!summonGuid.IsEmpty())
if (Creature* unit = GetCreature(summonGuid))
if (unit->GetMapId() == player->GetMapId() && !unit->IsWithinDistInMap(player, GetVisibilityRange(), false))
toVisit.push_back(unit);
for (Unit* unit : toVisit)
VisitNearbyCellsOf(unit, grid_object_update, world_object_update);
}
}
// non-player active objects, increasing iterator in the loop in case of object removal