aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 26e3c8585f3..cdaf87c80a9 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -3452,8 +3452,8 @@ void WorldObject::GetCreatureListWithOptionsInGrid(Container& creatureContainer,
template <typename Container>
void WorldObject::GetPlayerListInGrid(Container& playerContainer, float maxSearchRange, bool alive /*= true*/) const
{
- Trinity::AnyPlayerInObjectRangeCheck checker(this, maxSearchRange, alive);
- Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, playerContainer, checker);
+ Trinity::AnyUnitInObjectRangeCheck checker(this, maxSearchRange, true, alive);
+ Trinity::PlayerListSearcher searcher(this, playerContainer, checker);
Cell::VisitWorldObjects(this, searcher, maxSearchRange);
}
@@ -3746,26 +3746,23 @@ void WorldObject::DestroyForNearbyPlayers()
if (!IsInWorld())
return;
- std::list<Player*> targets;
- Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange(), false);
- Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, targets, check);
- Cell::VisitWorldObjects(this, searcher, GetVisibilityRange());
- for (std::list<Player*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter)
+ auto destroyer = [this](Player* player)
{
- Player* player = (*iter);
-
if (player == this)
- continue;
+ return;
if (!player->HaveAtClient(this))
- continue;
+ return;
if (Unit const* unit = ToUnit(); unit && unit->GetCharmerGUID() == player->GetGUID()) /// @todo this is for puppet
- continue;
+ return;
DestroyForPlayer(player);
player->m_clientGUIDs.erase(GetGUID());
- }
+ };
+
+ Trinity::PlayerDistWorker worker(this, GetVisibilityRange(), destroyer);
+ Cell::VisitWorldObjects(this, worker, GetVisibilityRange());
}
void WorldObject::UpdateObjectVisibility(bool /*forced*/)