aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-12-25 00:44:12 +0100
committerShauren <shauren.trinity@gmail.com>2022-12-25 00:44:12 +0100
commitc3f385c48f5080e64b13b0f31864e20e04e531aa (patch)
tree8c023148e0b62baafea101bcbb81514708c30b04
parentd124cc68c8f43a55e4a4728fbcae563008521590 (diff)
Core/Phasing: Reduce differences between branches in GridNotifiers
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp2
-rw-r--r--src/server/game/Entities/Object/Object.cpp4
-rw-r--r--src/server/game/Entities/Object/Object.h16
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.cpp4
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.h125
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiersImpl.h74
-rw-r--r--src/server/game/Maps/Map.cpp6
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp4
11 files changed, 131 insertions, 120 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 60b3cc2b370..49ce3ae4f34 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -4010,7 +4010,7 @@ bool GameObject::IsAtInteractDistance(Position const& pos, float radius) const
bool GameObject::IsWithinDistInMap(Player const* player) const
{
- return IsInMap(player) && IsInPhase(player) && IsAtInteractDistance(player);
+ return IsInMap(player) && InSamePhase(player) && IsAtInteractDistance(player);
}
SpellInfo const* GameObject::GetSpellForLock(Player const* player) const
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index ba2ff05dc15..608cef987cd 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1111,7 +1111,7 @@ bool WorldObject::IsWithinDist(WorldObject const* obj, float dist2compare, bool
bool WorldObject::IsWithinDistInMap(WorldObject const* obj, float dist2compare, bool is3D /*= true*/, bool incOwnRadius /*= true*/, bool incTargetRadius /*= true*/) const
{
- return obj && IsInMap(obj) && IsInPhase(obj) && _IsWithinDist(obj, dist2compare, is3D, incOwnRadius, incTargetRadius);
+ return obj && IsInMap(obj) && InSamePhase(obj) && _IsWithinDist(obj, dist2compare, is3D, incOwnRadius, incTargetRadius);
}
Position WorldObject::GetHitSpherePointFor(Position const& dest) const
@@ -1570,7 +1570,7 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo
bool WorldObject::CanNeverSee(WorldObject const* obj) const
{
- return GetMap() != obj->GetMap() || !IsInPhase(obj);
+ return GetMap() != obj->GetMap() || !InSamePhase(obj);
}
bool WorldObject::CanDetect(WorldObject const* obj, bool ignoreStealth, bool checkAlert) const
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 6269bc1b975..17ded06619f 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -463,19 +463,23 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
uint32 GetInstanceId() const { return m_InstanceId; }
- bool IsInPhase(WorldObject const* obj) const
+ PhaseShift& GetPhaseShift() { return _phaseShift; }
+ PhaseShift const& GetPhaseShift() const { return _phaseShift; }
+ PhaseShift& GetSuppressedPhaseShift() { return _suppressedPhaseShift; }
+ PhaseShift const& GetSuppressedPhaseShift() const { return _suppressedPhaseShift; }
+ bool InSamePhase(PhaseShift const& phaseShift) const
+ {
+ return GetPhaseShift().CanSee(phaseShift);
+ }
+ bool InSamePhase(WorldObject const* obj) const
{
return GetPhaseShift().CanSee(obj->GetPhaseShift());
}
static bool InSamePhase(WorldObject const* a, WorldObject const* b)
{
- return a && b && a->IsInPhase(b);
+ return a && b && a->InSamePhase(b);
}
- PhaseShift& GetPhaseShift() { return _phaseShift; }
- PhaseShift const& GetPhaseShift() const { return _phaseShift; }
- PhaseShift& GetSuppressedPhaseShift() { return _suppressedPhaseShift; }
- PhaseShift const& GetSuppressedPhaseShift() const { return _suppressedPhaseShift; }
int32 GetDBPhase() const { return _dbPhase; }
// if negative it is used as PhaseGroupId
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index eb8e5aea43a..232e82d6610 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -648,7 +648,7 @@ void Transport::TeleportPassengersAndHideTransport(uint32 newMapid, float x, flo
for (MapReference const& ref : GetMap()->GetPlayers())
{
- if (ref.GetSource()->GetTransport() != this && ref.GetSource()->IsInPhase(this))
+ if (ref.GetSource()->GetTransport() != this && ref.GetSource()->InSamePhase(this))
{
UpdateData data(GetMap()->GetId());
BuildCreateUpdateBlockForPlayer(&data, ref.GetSource());
@@ -720,7 +720,7 @@ void Transport::BuildUpdate(UpdateDataMapType& data_map)
return;
for (MapReference const& playerReference : players)
- if (playerReference.GetSource()->IsInPhase(this))
+ if (playerReference.GetSource()->InSamePhase(this))
BuildFieldsUpdate(playerReference.GetSource(), data_map);
ClearUpdateMask(true);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 96e0da89968..ffedc0da2b4 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -614,7 +614,7 @@ void Unit::resetAttackTimer(WeaponAttackType type)
bool Unit::IsWithinCombatRange(Unit const* obj, float dist2compare) const
{
- if (!obj || !IsInMap(obj) || !IsInPhase(obj))
+ if (!obj || !IsInMap(obj) || !InSamePhase(obj))
return false;
float dx = GetPositionX() - obj->GetPositionX();
@@ -630,7 +630,7 @@ bool Unit::IsWithinCombatRange(Unit const* obj, float dist2compare) const
bool Unit::IsWithinMeleeRangeAt(Position const& pos, Unit const* obj) const
{
- if (!obj || !IsInMap(obj) || !IsInPhase(obj))
+ if (!obj || !IsInMap(obj) || !InSamePhase(obj))
return false;
float dx = pos.GetPositionX() - obj->GetPositionX();
@@ -651,7 +651,7 @@ float Unit::GetMeleeRange(Unit const* target) const
bool Unit::IsWithinBoundaryRadius(const Unit* obj) const
{
- if (!obj || !IsInMap(obj) || !IsInPhase(obj))
+ if (!obj || !IsInMap(obj) || !InSamePhase(obj))
return false;
float objBoundaryRadius = std::max(obj->GetBoundingRadius(), MIN_MELEE_REACH);
@@ -3893,7 +3893,7 @@ void Unit::RemoveNotOwnSingleTargetAuras(bool onPhaseChange /*= false*/)
else
{
Unit* caster = aura->GetCaster();
- if (!caster || !caster->IsInPhase(this))
+ if (!caster || !caster->InSamePhase(this))
RemoveOwnedAura(iter);
else
++iter;
@@ -3908,7 +3908,7 @@ void Unit::RemoveNotOwnSingleTargetAuras(bool onPhaseChange /*= false*/)
for (AuraList::iterator iter = scAuras.begin(); iter != scAuras.end();)
{
Aura* aura = *iter;
- if (aura->GetUnitOwner() != this && (!onPhaseChange || !aura->GetUnitOwner()->IsInPhase(this)))
+ if (aura->GetUnitOwner() != this && (!onPhaseChange || !aura->GetUnitOwner()->InSamePhase(this)))
{
aura->Remove();
iter = scAuras.begin();
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.cpp b/src/server/game/Grids/Notifiers/GridNotifiers.cpp
index 5941bdee7ec..1077aad9e72 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.cpp
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.cpp
@@ -96,8 +96,8 @@ void VisibleChangesNotifier::Visit(PlayerMapType &m)
for (SharedVisionList::const_iterator i = iter->GetSource()->GetSharedVisionList().begin();
i != iter->GetSource()->GetSharedVisionList().end(); ++i)
- if ((*i)->m_seer == iter->GetSource())
- (*i)->UpdateVisibilityOf(i_objects);
+ if ((*i)->m_seer == iter->GetSource())
+ (*i)->UpdateVisibilityOf(i_objects);
}
}
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h
index ba045606a85..f673bb42857 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -147,11 +147,12 @@ namespace Trinity
{
WorldObject const* i_source;
PacketSender& i_packetSender;
+ PhaseShift const* i_phaseShift;
float i_distSq;
Team team;
Player const* skipped_receiver;
MessageDistDeliverer(WorldObject const* src, PacketSender& packetSender, float dist, bool own_team_only = false, Player const* skipped = nullptr)
- : i_source(src), i_packetSender(packetSender), i_distSq(dist * dist)
+ : i_source(src), i_packetSender(packetSender), i_phaseShift(&src->GetPhaseShift()), i_distSq(dist * dist)
, team(TEAM_OTHER)
, skipped_receiver(skipped)
{
@@ -183,10 +184,11 @@ namespace Trinity
{
Unit* i_source;
PacketSender& i_packetSender;
+ PhaseShift const* i_phaseShift;
float i_distSq;
MessageDistDelivererToHostile(Unit* src, PacketSender& packetSender, float dist)
- : i_source(src), i_packetSender(packetSender), i_distSq(dist * dist)
+ : i_source(src), i_packetSender(packetSender), i_phaseShift(&src->GetPhaseShift()), i_distSq(dist * dist)
{
}
@@ -247,13 +249,13 @@ namespace Trinity
template<class Check>
struct WorldObjectSearcher
{
- WorldObject const* _searcher;
- WorldObject*& i_object;
- Check &i_check;
uint32 i_mapTypeMask;
+ PhaseShift const* i_phaseShift;
+ WorldObject* &i_object;
+ Check &i_check;
WorldObjectSearcher(WorldObject const* searcher, WorldObject* & result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
- : _searcher(searcher), i_object(result), i_check(check), i_mapTypeMask(mapTypeMask) { }
+ : i_mapTypeMask(mapTypeMask), i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(GameObjectMapType &m);
void Visit(PlayerMapType &m);
@@ -270,13 +272,13 @@ namespace Trinity
template<class Check>
struct WorldObjectLastSearcher
{
- WorldObject const* _searcher;
+ uint32 i_mapTypeMask;
+ PhaseShift const* i_phaseShift;
WorldObject* &i_object;
Check &i_check;
- uint32 i_mapTypeMask;
WorldObjectLastSearcher(WorldObject const* searcher, WorldObject* & result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
- : _searcher(searcher), i_object(result), i_check(check), i_mapTypeMask(mapTypeMask) { }
+ : i_mapTypeMask(mapTypeMask), i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(GameObjectMapType &m);
void Visit(PlayerMapType &m);
@@ -294,13 +296,13 @@ namespace Trinity
struct WorldObjectListSearcher : ContainerInserter<WorldObject*>
{
uint32 i_mapTypeMask;
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Check& i_check;
template<typename Container>
WorldObjectListSearcher(WorldObject const* searcher, Container& container, Check & check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
: ContainerInserter<WorldObject*>(container),
- i_mapTypeMask(mapTypeMask), _searcher(searcher), i_check(check) { }
+ i_mapTypeMask(mapTypeMask), i_phaseShift(&searcher->GetPhaseShift()), i_check(check) { }
void Visit(PlayerMapType &m);
void Visit(CreatureMapType &m);
@@ -318,18 +320,18 @@ namespace Trinity
struct WorldObjectWorker
{
uint32 i_mapTypeMask;
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Do const& i_do;
WorldObjectWorker(WorldObject const* searcher, Do const& _do, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
- : i_mapTypeMask(mapTypeMask), _searcher(searcher), i_do(_do) { }
+ : i_mapTypeMask(mapTypeMask), i_phaseShift(&searcher->GetPhaseShift()), i_do(_do) { }
void Visit(GameObjectMapType &m)
{
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_GAMEOBJECT))
return;
for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -338,7 +340,7 @@ namespace Trinity
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_PLAYER))
return;
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
void Visit(CreatureMapType &m)
@@ -346,7 +348,7 @@ namespace Trinity
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CREATURE))
return;
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -355,7 +357,7 @@ namespace Trinity
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CORPSE))
return;
for (CorpseMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -364,7 +366,7 @@ namespace Trinity
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_DYNAMICOBJECT))
return;
for (DynamicObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -373,7 +375,7 @@ namespace Trinity
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_AREATRIGGER))
return;
for (AreaTriggerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -382,7 +384,7 @@ namespace Trinity
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_SCENEOBJECT))
return;
for (SceneObjectMapType::iterator itr = m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -391,7 +393,7 @@ namespace Trinity
if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CONVERSATION))
return;
for (ConversationMapType::iterator itr = m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -403,12 +405,12 @@ namespace Trinity
template<class Check>
struct GameObjectSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
GameObject* &i_object;
Check &i_check;
GameObjectSearcher(WorldObject const* searcher, GameObject* & result, Check& check)
- : _searcher(searcher), i_object(result), i_check(check) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(GameObjectMapType &m);
@@ -419,12 +421,12 @@ namespace Trinity
template<class Check>
struct GameObjectLastSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
GameObject* &i_object;
Check& i_check;
GameObjectLastSearcher(WorldObject const* searcher, GameObject* & result, Check& check)
- : _searcher(searcher), i_object(result), i_check(check) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(GameObjectMapType &m);
@@ -434,13 +436,13 @@ namespace Trinity
template<class Check>
struct GameObjectListSearcher : ContainerInserter<GameObject*>
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Check& i_check;
template<typename Container>
GameObjectListSearcher(WorldObject const* searcher, Container& container, Check & check)
: ContainerInserter<GameObject*>(container),
- _searcher(searcher), i_check(check) { }
+ i_phaseShift(&searcher->GetPhaseShift()), i_check(check) { }
void Visit(GameObjectMapType &m);
@@ -451,12 +453,12 @@ namespace Trinity
struct GameObjectWorker
{
GameObjectWorker(WorldObject const* searcher, Functor& func)
- : _func(func), _searcher(searcher) { }
+ : _func(func), _phaseShift(&searcher->GetPhaseShift()) { }
void Visit(GameObjectMapType& m)
{
for (GameObjectMapType::iterator itr = m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*_phaseShift))
_func(itr->GetSource());
}
@@ -464,7 +466,7 @@ namespace Trinity
private:
Functor& _func;
- WorldObject const* _searcher;
+ PhaseShift const* _phaseShift;
};
// Unit searchers
@@ -473,12 +475,12 @@ namespace Trinity
template<class Check>
struct UnitSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Unit* &i_object;
Check & i_check;
UnitSearcher(WorldObject const* searcher, Unit* & result, Check & check)
- : _searcher(searcher), i_object(result), i_check(check) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(CreatureMapType &m);
void Visit(PlayerMapType &m);
@@ -490,12 +492,12 @@ namespace Trinity
template<class Check>
struct UnitLastSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Unit* &i_object;
Check & i_check;
UnitLastSearcher(WorldObject const* searcher, Unit* & result, Check & check)
- : _searcher(searcher), i_object(result), i_check(check) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(CreatureMapType &m);
void Visit(PlayerMapType &m);
@@ -507,13 +509,13 @@ namespace Trinity
template<class Check>
struct UnitListSearcher : ContainerInserter<Unit*>
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Check& i_check;
template<typename Container>
UnitListSearcher(WorldObject const* searcher, Container& container, Check& check)
: ContainerInserter<Unit*>(container),
- _searcher(searcher), i_check(check) { }
+ i_phaseShift(&searcher->GetPhaseShift()), i_check(check) { }
void Visit(PlayerMapType &m);
void Visit(CreatureMapType &m);
@@ -526,12 +528,12 @@ namespace Trinity
template<class Check>
struct CreatureSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Creature* &i_object;
Check & i_check;
CreatureSearcher(WorldObject const* searcher, Creature* & result, Check & check)
- : _searcher(searcher), i_object(result), i_check(check) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(CreatureMapType &m);
@@ -542,12 +544,12 @@ namespace Trinity
template<class Check>
struct CreatureLastSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Creature* &i_object;
Check & i_check;
CreatureLastSearcher(WorldObject const* searcher, Creature* & result, Check & check)
- : _searcher(searcher), i_object(result), i_check(check) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(CreatureMapType &m);
@@ -557,13 +559,13 @@ namespace Trinity
template<class Check>
struct CreatureListSearcher : ContainerInserter<Creature*>
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Check& i_check;
template<typename Container>
CreatureListSearcher(WorldObject const* searcher, Container& container, Check & check)
: ContainerInserter<Creature*>(container),
- _searcher(searcher), i_check(check) { }
+ i_phaseShift(&searcher->GetPhaseShift()), i_check(check) { }
void Visit(CreatureMapType &m);
@@ -573,16 +575,16 @@ namespace Trinity
template<class Do>
struct CreatureWorker
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Do& i_do;
CreatureWorker(WorldObject const* searcher, Do& _do)
- : _searcher(searcher), i_do(_do) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_do(_do) { }
void Visit(CreatureMapType &m)
{
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -594,12 +596,12 @@ namespace Trinity
template<class Check>
struct PlayerSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Player* &i_object;
Check & i_check;
PlayerSearcher(WorldObject const* searcher, Player* & result, Check & check)
- : _searcher(searcher), i_object(result), i_check(check) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check) { }
void Visit(PlayerMapType &m);
@@ -609,13 +611,18 @@ namespace Trinity
template<class Check>
struct PlayerListSearcher : ContainerInserter<Player*>
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Check& i_check;
template<typename Container>
PlayerListSearcher(WorldObject const* searcher, Container& container, Check & check)
: ContainerInserter<Player*>(container),
- _searcher(searcher), i_check(check) { }
+ i_phaseShift(&searcher->GetPhaseShift()), i_check(check) { }
+
+ template<typename Container>
+ PlayerListSearcher(PhaseShift const& phaseShift, Container& container, Check & check)
+ : ContainerInserter<Player*>(container),
+ i_phaseShift(&phaseShift), i_check(check) { }
void Visit(PlayerMapType &m);
@@ -625,11 +632,11 @@ namespace Trinity
template<class Check>
struct PlayerLastSearcher
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Player* &i_object;
Check& i_check;
- PlayerLastSearcher(WorldObject const* searcher, Player*& result, Check& check) : _searcher(searcher), i_object(result), i_check(check)
+ PlayerLastSearcher(WorldObject const* searcher, Player*& result, Check& check) : i_phaseShift(&searcher->GetPhaseShift()), i_object(result), i_check(check)
{
}
@@ -641,16 +648,16 @@ namespace Trinity
template<class Do>
struct PlayerWorker
{
- WorldObject const* _searcher;
+ PhaseShift const* i_phaseShift;
Do& i_do;
PlayerWorker(WorldObject const* searcher, Do& _do)
- : _searcher(searcher), i_do(_do) { }
+ : i_phaseShift(&searcher->GetPhaseShift()), i_do(_do) { }
void Visit(PlayerMapType &m)
{
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
i_do(itr->GetSource());
}
@@ -670,7 +677,7 @@ namespace Trinity
void Visit(PlayerMapType &m)
{
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(i_searcher) && itr->GetSource()->IsWithinDist(i_searcher, i_dist))
+ if (itr->GetSource()->InSamePhase(i_searcher) && itr->GetSource()->IsWithinDist(i_searcher, i_dist))
i_do(itr->GetSource());
}
@@ -1037,7 +1044,7 @@ namespace Trinity
if (i_incTargetRadius)
searchRadius += u->GetCombatReach();
- if (!u->IsInMap(i_obj) || !u->IsInPhase(i_obj) || !u->IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius))
+ if (!u->IsInMap(i_obj) || !u->InSamePhase(i_obj) || !u->IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius))
return false;
if (!i_funit->IsFriendlyTo(u))
@@ -1086,7 +1093,7 @@ namespace Trinity
if (i_incTargetRadius)
searchRadius += u->GetCombatReach();
- return u->IsInMap(_source) && u->IsInPhase(_source) && u->IsWithinDoubleVerticalCylinder(_source, searchRadius, searchRadius);
+ return u->IsInMap(_source) && u->InSamePhase(_source) && u->IsWithinDoubleVerticalCylinder(_source, searchRadius, searchRadius);
}
private:
@@ -1182,7 +1189,7 @@ namespace Trinity
if (i_incTargetRadius)
searchRadius += u->GetCombatReach();
- return u->IsInMap(i_obj) && u->IsInPhase(i_obj) && u->IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius);
+ return u->IsInMap(i_obj) && u->InSamePhase(i_obj) && u->IsWithinDoubleVerticalCylinder(i_obj, searchRadius, searchRadius);
}
private:
@@ -1642,7 +1649,7 @@ namespace Trinity
bool operator()(WorldObject* go) const
{
- return m_pObject->IsWithinDist(go, m_fRange, false) && m_pObject->IsInPhase(go);
+ return m_pObject->IsWithinDist(go, m_fRange, false) && m_pObject->InSamePhase(go);
}
private:
diff --git a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
index 816ad4c20a9..867cc3c7697 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
@@ -40,7 +40,7 @@ void Trinity::MessageDistDeliverer<PacketSender>::Visit(PlayerMapType& m) const
for (PlayerMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
Player* target = iter->GetSource();
- if (!target->IsInPhase(i_source))
+ if (!target->InSamePhase(*i_phaseShift))
continue;
if (target->GetExactDist2dSq(i_source) > i_distSq)
@@ -66,7 +66,7 @@ void Trinity::MessageDistDeliverer<PacketSender>::Visit(CreatureMapType& m) cons
for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
Creature* target = iter->GetSource();
- if (!target->IsInPhase(i_source))
+ if (!target->InSamePhase(*i_phaseShift))
continue;
if (target->GetExactDist2dSq(i_source) > i_distSq)
@@ -89,7 +89,7 @@ void Trinity::MessageDistDeliverer<PacketSender>::Visit(DynamicObjectMapType& m)
for (DynamicObjectMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
DynamicObject* target = iter->GetSource();
- if (!target->IsInPhase(i_source))
+ if (!target->InSamePhase(*i_phaseShift))
continue;
if (target->GetExactDist2dSq(i_source) > i_distSq)
@@ -111,7 +111,7 @@ void Trinity::MessageDistDelivererToHostile<PacketSender>::Visit(PlayerMapType&
for (PlayerMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
Player* target = iter->GetSource();
- if (!target->IsInPhase(i_source))
+ if (!target->InSamePhase(*i_phaseShift))
continue;
if (target->GetExactDist2dSq(i_source) > i_distSq)
@@ -137,7 +137,7 @@ void Trinity::MessageDistDelivererToHostile<PacketSender>::Visit(CreatureMapType
for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
Creature* target = iter->GetSource();
- if (!target->IsInPhase(i_source))
+ if (!target->InSamePhase(*i_phaseShift))
continue;
if (target->GetExactDist2dSq(i_source) > i_distSq)
@@ -160,7 +160,7 @@ void Trinity::MessageDistDelivererToHostile<PacketSender>::Visit(DynamicObjectMa
for (DynamicObjectMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
DynamicObject* target = iter->GetSource();
- if (!target->IsInPhase(i_source))
+ if (!target->InSamePhase(*i_phaseShift))
continue;
if (target->GetExactDist2dSq(i_source) > i_distSq)
@@ -192,7 +192,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(GameObjectMapType &m)
for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -215,7 +215,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(PlayerMapType &m)
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -238,7 +238,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(CreatureMapType &m)
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -261,7 +261,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(CorpseMapType &m)
for (CorpseMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -284,7 +284,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(DynamicObjectMapType &m)
for (DynamicObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -307,7 +307,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(AreaTriggerMapType &m)
for (AreaTriggerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -330,7 +330,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(SceneObjectMapType &m)
for (SceneObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -353,7 +353,7 @@ void Trinity::WorldObjectSearcher<Check>::Visit(ConversationMapType &m)
for (ConversationMapType::iterator itr = m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -372,7 +372,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(GameObjectMapType &m)
for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -388,7 +388,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(PlayerMapType &m)
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -404,7 +404,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(CreatureMapType &m)
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -420,7 +420,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(CorpseMapType &m)
for (CorpseMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -436,7 +436,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(DynamicObjectMapType &m)
for (DynamicObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -452,7 +452,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(AreaTriggerMapType &m)
for (AreaTriggerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -468,7 +468,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(SceneObjectMapType &m)
for (SceneObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -484,7 +484,7 @@ void Trinity::WorldObjectLastSearcher<Check>::Visit(ConversationMapType &m)
for (ConversationMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -591,7 +591,7 @@ void Trinity::GameObjectSearcher<Check>::Visit(GameObjectMapType &m)
for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -607,7 +607,7 @@ void Trinity::GameObjectLastSearcher<Check>::Visit(GameObjectMapType &m)
{
for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -619,7 +619,7 @@ template<class Check>
void Trinity::GameObjectListSearcher<Check>::Visit(GameObjectMapType &m)
{
for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
if (i_check(itr->GetSource()))
Insert(itr->GetSource());
}
@@ -635,7 +635,7 @@ void Trinity::UnitSearcher<Check>::Visit(CreatureMapType &m)
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -655,7 +655,7 @@ void Trinity::UnitSearcher<Check>::Visit(PlayerMapType &m)
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -671,7 +671,7 @@ void Trinity::UnitLastSearcher<Check>::Visit(CreatureMapType &m)
{
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -684,7 +684,7 @@ void Trinity::UnitLastSearcher<Check>::Visit(PlayerMapType &m)
{
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -696,7 +696,7 @@ template<class Check>
void Trinity::UnitListSearcher<Check>::Visit(PlayerMapType &m)
{
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
if (i_check(itr->GetSource()))
Insert(itr->GetSource());
}
@@ -705,7 +705,7 @@ template<class Check>
void Trinity::UnitListSearcher<Check>::Visit(CreatureMapType &m)
{
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
if (i_check(itr->GetSource()))
Insert(itr->GetSource());
}
@@ -721,7 +721,7 @@ void Trinity::CreatureSearcher<Check>::Visit(CreatureMapType &m)
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -737,7 +737,7 @@ void Trinity::CreatureLastSearcher<Check>::Visit(CreatureMapType &m)
{
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -749,7 +749,7 @@ template<class Check>
void Trinity::CreatureListSearcher<Check>::Visit(CreatureMapType &m)
{
for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
if (i_check(itr->GetSource()))
Insert(itr->GetSource());
}
@@ -758,7 +758,7 @@ template<class Check>
void Trinity::PlayerListSearcher<Check>::Visit(PlayerMapType &m)
{
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
- if (itr->GetSource()->IsInPhase(_searcher))
+ if (itr->GetSource()->InSamePhase(*i_phaseShift))
if (i_check(itr->GetSource()))
Insert(itr->GetSource());
}
@@ -772,7 +772,7 @@ void Trinity::PlayerSearcher<Check>::Visit(PlayerMapType &m)
for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
@@ -788,7 +788,7 @@ void Trinity::PlayerLastSearcher<Check>::Visit(PlayerMapType& m)
{
for (PlayerMapType::iterator itr = m.begin(); itr != m.end(); ++itr)
{
- if (!itr->GetSource()->IsInPhase(_searcher))
+ if (!itr->GetSource()->InSamePhase(*i_phaseShift))
continue;
if (i_check(itr->GetSource()))
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index a061cfacd1c..102bf08b15e 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -582,7 +582,7 @@ bool Map::AddToMap(Transport* obj)
// Broadcast creation to players
for (Map::PlayerList::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
{
- if (itr->GetSource()->GetTransport() != obj && itr->GetSource()->IsInPhase(obj))
+ if (itr->GetSource()->GetTransport() != obj && itr->GetSource()->InSamePhase(obj))
{
UpdateData data(GetId());
obj->BuildCreateUpdateBlockForPlayer(&data, itr->GetSource());
@@ -1839,7 +1839,7 @@ void Map::SendInitTransports(Player* player)
UpdateData transData(GetId());
for (Transport* transport : _transports)
{
- if (transport->IsInWorld() && transport != player->GetTransport() && player->IsInPhase(transport))
+ if (transport->IsInWorld() && transport != player->GetTransport() && player->InSamePhase(transport))
{
transport->BuildCreateUpdateBlockForPlayer(&transData, player);
player->m_visibleTransports.insert(transport->GetGUID());
@@ -1879,7 +1879,7 @@ void Map::SendUpdateTransportVisibility(Player* player)
continue;
auto transportItr = player->m_visibleTransports.find(transport->GetGUID());
- if (player->IsInPhase(transport))
+ if (player->InSamePhase(transport))
{
if (transportItr == player->m_visibleTransports.end())
{
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
index b2ed77e4a89..4ba062cdaec 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
@@ -309,7 +309,7 @@ struct boss_volazj : public BossAI
if (Creature* visage = ObjectAccessor::GetCreature(*me, *iter))
{
// Not all are dead
- if (visage->IsInPhase(summon))
+ if (visage->InSamePhase(summon))
return;
else if (!visage->GetPhaseShift().GetPhases().empty())
{
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index e0223f674be..1c076bb8d56 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -301,7 +301,7 @@ class boss_halion : public CreatureScript
if (events.IsInPhase(PHASE_THREE))
{
// Don't consider copied damage.
- if (!attacker || !me->IsInPhase(attacker))
+ if (!attacker || !me->InSamePhase(attacker))
return;
if (Creature* controller = instance->GetCreature(DATA_HALION_CONTROLLER))
@@ -485,7 +485,7 @@ class boss_twilight_halion : public CreatureScript
if (events.IsInPhase(PHASE_THREE))
{
// Don't consider copied damage.
- if (!attacker || !me->IsInPhase(attacker))
+ if (!attacker || !me->InSamePhase(attacker))
return;
if (Creature* controller = instance->GetCreature(DATA_HALION_CONTROLLER))