diff options
author | megamage <none@none> | 2009-03-11 12:03:43 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-03-11 12:03:43 -0600 |
commit | 6f4e33c611f0960c7c30ed5f6e8ff5da20c9c3fe (patch) | |
tree | 25a29a2011698a8613cab559932669821da262d5 /src | |
parent | 444bf06830c5331ee3ea5ecec33939705cf67960 (diff) | |
parent | 3c5a92dbe0a1f140bbc7e1d9497e9e5d0d09e514 (diff) |
*Merge.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/GridNotifiers.cpp | 2 | ||||
-rw-r--r-- | src/game/GridNotifiers.h | 18 | ||||
-rw-r--r-- | src/game/GridNotifiersImpl.h | 2 | ||||
-rw-r--r-- | src/game/Map.cpp | 8 |
4 files changed, 19 insertions, 11 deletions
diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp index 2ab6f9a2bbb..8699ca00de5 100644 --- a/src/game/GridNotifiers.cpp +++ b/src/game/GridNotifiers.cpp @@ -42,7 +42,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 788f3361595..74e10be31a8 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 20e72047055..9bf0bbe6fb3 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 2a9d417079d..ef9c6cdb5a7 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -733,11 +733,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(); } @@ -747,7 +745,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(); } |