fix(Core/ObjectGuid): prevent creating copies when looping objects (#6852)

This commit is contained in:
Francesco Borzì
2021-07-10 15:54:16 +02:00
committed by GitHub
parent 2fcafa5f39
commit 4103fca5a4
40 changed files with 69 additions and 69 deletions

View File

@@ -200,7 +200,7 @@ public:
}
uint16 phase = 1;
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
{
if (Creature* summon = ObjectAccessor::GetCreature(*me, guid))
phase |= summon->GetPhaseMask();

View File

@@ -420,7 +420,7 @@ public:
summons.RemoveNotExisting();
if (!summons.empty())
{
for (ObjectGuid const summonGuid : summons)
for (ObjectGuid const& summonGuid : summons)
{
Creature* summon = ObjectAccessor::GetCreature(*me, summonGuid);
if (summon && summon->GetEntry() == NPC_FIRE_CYCLONE)
@@ -556,7 +556,7 @@ public:
uint8 iter = 0;
if (!summons.empty())
{
for (ObjectGuid const summonGuid : summons)
for (ObjectGuid const& summonGuid : summons)
{
Creature* summon = ObjectAccessor::GetCreature(*me, summonGuid);
if (summon && summon->GetEntry() == NPC_FIRE_CYCLONE && iter == rand)
@@ -636,7 +636,7 @@ public:
return;
}
for (ObjectGuid const guid : summons)
for (ObjectGuid const& guid : summons)
{
Creature* tsunami = ObjectAccessor::GetCreature(*me, guid);
if (!tsunami || tsunami->GetEntry() != NPC_FLAME_TSUNAMI)
@@ -1129,7 +1129,7 @@ public:
{
summons.RemoveNotExisting();
summons.DespawnEntry(NPC_TWILIGHT_WHELP);
for (ObjectGuid const summonGuid : summons)
for (ObjectGuid const& summonGuid : summons)
{
Creature const* summon = ObjectAccessor::GetCreature(*me, summonGuid);
if (!summon || !summon->IsAlive() || summon->GetEntry() != NPC_TWILIGHT_EGG)

View File

@@ -279,7 +279,7 @@ public:
case INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_3:
// revert to INSTANCE_PROGRESS_INITIAL
{
for (ObjectGuid const guid : VehicleList)
for (ObjectGuid const& guid : VehicleList)
if (Creature* veh = instance->GetCreature(guid))
{
veh->DespawnOrUnsummon();
@@ -567,7 +567,7 @@ public:
{
Counter = 0;
InstanceProgress = INSTANCE_PROGRESS_CHAMPIONS_UNMOUNTED;
for (ObjectGuid const guid : VehicleList)
for (ObjectGuid const& guid : VehicleList)
if (Creature* veh = instance->GetCreature(guid))
veh->DespawnOrUnsummon();
events.ScheduleEvent(EVENT_GRAND_CHAMPIONS_MOVE_SIDE, 0);

View File

@@ -200,7 +200,7 @@ public:
if( !IsHeroic() )
events.RescheduleEvent(EVENT_RESPAWN_SPHERE, 4000);
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(guid))
{

View File

@@ -73,7 +73,7 @@ public:
// move corpses
const ObjectGuid npcs[4] = { NPC_IcehowlGUID, NPC_JaraxxusGUID, NPC_LightbaneGUID, NPC_DarkbaneGUID };
for (const ObjectGuid i : npcs)
for (ObjectGuid const& i : npcs)
{
if (Creature* c = instance->GetCreature(i))
{
@@ -402,7 +402,7 @@ public:
InstanceProgress = INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD;
events.RescheduleEvent(EVENT_SCENE_FACTION_CHAMPIONS_DEAD, 2500);
for (ObjectGuid guid : NPC_ChampionGUIDs)
for (ObjectGuid const& guid : NPC_ChampionGUIDs)
if (Creature* c = instance->GetCreature(guid))
c->DespawnOrUnsummon(15000);
NPC_ChampionGUIDs.clear();
@@ -455,7 +455,7 @@ public:
{
EncounterStatus = IN_PROGRESS;
AchievementTimer = 0;
for (ObjectGuid guid : NPC_ChampionGUIDs)
for (ObjectGuid const& guid : NPC_ChampionGUIDs)
if (Creature* c = instance->GetCreature(guid))
if (!c->IsInCombat())
if (Unit* target = c->SelectNearestTarget(200.0f))
@@ -1093,7 +1093,7 @@ public:
}
case EVENT_CHAMPIONS_ATTACK:
{
for (ObjectGuid guid : NPC_ChampionGUIDs)
for (ObjectGuid const& guid : NPC_ChampionGUIDs)
if (Creature* c = instance->GetCreature(guid))
{
c->SetReactState(REACT_AGGRESSIVE);
@@ -1493,7 +1493,7 @@ public:
case INSTANCE_PROGRESS_JARAXXUS_DEAD:
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
for (ObjectGuid guid : NPC_ChampionGUIDs)
for (ObjectGuid const& guid : NPC_ChampionGUIDs)
if (Creature* c = instance->GetCreature(guid))
c->DespawnOrUnsummon();
NPC_ChampionGUIDs.clear();

View File

@@ -958,7 +958,7 @@ public:
TSSpawnPos.GetAngle(&TSMidPos);
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
if (Creature* c = pInstance->instance->GetCreature(guid))
{
float hx, hy, hz, ho;
@@ -974,7 +974,7 @@ public:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_SINDRAGOSA_GUID)))
{
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
if (Creature* s = pInstance->instance->GetCreature(guid))
if (s->IsAlive())
Unit::Kill(c, s);
@@ -1026,7 +1026,7 @@ public:
me->SetFacingTo(5.26f);
me->SetOrientation(5.26f);
me->SetHomePosition(*me);
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
if (Creature* c = pInstance->instance->GetCreature(guid))
{
c->SetFacingTo(5.26f);
@@ -1056,7 +1056,7 @@ public:
float offset = frand(0.0f, 10.0f);
c->GetMotionMaster()->MovePoint(0, 1047.0f + offset, 118.0f + offset, 628.2f);
c->SetHomePosition(*me);
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
if (Creature* s = pInstance->instance->GetCreature(guid))
{
if (s->GetEntry() == NPC_FALLEN_WARRIOR)

View File

@@ -369,7 +369,7 @@ public:
{
// shouldn't be casted on any victim of summoned mobs
bool valid = true;
for (ObjectGuid const guid : summons)
for (ObjectGuid const& guid : summons)
if (Creature* c = ObjectAccessor::GetCreature(*me, guid))
if (c->IsAlive() && c->GetVictim() && c->GetVictim()->GetGUID() == plr->GetGUID())
{

View File

@@ -191,7 +191,7 @@ public:
bool IsValidExplosionTarget(WorldObject* target)
{
for (ObjectGuid const guid : blockList)
for (ObjectGuid const& guid : blockList)
{
if (target->GetGUID() == guid)
return false;

View File

@@ -291,7 +291,7 @@ public:
events.RepeatEvent(30000);
else
{
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
if (Creature* sv = ObjectAccessor::GetCreature(*me, guid))
{
sv->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);

View File

@@ -2321,7 +2321,7 @@ public:
void RemoveAll()
{
for (ObjectGuid guid : FlameList)
for (ObjectGuid const& guid : FlameList)
if (Creature* c = ObjectAccessor::GetCreature(*me, guid))
c->DespawnOrUnsummon();
FlameList.clear();

View File

@@ -1219,7 +1219,7 @@ void instance_ulduar::instance_ulduar_InstanceMapScript::SpawnLeviathanEncounter
{
if (!_leviathanVehicles.empty())
{
for (ObjectGuid guid : _leviathanVehicles)
for (ObjectGuid const& guid : _leviathanVehicles)
if (Creature* cr = instance->GetCreature(guid))
if (Vehicle* veh = cr->GetVehicleKit())
veh->Dismiss();

View File

@@ -209,7 +209,7 @@ public:
bool bIsWaterElementsAlive = false;
if (!globules.empty())
{
for (ObjectGuid const guid : globules)
for (ObjectGuid const& guid : globules)
if (Creature* pTemp = ObjectAccessor::GetCreature(*me, guid))
if (pTemp->IsAlive())
{

View File

@@ -124,7 +124,7 @@ public:
{
bool found = false;
if (pInstance)
for (ObjectGuid guid : spheres)
for (ObjectGuid const& guid : spheres)
if (Creature* c = pInstance->instance->GetCreature(guid))
if (me->GetDistance(c) < 3.0f)
{

View File

@@ -434,7 +434,7 @@ public:
DoUpdateWorldState(WORLD_STATE_VH_PRISON_STATE, (uint32)GateHealth);
DoUpdateWorldState(WORLD_STATE_VH_WAVE_COUNT, (uint32)WaveCount);
for (ObjectGuid guid : GO_ActivationCrystalGUID)
for (ObjectGuid const& guid : GO_ActivationCrystalGUID)
if (GameObject* go = instance->GetGameObject(guid))
{
HandleGameObject(ObjectGuid::Empty, false, go); // not used yet
@@ -528,7 +528,7 @@ public:
CLEANED = true;
// reset defense crystals
for (ObjectGuid guid : GO_ActivationCrystalGUID)
for (ObjectGuid const& guid : GO_ActivationCrystalGUID)
if (GameObject* go = instance->GetGameObject(guid))
{
HandleGameObject(ObjectGuid::Empty, false, go); // not used yet
@@ -555,7 +555,7 @@ public:
NPC_PortalGUID.Clear();
// remove trash
for (ObjectGuid guid : trashMobs)
for (ObjectGuid const& guid : trashMobs)
if (Creature* c = instance->GetCreature(guid))
c->DespawnOrUnsummon();

View File

@@ -171,7 +171,7 @@ public:
void CheckSummons()
{
bool allow = true;
for (ObjectGuid guid : summons)
for (ObjectGuid const& guid : summons)
if (Creature* cr = ObjectAccessor::GetCreature(*me, guid))
if (cr->IsAlive())
allow = false;

View File

@@ -176,7 +176,7 @@ public:
if (action == ACTION_BIND_MINIONS)
me->CastSpell(me, SPELL_ARTRUIS_BINDING, true);
for (ObjectGuid const guid : summons)
for (ObjectGuid const& guid : summons)
{
Creature* minion = ObjectAccessor::GetCreature(*me, guid);
if (minion && minion->IsAlive())