*Inform creature/dynobj seers in visiblechangesnotifier

--HG--
branch : trunk
This commit is contained in:
megamage
2009-06-14 21:04:55 -05:00
parent 1cacf0267e
commit e0f01298c9
2 changed files with 29 additions and 0 deletions
+27
View File
@@ -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()
{
+2
View File
@@ -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