aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/GridNotifiers.cpp2
-rw-r--r--src/game/GridNotifiers.h18
-rw-r--r--src/game/GridNotifiersImpl.h2
-rw-r--r--src/game/Map.cpp8
4 files changed, 19 insertions, 11 deletions
diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp
index 13fa66308e5..fcb4e376b26 100644
--- a/src/game/GridNotifiers.cpp
+++ b/src/game/GridNotifiers.cpp
@@ -43,7 +43,7 @@ VisibleChangesNotifier::Visit(PlayerMapType &m)
}
void
-PlayerRelocationNotifier::Notify()
+PlayerVisibilityNotifier::Notify()
{
// at this moment i_clientGUIDs have guids that not iterate at grid level checks
// but exist one case when this possible and object not out of range: transports
diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h
index bdd40a3f72f..8e427366f1a 100644
--- a/src/game/GridNotifiers.h
+++ b/src/game/GridNotifiers.h
@@ -38,7 +38,7 @@ class Player;
namespace Trinity
{
- struct TRINITY_DLL_DECL PlayerRelocationNotifier
+ struct TRINITY_DLL_DECL PlayerVisibilityNotifier
{
Player &i_player;
UpdateData i_data;
@@ -46,17 +46,27 @@ namespace Trinity
Player::ClientGUIDs i_clientGUIDs;
std::set<WorldObject*> i_visibleNow;
- PlayerRelocationNotifier(Player &player) : i_player(player),i_clientGUIDs(player.m_clientGUIDs) {}
+ PlayerVisibilityNotifier(Player &player) : i_player(player),i_clientGUIDs(player.m_clientGUIDs) {}
template<class T> inline void Visit(GridRefManager<T> &);
- #ifdef WIN32
+ /*#ifdef WIN32
template<> inline void Visit(PlayerMapType &);
template<> inline void Visit(CreatureMapType &);
- #endif
+ #endif*/
void Notify(void);
};
+ struct TRINITY_DLL_DECL PlayerRelocationNotifier : public PlayerVisibilityNotifier
+ {
+ PlayerRelocationNotifier(Player &player) : PlayerVisibilityNotifier(player) {}
+ template<class T> inline void Visit(GridRefManager<T> &m) { PlayerVisibilityNotifier::Visit(m); }
+ #ifdef WIN32
+ template<> inline void Visit(PlayerMapType &);
+ template<> inline void Visit(CreatureMapType &);
+ #endif
+ };
+
struct TRINITY_DLL_DECL CreatureRelocationNotifier
{
Creature &i_creature;
diff --git a/src/game/GridNotifiersImpl.h b/src/game/GridNotifiersImpl.h
index 7131b6281f4..4fe61076b18 100644
--- a/src/game/GridNotifiersImpl.h
+++ b/src/game/GridNotifiersImpl.h
@@ -67,7 +67,7 @@ inline void CreatureCreatureRelocationWorker(Creature* c1, Creature* c2)
template<class T>
inline void
-Trinity::PlayerRelocationNotifier::Visit(GridRefManager<T> &m)
+Trinity::PlayerVisibilityNotifier::Visit(GridRefManager<T> &m)
{
for(typename GridRefManager<T>::iterator iter = m.begin(); iter != m.end(); ++iter)
{
diff --git a/src/game/Map.cpp b/src/game/Map.cpp
index 9c2521ca3bd..fbe87986903 100644
--- a/src/game/Map.cpp
+++ b/src/game/Map.cpp
@@ -754,11 +754,9 @@ void Map::Update(const uint32 &t_diff)
if(obj->isType(TYPEMASK_UNIT))
{
if(!((Unit*)obj)->GetSharedVisionList().empty())
- for(SharedVisionList::const_iterator itr = ((Unit*)obj)->GetSharedVisionList().begin(); itr != ((Unit*)obj)->GetSharedVisionList().end();)
+ for(SharedVisionList::const_iterator itr = ((Unit*)obj)->GetSharedVisionList().begin(); itr != ((Unit*)obj)->GetSharedVisionList().end(); ++itr)
{
- Player *player = *itr;
- ++itr;
- Trinity::PlayerRelocationNotifier notifier(*player);
+ Trinity::PlayerVisibilityNotifier notifier(**itr);
VisitAll(obj->GetPositionX(), obj->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
notifier.Notify();
}
@@ -768,7 +766,7 @@ void Map::Update(const uint32 &t_diff)
if(Unit *caster = ((DynamicObject*)obj)->GetCaster())
if(caster->GetTypeId() == TYPEID_PLAYER && caster->GetUInt64Value(PLAYER_FARSIGHT) == obj->GetGUID())
{
- Trinity::PlayerRelocationNotifier notifier(*((Player*)caster));
+ Trinity::PlayerVisibilityNotifier notifier(*((Player*)caster));
VisitAll(obj->GetPositionX(), obj->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
notifier.Notify();
}