aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-06-14 21:04:55 -0500
committermegamage <none@none>2009-06-14 21:04:55 -0500
commite0f01298c9bbab4c3f5381d4816cf94a08accde4 (patch)
tree5d98f206632c68077ba4ccb2334d51a439a6cb60 /src
parent1cacf0267ebb93776a7b3ffc36c8215a4569c0b4 (diff)
*Inform creature/dynobj seers in visiblechangesnotifier
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/GridNotifiers.cpp27
-rw-r--r--src/game/GridNotifiers.h2
2 files changed, 29 insertions, 0 deletions
diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp
index b87d57563af..858c807e386 100644
--- a/src/game/GridNotifiers.cpp
+++ b/src/game/GridNotifiers.cpp
@@ -38,10 +38,37 @@ VisibleChangesNotifier::Visit(PlayerMapType &m)
continue;
iter->getSource()->UpdateVisibilityOf(&i_object);
+
+ if(!iter->getSource()->GetSharedVisionList().empty())
+ for(SharedVisionList::const_iterator i = iter->getSource()->GetSharedVisionList().begin();
+ i != iter->getSource()->GetSharedVisionList().end(); ++i)
+ if((*i)->m_seer == iter->getSource())
+ (*i)->UpdateVisibilityOf(&i_object);
}
}
void
+VisibleChangesNotifier::Visit(CreatureMapType &m)
+{
+ for(CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
+ if(!iter->getSource()->GetSharedVisionList().empty())
+ for(SharedVisionList::const_iterator i = iter->getSource()->GetSharedVisionList().begin();
+ i != iter->getSource()->GetSharedVisionList().end(); ++i)
+ if((*i)->m_seer == iter->getSource())
+ (*i)->UpdateVisibilityOf(&i_object);
+}
+
+void
+VisibleChangesNotifier::Visit(DynamicObjectMapType &m)
+{
+ for(DynamicObjectMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
+ if(IS_PLAYER_GUID(iter->getSource()->GetCasterGUID()))
+ if(Player* caster = (Player*)iter->getSource()->GetCaster())
+ if(caster->m_seer == iter->getSource())
+ caster->UpdateVisibilityOf(&i_object);
+}
+
+void
PlayerVisibilityNotifier::Notify()
{
// at this moment i_clientGUIDs have guids that not iterate at grid level checks
diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h
index 5418bd09b16..64deb0d3123 100644
--- a/src/game/GridNotifiers.h
+++ b/src/game/GridNotifiers.h
@@ -81,6 +81,8 @@ namespace Trinity
explicit VisibleChangesNotifier(WorldObject &object) : i_object(object) {}
template<class T> void Visit(GridRefManager<T> &) {}
void Visit(PlayerMapType &);
+ void Visit(CreatureMapType &);
+ void Visit(DynamicObjectMapType &);
};
struct TRINITY_DLL_DECL GridUpdater