diff options
author | megamage <none@none> | 2009-06-14 21:04:55 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-06-14 21:04:55 -0500 |
commit | e0f01298c9bbab4c3f5381d4816cf94a08accde4 (patch) | |
tree | 5d98f206632c68077ba4ccb2334d51a439a6cb60 /src | |
parent | 1cacf0267ebb93776a7b3ffc36c8215a4569c0b4 (diff) |
*Inform creature/dynobj seers in visiblechangesnotifier
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/GridNotifiers.cpp | 27 | ||||
-rw-r--r-- | src/game/GridNotifiers.h | 2 |
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 |