From 73317b2706334c111ddbedf51d5ef0cc73bd02a7 Mon Sep 17 00:00:00 2001 From: Takenbacon Date: Fri, 8 Aug 2025 21:36:24 -0700 Subject: [PATCH] feat(Core/Grids): Remove WorldObject separation in grid containers (#22595) --- src/common/Dynamic/TypeContainer.h | 1 - src/server/game/AI/CoreAI/TotemAI.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedCreature.cpp | 8 +-- .../game/AI/SmartScripts/SmartScript.cpp | 12 ++-- .../game/Achievements/AchievementMgr.cpp | 3 +- src/server/game/Battlefield/Battlefield.cpp | 4 +- src/server/game/Chat/Chat.cpp | 2 +- src/server/game/Entities/Corpse/Corpse.cpp | 2 +- .../game/Entities/Creature/Creature.cpp | 12 ++-- src/server/game/Entities/Creature/Creature.h | 2 +- .../Entities/Creature/TemporarySummon.cpp | 10 ++-- .../game/Entities/Creature/TemporarySummon.h | 6 +- .../Entities/DynamicObject/DynamicObject.cpp | 7 +-- .../Entities/DynamicObject/DynamicObject.h | 2 +- .../game/Entities/GameObject/GameObject.cpp | 8 +-- src/server/game/Entities/Object/Object.cpp | 57 +++++++------------ src/server/game/Entities/Object/Object.h | 4 +- src/server/game/Entities/Pet/Pet.cpp | 6 +- src/server/game/Entities/Player/Player.cpp | 8 +-- .../game/Entities/Player/PlayerUpdates.cpp | 4 +- src/server/game/Entities/Totem/Totem.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 26 ++++----- src/server/game/Entities/Unit/Unit.h | 2 +- src/server/game/Grids/Cells/Cell.h | 9 +-- src/server/game/Grids/Cells/CellImpl.h | 48 +--------------- src/server/game/Grids/GridCell.h | 14 ----- src/server/game/Grids/GridDefines.h | 16 +++--- src/server/game/Grids/GridObjectLoader.cpp | 4 +- src/server/game/Grids/GridObjectLoader.h | 2 + src/server/game/Grids/MapGrid.h | 17 +----- src/server/game/Handlers/ChatHandler.cpp | 2 +- src/server/game/Maps/Map.cpp | 40 +++---------- src/server/game/Maps/Map.h | 4 -- src/server/game/OutdoorPvP/OutdoorPvP.cpp | 2 +- .../game/Spells/Auras/SpellAuraEffects.cpp | 6 +- src/server/game/Spells/Auras/SpellAuras.cpp | 12 ++-- src/server/game/Spells/Spell.cpp | 19 +------ src/server/game/Spells/SpellEffects.cpp | 10 ++-- src/server/game/Texts/CreatureTextMgr.h | 2 +- src/server/scripts/Commands/cs_debug.cpp | 2 +- src/server/scripts/Commands/cs_misc.cpp | 2 +- src/server/scripts/Commands/cs_mmaps.cpp | 2 +- src/server/scripts/Events/brewfest.cpp | 2 +- src/server/scripts/Events/hallows_end.cpp | 4 +- src/server/scripts/Events/love_in_air.cpp | 2 +- .../Kalimdor/RazorfenDowns/razorfen_downs.cpp | 2 +- .../Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp | 2 +- .../Kalimdor/ZulFarrak/instance_zulfarrak.cpp | 2 +- .../scripts/Kalimdor/ZulFarrak/zulfarrak.cpp | 4 +- .../scripts/Kalimdor/zone_moonglade.cpp | 2 +- .../IcecrownCitadel/boss_the_lich_king.cpp | 2 +- .../boss_valithria_dreamwalker.cpp | 4 +- .../IcecrownCitadel/icecrown_citadel.cpp | 10 ++-- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 2 +- .../scripts/Northrend/zone_dragonblight.cpp | 4 +- .../scripts/OutdoorPvP/OutdoorPvPNA.cpp | 2 +- .../Outland/zone_blades_edge_mountains.cpp | 2 +- src/server/scripts/Pet/pet_dk.cpp | 2 +- src/server/scripts/Spells/spell_generic.cpp | 6 +- src/server/scripts/Spells/spell_hunter.cpp | 6 +- src/server/scripts/Spells/spell_quest.cpp | 2 +- src/server/scripts/World/go_scripts.cpp | 6 +- src/server/scripts/World/scourge_invasion.cpp | 2 +- 63 files changed, 160 insertions(+), 313 deletions(-) diff --git a/src/common/Dynamic/TypeContainer.h b/src/common/Dynamic/TypeContainer.h index f1551996f..0c338de5d 100644 --- a/src/common/Dynamic/TypeContainer.h +++ b/src/common/Dynamic/TypeContainer.h @@ -35,7 +35,6 @@ template struct ContainerMapList { - //std::map _element; GridRefMgr _element; }; diff --git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp index c49ce38ad..79b904593 100644 --- a/src/server/game/AI/CoreAI/TotemAI.cpp +++ b/src/server/game/AI/CoreAI/TotemAI.cpp @@ -104,7 +104,7 @@ void TotemAI::UpdateAI(uint32 /*diff*/) victim = nullptr; Acore::NearestAttackableUnitInObjectRangeCheck u_check(me, me, max_range); Acore::UnitLastSearcher checker(me, victim, u_check); - Cell::VisitAllObjects(me, checker, max_range); + Cell::VisitObjects(me, checker, max_range); } if (!victim && me->GetCharmerOrOwnerOrSelf()->IsInCombat()) diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 72a4cc615..b11233217 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -491,7 +491,7 @@ Unit* ScriptedAI::DoSelectLowestHpFriendly(float range, uint32 minHPDiff) Unit* unit = nullptr; Acore::MostHPMissingInRange u_check(me, range, minHPDiff); Acore::UnitLastSearcher searcher(me, unit, u_check); - Cell::VisitAllObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); return unit; } @@ -501,7 +501,7 @@ std::list ScriptedAI::DoFindFriendlyCC(float range) std::list list; Acore::FriendlyCCedInRange u_check(me, range); Acore::CreatureListSearcher searcher(me, list, u_check); - Cell::VisitAllObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); return list; } @@ -510,7 +510,7 @@ std::list ScriptedAI::DoFindFriendlyMissingBuff(float range, uint32 u std::list list; Acore::FriendlyMissingBuffInRange u_check(me, range, uiSpellid); Acore::CreatureListSearcher searcher(me, list, u_check); - Cell::VisitAllObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); return list; } @@ -521,7 +521,7 @@ Player* ScriptedAI::GetPlayerAtMinimumRange(float minimumRange) Acore::PlayerAtMinimumRangeAway check(me, minimumRange); Acore::PlayerSearcher searcher(me, player, check); - Cell::VisitWorldObjects(me, searcher, minimumRange); + Cell::VisitObjects(me, searcher, minimumRange); return player; } diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index b312e1af3..24a3d6901 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -4030,7 +4030,7 @@ void SmartScript::GetWorldObjectsInDist(ObjectVector& targets, float dist) const Acore::AllWorldObjectsInRange u_check(obj, dist); Acore::WorldObjectListSearcher searcher(obj, targets, u_check); - Cell::VisitAllObjects(obj, searcher, dist); + Cell::VisitObjects(obj, searcher, dist); } void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, uint32 var1, bool bvar, SpellInfo const* spell, GameObject* gob) @@ -5252,7 +5252,7 @@ Unit* SmartScript::DoSelectLowestHpFriendly(float range, uint32 MinHPDiff) const Acore::MostHPMissingInRange u_check(me, range, MinHPDiff); Acore::UnitLastSearcher searcher(me, unit, u_check); - Cell::VisitGridObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); return unit; } @@ -5266,7 +5266,7 @@ Unit* SmartScript::DoSelectLowestHpPercentFriendly(float range, uint32 minHpPct, Unit* unit = nullptr; Acore::MostHPPercentMissingInRange u_check(me, range, minHpPct, maxHpPct); Acore::UnitLastSearcher searcher(me, unit, u_check); - Cell::VisitGridObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); return unit; } @@ -5277,7 +5277,7 @@ void SmartScript::DoFindFriendlyCC(std::vector& creatures, float rang Acore::FriendlyCCedInRange u_check(me, range); Acore::CreatureListSearcher searcher(me, creatures, u_check); - Cell::VisitGridObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); } void SmartScript::DoFindFriendlyMissingBuff(std::vector& creatures, float range, uint32 spellid) const @@ -5287,7 +5287,7 @@ void SmartScript::DoFindFriendlyMissingBuff(std::vector& creatures, f Acore::FriendlyMissingBuffInRange u_check(me, range, spellid); Acore::CreatureListSearcher searcher(me, creatures, u_check); - Cell::VisitGridObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); } Unit* SmartScript::DoFindClosestFriendlyInRange(float range, bool playerOnly) const @@ -5298,7 +5298,7 @@ Unit* SmartScript::DoFindClosestFriendlyInRange(float range, bool playerOnly) co Unit* unit = nullptr; Acore::AnyFriendlyNotSelfUnitInObjectRangeCheck u_check(me, me, range, playerOnly); Acore::UnitLastSearcher searcher(me, unit, u_check); - Cell::VisitAllObjects(me, searcher, range); + Cell::VisitObjects(me, searcher, range); return unit; } diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index e679c271e..f96775eb4 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -754,8 +754,7 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement) Acore::BroadcastTextBuilder _builder(GetPlayer(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, GetPlayer()->getGender(), GetPlayer(), achievement->ID); Acore::LocalizedPacketDo _localizer(_builder); Acore::PlayerDistWorker> _worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer); - TypeContainerVisitor >, WorldTypeMapContainer > message(_worker); - Cell::VisitWorldObjects(GetPlayer(), _worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY)); + Cell::VisitObjects(GetPlayer(), _worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY)); } WorldPacket data(SMSG_ACHIEVEMENT_EARNED, 8 + 4 + 8); diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index e63d73e30..f74aebff2 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -805,7 +805,7 @@ Creature* Battlefield::SpawnCreature(uint32 entry, float x, float y, float z, fl return nullptr; } - Creature* creature = new Creature(true); + Creature* creature = new Creature(); if (!creature->Create(map->GenerateLowGuid(), map, PHASEMASK_NORMAL, entry, 0, x, y, z, o)) { LOG_ERROR("bg.battlefield", "Battlefield::SpawnCreature: Can't create creature entry: {}", entry); @@ -1019,7 +1019,7 @@ bool BfCapturePoint::Update(uint32 diff) std::list players; Acore::AnyPlayerInObjectRangeCheck checker(capturePoint, radius); Acore::PlayerListSearcher searcher(capturePoint, players, checker); - Cell::VisitWorldObjects(capturePoint, searcher, radius); + Cell::VisitObjects(capturePoint, searcher, radius); for (std::list::iterator itr = players.begin(); itr != players.end(); ++itr) if ((*itr)->IsOutdoorPvPActive()) diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index d446b0eaa..5b82ed2c5 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -571,7 +571,7 @@ GameObject* ChatHandler::GetNearbyGameObject() const GameObject* obj = nullptr; Acore::NearestGameObjectCheck check(*pl); Acore::GameObjectLastSearcher searcher(pl, obj, check); - Cell::VisitGridObjects(pl, searcher, SIZE_OF_GRIDS); + Cell::VisitObjects(pl, searcher, SIZE_OF_GRIDS); return obj; } diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index d4b84138a..249ac7adb 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -26,7 +26,7 @@ #include "UpdateMask.h" #include "World.h" -Corpse::Corpse(CorpseType type) : WorldObject(type != CORPSE_BONES), m_type(type) +Corpse::Corpse(CorpseType type) : WorldObject(), m_type(type) { m_objectType |= TYPEMASK_CORPSE; m_objectTypeId = TYPEID_CORPSE; diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c3f2d97a5..8c070c6db 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -269,7 +269,7 @@ bool TemporaryThreatModifierEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) return true; } -Creature::Creature(bool isWorldObject): Unit(isWorldObject), MovableMapObject(), m_groupLootTimer(0), lootingGroupLowGUID(0), m_lootRecipientGroup(0), +Creature::Creature(): Unit(), MovableMapObject(), m_groupLootTimer(0), lootingGroupLowGUID(0), m_lootRecipientGroup(0), m_corpseRemoveTime(0), m_respawnTime(0), m_respawnDelay(300), m_corpseDelay(60), m_wanderDistance(0.0f), m_boundaryCheckTime(2500), m_transportCheckTimer(1000), lootPickPocketRestoreTime(0), m_combatPulseTime(0), m_combatPulseDelay(0), m_reactState(REACT_AGGRESSIVE), m_defaultMovementType(IDLE_MOTION_TYPE), m_spawnId(0), m_equipmentId(0), m_originalEquipmentId(0), m_AlreadyCallAssistance(false), @@ -1079,7 +1079,7 @@ void Creature::DoFleeToGetAssistance() Acore::NearestAssistCreatureInCreatureRangeCheck u_check(this, GetVictim(), radius); Acore::CreatureLastSearcher searcher(this, creature, u_check); - Cell::VisitGridObjects(this, searcher, radius); + Cell::VisitObjects(this, searcher, radius); SetNoSearchAssistance(true); UpdateSpeed(MOVE_RUN, false); @@ -2400,7 +2400,7 @@ Unit* Creature::SelectNearestTarget(float dist, bool playerOnly /* = false */) c Acore::NearestHostileUnitCheck u_check(this, dist, playerOnly); Acore::UnitLastSearcher searcher(this, target, u_check); - Cell::VisitAllObjects(this, searcher, dist); + Cell::VisitObjects(this, searcher, dist); return target; } @@ -2417,7 +2417,7 @@ Unit* Creature::SelectNearestTargetInAttackDistance(float dist) const Unit* target = nullptr; Acore::NearestHostileUnitInAttackDistanceCheck u_check(this, dist); Acore::UnitLastSearcher searcher(this, target, u_check); - Cell::VisitAllObjects(this, searcher, std::max(dist, ATTACK_DISTANCE)); + Cell::VisitObjects(this, searcher, std::max(dist, ATTACK_DISTANCE)); return target; } @@ -2453,7 +2453,7 @@ void Creature::CallAssistance(Unit* target /*= nullptr*/) Acore::AnyAssistCreatureInRangeCheck u_check(this, target, radius); Acore::CreatureListSearcher searcher(this, assistList, u_check); - Cell::VisitGridObjects(this, searcher, radius); + Cell::VisitObjects(this, searcher, radius); if (!assistList.empty()) { @@ -2489,7 +2489,7 @@ void Creature::CallForHelp(float radius, Unit* target /*= nullptr*/) Acore::CallOfHelpCreatureInRangeDo u_do(this, target, radius); Acore::CreatureWorker worker(this, u_do); - Cell::VisitGridObjects(this, worker, radius); + Cell::VisitObjects(this, worker, radius); } bool Creature::CanAssistTo(Unit const* u, Unit const* enemy, bool checkfaction /*= true*/) const diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 06444ef46..e9326f0d1 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -42,7 +42,7 @@ class CreatureGroup; class Creature : public Unit, public GridObject, public MovableMapObject, public UpdatableMapObject { public: - explicit Creature(bool isWorldObject = false); + explicit Creature(); ~Creature() override; void AddToWorld() override; diff --git a/src/server/game/Entities/Creature/TemporarySummon.cpp b/src/server/game/Entities/Creature/TemporarySummon.cpp index fd087b507..0b0c17a1e 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.cpp +++ b/src/server/game/Entities/Creature/TemporarySummon.cpp @@ -24,8 +24,8 @@ #include "Player.h" #include "ScriptMgr.h" -TempSummon::TempSummon(SummonPropertiesEntry const* properties, ObjectGuid owner, bool isWorldObject) : - Creature(isWorldObject), m_Properties(properties), m_type(TEMPSUMMON_MANUAL_DESPAWN), +TempSummon::TempSummon(SummonPropertiesEntry const* properties, ObjectGuid owner) : + Creature(), m_Properties(properties), m_type(TEMPSUMMON_MANUAL_DESPAWN), m_timer(0), m_lifetime(0), _visibleBySummonerOnly(false) { if (owner) @@ -350,7 +350,7 @@ std::string TempSummon::GetDebugInfo() const return sstr.str(); } -Minion::Minion(SummonPropertiesEntry const* properties, ObjectGuid owner, bool isWorldObject) : TempSummon(properties, owner, isWorldObject) +Minion::Minion(SummonPropertiesEntry const* properties, ObjectGuid owner) : TempSummon(properties, owner) , m_owner(owner) { ASSERT(m_owner); @@ -417,7 +417,7 @@ std::string Minion::GetDebugInfo() const return sstr.str(); } -Guardian::Guardian(SummonPropertiesEntry const* properties, ObjectGuid owner, bool isWorldObject) : Minion(properties, owner, isWorldObject) +Guardian::Guardian(SummonPropertiesEntry const* properties, ObjectGuid owner) : Minion(properties, owner) { m_unitTypeMask |= UNIT_MASK_GUARDIAN; if (properties && (properties->Type == SUMMON_TYPE_PET || properties->Category == SUMMON_CATEGORY_PET)) @@ -462,7 +462,7 @@ std::string Guardian::GetDebugInfo() const return sstr.str(); } -Puppet::Puppet(SummonPropertiesEntry const* properties, ObjectGuid owner) : Minion(properties, owner, false), m_owner(owner) //maybe true? +Puppet::Puppet(SummonPropertiesEntry const* properties, ObjectGuid owner) : Minion(properties, owner), m_owner(owner) { ASSERT(owner.IsPlayer()); m_unitTypeMask |= UNIT_MASK_PUPPET; diff --git a/src/server/game/Entities/Creature/TemporarySummon.h b/src/server/game/Entities/Creature/TemporarySummon.h index 18cc72979..72a199327 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.h +++ b/src/server/game/Entities/Creature/TemporarySummon.h @@ -39,7 +39,7 @@ struct TempSummonData class TempSummon : public Creature { public: - explicit TempSummon(SummonPropertiesEntry const* properties, ObjectGuid owner, bool isWorldObject); + explicit TempSummon(SummonPropertiesEntry const* properties, ObjectGuid owner); ~TempSummon() override = default; void Update(uint32 time) override; virtual void InitStats(uint32 lifetime); @@ -76,7 +76,7 @@ private: class Minion : public TempSummon { public: - Minion(SummonPropertiesEntry const* properties, ObjectGuid owner, bool isWorldObject); + Minion(SummonPropertiesEntry const* properties, ObjectGuid owner); void InitStats(uint32 duration) override; void RemoveFromWorld() override; [[nodiscard]] Unit* GetOwner() const; @@ -95,7 +95,7 @@ protected: class Guardian : public Minion { public: - Guardian(SummonPropertiesEntry const* properties, ObjectGuid owner, bool isWorldObject); + Guardian(SummonPropertiesEntry const* properties, ObjectGuid owner); void InitStats(uint32 duration) override; bool InitStatsForLevel(uint8 level); void InitSummon() override; diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index d7fbd2483..f712691b1 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -22,7 +22,7 @@ #include "SpellAuraEffects.h" #include "Transport.h" -DynamicObject::DynamicObject(bool isWorldObject) : WorldObject(isWorldObject), MovableMapObject(), +DynamicObject::DynamicObject() : WorldObject(), MovableMapObject(), _aura(nullptr), _removedAura(nullptr), _caster(nullptr), _duration(0), _isViewpoint(false), _updateViewerVisibilityTimer(0) { m_objectType |= TYPEMASK_DYNAMICOBJECT; @@ -128,11 +128,6 @@ bool DynamicObject::CreateDynamicObject(ObjectGuid::LowType guidlow, Unit* caste return false; } - if (IsWorldObject()) - { - setActive(true); - } - return true; } diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.h b/src/server/game/Entities/DynamicObject/DynamicObject.h index dc7e4f129..7ccd31f2f 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.h +++ b/src/server/game/Entities/DynamicObject/DynamicObject.h @@ -34,7 +34,7 @@ enum DynamicObjectType class DynamicObject : public WorldObject, public GridObject, public MovableMapObject, public UpdatableMapObject { public: - DynamicObject(bool isWorldObject); + DynamicObject(); ~DynamicObject() override; void AddToWorld() override; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index ad0231a2b..827dc38dd 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -38,7 +38,7 @@ #include #include -GameObject::GameObject() : WorldObject(false), MovableMapObject(), +GameObject::GameObject() : WorldObject(), MovableMapObject(), m_model(nullptr), m_goValue(), m_AI(nullptr) { m_objectType |= TYPEMASK_GAMEOBJECT; @@ -721,7 +721,7 @@ void GameObject::Update(uint32 diff) { Acore::NearestAttackableNoTotemUnitInObjectRangeCheck checker(this, owner, radius); Acore::UnitSearcher searcher(this, target, checker); - Cell::VisitAllObjects(this, searcher, radius); + Cell::VisitObjects(this, searcher, radius); } else // environmental trap { @@ -730,7 +730,7 @@ void GameObject::Update(uint32 diff) Player* player = nullptr; Acore::AnyPlayerInObjectRangeCheck checker(this, radius, true, true); Acore::PlayerSearcher searcher(this, player, checker); - Cell::VisitWorldObjects(this, searcher, radius); + Cell::VisitObjects(this, searcher, radius); target = player; } @@ -1397,7 +1397,7 @@ GameObject* GameObject::LookupFishingHoleAround(float range) Acore::NearestGameObjectFishingHole u_check(*this, range); Acore::GameObjectSearcher checker(this, ok, u_check); - Cell::VisitGridObjects(this, checker, range); + Cell::VisitObjects(this, checker, range); return ok; } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index c8fd3d851..a9fcd7199 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -86,17 +86,6 @@ Object::Object() : m_PackGUID(sizeof(uint64) + 1) WorldObject::~WorldObject() { sScriptMgr->OnWorldObjectDestroy(this); - - // this may happen because there are many !create/delete - if (IsWorldObject() && m_currMap) - { - if (IsCorpse()) - { - LOG_FATAL("entities.object", "Object::~Object Corpse {}, type={} deleted but still in map!!", GetGUID().ToString(), ((Corpse*)this)->GetType()); - ABORT(); - } - ResetMap(); - } } Object::~Object() @@ -1047,8 +1036,8 @@ void MovementInfo::OutDebug() LOG_INFO("movement", "splineElevation: {}", splineElevation); } -WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), - LastUsedScriptID(0), m_name(""), m_isActive(false), m_visibilityDistanceOverride(), m_isWorldObject(isWorldObject), m_zoneScript(nullptr), +WorldObject::WorldObject() : WorldLocation(), + LastUsedScriptID(0), m_name(""), m_isActive(false), m_visibilityDistanceOverride(), m_zoneScript(nullptr), _zoneId(0), _areaId(0), _floorZ(INVALID_HEIGHT), _outdoors(false), _liquidData(), _updatePositionData(false), m_transport(nullptr), m_currMap(nullptr), _heartbeatTimer(HEARTBEAT_INTERVAL), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_useCombinedPhases(true), m_notifyflags(0), m_executed_notifies(0), _objectVisibilityContainer(this) @@ -2102,9 +2091,6 @@ void WorldObject::SetMap(Map* map) m_InstanceId = map->GetInstanceId(); sScriptMgr->OnWorldObjectSetMap(this, map); - - if (IsWorldObject()) - m_currMap->AddWorldObject(this); } void WorldObject::ResetMap() @@ -2112,11 +2098,6 @@ void WorldObject::ResetMap() ASSERT(m_currMap); ASSERT(!IsInWorld()); - if (IsWorldObject()) - { - m_currMap->RemoveWorldObject(this); - } - sScriptMgr->OnWorldObjectResetMap(this); m_currMap = nullptr; @@ -2198,10 +2179,10 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert switch (mask) { case UNIT_MASK_SUMMON: - summon = new TempSummon(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty, false); + summon = new TempSummon(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty); break; case UNIT_MASK_GUARDIAN: - summon = new Guardian(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty, false); + summon = new Guardian(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty); break; case UNIT_MASK_PUPPET: summon = new Puppet(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty); @@ -2210,7 +2191,7 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert summon = new Totem(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty); break; case UNIT_MASK_MINION: - summon = new Minion(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty, false); + summon = new Minion(properties, summoner ? summoner->GetGUID() : ObjectGuid::Empty); break; default: return nullptr; @@ -2244,7 +2225,7 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert // call MoveInLineOfSight for nearby creatures Acore::AIRelocationNotifier notifier(*summon); - Cell::VisitAllObjects(summon, notifier, GetVisibilityRange()); + Cell::VisitObjects(summon, notifier, GetVisibilityRange()); return summon; } @@ -2429,7 +2410,7 @@ Creature* WorldObject::FindNearestCreature(uint32 entry, float range, bool alive Creature* creature = nullptr; Acore::NearestCreatureEntryWithLiveStateInObjectRangeCheck checker(*this, entry, alive, range); Acore::CreatureLastSearcher searcher(this, creature, checker); - Cell::VisitAllObjects(this, searcher, range); + Cell::VisitObjects(this, searcher, range); return creature; } @@ -2438,7 +2419,7 @@ GameObject* WorldObject::FindNearestGameObject(uint32 entry, float range, bool o GameObject* go = nullptr; Acore::NearestGameObjectEntryInObjectRangeCheck checker(*this, entry, range, onlySpawned); Acore::GameObjectLastSearcher searcher(this, go, checker); - Cell::VisitGridObjects(this, searcher, range); + Cell::VisitObjects(this, searcher, range); return go; } @@ -2447,7 +2428,7 @@ GameObject* WorldObject::FindNearestGameObjectOfType(GameobjectTypes type, float GameObject* go = nullptr; Acore::NearestGameObjectTypeInObjectRangeCheck checker(*this, type, range); Acore::GameObjectLastSearcher searcher(this, go, checker); - Cell::VisitGridObjects(this, searcher, range); + Cell::VisitObjects(this, searcher, range); return go; } @@ -2457,7 +2438,7 @@ Player* WorldObject::SelectNearestPlayer(float distance) const Acore::NearestPlayerInObjectRangeCheck checker(this, distance); Acore::PlayerLastSearcher searcher(this, target, checker); - Cell::VisitWorldObjects(this, searcher, distance); + Cell::VisitObjects(this, searcher, distance); return target; } @@ -2475,35 +2456,35 @@ void WorldObject::GetGameObjectListWithEntryInGrid(std::list& gameo { Acore::AllGameObjectsWithEntryInRange check(this, entry, maxSearchRange); Acore::GameObjectListSearcher searcher(this, gameobjectList, check); - Cell::VisitGridObjects(this, searcher, maxSearchRange); + Cell::VisitObjects(this, searcher, maxSearchRange); } void WorldObject::GetGameObjectListWithEntryInGrid(std::list& gameobjectList, std::vector const& entries, float maxSearchRange) const { Acore::AllGameObjectsMatchingOneEntryInRange check(this, entries, maxSearchRange); Acore::GameObjectListSearcher searcher(this, gameobjectList, check); - Cell::VisitGridObjects(this, searcher, maxSearchRange); + Cell::VisitObjects(this, searcher, maxSearchRange); } void WorldObject::GetCreatureListWithEntryInGrid(std::list& creatureList, uint32 entry, float maxSearchRange) const { Acore::AllCreaturesOfEntryInRange check(this, entry, maxSearchRange); Acore::CreatureListSearcher searcher(this, creatureList, check); - Cell::VisitGridObjects(this, searcher, maxSearchRange); + Cell::VisitObjects(this, searcher, maxSearchRange); } void WorldObject::GetCreatureListWithEntryInGrid(std::list& creatureList, std::vector const& entries, float maxSearchRange) const { Acore::AllCreaturesMatchingOneEntryInRange check(this, entries, maxSearchRange); Acore::CreatureListSearcher searcher(this, creatureList, check); - Cell::VisitGridObjects(this, searcher, maxSearchRange); + Cell::VisitObjects(this, searcher, maxSearchRange); } void WorldObject::GetDeadCreatureListInGrid(std::list& creaturedeadList, float maxSearchRange, bool alive /*= false*/) const { Acore::AllDeadCreaturesInRange check(this, maxSearchRange, alive); Acore::CreatureListSearcher searcher(this, creaturedeadList, check); - Cell::VisitGridObjects(this, searcher, maxSearchRange); + Cell::VisitObjects(this, searcher, maxSearchRange); } /* @@ -2895,7 +2876,7 @@ void WorldObject::PlayRadiusSound(uint32 sound_id, float radius) std::vector targets; Acore::AnyPlayerInObjectRangeCheck check(this, radius, false); Acore::PlayerListSearcher searcher(this, targets, check); - Cell::VisitWorldObjects(this, searcher, radius); + Cell::VisitObjects(this, searcher, radius); for (Player* player : targets) player->SendDirectMessage(WorldPackets::Misc::Playsound(sound_id).Write()); @@ -2914,7 +2895,7 @@ void WorldObject::PlayRadiusMusic(uint32 music_id, float radius) std::vector targets; Acore::AnyPlayerInObjectRangeCheck check(this, radius, false); Acore::PlayerListSearcher searcher(this, targets, check); - Cell::VisitWorldObjects(this, searcher, radius); + Cell::VisitObjects(this, searcher, radius); for (Player* player : targets) player->SendDirectMessage(WorldPackets::Misc::PlayMusic(music_id).Write()); @@ -2942,7 +2923,7 @@ void WorldObject::UpdateObjectVisibility(bool /*forced*/, bool /*fromUpdate*/) { //updates object's visibility for nearby players Acore::VisibleChangesNotifier notifier(*this); - Cell::VisitWorldObjects(this, notifier, GetVisibilityRange()); + Cell::VisitObjects(this, notifier, GetVisibilityRange()); } void WorldObject::AddToNotify(uint16 f) @@ -2990,7 +2971,7 @@ void WorldObject::GetCreaturesWithEntryInRange(std::list& creatureLis { Acore::AllCreaturesOfEntryInRange check(this, entry, radius); Acore::CreatureListSearcher searcher(this, creatureList, check); - Cell::VisitAllObjects(this, searcher, radius); + Cell::VisitObjects(this, searcher, radius); } void WorldObject::AddToObjectUpdate() diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 3441a50a2..1a2cdf384 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -460,7 +460,7 @@ private: class WorldObject : public Object, public WorldLocation { protected: - explicit WorldObject(bool isWorldObject); //note: here it means if it is in grid object list or world object list + explicit WorldObject(); public: ~WorldObject() override; @@ -657,7 +657,6 @@ public: [[nodiscard]] bool IsFarVisible() const { return m_isFarVisible; } [[nodiscard]] bool IsVisibilityOverridden() const { return m_visibilityDistanceOverride.has_value(); } void SetVisibilityDistanceOverride(VisibilityDistanceType type); - [[nodiscard]] bool IsWorldObject() const { return m_isWorldObject; } [[nodiscard]] bool IsInWintergrasp() const { @@ -722,7 +721,6 @@ protected: bool m_isActive; bool m_isFarVisible; Optional m_visibilityDistanceOverride; - const bool m_isWorldObject; ZoneScript* m_zoneScript; virtual void ProcessPositionDataChanged(PositionFullTerrainStatus const& data); diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 300450e7e..dc3316226 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -38,7 +38,7 @@ #include "WorldPacket.h" #include "WorldSession.h" -Pet::Pet(Player* owner, PetType type) : Guardian(nullptr, owner ? owner->GetGUID() : ObjectGuid::Empty, true), +Pet::Pet(Player* owner, PetType type) : Guardian(nullptr, owner ? owner->GetGUID() : ObjectGuid::Empty), m_usedTalentCount(0), m_removed(false), m_owner(owner), @@ -75,7 +75,7 @@ void Pet::AddToWorld() if (!IsInWorld()) { ///- Register the pet for guid lookup - GetMap()->GetObjectsStore().Insert(GetGUID(), this); + GetMap()->GetObjectsStore().Insert(GetGUID(), this); Unit::AddToWorld(); Motion_Initialize(); AIM_Initialize(); @@ -126,7 +126,7 @@ void Pet::RemoveFromWorld() { ///- Don't call the function for Creature, normal mobs + totems go in a different storage Unit::RemoveFromWorld(); - GetMap()->GetObjectsStore().Remove(GetGUID()); + GetMap()->GetObjectsStore().Remove(GetGUID()); } } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b2be1b4b8..6d5e8b24c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -149,7 +149,7 @@ static uint32 copseReclaimDelay[MAX_DEATH_COUNT] = { 30, 60, 120 }; #ifdef _MSC_VER #pragma warning(disable:4355) #endif -Player::Player(WorldSession* session): Unit(true), m_mover(this) +Player::Player(WorldSession* session): Unit(), m_mover(this) { #ifdef _MSC_VER #pragma warning(default:4355) @@ -9381,7 +9381,7 @@ void Player::Say(std::string_view text, Language language, WorldObject const* /* // Special handling for messages, do not use visibility map for stealthed units Acore::MessageDistDeliverer notifier(this, &data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), false, nullptr, true); - Cell::VisitWorldObjects(this, notifier, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY)); + Cell::VisitObjects(this, notifier, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY)); } void Player::Say(uint32 textId, WorldObject const* target /*= nullptr*/) @@ -9407,7 +9407,7 @@ void Player::Yell(std::string_view text, Language language, WorldObject const* / // Special handling for messages, do not use visibility map for stealthed units Acore::MessageDistDeliverer notifier(this, &data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL), false, nullptr, true); - Cell::VisitWorldObjects(this, notifier, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL)); + Cell::VisitObjects(this, notifier, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL)); } void Player::Yell(uint32 textId, WorldObject const* target /*= nullptr*/) @@ -9433,7 +9433,7 @@ void Player::TextEmote(std::string_view text, WorldObject const* /*= nullptr*/, // Special handling for messages, do not use visibility map for stealthed units Acore::MessageDistDeliverer notifier(this, &data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), !sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_EMOTE), nullptr, true); - Cell::VisitWorldObjects(this, notifier, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE)); + Cell::VisitObjects(this, notifier, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE)); } void Player::TextEmote(uint32 textId, WorldObject const* target /*= nullptr*/, bool /*isBossEmote = false*/) diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index 5dba993a7..074dc4923 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -1601,13 +1601,13 @@ void Player::UpdateVisibilityForPlayer(bool mapChange) Acore::VisibleNotifier notifierNoLarge( *this, mapChange, false); // visit only objects which are not large; default distance - Cell::VisitAllObjects(m_seer, notifierNoLarge, + Cell::VisitObjects(m_seer, notifierNoLarge, GetSightRange() + VISIBILITY_INC_FOR_GOBJECTS); notifierNoLarge.SendToSelf(); Acore::VisibleNotifier notifierLarge( *this, mapChange, true); // visit only large objects; maximum distance - Cell::VisitAllObjects(m_seer, notifierLarge, GetSightRange()); + Cell::VisitObjects(m_seer, notifierLarge, GetSightRange()); notifierLarge.SendToSelf(); if (mapChange) diff --git a/src/server/game/Entities/Totem/Totem.cpp b/src/server/game/Entities/Totem/Totem.cpp index 159c5aed7..db4fae0e6 100644 --- a/src/server/game/Entities/Totem/Totem.cpp +++ b/src/server/game/Entities/Totem/Totem.cpp @@ -24,7 +24,7 @@ #include "SpellMgr.h" #include "TotemPackets.h" -Totem::Totem(SummonPropertiesEntry const* properties, ObjectGuid owner) : Minion(properties, owner, false) +Totem::Totem(SummonPropertiesEntry const* properties, ObjectGuid owner) : Minion(properties, owner) { m_unitTypeMask |= UNIT_MASK_TOTEM; m_duration = 0; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c433603fe..f65cdbd97 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -201,7 +201,7 @@ SpellInfo const* ProcEventInfo::GetSpellInfo() const #ifdef _MSC_VER #pragma warning(disable:4355) #endif -Unit::Unit(bool isWorldObject) : WorldObject(isWorldObject), +Unit::Unit() : WorldObject(), m_movedByPlayer(nullptr), m_lastSanctuaryTime(0), IsAIEnabled(false), @@ -17060,7 +17060,7 @@ Unit* Unit::SelectNearbyTarget(Unit* exclude, float dist) const std::list targets; Acore::AnyUnfriendlyUnitInObjectRangeCheck u_check(this, this, dist); Acore::UnitListSearcher searcher(this, targets, u_check); - Cell::VisitAllObjects(this, searcher, dist); + Cell::VisitObjects(this, searcher, dist); // remove current target if (GetVictim()) @@ -17095,7 +17095,7 @@ Unit* Unit::SelectNearbyNoTotemTarget(Unit* exclude, float dist) const std::list targets; Acore::AnyUnfriendlyNoTotemUnitInObjectRangeCheck u_check(this, this, dist); Acore::UnitListSearcher searcher(this, targets, u_check); - Cell::VisitAllObjects(this, searcher, dist); + Cell::VisitObjects(this, searcher, dist); // remove current target if (GetVictim()) @@ -17332,7 +17332,7 @@ void Unit::SetContestedPvP(Player* attackedPlayer, bool lookForNearContestedGuar std::list targets; Acore::NearestVisibleDetectableContestedGuardUnitCheck u_check(this); Acore::UnitListSearcher searcher(this, targets, u_check); - Cell::VisitAllObjects(this, searcher, MAX_AGGRO_RADIUS); + Cell::VisitObjects(this, searcher, MAX_AGGRO_RADIUS); // return if there are no contested guards found if (!targets.size()) @@ -19224,7 +19224,7 @@ void Unit::UpdateObjectVisibility(bool forced, bool /*fromUpdate*/) WorldObject::UpdateObjectVisibility(true); Acore::AIRelocationNotifier notifier(*this); float radius = 60.0f; - Cell::VisitAllObjects(this, notifier, radius); + Cell::VisitObjects(this, notifier, radius); } } @@ -20275,10 +20275,10 @@ void Unit::ExecuteDelayedUnitRelocationEvent() } Acore::PlayerRelocationNotifier relocateNoLarge(*player, false); // visit only objects which are not large; default distance - Cell::VisitAllObjects(viewPoint, relocateNoLarge, player->GetSightRange() + VISIBILITY_INC_FOR_GOBJECTS); + Cell::VisitObjects(viewPoint, relocateNoLarge, player->GetSightRange() + VISIBILITY_INC_FOR_GOBJECTS); relocateNoLarge.SendToSelf(); Acore::PlayerRelocationNotifier relocateLarge(*player, true); // visit only large objects; maximum distance - Cell::VisitAllObjects(viewPoint, relocateLarge, MAX_VISIBILITY_DISTANCE); + Cell::VisitObjects(viewPoint, relocateLarge, MAX_VISIBILITY_DISTANCE); relocateLarge.SendToSelf(); } @@ -20314,13 +20314,13 @@ void Unit::ExecuteDelayedUnitRelocationEvent() GetMap()->LoadGridsInRange(*player, MAX_VISIBILITY_DISTANCE); Acore::PlayerRelocationNotifier relocateNoLarge(*player, false); // visit only objects which are not large; default distance - Cell::VisitAllObjects(viewPoint, relocateNoLarge, player->GetSightRange() + VISIBILITY_INC_FOR_GOBJECTS); + Cell::VisitObjects(viewPoint, relocateNoLarge, player->GetSightRange() + VISIBILITY_INC_FOR_GOBJECTS); relocateNoLarge.SendToSelf(); if (!player->GetFarSightDistance()) { Acore::PlayerRelocationNotifier relocateLarge(*player, true); // visit only large objects; maximum distance - Cell::VisitAllObjects(viewPoint, relocateLarge, MAX_VISIBILITY_DISTANCE); + Cell::VisitObjects(viewPoint, relocateLarge, MAX_VISIBILITY_DISTANCE); relocateLarge.SendToSelf(); } @@ -20342,7 +20342,7 @@ void Unit::ExecuteDelayedUnitRelocationEvent() unit->m_last_notify_position.Relocate(unit->GetPositionX(), unit->GetPositionY(), unit->GetPositionZ()); Acore::CreatureRelocationNotifier relocate(*unit); - Cell::VisitAllObjects(unit, relocate, unit->GetVisibilityRange() + VISIBILITY_COMPENSATION); + Cell::VisitObjects(unit, relocate, unit->GetVisibilityRange() + VISIBILITY_COMPENSATION); this->AddToNotify(NOTIFY_AI_RELOCATION); } @@ -20356,7 +20356,7 @@ void Unit::ExecuteDelayedUnitAINotifyEvent() Acore::AIRelocationNotifier notifier(*this); float radius = 60.0f; - Cell::VisitAllObjects(this, notifier, radius); + Cell::VisitObjects(this, notifier, radius); } void Unit::SetInFront(WorldObject const* target) @@ -20992,7 +20992,7 @@ void Unit::Talk(std::string_view text, ChatMsg msgType, Language language, float Acore::CustomChatTextBuilder builder(this, msgType, text, language, target); Acore::LocalizedPacketDo localizer(builder); Acore::PlayerDistWorker > worker(this, textRange, localizer); - Cell::VisitWorldObjects(this, worker, textRange); + Cell::VisitObjects(this, worker, textRange); } void Unit::Say(std::string_view text, Language language, WorldObject const* target /*= nullptr*/) @@ -21050,7 +21050,7 @@ void Unit::Talk(uint32 textId, ChatMsg msgType, float textRange, WorldObject con Acore::BroadcastTextBuilder builder(this, msgType, textId, getGender(), target); Acore::LocalizedPacketDo localizer(builder); Acore::PlayerDistWorker > worker(this, textRange, localizer); - Cell::VisitWorldObjects(this, worker, textRange); + Cell::VisitObjects(this, worker, textRange); } void Unit::Say(uint32 textId, WorldObject const* target /*= nullptr*/) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 4dc7cb585..302f88253 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2029,7 +2029,7 @@ public: Movement::MoveSpline* movespline; protected: - explicit Unit (bool isWorldObject); + explicit Unit(); void BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) override; diff --git a/src/server/game/Grids/Cells/Cell.h b/src/server/game/Grids/Cells/Cell.h index b3c5747a7..89676468d 100644 --- a/src/server/game/Grids/Cells/Cell.h +++ b/src/server/game/Grids/Cells/Cell.h @@ -103,13 +103,8 @@ struct Cell static CellArea CalculateCellArea(float x, float y, float radius); - template static void VisitGridObjects(WorldObject const* obj, T& visitor, float radius); - template static void VisitWorldObjects(WorldObject const* obj, T& visitor, float radius); - template static void VisitAllObjects(WorldObject const* obj, T& visitor, float radius); - - template static void VisitGridObjects(float x, float y, Map* map, T& visitor, float radius); - template static void VisitWorldObjects(float x, float y, Map* map, T& visitor, float radius); - template static void VisitAllObjects(float x, float y, Map* map, T& visitor, float radius); + template static void VisitObjects(WorldObject const* obj, T& visitor, float radius); + template static void VisitObjects(float x, float y, Map* map, T& visitor, float radius); private: template void VisitCircle(TypeContainerVisitor&, Map&, CellCoord const&, CellCoord const&) const; diff --git a/src/server/game/Grids/Cells/CellImpl.h b/src/server/game/Grids/Cells/CellImpl.h index ede2817b2..d3f97a09d 100644 --- a/src/server/game/Grids/Cells/CellImpl.h +++ b/src/server/game/Grids/Cells/CellImpl.h @@ -162,7 +162,7 @@ inline void Cell::VisitCircle(TypeContainerVisitor& visitor, Map& } template -inline void Cell::VisitGridObjects(WorldObject const* center_obj, T& visitor, float radius) +inline void Cell::VisitObjects(WorldObject const* center_obj, T& visitor, float radius) { CellCoord p(Acore::ComputeCellCoord(center_obj->GetPositionX(), center_obj->GetPositionY())); Cell cell(p); @@ -172,29 +172,7 @@ inline void Cell::VisitGridObjects(WorldObject const* center_obj, T& visitor, fl } template -inline void Cell::VisitWorldObjects(WorldObject const* center_obj, T& visitor, float radius) -{ - CellCoord p(Acore::ComputeCellCoord(center_obj->GetPositionX(), center_obj->GetPositionY())); - Cell cell(p); - - TypeContainerVisitor wnotifier(visitor); - cell.Visit(p, wnotifier, *center_obj->GetMap(), *center_obj, radius); -} - -template -inline void Cell::VisitAllObjects(WorldObject const* center_obj, T& visitor, float radius) -{ - CellCoord p(Acore::ComputeCellCoord(center_obj->GetPositionX(), center_obj->GetPositionY())); - Cell cell(p); - - TypeContainerVisitor wnotifier(visitor); - cell.Visit(p, wnotifier, *center_obj->GetMap(), *center_obj, radius); - TypeContainerVisitor gnotifier(visitor); - cell.Visit(p, gnotifier, *center_obj->GetMap(), *center_obj, radius); -} - -template -inline void Cell::VisitGridObjects(float x, float y, Map* map, T& visitor, float radius) +inline void Cell::VisitObjects(float x, float y, Map* map, T& visitor, float radius) { CellCoord p(Acore::ComputeCellCoord(x, y)); Cell cell(p); @@ -203,26 +181,4 @@ inline void Cell::VisitGridObjects(float x, float y, Map* map, T& visitor, float cell.Visit(p, gnotifier, *map, x, y, radius); } -template -inline void Cell::VisitWorldObjects(float x, float y, Map* map, T& visitor, float radius) -{ - CellCoord p(Acore::ComputeCellCoord(x, y)); - Cell cell(p); - - TypeContainerVisitor wnotifier(visitor); - cell.Visit(p, wnotifier, *map, x, y, radius); -} - -template -inline void Cell::VisitAllObjects(float x, float y, Map* map, T& visitor, float radius) -{ - CellCoord p(Acore::ComputeCellCoord(x, y)); - Cell cell(p); - - TypeContainerVisitor wnotifier(visitor); - cell.Visit(p, wnotifier, *map, x, y, radius); - TypeContainerVisitor gnotifier(visitor); - cell.Visit(p, gnotifier, *map, x, y, radius); -} - #endif diff --git a/src/server/game/Grids/GridCell.h b/src/server/game/Grids/GridCell.h index c0ccfdbba..62ff76545 100644 --- a/src/server/game/Grids/GridCell.h +++ b/src/server/game/Grids/GridCell.h @@ -35,7 +35,6 @@ template < - class WORLD_OBJECT_TYPES, class GRID_OBJECT_TYPES > class GridCell @@ -43,12 +42,6 @@ class GridCell public: ~GridCell() = default; - template void AddWorldObject(SPECIFIC_OBJECT* obj) - { - _worldObjects.template insert(obj); - ASSERT(obj->IsInGrid()); - } - template void AddGridObject(SPECIFIC_OBJECT* obj) { _gridObjects.template insert(obj); @@ -62,14 +55,7 @@ public: visitor.Visit(_gridObjects); } - // Visit world objects - template - void Visit(TypeContainerVisitor >& visitor) - { - visitor.Visit(_worldObjects); - } private: TypeMapContainer _gridObjects; - TypeMapContainer _worldObjects; }; #endif diff --git a/src/server/game/Grids/GridDefines.h b/src/server/game/Grids/GridDefines.h index b70353112..6918d2b1a 100644 --- a/src/server/game/Grids/GridDefines.h +++ b/src/server/game/Grids/GridDefines.h @@ -51,10 +51,11 @@ class ObjectGuid; #define MAP_SIZE (SIZE_OF_GRIDS*MAX_NUMBER_OF_GRIDS) #define MAP_HALFSIZE (MAP_SIZE/2) -// Creature used instead pet to simplify *::Visit templates (not required duplicate code for Creature->Pet case) -typedef TYPELIST_4(GameObject, Player, Creature/*pets*/, Corpse/*resurrectable*/) AllWorldObjectTypes; -typedef TYPELIST_4(GameObject, Creature/*except pets*/, DynamicObject, Corpse/*Bones*/) AllGridObjectTypes; -typedef TYPELIST_5(Creature, GameObject, DynamicObject, Pet, Corpse) AllMapStoredObjectTypes; +// List of object types stored in a map grid +typedef TYPELIST_5(GameObject, Player, Creature, Corpse, DynamicObject) AllMapGridStoredObjectTypes; + +// List of object types stored on map level +typedef TYPELIST_4(Creature, GameObject, DynamicObject, Corpse) AllMapStoredObjectTypes; typedef GridRefMgr CorpseMapType; typedef GridRefMgr CreatureMapType; @@ -72,11 +73,10 @@ enum GridMapTypeMask GRID_MAP_TYPE_MASK_ALL = 0x1F }; -typedef GridCell GridCellType; -typedef MapGrid MapGridType; +typedef GridCell GridCellType; +typedef MapGrid MapGridType; -typedef TypeMapContainer GridTypeMapContainer; -typedef TypeMapContainer WorldTypeMapContainer; +typedef TypeMapContainer GridTypeMapContainer; typedef TypeUnorderedMapContainer MapStoredObjectTypesContainer; template diff --git a/src/server/game/Grids/GridObjectLoader.cpp b/src/server/game/Grids/GridObjectLoader.cpp index 248551069..6a5b4b736 100644 --- a/src/server/game/Grids/GridObjectLoader.cpp +++ b/src/server/game/Grids/GridObjectLoader.cpp @@ -30,7 +30,7 @@ void GridObjectLoader::AddObjectHelper(Map* map, T* obj) CellCoord cellCoord = Acore::ComputeCellCoord(obj->GetPositionX(), obj->GetPositionY()); Cell cell(cellCoord); - map->AddToGrid(obj, cell); + map->AddToGrid(obj, cell); obj->AddToWorld(); } @@ -53,7 +53,7 @@ void GridObjectLoader::LoadCreatures(CellGuidSet const& guid_set, Map* map) { // call MoveInLineOfSight for nearby grid creatures Acore::AIRelocationNotifier notifier(*obj); - Cell::VisitGridObjects(obj, notifier, 60.f); + Cell::VisitObjects(obj, notifier, 60.f); } } } diff --git a/src/server/game/Grids/GridObjectLoader.h b/src/server/game/Grids/GridObjectLoader.h index 101f489bf..ec6044731 100644 --- a/src/server/game/Grids/GridObjectLoader.h +++ b/src/server/game/Grids/GridObjectLoader.h @@ -47,6 +47,7 @@ class GridObjectCleaner { public: template void Visit(GridRefMgr&); + void Visit(PlayerMapType&) { } }; // Delete objects before deleting NGrid @@ -54,6 +55,7 @@ class GridObjectUnloader { public: void Visit(CorpseMapType&) { } // corpses are deleted with Map + void Visit(PlayerMapType&) { } template void Visit(GridRefMgr& m); }; #endif diff --git a/src/server/game/Grids/MapGrid.h b/src/server/game/Grids/MapGrid.h index 9c6b33c91..b6dda486c 100644 --- a/src/server/game/Grids/MapGrid.h +++ b/src/server/game/Grids/MapGrid.h @@ -25,13 +25,12 @@ class GridTerrainData; template < - class WORLD_OBJECT_TYPES, class GRID_OBJECT_TYPES > class MapGrid { public: - typedef GridCell GridCellType; + typedef GridCell GridCellType; MapGrid(uint16 const x, uint16 const y) : _x(x), _y(y), _objectDataLoaded(false), _terrainData(nullptr) { } @@ -45,16 +44,6 @@ public: bool IsObjectDataLoaded() const { return _objectDataLoaded; } void SetObjectDataLoaded() { _objectDataLoaded = true; } - template void AddWorldObject(uint16 const x, uint16 const y, SPECIFIC_OBJECT* obj) - { - GetOrCreateCell(x, y).AddWorldObject(obj); - } - - template void RemoveWorldObject(uint16 const x, uint16 const y, SPECIFIC_OBJECT* obj) - { - GetOrCreateCell(x, y).RemoveWorldObject(obj); - } - template void AddGridObject(uint16 const x, uint16 const y, SPECIFIC_OBJECT* obj) { GetOrCreateCell(x, y).AddGridObject(obj); @@ -92,7 +81,7 @@ public: gridCell->Visit(visitor); } - void link(GridRefMgr>* pTo) + void link(GridRefMgr>* pTo) { _gridReference.link(pTo, this); } @@ -145,7 +134,7 @@ private: bool _objectDataLoaded; std::array, MAX_NUMBER_OF_CELLS>, MAX_NUMBER_OF_CELLS> _cells; // N * N array - GridReference> _gridReference; + GridReference> _gridReference; // Instances will share a copy of the parent maps terrainData std::shared_ptr _terrainData; diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 4e4917ba1..04337cd9c 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -780,7 +780,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData) Acore::EmoteChatBuilder emote_builder(*GetPlayer(), text_emote, emoteNum, unit); Acore::LocalizedPacketDo emote_do(emote_builder); Acore::PlayerDistWorker > emote_worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), emote_do); - Cell::VisitWorldObjects(GetPlayer(), emote_worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE)); + Cell::VisitObjects(GetPlayer(), emote_worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE)); GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE, text_emote, 0, unit); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 621661357..e06a22d64 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -55,16 +55,6 @@ Map::~Map() sScriptMgr->OnDestroyMap(this); - while (!i_worldObjects.empty()) - { - WorldObject* obj = *i_worldObjects.begin(); - ASSERT(obj->IsWorldObject()); - LOG_DEBUG("maps", "Map::~Map: WorldObject TypeId is not a corpse! ({})", static_cast(obj->GetTypeId())); - //ASSERT(obj->IsCorpse()); - obj->RemoveFromWorld(); - obj->ResetMap(); - } - if (!m_scriptSchedule.empty()) sScriptMgr->DecreaseScheduledScriptCount(m_scriptSchedule.size()); @@ -116,20 +106,16 @@ template void Map::AddToGrid(T* obj, Cell const& cell) { MapGridType* grid = GetMapGrid(cell.GridX(), cell.GridY()); - if (obj->IsWorldObject()) - grid->AddWorldObject(cell.CellX(), cell.CellY(), obj); - else - grid->AddGridObject(cell.CellX(), cell.CellY(), obj); + grid->AddGridObject(cell.CellX(), cell.CellY(), obj); + + obj->SetCurrentCell(cell); } template<> void Map::AddToGrid(Creature* obj, Cell const& cell) { MapGridType* grid = GetMapGrid(cell.GridX(), cell.GridY()); - if (obj->IsWorldObject()) - grid->AddWorldObject(cell.CellX(), cell.CellY(), obj); - else - grid->AddGridObject(cell.CellX(), cell.CellY(), obj); + grid->AddGridObject(cell.CellX(), cell.CellY(), obj); obj->SetCurrentCell(cell); } @@ -144,15 +130,10 @@ void Map::AddToGrid(GameObject* obj, Cell const& cell) } template<> -void Map::AddToGrid(DynamicObject* obj, Cell const& cell) +void Map::AddToGrid(Player* obj, Cell const& cell) { MapGridType* grid = GetMapGrid(cell.GridX(), cell.GridY()); - if (obj->IsWorldObject()) - grid->AddWorldObject(cell.CellX(), cell.CellY(), obj); - else - grid->AddGridObject(cell.CellX(), cell.CellY(), obj); - - obj->SetCurrentCell(cell); + grid->AddGridObject(cell.CellX(), cell.CellY(), obj); } template<> @@ -166,12 +147,7 @@ void Map::AddToGrid(Corpse* obj, Cell const& cell) // so we need to explicitly check it here (Map::AddToGrid is only called from Player::BuildPlayerRepop, not from ObjectGridLoader) // to avoid failing an assertion in GridObject::AddToGrid if (grid->IsObjectDataLoaded()) - { - if (obj->IsWorldObject()) - grid->AddWorldObject(cell.CellX(), cell.CellY(), obj); - else - grid->AddGridObject(cell.CellX(), cell.CellY(), obj); - } + grid->AddGridObject(cell.CellX(), cell.CellY(), obj); } template @@ -2315,7 +2291,7 @@ GameObject* Map::GetGameObject(ObjectGuid const guid) Pet* Map::GetPet(ObjectGuid const guid) { - return _objectsStore.Find(guid); + return dynamic_cast(_objectsStore.Find(guid)); } Transport* Map::GetTransport(ObjectGuid guid) diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index d5bb8c6b5..fb24b0924 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -315,9 +315,6 @@ public: [[nodiscard]] bool HavePlayers() const { return !m_mapRefMgr.IsEmpty(); } [[nodiscard]] uint32 GetPlayersCountExceptGMs() const; - void AddWorldObject(WorldObject* obj) { i_worldObjects.insert(obj); } - void RemoveWorldObject(WorldObject* obj) { i_worldObjects.erase(obj); } - void SendToPlayers(WorldPacket const* data) const; typedef MapRefMgr PlayerList; @@ -560,7 +557,6 @@ private: bool i_scriptLock; std::unordered_set i_objectsToRemove; - std::unordered_set i_worldObjects; typedef std::multimap ScriptScheduleMap; ScriptScheduleMap m_scriptSchedule; diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index bc55486c0..330d99c3f 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -336,7 +336,7 @@ bool OPvPCapturePoint::Update(uint32 diff) std::list players; Acore::AnyPlayerInObjectRangeCheck checker(_capturePoint, radius); Acore::PlayerListSearcher searcher(_capturePoint, players, checker); - Cell::VisitWorldObjects(_capturePoint, searcher, radius); + Cell::VisitObjects(_capturePoint, searcher, radius); for (auto& itr : players) { diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 740e51877..eb470bd9e 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2838,7 +2838,7 @@ void AuraEffect::HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, boo UnitList targets; Acore::AnyUnfriendlyUnitInObjectRangeCheck u_check(target, target, target->GetVisibilityRange()); // no VISIBILITY_COMPENSATION, distance is enough Acore::UnitListSearcher searcher(target, targets, u_check); - Cell::VisitAllObjects(target, searcher, target->GetMap()->GetVisibilityRange()); + Cell::VisitObjects(target, searcher, target->GetMap()->GetVisibilityRange()); for (UnitList::iterator iter = targets.begin(); iter != targets.end(); ++iter) { if (!(*iter)->HasUnitState(UNIT_STATE_CASTING)) @@ -5631,7 +5631,7 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool Player* player = nullptr; Acore::AnyPlayerInObjectRangeCheck checker(target, 10.0f); Acore::PlayerSearcher searcher(target, player, checker); - Cell::VisitWorldObjects(target, searcher, 10.0f); + Cell::VisitObjects(target, searcher, 10.0f); if (player && player->GetGUID() != target->GetGUID()) target->CastSpell(player, 52921, true); @@ -7365,7 +7365,7 @@ void AuraEffect::HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurA Unit* triggerTarget = nullptr; Acore::MostHPMissingGroupInRange u_check(target, radius, 0); Acore::UnitLastSearcher searcher(target, triggerTarget, u_check); - Cell::VisitAllObjects(target, searcher, radius); + Cell::VisitObjects(target, searcher, radius); if (triggerTarget) { diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 8ffbfde8a..02758c1b9 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -2823,7 +2823,7 @@ void UnitAura::FillTargetMap(std::map& targets, Unit* caster) targetList.push_back(GetUnitOwner()); Acore::AnyGroupedUnitInObjectRangeCheck u_check(GetUnitOwner(), GetUnitOwner(), radius, GetSpellInfo()->Effects[effIndex].Effect == SPELL_EFFECT_APPLY_AREA_AURA_RAID); Acore::UnitListSearcher searcher(GetUnitOwner(), targetList, u_check); - Cell::VisitAllObjects(GetUnitOwner(), searcher, radius); + Cell::VisitObjects(GetUnitOwner(), searcher, radius); break; } case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND: @@ -2831,14 +2831,14 @@ void UnitAura::FillTargetMap(std::map& targets, Unit* caster) targetList.push_back(GetUnitOwner()); Acore::AnyFriendlyUnitInObjectRangeCheck u_check(GetUnitOwner(), GetUnitOwner(), radius); Acore::UnitListSearcher searcher(GetUnitOwner(), targetList, u_check); - Cell::VisitAllObjects(GetUnitOwner(), searcher, radius); + Cell::VisitObjects(GetUnitOwner(), searcher, radius); break; } case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY: { Acore::AnyAoETargetUnitInObjectRangeCheck u_check(GetUnitOwner(), GetUnitOwner(), radius); // No GetCharmer in searcher Acore::UnitListSearcher searcher(GetUnitOwner(), targetList, u_check); - Cell::VisitAllObjects(GetUnitOwner(), searcher, radius); + Cell::VisitObjects(GetUnitOwner(), searcher, radius); break; } case SPELL_EFFECT_APPLY_AREA_AURA_PET: @@ -2900,7 +2900,7 @@ void DynObjAura::FillTargetMap(std::map& targets, Unit* /*caster*/ { Acore::AnyFriendlyUnitInObjectRangeCheck u_check(GetDynobjOwner(), dynObjOwnerCaster, radius); Acore::UnitListSearcher searcher(GetDynobjOwner(), targetList, u_check); - Cell::VisitAllObjects(GetDynobjOwner(), searcher, radius); + Cell::VisitObjects(GetDynobjOwner(), searcher, radius); } // pussywizard: TARGET_DEST_DYNOBJ_NONE is supposed to search for both friendly and unfriendly targets, so for any unit // what about EffectImplicitTargetA? @@ -2908,13 +2908,13 @@ void DynObjAura::FillTargetMap(std::map& targets, Unit* /*caster*/ { Acore::AnyAttackableUnitExceptForOriginalCasterInObjectRangeCheck u_check(GetDynobjOwner(), dynObjOwnerCaster, radius); Acore::UnitListSearcher searcher(GetDynobjOwner(), targetList, u_check); - Cell::VisitAllObjects(GetDynobjOwner(), searcher, radius); + Cell::VisitObjects(GetDynobjOwner(), searcher, radius); } else { Acore::AnyAoETargetUnitInObjectRangeCheck u_check(GetDynobjOwner(), dynObjOwnerCaster, radius); Acore::UnitListSearcher searcher(GetDynobjOwner(), targetList, u_check); - Cell::VisitAllObjects(GetDynobjOwner(), searcher, radius); + Cell::VisitObjects(GetDynobjOwner(), searcher, radius); } for (UnitList::iterator itr = targetList.begin(); itr != targetList.end(); ++itr) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 439713ee7..9ad08dd7b 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2161,24 +2161,7 @@ void Spell::SearchTargets(SEARCHER& searcher, uint32 containerMask, Unit* refere if (!containerMask) return; - // search world and grid for possible targets - bool searchInGrid = containerMask & (GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_GAMEOBJECT); - bool searchInWorld = containerMask & (GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER | GRID_MAP_TYPE_MASK_CORPSE); - - if (searchInGrid || searchInWorld) - { - float x, y; - x = pos->GetPositionX(); - y = pos->GetPositionY(); - - Map* map = referer->GetMap(); - - if (searchInWorld) - Cell::VisitWorldObjects(x, y, map, searcher, radius); - - if (searchInGrid) - Cell::VisitGridObjects(x, y, map, searcher, radius); - } + Cell::VisitObjects(pos->GetPositionX(), pos->GetPositionY(), referer->GetMap(), searcher, radius); } WorldObject* Spell::SearchNearbyTarget(float range, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectionType, ConditionList* condList) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index dbacbb56b..d8dcba2d5 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1854,7 +1854,7 @@ void Spell::EffectPersistentAA(SpellEffIndex effIndex) // Caster not in world, might be spell triggered from aura removal if (!caster->IsInWorld() || !caster->FindMap() || !ObjectAccessor::GetUnit(*caster, caster->GetGUID())) // pussywizard: temporary crash fix (FindMap and GetUnit are mine) return; - DynamicObject* dynObj = new DynamicObject(false); + DynamicObject* dynObj = new DynamicObject(); if (!dynObj->CreateDynamicObject(caster->GetMap()->GenerateLowGuid(), caster, m_spellInfo->Id, *destTarget, radius, DYNAMIC_OBJECT_AREA_SPELL)) { delete dynObj; @@ -2731,7 +2731,7 @@ void Spell::EffectAddFarsight(SpellEffIndex effIndex) // Remove old farsight if exist bool updateViewerVisibility = m_caster->RemoveDynObject(m_spellInfo->Id); - DynamicObject* dynObj = new DynamicObject(false); + DynamicObject* dynObj = new DynamicObject(); if (!dynObj->CreateDynamicObject(m_caster->GetMap()->GenerateLowGuid(), m_caster, m_spellInfo->Id, *destTarget, radius, DYNAMIC_OBJECT_FARSIGHT_FOCUS)) { delete dynObj; @@ -4043,7 +4043,7 @@ void Spell::EffectSanctuary(SpellEffIndex /*effIndex*/) UnitList targets; Acore::AnyUnfriendlyUnitInObjectRangeCheck u_check(unitTarget, unitTarget, unitTarget->GetVisibilityRange()); // no VISIBILITY_COMPENSATION, distance is enough Acore::UnitListSearcher searcher(unitTarget, targets, u_check); - Cell::VisitAllObjects(unitTarget, searcher, unitTarget->GetVisibilityRange()); + Cell::VisitObjects(unitTarget, searcher, unitTarget->GetVisibilityRange()); for (UnitList::iterator iter = targets.begin(); iter != targets.end(); ++iter) { if (!(*iter)->HasUnitState(UNIT_STATE_CASTING)) @@ -4778,7 +4778,7 @@ void Spell::EffectForceDeselect(SpellEffIndex /*effIndex*/) float dist = m_caster->GetVisibilityRange() + VISIBILITY_COMPENSATION; Acore::MessageDistDelivererToHostile notifier(m_caster, &data, dist); - Cell::VisitWorldObjects(m_caster, notifier, dist); + Cell::VisitObjects(m_caster, notifier, dist); // xinef: we should also force pets to remove us from current target Unit::AttackerSet attackerSet; @@ -4803,7 +4803,7 @@ void Spell::EffectForceDeselect(SpellEffIndex /*effIndex*/) UnitList targets; Acore::AnyUnfriendlyUnitInObjectRangeCheck u_check(m_caster, m_caster, m_caster->GetVisibilityRange()); // no VISIBILITY_COMPENSATION, distance is enough Acore::UnitListSearcher searcher(m_caster, targets, u_check); - Cell::VisitAllObjects(m_caster, searcher, m_caster->GetVisibilityRange()); + Cell::VisitObjects(m_caster, searcher, m_caster->GetVisibilityRange()); for (UnitList::iterator iter = targets.begin(); iter != targets.end(); ++iter) { if (!(*iter)->HasUnitState(UNIT_STATE_CASTING)) diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h index f88179d45..d84d91c8d 100644 --- a/src/server/game/Texts/CreatureTextMgr.h +++ b/src/server/game/Texts/CreatureTextMgr.h @@ -251,7 +251,7 @@ void CreatureTextMgr::SendChatPacket(WorldObject* source, Builder const& builder dist = 250.0f; Acore::PlayerDistWorker > worker(source, dist, localizer); - Cell::VisitWorldObjects(source, worker, dist); + Cell::VisitObjects(source, worker, dist); } #endif diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 33acdde9a..3198936fa 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -911,7 +911,7 @@ public: Creature* passenger = nullptr; Acore::AllCreaturesOfEntryInRange check(handler->GetPlayer(), entry, 20.0f); Acore::CreatureSearcher 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; diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 5ea7ce706..41546214c 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -2451,7 +2451,7 @@ public: Acore::RespawnDo u_do; Acore::WorldObjectWorker worker(player, u_do); - Cell::VisitGridObjects(player, worker, player->GetGridActivationRange()); + Cell::VisitObjects(player, worker, player->GetGridActivationRange()); return true; } diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp index f195c8f26..20b9fadff 100644 --- a/src/server/scripts/Commands/cs_mmaps.cpp +++ b/src/server/scripts/Commands/cs_mmaps.cpp @@ -268,7 +268,7 @@ public: std::list creatureList; Acore::AnyUnitInObjectRangeCheck go_check(object, radius); Acore::CreatureListSearcher go_search(object, creatureList, go_check); - Cell::VisitGridObjects(object, go_search, radius); + Cell::VisitObjects(object, go_search, radius); if (!creatureList.empty()) { diff --git a/src/server/scripts/Events/brewfest.cpp b/src/server/scripts/Events/brewfest.cpp index abdce6bf1..e0b01c49f 100644 --- a/src/server/scripts/Events/brewfest.cpp +++ b/src/server/scripts/Events/brewfest.cpp @@ -793,7 +793,7 @@ struct npc_brewfest_super_brew_trigger : public ScriptedAI Player* player = nullptr; Acore::AnyPlayerInObjectRangeCheck checker(me, 2.0f); Acore::PlayerSearcher 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); diff --git a/src/server/scripts/Events/hallows_end.cpp b/src/server/scripts/Events/hallows_end.cpp index adb1c3495..06d649291 100644 --- a/src/server/scripts/Events/hallows_end.cpp +++ b/src/server/scripts/Events/hallows_end.cpp @@ -807,7 +807,7 @@ struct npc_hallows_end_soh : public ScriptedAI std::list players; Acore::AnyPlayerInObjectRangeCheck checker(me, 60.f); Acore::PlayerListSearcher 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 players; Acore::AnyPlayerInObjectRangeCheck checker(me, radius); Acore::PlayerListSearcher searcher(me, players, checker); - Cell::VisitWorldObjects(me, searcher, radius); + Cell::VisitObjects(me, searcher, radius); for (Player* player : players) { diff --git a/src/server/scripts/Events/love_in_air.cpp b/src/server/scripts/Events/love_in_air.cpp index 9fbeed766..6c5a2aedb 100644 --- a/src/server/scripts/Events/love_in_air.cpp +++ b/src/server/scripts/Events/love_in_air.cpp @@ -407,7 +407,7 @@ class spell_love_is_in_the_air_romantic_picnic : public AuraScript std::list playerList; Acore::AnyPlayerInObjectRangeCheck checker(target, INTERACTION_DISTANCE * 2); Acore::PlayerListSearcher searcher(target, playerList, checker); - Cell::VisitWorldObjects(target, searcher, INTERACTION_DISTANCE * 2); + Cell::VisitObjects(target, searcher, INTERACTION_DISTANCE * 2); for (std::list::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr) { if ((*itr) != target && (*itr)->HasAura(GetId())) // && (*itr)->getStandState() == UNIT_STAND_STATE_SIT) diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp index 3504b6cdb..2dfebf46b 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp @@ -198,7 +198,7 @@ public: std::list ClusterList; Acore::AllWorldObjectsInRange objects(me, 50.0f); Acore::WorldObjectListSearcher searcher(me, ClusterList, objects); - Cell::VisitAllObjects(me, searcher, 50.0f); + Cell::VisitObjects(me, searcher, 50.0f); for (std::list::const_iterator itr = ClusterList.begin(); itr != ClusterList.end(); ++itr) { if (Player* player = (*itr)->ToPlayer()) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index f614d7385..43d741174 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -178,7 +178,7 @@ struct boss_ouro : public BossAI std::list targets; Acore::AllWorldObjectsInRange checker(me, 10.0f); Acore::WorldObjectListSearcher searcher(me, targets, checker); - Cell::VisitAllObjects(me, searcher, 10.0f); + Cell::VisitObjects(me, searcher, 10.0f); for (WorldObject* target : targets) { diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp index ff983a781..397e7b611 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp @@ -498,7 +498,7 @@ class spell_zulfarrak_unlocking : public SpellScript std::list cagesList; Acore::AllWorldObjectsInRange objects(GetCaster(), 15.0f); Acore::WorldObjectListSearcher searcher(GetCaster(), cagesList, objects); - Cell::VisitAllObjects(GetCaster(), searcher, 15.0f); + Cell::VisitObjects(GetCaster(), searcher, 15.0f); for (std::list::const_iterator itr = cagesList.begin(); itr != cagesList.end(); ++itr) { if (GameObject* go = (*itr)->ToGameObject()) diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index deb8d256b..bd6543ffb 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -653,7 +653,7 @@ public: Unit* unit = nullptr; Acore::MostHPMissingInRange u_check(me, 40.f, 1500); Acore::UnitLastSearcher 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 searcher(me, unit, u_check); - Cell::VisitGridObjects(me, searcher, 40.f); + Cell::VisitObjects(me, searcher, 40.f); if (unit) { DoCast(unit, SPELL_RENEW); diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp index 915ce0f54..2bf790318 100644 --- a/src/server/scripts/Kalimdor/zone_moonglade.cpp +++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp @@ -333,7 +333,7 @@ public: std::list playerOnQuestList; Acore::AnyPlayerInObjectRangeCheck checker(me, 5.0f); Acore::PlayerListSearcher searcher(me, playerOnQuestList, checker); - Cell::VisitWorldObjects(me, searcher, 5.0f); + Cell::VisitObjects(me, searcher, 5.0f); for (std::list::const_iterator itr = playerOnQuestList.begin(); itr != playerOnQuestList.end(); ++itr) { // Check if found player target has active quest diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index e07e75cb4..d74698910 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -673,7 +673,7 @@ public: // Reset The Frozen Throne gameobjects FrozenThroneResetWorker reset; Acore::GameObjectWorker 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); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index 38fc76ba4..75bdea092 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -224,7 +224,7 @@ public: bool Execute(uint64 /*currTime*/, uint32 /*diff*/) override { Acore::CreatureWorker 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 archmages; RisenArchmageCheck check; Acore::CreatureListSearcher searcher(me, archmages, check); - Cell::VisitGridObjects(me, searcher, 100.0f); + Cell::VisitObjects(me, searcher, 100.0f); for (std::list::iterator itr = archmages.begin(); itr != archmages.end(); ++itr) (*itr)->AI()->DoAction(ACTION_ENTER_COMBAT); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index b39491e89..5c6e30831 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -856,7 +856,7 @@ public: std::list temp; FrostwingVrykulSearcher check(me, 150.0f); Acore::CreatureListSearcher searcher(me, temp, check); - Cell::VisitGridObjects(me, searcher, 150.0f); + Cell::VisitObjects(me, searcher, 150.0f); _aliveTrash.clear(); for (std::list::iterator itr = temp.begin(); itr != temp.end(); ++itr) @@ -901,14 +901,14 @@ public: Player* player = nullptr; Acore::AnyPlayerInObjectRangeCheck check(me, 140.0f); Acore::PlayerSearcher 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 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 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 worker(crok, respawner); - Cell::VisitGridObjects(crok, worker, 333.0f); + Cell::VisitObjects(crok, worker, 333.0f); return true; } else diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 062d95b7b..77d1053fc 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1665,7 +1665,7 @@ class spell_vehicle_throw_passenger : public SpellScript std::list targetList; Acore::WorldObjectSpellAreaTargetCheck check(99, GetExplTargetDest(), GetCaster(), GetCaster(), GetSpellInfo(), TARGET_CHECK_DEFAULT, nullptr); Acore::WorldObjectListSearcher 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::iterator itr = targetList.begin(); itr != targetList.end(); ++itr) diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index fd6128577..2faac7047 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -1067,7 +1067,7 @@ public: go->Delete(); WretchedGhoulCleaner cleaner; Acore::CreatureWorker 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 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)) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index d3c85a929..712b8ad57 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -615,7 +615,7 @@ bool OPvPCapturePointNA::Update(uint32 diff) std::list players; Acore::AnyPlayerInObjectRangeCheck checker(_capturePoint, radius); Acore::PlayerListSearcher searcher(_capturePoint, players, checker); - Cell::VisitWorldObjects(_capturePoint, searcher, radius); + Cell::VisitObjects(_capturePoint, searcher, radius); for (Player* player : players) { diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index 2330482bd..16e37a698 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -699,7 +699,7 @@ public: std::list ClusterList; Acore::AllWorldObjectsInRange objects(me, searchDistance); Acore::WorldObjectListSearcher searcher(me, ClusterList, objects); - Cell::VisitAllObjects(me, searcher, searchDistance); + Cell::VisitObjects(me, searcher, searchDistance); for (std::list::const_iterator i = ClusterList.begin(); i != ClusterList.end(); ++i) { diff --git a/src/server/scripts/Pet/pet_dk.cpp b/src/server/scripts/Pet/pet_dk.cpp index 8a12527a8..c2eedba77 100644 --- a/src/server/scripts/Pet/pet_dk.cpp +++ b/src/server/scripts/Pet/pet_dk.cpp @@ -174,7 +174,7 @@ struct npc_pet_dk_ebon_gargoyle : ScriptedAI std::list targets; Acore::AnyUnfriendlyUnitInObjectRangeCheck u_check(me, me, 50.0f); Acore::UnitListSearcher 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())) { diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 5b74ac87d..f6c7e45ac 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -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 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; diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 9a375c846..d3325403a 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -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 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; diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 7d869c9ce..b6dae13a2 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1876,7 +1876,7 @@ class spell_q11010_q11102_q11023_choose_loc : public SpellScript std::list playerList; Acore::AnyPlayerInObjectRangeCheck checker(caster, 65.0f); Acore::PlayerListSearcher searcher(caster, playerList, checker); - Cell::VisitWorldObjects(caster, searcher, 65.0f); + Cell::VisitObjects(caster, searcher, 65.0f); for (std::list::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()) diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 2ee13378d..ff9adc963 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -322,7 +322,7 @@ public: std::list players; Acore::AnyPlayerExactPositionInGameObjectRangeCheck checker(me, 0.3f); Acore::PlayerListSearcher 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 players; Acore::AnyPlayerExactPositionInGameObjectRangeCheck checker(me, 0.3f); Acore::PlayerListSearcher 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 targets; Acore::AnyPlayerInObjectRangeCheck check(me, me->GetVisibilityRange(), false); Acore::PlayerListSearcherWithSharedVision 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) diff --git a/src/server/scripts/World/scourge_invasion.cpp b/src/server/scripts/World/scourge_invasion.cpp index 7143794bd..eac52f705 100644 --- a/src/server/scripts/World/scourge_invasion.cpp +++ b/src/server/scripts/World/scourge_invasion.cpp @@ -931,7 +931,7 @@ struct npc_pallid_horror : public ScriptedAI std::list targets; FlameshockerCheck check; Acore::CreatureListSearcher searcher(me, targets, check); - Cell::VisitGridObjects(me, searcher, VISIBILITY_DISTANCE_NORMAL); + Cell::VisitObjects(me, searcher, VISIBILITY_DISTANCE_NORMAL); if (!targets.empty()) {