aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-11 12:03:43 -0600
committermegamage <none@none>2009-03-11 12:03:43 -0600
commit6f4e33c611f0960c7c30ed5f6e8ff5da20c9c3fe (patch)
tree25a29a2011698a8613cab559932669821da262d5
parent444bf06830c5331ee3ea5ecec33939705cf67960 (diff)
parent3c5a92dbe0a1f140bbc7e1d9497e9e5d0d09e514 (diff)
*Merge.
--HG-- branch : trunk
-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 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();
}