aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
diff options
context:
space:
mode:
authorMelanie Thielker2008-11-29 13:49:20 +0000
committerMelanie Thielker2008-11-29 13:49:20 +0000
commitb8e8a33d60b98894671a34a19e8d982463fa4785 (patch)
treeb6bb8e0a719b24664d391dd76c3add2c5d2f6666 /OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
parentFinally make attachments stay put. Randomize local ID generation to (diff)
downloadopensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.zip
opensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.tar.gz
opensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.tar.bz2
opensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.tar.xz
Mantis #2584
Applying a patch from Diva. This patch introduces significant improvements in teleporting. Thank you, Diva.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs19
1 files changed, 18 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
index 64da9d4..54d4298 100644
--- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
@@ -662,6 +662,7 @@ namespace OpenSim.Region.Environment.Scenes
662 662
663 if (destRegionUp) 663 if (destRegionUp)
664 { 664 {
665
665 // Fixing a bug where teleporting while sitting results in the avatar ending up removed from 666 // Fixing a bug where teleporting while sitting results in the avatar ending up removed from
666 // both regions 667 // both regions
667 if (avatar.ParentID != (uint)0) 668 if (avatar.ParentID != (uint)0)
@@ -681,6 +682,16 @@ namespace OpenSim.Region.Environment.Scenes
681 avatar.Scene.RemoveCapsHandler(avatar.UUID); 682 avatar.Scene.RemoveCapsHandler(avatar.UUID);
682 agent.child = false; 683 agent.child = false;
683 m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agent); 684 m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agent);
685
686 if (eq != null)
687 {
688 OSD Item = EventQueueHelper.EnableSimulator(reg.RegionHandle, reg.ExternalEndPoint);
689 eq.Enqueue(Item, avatar.UUID);
690 }
691 else
692 {
693 avatar.ControllingClient.InformClientOfNeighbour(reg.RegionHandle, reg.ExternalEndPoint);
694 }
684 695
685 m_commsProvider.InterRegion.ExpectAvatarCrossing(reg.RegionHandle, avatar.ControllingClient.AgentId, 696 m_commsProvider.InterRegion.ExpectAvatarCrossing(reg.RegionHandle, avatar.ControllingClient.AgentId,
686 position, false); 697 position, false);
@@ -724,8 +735,14 @@ namespace OpenSim.Region.Environment.Scenes
724 uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8); 735 uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8);
725 if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3) 736 if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3)
726 { 737 {
727 SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList()); 738 //SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList());
728 SendCloseChildAgentConnections(avatar.UUID, childRegions); 739 SendCloseChildAgentConnections(avatar.UUID, childRegions);
740 if (eq != null)
741 {
742 OSD Item = EventQueueHelper.DisableSimulator(m_regionInfo.RegionHandle);
743 eq.Enqueue(Item, avatar.UUID);
744 }
745 Thread.Sleep(2000);
729 CloseConnection(avatar.UUID); 746 CloseConnection(avatar.UUID);
730 } 747 }
731 // if (teleport success) // seems to be always success here 748 // if (teleport success) // seems to be always success here