aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework/EntityTransfer
diff options
context:
space:
mode:
authorMelanie2013-07-29 02:08:05 +0100
committerMelanie2013-07-29 02:08:05 +0100
commitbf283208df4a6936de85b2746112bb568d9c9d25 (patch)
treedafe50ad8e55ac30c41f5e7ebd11992f2772c294 /OpenSim/Region/CoreModules/Framework/EntityTransfer
parentMerge branch 'master' into careminster (diff)
parentSame issue. (diff)
downloadopensim-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.cs39
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.