aboutsummaryrefslogtreecommitdiff
path: root/src/game/Map.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-04-18 11:05:35 -0500
committermegamage <none@none>2009-04-18 11:05:35 -0500
commitdb65f3c111197342e864e296bd7b8b6369a11add (patch)
tree2e33b59651749fd9bf1b2ffb1b443c37a353560e /src/game/Map.cpp
parent5629168dbbc658d44e8b12544b768ac23bf95991 (diff)
parent60736b1f7da05e5eee5100edc3e80fbb9e228495 (diff)
*Merge.
--HG-- branch : trunk
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r--src/game/Map.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp
index c6c74a74493..ebd88b38c47 100644
--- a/src/game/Map.cpp
+++ b/src/game/Map.cpp
@@ -642,16 +642,24 @@ void Map::RelocationNotify()
unit->m_Notified = true;
unit->m_IsInNotifyList = false;
+ float dist = abs(unit->GetPositionX() - unit->oldX) + abs(unit->GetPositionY() - unit->oldY);
+ if(dist > 10.0f)
+ {
+ Trinity::VisibleChangesNotifier notifier(*unit);
+ VisitWorld(unit->oldX, unit->oldY, World::GetMaxVisibleDistance(), notifier);
+ dist = 0;
+ }
+
if(unit->GetTypeId() == TYPEID_PLAYER)
{
Trinity::PlayerRelocationNotifier notifier(*((Player*)unit));
- VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
+ VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance() + dist, notifier);
notifier.Notify();
}
else
{
Trinity::CreatureRelocationNotifier notifier(*((Creature*)unit));
- VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
+ VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance() + dist, notifier);
}
}
for(std::vector<Unit*>::iterator iter = i_unitsToNotify.begin(); iter != i_unitsToNotify.end(); ++iter)
@@ -667,6 +675,8 @@ void Map::AddUnitToNotify(Unit* u)
return;
u->m_IsInNotifyList = true;
+ u->oldX = u->GetPositionX();
+ u->oldY = u->GetPositionY();
if(i_lock)
i_unitsToNotifyBacklog.push_back(u->GetGUID());