aboutsummaryrefslogtreecommitdiff
path: root/src/game/Map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r--src/game/Map.cpp43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp
index 58ae50ee1dd..ae099710083 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();
+ }
+ }
}
}