diff options
author | Melanie Thielker | 2008-11-29 13:49:20 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-11-29 13:49:20 +0000 |
commit | b8e8a33d60b98894671a34a19e8d982463fa4785 (patch) | |
tree | b6bb8e0a719b24664d391dd76c3add2c5d2f6666 /OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |
parent | Finally make attachments stay put. Randomize local ID generation to (diff) | |
download | opensim-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 'OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | 19 |
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 |