From e0f01298c9bbab4c3f5381d4816cf94a08accde4 Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 14 Jun 2009 21:04:55 -0500 Subject: [PATCH] *Inform creature/dynobj seers in visiblechangesnotifier --HG-- branch : trunk --- src/game/GridNotifiers.cpp | 27 +++++++++++++++++++++++++++ src/game/GridNotifiers.h | 2 ++ 2 files changed, 29 insertions(+) diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp index b87d57563a..858c807e38 100644 --- a/src/game/GridNotifiers.cpp +++ b/src/game/GridNotifiers.cpp @@ -38,9 +38,36 @@ 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() { diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index 5418bd09b1..64deb0d312 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 void Visit(GridRefManager &) {} void Visit(PlayerMapType &); + void Visit(CreatureMapType &); + void Visit(DynamicObjectMapType &); }; struct TRINITY_DLL_DECL GridUpdater