aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.h222
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiersImpl.h120
2 files changed, 143 insertions, 199 deletions
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h
index d4de23dd20c..ae28d6e6fbe 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -322,41 +322,95 @@ namespace Trinity
}
};
- template<class Check, class Result>
+ struct DynamicGridMapTypeMaskCheck
+ {
+ DynamicGridMapTypeMaskCheck(uint32 mask) : MaskValue(mask) { }
+
+ static constexpr bool IsStatic = false;
+
+ uint32 MaskValue;
+
+ constexpr bool Includes(uint32 mapTypeMask) const
+ {
+ return (MaskValue & mapTypeMask) != 0;
+ }
+ };
+
+ template <uint32 MapTypeMask>
+ struct StaticGridMapTypeMaskCheck
+ {
+ StaticGridMapTypeMaskCheck(uint32) { }
+
+ static constexpr bool IsStatic = true;
+
+ static constexpr bool Includes(uint32 mapTypeMask)
+ {
+ return (MapTypeMask & mapTypeMask) != 0;
+ }
+ };
+
+ template<class Check, class Result, class MapTypeMaskCheck = DynamicGridMapTypeMaskCheck>
struct WorldObjectSearcherBase : Result
{
- uint32 i_mapTypeMask;
+ MapTypeMaskCheck i_mapTypeMask;
PhaseShift const* i_phaseShift;
Check& i_check;
+ template<class T>
+ void Visit(GridRefManager<T>& m)
+ {
+ if constexpr (MapTypeMaskCheck::IsStatic)
+ {
+ if constexpr (MapTypeMaskCheck::Includes(GridMapTypeMaskForType<T>::value))
+ VisitImpl(m);
+ }
+ else
+ {
+ if (i_mapTypeMask.Includes(GridMapTypeMaskForType<T>::value))
+ VisitImpl(m);
+ }
+ }
+
+ protected:
template<typename Container>
- WorldObjectSearcherBase(PhaseShift const* phaseShift, Container& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
- : Result(result), i_mapTypeMask(mapTypeMask), i_phaseShift(phaseShift), i_check(check) { }
+ WorldObjectSearcherBase(PhaseShift const& phaseShift, Container& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
+ : Result(result), i_mapTypeMask(mapTypeMask), i_phaseShift(&phaseShift), i_check(check) { }
+ private:
template<class T>
- void Visit(GridRefManager<T>&);
+ void VisitImpl(GridRefManager<T>&);
};
template<class Check>
struct WorldObjectSearcher : WorldObjectSearcherBase<Check, SearcherFirstObjectResult<WorldObject*>>
{
+ WorldObjectSearcher(PhaseShift const& phaseShift, WorldObject*& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
+ : WorldObjectSearcherBase<Check, SearcherFirstObjectResult<WorldObject*>>(phaseShift, result, check, mapTypeMask) { }
+
WorldObjectSearcher(WorldObject const* searcher, WorldObject*& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
- : WorldObjectSearcherBase<Check, SearcherFirstObjectResult<WorldObject*>>(&searcher->GetPhaseShift(), result, check, mapTypeMask) { }
+ : WorldObjectSearcher(searcher->GetPhaseShift(), result, check, mapTypeMask) { }
};
template<class Check>
struct WorldObjectLastSearcher : WorldObjectSearcherBase<Check, SearcherLastObjectResult<WorldObject*>>
{
+ WorldObjectLastSearcher(PhaseShift const& phaseShift, WorldObject*& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
+ : WorldObjectSearcherBase<Check, SearcherLastObjectResult<WorldObject*>>(phaseShift, result, check, mapTypeMask) { }
+
WorldObjectLastSearcher(WorldObject const* searcher, WorldObject*& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
- : WorldObjectSearcherBase<Check, SearcherLastObjectResult<WorldObject*>>(&searcher->GetPhaseShift(), result, check, mapTypeMask) { }
+ : WorldObjectLastSearcher(searcher->GetPhaseShift(), result, check, mapTypeMask) { }
};
template<class Check>
struct WorldObjectListSearcher : WorldObjectSearcherBase<Check, SearcherContainerResult<WorldObject*>>
{
template<typename Container>
+ WorldObjectListSearcher(PhaseShift const& phaseShift, Container& container, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
+ : WorldObjectSearcherBase<Check, SearcherContainerResult<WorldObject*>>(phaseShift, container, check, mapTypeMask) { }
+
+ template<typename Container>
WorldObjectListSearcher(WorldObject const* searcher, Container& container, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL)
- : WorldObjectSearcherBase<Check, SearcherContainerResult<WorldObject*>>(&searcher->GetPhaseShift(), container, check, mapTypeMask) { }
+ : WorldObjectListSearcher(searcher->GetPhaseShift(), container, check, mapTypeMask) { }
};
template<class Do>
@@ -383,41 +437,44 @@ namespace Trinity
// Gameobject searchers
template<class Check, class Result>
- struct GameObjectSearcherBase : Result
+ struct GameObjectSearcherBase : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_GAMEOBJECT>>
{
- PhaseShift const* i_phaseShift;
- Check &i_check;
-
template<typename Container>
- GameObjectSearcherBase(PhaseShift const* phaseShift, Container& result, Check& check)
- : Result(result), i_phaseShift(phaseShift), i_check(check) { }
-
- void Visit(GameObjectMapType& m);
-
- template<class NOT_INTERESTED> void Visit(GridRefManager<NOT_INTERESTED> &) { }
+ GameObjectSearcherBase(PhaseShift const& phaseShift, Container& result, Check& check)
+ : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_GAMEOBJECT>>(phaseShift, result, check) { }
};
template<class Check>
struct GameObjectSearcher : GameObjectSearcherBase<Check, SearcherFirstObjectResult<GameObject*>>
{
+ GameObjectSearcher(PhaseShift const& phaseShift, GameObject*& result, Check& check)
+ : GameObjectSearcherBase<Check, SearcherFirstObjectResult<GameObject*>>(phaseShift, result, check) { }
+
GameObjectSearcher(WorldObject const* searcher, GameObject*& result, Check& check)
- : GameObjectSearcherBase<Check, SearcherFirstObjectResult<GameObject*>>(&searcher->GetPhaseShift(), result, check) { }
+ : GameObjectSearcher(searcher->GetPhaseShift(), result, check) { }
};
// Last accepted by Check GO if any (Check can change requirements at each call)
template<class Check>
struct GameObjectLastSearcher : GameObjectSearcherBase<Check, SearcherLastObjectResult<GameObject*>>
{
+ GameObjectLastSearcher(PhaseShift const& phaseShift, GameObject*& result, Check& check)
+ : GameObjectSearcherBase<Check, SearcherLastObjectResult<GameObject*>>(phaseShift, result, check) { }
+
GameObjectLastSearcher(WorldObject const* searcher, GameObject*& result, Check& check)
- : GameObjectSearcherBase<Check, SearcherLastObjectResult<GameObject*>>(&searcher->GetPhaseShift(), result, check) { }
+ : GameObjectLastSearcher(searcher->GetPhaseShift(), result, check) { }
};
template<class Check>
struct GameObjectListSearcher : GameObjectSearcherBase<Check, SearcherContainerResult<GameObject*>>
{
template<typename Container>
+ GameObjectListSearcher(PhaseShift const& phaseShift, Container& container, Check& check)
+ : GameObjectSearcherBase<Check, SearcherContainerResult<GameObject*>>(phaseShift, container, check) { }
+
+ template<typename Container>
GameObjectListSearcher(WorldObject const* searcher, Container& container, Check& check)
- : GameObjectSearcherBase<Check, SearcherContainerResult<GameObject*>>(&searcher->GetPhaseShift(), container, check) { }
+ : GameObjectListSearcher(searcher->GetPhaseShift(), container, check) { }
};
template<class Functor>
@@ -443,38 +500,33 @@ namespace Trinity
// Unit searchers
template<class Check, class Result>
- struct UnitSearcherBase : Result
+ struct UnitSearcherBase : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER>>
{
- PhaseShift const* i_phaseShift;
- Check& i_check;
-
template<typename Container>
- UnitSearcherBase(PhaseShift const* phaseShift, Container& result, Check& check)
- : Result(result), i_phaseShift(phaseShift), i_check(check) { }
-
- void Visit(CreatureMapType& m) { VisitImpl(m); }
- void Visit(PlayerMapType& m) { VisitImpl(m); }
-
- template<class NOT_INTERESTED> void Visit(GridRefManager<NOT_INTERESTED>&) { }
-
- private:
- template<class T> void VisitImpl(GridRefManager<T>& m);
+ UnitSearcherBase(PhaseShift const& phaseShift, Container& result, Check& check)
+ : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER>>(phaseShift, result, check) { }
};
// First accepted by Check Unit if any
template<class Check>
struct UnitSearcher : UnitSearcherBase<Check, SearcherFirstObjectResult<Unit*>>
{
+ UnitSearcher(PhaseShift const& phaseShift, Unit*& result, Check& check)
+ : UnitSearcherBase<Check, SearcherFirstObjectResult<Unit*>>(phaseShift, result, check) { }
+
UnitSearcher(WorldObject const* searcher, Unit*& result, Check& check)
- : UnitSearcherBase<Check, SearcherFirstObjectResult<Unit*>>(&searcher->GetPhaseShift(), result, check) { }
+ : UnitSearcher(searcher->GetPhaseShift(), result, check) { }
};
// Last accepted by Check Unit if any (Check can change requirements at each call)
template<class Check>
struct UnitLastSearcher : UnitSearcherBase<Check, SearcherLastObjectResult<Unit*>>
{
+ UnitLastSearcher(PhaseShift const& phaseShift, Unit*& result, Check& check)
+ : UnitSearcherBase<Check, SearcherLastObjectResult<Unit*>>(phaseShift, result, check) { }
+
UnitLastSearcher(WorldObject const* searcher, Unit*& result, Check& check)
- : UnitSearcherBase<Check, SearcherLastObjectResult<Unit*>>(&searcher->GetPhaseShift(), result, check) { }
+ : UnitLastSearcher(searcher->GetPhaseShift(), result, check) { }
};
// All accepted by Check units if any
@@ -482,48 +534,55 @@ namespace Trinity
struct UnitListSearcher : UnitSearcherBase<Check, SearcherContainerResult<Unit*>>
{
template<typename Container>
+ UnitListSearcher(PhaseShift const& phaseShift, Container& container, Check& check)
+ : UnitSearcherBase<Check, SearcherContainerResult<Unit*>>(phaseShift, container, check) { }
+
+ template<typename Container>
UnitListSearcher(WorldObject const* searcher, Container& container, Check& check)
- : UnitSearcherBase<Check, SearcherContainerResult<Unit*>>(&searcher->GetPhaseShift(), container, check) { }
+ : UnitListSearcher(searcher->GetPhaseShift(), container, check) { }
};
// Creature searchers
template<class Check, class Result>
- struct CreatureSearcherBase : Result
+ struct CreatureSearcherBase : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_CREATURE>>
{
- PhaseShift const* i_phaseShift;
- Check& i_check;
-
template<typename Container>
- CreatureSearcherBase(PhaseShift const* phaseShift, Container& result, Check& check)
- : Result(result), i_phaseShift(phaseShift), i_check(check) { }
-
- void Visit(CreatureMapType& m);
-
- template<class NOT_INTERESTED> void Visit(GridRefManager<NOT_INTERESTED> &) { }
+ CreatureSearcherBase(PhaseShift const& phaseShift, Container& result, Check& check)
+ : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_CREATURE>>(phaseShift, result, check) { }
};
template<class Check>
struct CreatureSearcher : CreatureSearcherBase<Check, SearcherFirstObjectResult<Creature*>>
{
+ CreatureSearcher(PhaseShift const& phaseShift, Creature*& result, Check& check)
+ : CreatureSearcherBase<Check, SearcherFirstObjectResult<Creature*>>(phaseShift, result, check) { }
+
CreatureSearcher(WorldObject const* searcher, Creature*& result, Check& check)
- : CreatureSearcherBase<Check, SearcherFirstObjectResult<Creature*>>(&searcher->GetPhaseShift(), result, check) { }
+ : CreatureSearcher(searcher->GetPhaseShift(), result, check) { }
};
// Last accepted by Check Creature if any (Check can change requirements at each call)
template<class Check>
struct CreatureLastSearcher : CreatureSearcherBase<Check, SearcherLastObjectResult<Creature*>>
{
+ CreatureLastSearcher(PhaseShift const& phaseShift, Creature*& result, Check& check)
+ : CreatureSearcherBase<Check, SearcherLastObjectResult<Creature*>>(phaseShift, result, check) { }
+
CreatureLastSearcher(WorldObject const* searcher, Creature*& result, Check& check)
- : CreatureSearcherBase<Check, SearcherLastObjectResult<Creature*>>(&searcher->GetPhaseShift(), result, check) { }
+ : CreatureLastSearcher(searcher->GetPhaseShift(), result, check) { }
};
template<class Check>
struct CreatureListSearcher : CreatureSearcherBase<Check, SearcherContainerResult<Creature*>>
{
template<typename Container>
+ CreatureListSearcher(PhaseShift const& phaseShift, Container& container, Check & check)
+ : CreatureSearcherBase<Check, SearcherContainerResult<Creature*>>(phaseShift, container, check) { }
+
+ template<typename Container>
CreatureListSearcher(WorldObject const* searcher, Container& container, Check & check)
- : CreatureSearcherBase<Check, SearcherContainerResult<Creature*>>(&searcher->GetPhaseShift(), container, check) { }
+ : CreatureListSearcher(searcher->GetPhaseShift(), container, check) { }
};
template<class Do>
@@ -548,44 +607,43 @@ namespace Trinity
// Player searchers
template<class Check, class Result>
- struct PlayerSearcherBase : Result
+ struct PlayerSearcherBase : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_PLAYER>>
{
- PhaseShift const* i_phaseShift;
- Check& i_check;
-
template<typename Container>
- PlayerSearcherBase(PhaseShift const* phaseShift, Container& result, Check& check)
- : Result(result), i_phaseShift(phaseShift), i_check(check) { }
-
- void Visit(PlayerMapType& m);
-
- template<class NOT_INTERESTED> void Visit(GridRefManager<NOT_INTERESTED> &) { }
+ PlayerSearcherBase(PhaseShift const& phaseShift, Container& result, Check& check)
+ : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_PLAYER>>(phaseShift, result, check) { }
};
template<class Check>
struct PlayerSearcher : PlayerSearcherBase<Check, SearcherFirstObjectResult<Player*>>
{
+ PlayerSearcher(PhaseShift const& phaseShift, Player*& result, Check& check)
+ : PlayerSearcherBase<Check, SearcherFirstObjectResult<Player*>>(phaseShift, result, check) { }
+
PlayerSearcher(WorldObject const* searcher, Player*& result, Check& check)
- : PlayerSearcherBase<Check, SearcherFirstObjectResult<Player*>>(&searcher->GetPhaseShift(), result, check) { }
+ : PlayerSearcher(searcher->GetPhaseShift(), result, check) { }
};
template<class Check>
struct PlayerLastSearcher : PlayerSearcherBase<Check, SearcherLastObjectResult<Player*>>
{
+ PlayerLastSearcher(PhaseShift const& phaseShift, Player*& result, Check& check)
+ : PlayerSearcherBase<Check, SearcherLastObjectResult<Player*>>(phaseShift, result, check) { }
+
PlayerLastSearcher(WorldObject const* searcher, Player*& result, Check& check)
- : PlayerSearcherBase<Check, SearcherLastObjectResult<Player*>>(&searcher->GetPhaseShift(), result, check) { }
+ : PlayerLastSearcher(searcher->GetPhaseShift(), result, check) { }
};
template<class Check>
struct PlayerListSearcher : PlayerSearcherBase<Check, SearcherContainerResult<Player*>>
{
template<typename Container>
- PlayerListSearcher(WorldObject const* searcher, Container& container, Check& check)
- : PlayerSearcherBase<Check, SearcherContainerResult<Player*>>(&searcher->GetPhaseShift(), container, check) { }
-
- template<typename Container>
PlayerListSearcher(PhaseShift const& phaseShift, Container& container, Check& check)
: PlayerSearcherBase<Check, SearcherContainerResult<Player*>>(phaseShift, container, check) { }
+
+ template<typename Container>
+ PlayerListSearcher(WorldObject const* searcher, Container& container, Check& check)
+ : PlayerListSearcher(searcher->GetPhaseShift(), container, check) { }
};
template<class Do>
@@ -629,42 +687,44 @@ namespace Trinity
// AreaTrigger searchers
template<class Check, class Result>
- struct AreaTriggerSearcherBase : Result
+ struct AreaTriggerSearcherBase : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_AREATRIGGER>>
{
- PhaseShift const* i_phaseShift;
- Check& i_check;
-
template<typename Container>
- AreaTriggerSearcherBase(PhaseShift const* phaseShift, Container& result, Check& check)
- : Result(result), i_phaseShift(phaseShift), i_check(check) {
- }
-
- void Visit(AreaTriggerMapType& m);
-
- template<class NOT_INTERESTED> void Visit(GridRefManager<NOT_INTERESTED>&) {}
+ AreaTriggerSearcherBase(PhaseShift const& phaseShift, Container& result, Check& check)
+ : WorldObjectSearcherBase<Check, Result, StaticGridMapTypeMaskCheck<GRID_MAP_TYPE_MASK_AREATRIGGER>>(phaseShift, result, check) { }
};
template<class Check>
struct AreaTriggerSearcher : AreaTriggerSearcherBase<Check, SearcherFirstObjectResult<AreaTrigger*>>
{
+ AreaTriggerSearcher(PhaseShift const& phaseShift, AreaTrigger*& result, Check& check)
+ : AreaTriggerSearcherBase<Check, SearcherFirstObjectResult<AreaTrigger*>>(phaseShift, result, check) { }
+
AreaTriggerSearcher(WorldObject const* searcher, AreaTrigger*& result, Check& check)
- : AreaTriggerSearcherBase<Check, SearcherFirstObjectResult<AreaTrigger*>>(&searcher->GetPhaseShift(), result, check) {}
+ : AreaTriggerSearcher(searcher->GetPhaseShift(), result, check) { }
};
// Last accepted by Check GO if any (Check can change requirements at each call)
template<class Check>
struct AreaTriggerLastSearcher : AreaTriggerSearcherBase<Check, SearcherLastObjectResult<AreaTrigger*>>
{
+ AreaTriggerLastSearcher(PhaseShift const& phaseShift, AreaTrigger*& result, Check& check)
+ : AreaTriggerSearcherBase<Check, SearcherLastObjectResult<AreaTrigger*>>(phaseShift, result, check) { }
+
AreaTriggerLastSearcher(WorldObject const* searcher, AreaTrigger*& result, Check& check)
- : AreaTriggerSearcherBase<Check, SearcherLastObjectResult<AreaTrigger*>>(&searcher->GetPhaseShift(), result, check) {}
+ : AreaTriggerLastSearcher(searcher->GetPhaseShift(), result, check) { }
};
template<class Check>
struct AreaTriggerListSearcher : AreaTriggerSearcherBase<Check, SearcherContainerResult<AreaTrigger*>>
{
template<typename Container>
+ AreaTriggerListSearcher(PhaseShift const& phaseShift, Container& container, Check& check)
+ : AreaTriggerSearcherBase<Check, SearcherContainerResult<AreaTrigger*>>(phaseShift, container, check) { }
+
+ template<typename Container>
AreaTriggerListSearcher(WorldObject const* searcher, Container& container, Check& check)
- : AreaTriggerSearcherBase<Check, SearcherContainerResult<AreaTrigger*>>(&searcher->GetPhaseShift(), container, check) {}
+ : AreaTriggerListSearcher(searcher->GetPhaseShift(), container, check) { }
};
// CHECKS && DO classes
diff --git a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
index 536777d7647..c57b02bd8b6 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
@@ -180,56 +180,9 @@ void Trinity::MessageDistDelivererToHostile<PacketSender>::Visit(DynamicObjectMa
// WorldObject searchers & workers
-template <class Check, class Result>
+template <class Check, class Result, class MapTypeMaskCheck>
template <class T>
-void Trinity::WorldObjectSearcherBase<Check, Result>::Visit(GridRefManager<T>& m)
-{
- if (!(i_mapTypeMask & GridMapTypeMaskForType<T>::value))
- return;
-
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
-
- for (GridReference<T> const& ref : m)
- {
- if (i_check(ref.GetSource()))
- {
- this->Insert(ref.GetSource());
-
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
- }
- }
-}
-
-// Gameobject searchers
-
-template <class Check, class Result>
-void Trinity::GameObjectSearcherBase<Check, Result>::Visit(GameObjectMapType& m)
-{
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
-
- for (GridReference<GameObject> const& ref : m)
- {
- if (!ref.GetSource()->InSamePhase(*i_phaseShift))
- continue;
-
- if (i_check(ref.GetSource()))
- {
- this->Insert(ref.GetSource());
-
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
- }
- }
-}
-
-// Unit searchers
-
-template <class Check, class Result>
-template <class T>
-void Trinity::UnitSearcherBase<Check, Result>::VisitImpl(GridRefManager<T>& m)
+inline void Trinity::WorldObjectSearcherBase<Check, Result, MapTypeMaskCheck>::VisitImpl(GridRefManager<T>& m)
{
if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
return;
@@ -249,75 +202,6 @@ void Trinity::UnitSearcherBase<Check, Result>::VisitImpl(GridRefManager<T>& m)
}
}
-// Creature searchers
-
-template <class Check, class Result>
-void Trinity::CreatureSearcherBase<Check, Result>::Visit(CreatureMapType& m)
-{
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
-
- for (GridReference<Creature> const& ref : m)
- {
- if (!ref.GetSource()->InSamePhase(*i_phaseShift))
- continue;
-
- if (i_check(ref.GetSource()))
- {
- this->Insert(ref.GetSource());
-
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
- }
- }
-}
-
-// Player searchers
-
-template <class Check, class Result>
-void Trinity::PlayerSearcherBase<Check, Result>::Visit(PlayerMapType& m)
-{
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
-
- for (GridReference<Player> const& ref : m)
- {
- if (!ref.GetSource()->InSamePhase(*i_phaseShift))
- continue;
-
- if (i_check(ref.GetSource()))
- {
- this->Insert(ref.GetSource());
-
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
- }
- }
-}
-
-// AreaTrigger searchers
-
-template <class Check, class Result>
-void Trinity::AreaTriggerSearcherBase<Check, Result>::Visit(AreaTriggerMapType& m)
-{
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
-
- for (GridReference<AreaTrigger> const& ref : m)
- {
- if (!ref.GetSource()->InSamePhase(*i_phaseShift))
- continue;
-
- if (i_check(ref.GetSource()))
- {
- this->Insert(ref.GetSource());
-
- if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return)
- return;
- }
- }
-}
-
template<typename Localizer>
void Trinity::LocalizedDo<Localizer>::operator()(Player const* p)
{