Applying a patch from Diva. This patch introduces significant improvements
in teleporting. Thank you, Diva.
This commit is contained in:
Melanie Thielker
2008-11-29 13:49:20 +00:00
parent 1b3a3ffc77
commit b8e8a33d60
3 changed files with 51 additions and 1 deletions

View File

@@ -149,6 +149,7 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid
if (destRegionUp)
{
// Fixing a bug where teleporting while sitting results in the avatar ending up removed from
// both regions
if (avatar.ParentID != (uint)0)
@@ -169,6 +170,17 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid
agent.child = false;
m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agent);
if (eq != null)
{
OSD Item = EventQueueHelper.EnableSimulator(realHandle, reg.ExternalEndPoint);
eq.Enqueue(Item, avatar.UUID);
}
else
{
avatar.ControllingClient.InformClientOfNeighbour(realHandle, reg.ExternalEndPoint);
// TODO: make Event Queue disablable!
}
m_commsProvider.InterRegion.ExpectAvatarCrossing(reg.RegionHandle, avatar.ControllingClient.AgentId,
position, false);
Thread.Sleep(2000);
@@ -223,6 +235,12 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid
{
//SendCloseChildAgentConnections(avatar.UUID, avatar.GetKnownRegionList());
SendCloseChildAgentConnections(avatar.UUID, childRegions);
if (eq != null)
{
OSD Item = EventQueueHelper.DisableSimulator(m_regionInfo.RegionHandle);
eq.Enqueue(Item, avatar.UUID);
}
Thread.Sleep(2000);
CloseConnection(avatar.UUID);
}
// if (teleport success) // seems to be always success here