diff options
author | Melanie | 2013-07-29 02:08:05 +0100 |
---|---|---|
committer | Melanie | 2013-07-29 02:08:05 +0100 |
commit | bf283208df4a6936de85b2746112bb568d9c9d25 (patch) | |
tree | dafe50ad8e55ac30c41f5e7ebd11992f2772c294 /OpenSim/Region/CoreModules/Framework/EntityTransfer | |
parent | Merge branch 'master' into careminster (diff) | |
parent | Same issue. (diff) | |
download | opensim-SC-bf283208df4a6936de85b2746112bb568d9c9d25.zip opensim-SC-bf283208df4a6936de85b2746112bb568d9c9d25.tar.gz opensim-SC-bf283208df4a6936de85b2746112bb568d9c9d25.tar.bz2 opensim-SC-bf283208df4a6936de85b2746112bb568d9c9d25.tar.xz |
Merge branch 'master' into careminster
Conflicts:
OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
OpenSim/Region/Framework/Scenes/Scene.cs
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 29b4296..df95bf0 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -316,7 +316,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
316 | m_log.DebugFormat( | 316 | m_log.DebugFormat( |
317 | "[ENTITY TRANSFER MODULE]: Ignoring teleport request of {0} {1} to {2}@{3} - agent is already in transit.", | 317 | "[ENTITY TRANSFER MODULE]: Ignoring teleport request of {0} {1} to {2}@{3} - agent is already in transit.", |
318 | sp.Name, sp.UUID, position, regionHandle); | 318 | sp.Name, sp.UUID, position, regionHandle); |
319 | 319 | ||
320 | sp.ControllingClient.SendTeleportFailed("Slow down!"); | ||
320 | return; | 321 | return; |
321 | } | 322 | } |
322 | 323 | ||
@@ -921,13 +922,13 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
921 | 922 | ||
922 | if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) | 923 | if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) |
923 | { | 924 | { |
924 | // RED ALERT!!!! | 925 | // We need to delay here because Imprudence viewers, unlike v1 or v3, have a short (<200ms, <500ms) delay before |
925 | // PLEASE DO NOT DECREASE THIS WAIT TIME UNDER ANY CIRCUMSTANCES. | 926 | // they regard the new region as the current region after receiving the AgentMovementComplete |
926 | // THE VIEWERS SEEM TO NEED SOME TIME AFTER RECEIVING MoveAgentIntoRegion | 927 | // response. If close is sent before then, it will cause the viewer to quit instead. |
927 | // BEFORE THEY SETTLE IN THE NEW REGION. | 928 | // |
928 | // DECREASING THE WAIT TIME HERE WILL EITHER RESULT IN A VIEWER CRASH OR | 929 | // This sleep can be increased if necessary. However, whilst it's active, |
929 | // IN THE AVIE BEING PLACED IN INFINITY FOR A COUPLE OF SECONDS. | 930 | // an agent cannot teleport back to this region if it has teleported away. |
930 | Thread.Sleep(5000); | 931 | Thread.Sleep(2000); |
931 | 932 | ||
932 | sp.Scene.IncomingCloseAgent(sp.UUID, false); | 933 | sp.Scene.IncomingCloseAgent(sp.UUID, false); |
933 | } | 934 | } |
@@ -1045,21 +1046,33 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1045 | // Now let's make it officially a child agent | 1046 | // Now let's make it officially a child agent |
1046 | sp.MakeChildAgent(); | 1047 | sp.MakeChildAgent(); |
1047 | 1048 | ||
1048 | // OK, it got this agent. Let's close some child agents | ||
1049 | sp.CloseChildAgents(newRegionX, newRegionY); | ||
1050 | |||
1051 | // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone | 1049 | // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone |
1052 | 1050 | ||
1053 | if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) | 1051 | if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) |
1054 | { | 1052 | { |
1053 | sp.DoNotCloseAfterTeleport = false; | ||
1054 | |||
1055 | // RED ALERT!!!! | 1055 | // RED ALERT!!!! |
1056 | // PLEASE DO NOT DECREASE THIS WAIT TIME UNDER ANY CIRCUMSTANCES. | 1056 | // PLEASE DO NOT DECREASE THIS WAIT TIME UNDER ANY CIRCUMSTANCES. |
1057 | // THE VIEWERS SEEM TO NEED SOME TIME AFTER RECEIVING MoveAgentIntoRegion | 1057 | // THE VIEWERS SEEM TO NEED SOME TIME AFTER RECEIVING MoveAgentIntoRegion |
1058 | // BEFORE THEY SETTLE IN THE NEW REGION. | 1058 | // BEFORE THEY SETTLE IN THE NEW REGION. |
1059 | // DECREASING THE WAIT TIME HERE WILL EITHER RESULT IN A VIEWER CRASH OR | 1059 | // DECREASING THE WAIT TIME HERE WILL EITHER RESULT IN A VIEWER CRASH OR |
1060 | // IN THE AVIE BEING PLACED IN INFINITY FOR A COUPLE OF SECONDS. | 1060 | // IN THE AVIE BEING PLACED IN INFINITY FOR A COUPLE OF SECONDS. |
1061 | Thread.Sleep(5000); | 1061 | Thread.Sleep(15000); |
1062 | sp.Scene.IncomingCloseAgent(sp.UUID, false); | 1062 | |
1063 | if (!sp.DoNotCloseAfterTeleport) | ||
1064 | { | ||
1065 | // OK, it got this agent. Let's close everything | ||
1066 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Closing in agent {0} in region {1}", sp.Name, Scene.RegionInfo.RegionName); | ||
1067 | sp.CloseChildAgents(newRegionX, newRegionY); | ||
1068 | sp.Scene.IncomingCloseAgent(sp.UUID, false); | ||
1069 | |||
1070 | } | ||
1071 | else | ||
1072 | { | ||
1073 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Not closing agent {0}, user is back in {0}", sp.Name, Scene.RegionInfo.RegionName); | ||
1074 | sp.DoNotCloseAfterTeleport = false; | ||
1075 | } | ||
1063 | } | 1076 | } |
1064 | else | 1077 | else |
1065 | // now we have a child agent in this region. | 1078 | // now we have a child agent in this region. |