near region check on tp needs to be a full current view check.

sp.KnownRegions is unreliable for this.
avinationmerge
UbitUmarov 2014-09-05 12:28:57 +01:00
parent 0514679b15
commit 25bc349ec9
1 changed files with 6 additions and 6 deletions

View File

@ -986,15 +986,15 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// Well, this is it. The agent is over there. // Well, this is it. The agent is over there.
// KillEntity(sp.Scene, sp.LocalId); // KillEntity(sp.Scene, sp.LocalId);
bool nearRegion = sp.KnownRegions.ContainsKey(destinationHandle); bool l_needsclosing = NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg);
sp.HasMovedAway(nearRegion); sp.HasMovedAway(!l_needsclosing);
// Now let's make it officially a child agent // Now let's make it officially a child agent
sp.MakeChildAgent(destinationHandle); sp.MakeChildAgent(destinationHandle);
// Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) if (l_needsclosing)
{ {
if (!sp.Scene.IncomingPreCloseClient(sp)) if (!sp.Scene.IncomingPreCloseClient(sp))
return; return;
@ -1144,8 +1144,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp); m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp);
bool nearRegion = sp.KnownRegions.ContainsKey(destinationHandle); bool l_needsclosing = NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg);
sp.HasMovedAway(nearRegion); sp.HasMovedAway(!l_needsclosing);
// Need to signal neighbours whether child agents may need closing irrespective of whether this // Need to signal neighbours whether child agents may need closing irrespective of whether this
// one needed closing. We also need to close child agents as quickly as possible to avoid complicated // one needed closing. We also need to close child agents as quickly as possible to avoid complicated
@ -1163,7 +1163,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
sp.MakeChildAgent(destinationHandle); sp.MakeChildAgent(destinationHandle);
// Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) if (l_needsclosing)
{ {
if (!sp.Scene.IncomingPreCloseClient(sp)) if (!sp.Scene.IncomingPreCloseClient(sp))
return; return;