diff options
author | megamage <none@none> | 2009-03-08 11:11:21 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-03-08 11:11:21 -0600 |
commit | 0f8dee432c4eb78b466744b9e3e13266c6be19d7 (patch) | |
tree | 9687f7feba0f5f8c2deb43dc9f3f104e8b0714d2 /src/game/Map.cpp | |
parent | 9720fb075f7e8d86d5d6a55ba0938e0c72a53cd5 (diff) |
*Update of relocation notify code.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r-- | src/game/Map.cpp | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 7a280160913..847ec49c119 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -624,34 +624,15 @@ void Map::RelocationNotify() if(unit->GetTypeId() == TYPEID_PLAYER) { - //UpdatePlayerVisibility((Player*)unit, cell, val); - //Trinity::PlayerNotifier pl_notifier(*player); - //VisitWorld(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), pl_notifier); - - //UpdateObjectsVisibilityFor((Player*)unit, cell, val); - Trinity::VisibleNotifier ob_notifier(*((Player*)unit)); - VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), ob_notifier); - ob_notifier.Notify(); - Trinity::PlayerRelocationNotifier notifier(*((Player*)unit)); VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier); + notifier.Notify(); } else { Trinity::CreatureRelocationNotifier notifier(*((Creature*)unit)); VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier); } - - // Update visibility back to player who is controlling the unit - if(unit->GetSharedVisionList().size()) - { - for(SharedVisionList::const_iterator it = unit->GetSharedVisionList().begin(); it != unit->GetSharedVisionList().end(); ++it) - { - Trinity::VisibleNotifier ob_notifier(**it); - VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), ob_notifier); - ob_notifier.Notify(); - } - } } //Clear list @@ -768,6 +749,28 @@ void Map::Update(const uint32 &t_diff) } } } + + // Update bindsight players + if(obj->isType(TYPEMASK_UNIT)) + { + if(!((Unit*)obj)->GetSharedVisionList().empty()) + for(SharedVisionList::const_iterator it = ((Unit*)obj)->GetSharedVisionList().begin(); it != ((Unit*)obj)->GetSharedVisionList().end(); ++it) + { + Trinity::PlayerRelocationNotifier notifier(**it); + VisitAll(obj->GetPositionX(), obj->GetPositionY(), World::GetMaxVisibleDistance(), notifier); + notifier.Notify(); + } + } + else if(obj->GetTypeId() == TYPEID_DYNAMICOBJECT) + { + if(Unit *caster = ((DynamicObject*)obj)->GetCaster()) + if(caster->GetTypeId() == TYPEID_PLAYER && caster->GetUInt64Value(PLAYER_FARSIGHT) == obj->GetGUID()) + { + Trinity::PlayerRelocationNotifier notifier(*((Player*)caster)); + VisitAll(obj->GetPositionX(), obj->GetPositionY(), World::GetMaxVisibleDistance(), notifier); + notifier.Notify(); + } + } } } |