feat(Core/Grids): Remove WorldObject separation in grid containers (#22595)

This commit is contained in:
Takenbacon
2025-08-08 21:36:24 -07:00
committed by GitHub
parent c97cee1e4f
commit 73317b2706
63 changed files with 160 additions and 313 deletions

View File

@@ -911,7 +911,7 @@ public:
Creature* passenger = nullptr;
Acore::AllCreaturesOfEntryInRange check(handler->GetPlayer(), entry, 20.0f);
Acore::CreatureSearcher<Acore::AllCreaturesOfEntryInRange> searcher(handler->GetPlayer(), passenger, check);
Cell::VisitAllObjects(handler->GetPlayer(), searcher, 30.0f);
Cell::VisitObjects(handler->GetPlayer(), searcher, 30.0f);
if (!passenger || passenger == target)
return false;

View File

@@ -2451,7 +2451,7 @@ public:
Acore::RespawnDo u_do;
Acore::WorldObjectWorker<Acore::RespawnDo> worker(player, u_do);
Cell::VisitGridObjects(player, worker, player->GetGridActivationRange());
Cell::VisitObjects(player, worker, player->GetGridActivationRange());
return true;
}

View File

@@ -268,7 +268,7 @@ public:
std::list<Creature*> creatureList;
Acore::AnyUnitInObjectRangeCheck go_check(object, radius);
Acore::CreatureListSearcher<Acore::AnyUnitInObjectRangeCheck> go_search(object, creatureList, go_check);
Cell::VisitGridObjects(object, go_search, radius);
Cell::VisitObjects(object, go_search, radius);
if (!creatureList.empty())
{

View File

@@ -793,7 +793,7 @@ struct npc_brewfest_super_brew_trigger : public ScriptedAI
Player* player = nullptr;
Acore::AnyPlayerInObjectRangeCheck checker(me, 2.0f);
Acore::PlayerSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(me, player, checker);
Cell::VisitWorldObjects(me, searcher, 2.0f);
Cell::VisitObjects(me, searcher, 2.0f);
if (player)
{
player->CastSpell(player, SPELL_DRUNKEN_MASTER, true);

View File

@@ -807,7 +807,7 @@ struct npc_hallows_end_soh : public ScriptedAI
std::list<Player*> players;
Acore::AnyPlayerInObjectRangeCheck checker(me, 60.f);
Acore::PlayerListSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(me, players, checker);
Cell::VisitWorldObjects(me, searcher, 60.f);
Cell::VisitObjects(me, searcher, 60.f);
if (players.empty())
{
return;
@@ -887,7 +887,7 @@ struct npc_hallows_end_soh : public ScriptedAI
std::list<Player*> players;
Acore::AnyPlayerInObjectRangeCheck checker(me, radius);
Acore::PlayerListSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(me, players, checker);
Cell::VisitWorldObjects(me, searcher, radius);
Cell::VisitObjects(me, searcher, radius);
for (Player* player : players)
{

View File

@@ -407,7 +407,7 @@ class spell_love_is_in_the_air_romantic_picnic : public AuraScript
std::list<Player*> playerList;
Acore::AnyPlayerInObjectRangeCheck checker(target, INTERACTION_DISTANCE * 2);
Acore::PlayerListSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(target, playerList, checker);
Cell::VisitWorldObjects(target, searcher, INTERACTION_DISTANCE * 2);
Cell::VisitObjects(target, searcher, INTERACTION_DISTANCE * 2);
for (std::list<Player*>::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr)
{
if ((*itr) != target && (*itr)->HasAura(GetId())) // && (*itr)->getStandState() == UNIT_STAND_STATE_SIT)

View File

@@ -198,7 +198,7 @@ public:
std::list<WorldObject*> ClusterList;
Acore::AllWorldObjectsInRange objects(me, 50.0f);
Acore::WorldObjectListSearcher<Acore::AllWorldObjectsInRange> searcher(me, ClusterList, objects);
Cell::VisitAllObjects(me, searcher, 50.0f);
Cell::VisitObjects(me, searcher, 50.0f);
for (std::list<WorldObject*>::const_iterator itr = ClusterList.begin(); itr != ClusterList.end(); ++itr)
{
if (Player* player = (*itr)->ToPlayer())

View File

@@ -178,7 +178,7 @@ struct boss_ouro : public BossAI
std::list<WorldObject*> targets;
Acore::AllWorldObjectsInRange checker(me, 10.0f);
Acore::WorldObjectListSearcher<Acore::AllWorldObjectsInRange> searcher(me, targets, checker);
Cell::VisitAllObjects(me, searcher, 10.0f);
Cell::VisitObjects(me, searcher, 10.0f);
for (WorldObject* target : targets)
{

View File

@@ -498,7 +498,7 @@ class spell_zulfarrak_unlocking : public SpellScript
std::list<WorldObject*> cagesList;
Acore::AllWorldObjectsInRange objects(GetCaster(), 15.0f);
Acore::WorldObjectListSearcher<Acore::AllWorldObjectsInRange> searcher(GetCaster(), cagesList, objects);
Cell::VisitAllObjects(GetCaster(), searcher, 15.0f);
Cell::VisitObjects(GetCaster(), searcher, 15.0f);
for (std::list<WorldObject*>::const_iterator itr = cagesList.begin(); itr != cagesList.end(); ++itr)
{
if (GameObject* go = (*itr)->ToGameObject())

View File

@@ -653,7 +653,7 @@ public:
Unit* unit = nullptr;
Acore::MostHPMissingInRange u_check(me, 40.f, 1500);
Acore::UnitLastSearcher<Acore::MostHPMissingInRange> searcher(me, unit, u_check);
Cell::VisitGridObjects(me, searcher, 40.f);
Cell::VisitObjects(me, searcher, 40.f);
if (unit)
{
DoCast(unit, SPELL_HEAL);
@@ -671,7 +671,7 @@ public:
Unit* unit = nullptr;
Acore::MostHPMissingInRange u_check(me, 40.f, 700);
Acore::UnitLastSearcher<Acore::MostHPMissingInRange> searcher(me, unit, u_check);
Cell::VisitGridObjects(me, searcher, 40.f);
Cell::VisitObjects(me, searcher, 40.f);
if (unit)
{
DoCast(unit, SPELL_RENEW);

View File

@@ -333,7 +333,7 @@ public:
std::list<Player*> playerOnQuestList;
Acore::AnyPlayerInObjectRangeCheck checker(me, 5.0f);
Acore::PlayerListSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(me, playerOnQuestList, checker);
Cell::VisitWorldObjects(me, searcher, 5.0f);
Cell::VisitObjects(me, searcher, 5.0f);
for (std::list<Player*>::const_iterator itr = playerOnQuestList.begin(); itr != playerOnQuestList.end(); ++itr)
{
// Check if found player target has active quest

View File

@@ -673,7 +673,7 @@ public:
// Reset The Frozen Throne gameobjects
FrozenThroneResetWorker reset;
Acore::GameObjectWorker<FrozenThroneResetWorker> worker(me, reset);
Cell::VisitGridObjects(me, worker, 333.0f);
Cell::VisitObjects(me, worker, 333.0f);
me->AddAura(SPELL_EMOTE_SIT_NO_SHEATH, me);
me->SetImmuneToPC(true);

View File

@@ -224,7 +224,7 @@ public:
bool Execute(uint64 /*currTime*/, uint32 /*diff*/) override
{
Acore::CreatureWorker<ValithriaDespawner> worker(_creature, *this);
Cell::VisitGridObjects(_creature, worker, 333.0f);
Cell::VisitObjects(_creature, worker, 333.0f);
_creature->AI()->Reset();
_creature->setActive(false);
return true;
@@ -545,7 +545,7 @@ public:
std::list<Creature*> archmages;
RisenArchmageCheck check;
Acore::CreatureListSearcher<RisenArchmageCheck> searcher(me, archmages, check);
Cell::VisitGridObjects(me, searcher, 100.0f);
Cell::VisitObjects(me, searcher, 100.0f);
for (std::list<Creature*>::iterator itr = archmages.begin(); itr != archmages.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_ENTER_COMBAT);
}

View File

@@ -856,7 +856,7 @@ public:
std::list<Creature*> temp;
FrostwingVrykulSearcher check(me, 150.0f);
Acore::CreatureListSearcher<FrostwingVrykulSearcher> searcher(me, temp, check);
Cell::VisitGridObjects(me, searcher, 150.0f);
Cell::VisitObjects(me, searcher, 150.0f);
_aliveTrash.clear();
for (std::list<Creature*>::iterator itr = temp.begin(); itr != temp.end(); ++itr)
@@ -901,14 +901,14 @@ public:
Player* player = nullptr;
Acore::AnyPlayerInObjectRangeCheck check(me, 140.0f);
Acore::PlayerSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(me, player, check);
Cell::VisitWorldObjects(me, searcher, 140.0f);
Cell::VisitObjects(me, searcher, 140.0f);
// wipe
if (!player || me->GetExactDist(4357.0f, 2606.0f, 350.0f) > 125.0f)
{
//Talk(SAY_CROK_DEATH);
FrostwingGauntletRespawner respawner;
Acore::CreatureWorker<FrostwingGauntletRespawner> worker(me, respawner);
Cell::VisitGridObjects(me, worker, 333.0f);
Cell::VisitObjects(me, worker, 333.0f);
return;
}
}
@@ -1365,7 +1365,7 @@ public:
Creature* target = nullptr;
Acore::MostHPMissingInRange u_check(me, 60.0f, 0);
Acore::CreatureLastSearcher<Acore::MostHPMissingInRange> searcher(me, target, u_check);
Cell::VisitGridObjects(me, searcher, 60.0f);
Cell::VisitObjects(me, searcher, 60.0f);
return target;
}
};
@@ -2261,7 +2261,7 @@ public:
{
FrostwingGauntletRespawner respawner;
Acore::CreatureWorker<FrostwingGauntletRespawner> worker(crok, respawner);
Cell::VisitGridObjects(crok, worker, 333.0f);
Cell::VisitObjects(crok, worker, 333.0f);
return true;
}
else

View File

@@ -1665,7 +1665,7 @@ class spell_vehicle_throw_passenger : public SpellScript
std::list<WorldObject*> targetList;
Acore::WorldObjectSpellAreaTargetCheck check(99, GetExplTargetDest(), GetCaster(), GetCaster(), GetSpellInfo(), TARGET_CHECK_DEFAULT, nullptr);
Acore::WorldObjectListSearcher<Acore::WorldObjectSpellAreaTargetCheck> searcher(GetCaster(), targetList, check);
Cell::VisitAllObjects(GetCaster(), searcher, 99.0f);
Cell::VisitObjects(GetCaster(), searcher, 99.0f);
float minDist = 99 * 99;
Unit* target = nullptr;
for (std::list<WorldObject*>::iterator itr = targetList.begin(); itr != targetList.end(); ++itr)

View File

@@ -1067,7 +1067,7 @@ public:
go->Delete();
WretchedGhoulCleaner cleaner;
Acore::CreatureWorker<WretchedGhoulCleaner> worker(me, cleaner);
Cell::VisitGridObjects(me, worker, 150.0f);
Cell::VisitObjects(me, worker, 150.0f);
}
void Reset() override
@@ -1281,7 +1281,7 @@ public:
{
WretchedGhoulCleaner cleaner;
Acore::CreatureWorker<WretchedGhoulCleaner> worker(me, cleaner);
Cell::VisitGridObjects(me, worker, 150.0f);
Cell::VisitObjects(me, worker, 150.0f);
if (Creature* c = me->FindNearestCreature(NPC_SAC_LIGHTS_VENGEANCE, 150.0f, true))
if (Creature* v = me->FindNearestCreature(NPC_SAC_VEGARD_1, 50.0f, true))

View File

@@ -615,7 +615,7 @@ bool OPvPCapturePointNA::Update(uint32 diff)
std::list<Player*> players;
Acore::AnyPlayerInObjectRangeCheck checker(_capturePoint, radius);
Acore::PlayerListSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(_capturePoint, players, checker);
Cell::VisitWorldObjects(_capturePoint, searcher, radius);
Cell::VisitObjects(_capturePoint, searcher, radius);
for (Player* player : players)
{

View File

@@ -699,7 +699,7 @@ public:
std::list<WorldObject*> ClusterList;
Acore::AllWorldObjectsInRange objects(me, searchDistance);
Acore::WorldObjectListSearcher<Acore::AllWorldObjectsInRange> searcher(me, ClusterList, objects);
Cell::VisitAllObjects(me, searcher, searchDistance);
Cell::VisitObjects(me, searcher, searchDistance);
for (std::list<WorldObject*>::const_iterator i = ClusterList.begin(); i != ClusterList.end(); ++i)
{

View File

@@ -174,7 +174,7 @@ struct npc_pet_dk_ebon_gargoyle : ScriptedAI
std::list<Unit*> targets;
Acore::AnyUnfriendlyUnitInObjectRangeCheck u_check(me, me, 50.0f);
Acore::UnitListSearcher<Acore::AnyUnfriendlyUnitInObjectRangeCheck> searcher(me, targets, u_check);
Cell::VisitAllObjects(me, searcher, 50.0f);
Cell::VisitObjects(me, searcher, 50.0f);
for (auto const& target : targets)
if (target->GetAura(SPELL_DK_SUMMON_GARGOYLE_1, me->GetOwnerGUID()))
{

View File

@@ -1358,11 +1358,7 @@ class spell_gen_cannibalize : public SpellScript
// search for nearby enemy corpse in range
Acore::AnyDeadUnitSpellTargetInRangeCheck check(caster, max_range, GetSpellInfo(), TARGET_CHECK_CORPSE);
Acore::WorldObjectSearcher<Acore::AnyDeadUnitSpellTargetInRangeCheck> searcher(caster, result, check);
Cell::VisitWorldObjects(caster, searcher, max_range);
if (!result)
{
Cell::VisitGridObjects(caster, searcher, max_range);
}
Cell::VisitObjects(caster, searcher, max_range);
if (!result)
{
return SPELL_FAILED_NO_EDIBLE_CORPSES;

View File

@@ -843,11 +843,7 @@ class spell_hun_pet_carrion_feeder : public SpellScript
// search for nearby enemy corpse in range
Acore::AnyDeadUnitSpellTargetInRangeCheck check(caster, max_range, GetSpellInfo(), TARGET_CHECK_ENEMY);
Acore::WorldObjectSearcher<Acore::AnyDeadUnitSpellTargetInRangeCheck> searcher(caster, result, check);
Cell::VisitWorldObjects(caster, searcher, max_range);
if (!result)
{
Cell::VisitGridObjects(caster, searcher, max_range);
}
Cell::VisitObjects(caster, searcher, max_range);
if (!result)
{
return SPELL_FAILED_NO_EDIBLE_CORPSES;

View File

@@ -1876,7 +1876,7 @@ class spell_q11010_q11102_q11023_choose_loc : public SpellScript
std::list<Player*> playerList;
Acore::AnyPlayerInObjectRangeCheck checker(caster, 65.0f);
Acore::PlayerListSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(caster, playerList, checker);
Cell::VisitWorldObjects(caster, searcher, 65.0f);
Cell::VisitObjects(caster, searcher, 65.0f);
for (std::list<Player*>::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr)
// Check if found player target is on fly mount or using flying form
if ((*itr)->HasFlyAura() || (*itr)->HasIncreaseMountedFlightSpeedAura())

View File

@@ -322,7 +322,7 @@ public:
std::list<Player*> players;
Acore::AnyPlayerExactPositionInGameObjectRangeCheck checker(me, 0.3f);
Acore::PlayerListSearcher<Acore::AnyPlayerExactPositionInGameObjectRangeCheck> searcher(me, players, checker);
Cell::VisitWorldObjects(me, searcher, 0.3f);
Cell::VisitObjects(me, searcher, 0.3f);
if (players.size() > 0)
{
@@ -369,7 +369,7 @@ public:
std::list<Player*> players;
Acore::AnyPlayerExactPositionInGameObjectRangeCheck checker(me, 0.3f);
Acore::PlayerListSearcher<Acore::AnyPlayerExactPositionInGameObjectRangeCheck> searcher(me, players, checker);
Cell::VisitWorldObjects(me, searcher, 0.3f);
Cell::VisitObjects(me, searcher, 0.3f);
if (players.size() > 0)
{
@@ -823,7 +823,7 @@ public:
std::list<Player*> targets;
Acore::AnyPlayerInObjectRangeCheck check(me, me->GetVisibilityRange(), false);
Acore::PlayerListSearcherWithSharedVision<Acore::AnyPlayerInObjectRangeCheck> searcher(me, targets, check);
Cell::VisitWorldObjects(me, searcher, me->GetVisibilityRange());
Cell::VisitObjects(me, searcher, me->GetVisibilityRange());
for (Player* player : targets)
{
if (player->GetTeamId() == TEAM_HORDE)

View File

@@ -931,7 +931,7 @@ struct npc_pallid_horror : public ScriptedAI
std::list<Creature*> targets;
FlameshockerCheck check;
Acore::CreatureListSearcher<FlameshockerCheck> searcher(me, targets, check);
Cell::VisitGridObjects(me, searcher, VISIBILITY_DISTANCE_NORMAL);
Cell::VisitObjects(me, searcher, VISIBILITY_DISTANCE_NORMAL);
if (!targets.empty())
{