waste another thread job on another thing that should be part of a more

unified service, and also not hidding on a so called event"
LSLKeyTest
UbitUmarov 2016-07-27 02:54:32 +01:00
parent d6e16c5130
commit f4fa891928
2 changed files with 64 additions and 51 deletions

View File

@ -2080,6 +2080,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
sp.KnownRegions = seeds;
sp.SetNeighbourRegionSizeInfo(neighbours);
if(newneighbours.Count > 0 || previousRegionNeighbourHandles.Count > 0)
{
AgentPosition agentpos = new AgentPosition();
agentpos.AgentID = new UUID(sp.UUID.Guid);
agentpos.SessionID = spClient.SessionId;
@ -2131,16 +2133,11 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
neighbour.RegionLocX,
neighbour.RegionLocY,
e);
// FIXME: Okay, even though we've failed, we're still going to throw the exception on,
// since I don't know what will happen if we just let the client continue
// XXX: Well, decided to swallow the exception instead for now. Let us see how that goes.
// throw e;
}
}
});
}
}
// Computes the difference between two region bases.
// Returns a vector of world coordinates (meters) from base of first region to the second.

View File

@ -68,6 +68,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
public void OnMakeRootAgent(ScenePresence sp)
{
if (sp.isNPC)
return;
if(sp.gotCrossUpdate)
{
Util.FireAndForget(delegate
{
DoOnMakeRootAgent(sp);
}, null, "PresenceDetector_MakeRoot");
}
else
DoOnMakeRootAgent(sp);
}
public void DoOnMakeRootAgent(ScenePresence sp)
{
// m_log.DebugFormat("[PRESENCE DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName);
if (sp.PresenceType != PresenceType.Npc)
m_PresenceService.ReportAgent(sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID);