aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs36
1 files changed, 19 insertions, 17 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
index 29747c1..ffe8327 100644
--- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
@@ -421,25 +421,27 @@ namespace OpenSim.Region.Environment.Scenes
421 agent.startpos = position; 421 agent.startpos = position;
422 agent.child = true; 422 agent.child = true;
423 avatar.Close(); 423 avatar.Close();
424 m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent); 424 if (m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent) &&
425 m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, 425 m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId,
426 position, false); 426 position, false)) ;
427 AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
428 string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId);
429 avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
430 capsPath);
431 avatar.MakeChildAgent();
432 if (KillObject != null)
433 { 427 {
434 KillObject(avatar.LocalId); 428 AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
435 } 429 string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId);
436 uint newRegionX = (uint) (regionHandle >> 40); 430 avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
437 uint newRegionY = (((uint) (regionHandle)) >> 8); 431 capsPath);
438 uint oldRegionX = (uint) (m_regionInfo.RegionHandle >> 40); 432 avatar.MakeChildAgent();
439 uint oldRegionY = (((uint) (m_regionInfo.RegionHandle)) >> 8); 433 if (KillObject != null)
440 if (Util.fast_distance2d((int) (newRegionX - oldRegionX), (int) (newRegionY - oldRegionY)) > 3) 434 {
441 { 435 KillObject(avatar.LocalId);
442 CloseChildAgentConnections(avatar); 436 }
437 uint newRegionX = (uint)(regionHandle >> 40);
438 uint newRegionY = (((uint)(regionHandle)) >> 8);
439 uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40);
440 uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8);
441 if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3)
442 {
443 CloseChildAgentConnections(avatar);
444 }
443 } 445 }
444 } 446 }
445 } 447 }