diff options
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index e5a9a99..91e6e5a 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1140,9 +1140,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
1140 | 1140 | ||
1141 | bool flying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); | 1141 | bool flying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); |
1142 | MakeRootAgent(AbsolutePosition, flying); | 1142 | MakeRootAgent(AbsolutePosition, flying); |
1143 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); | ||
1144 | |||
1145 | // m_log.DebugFormat("[SCENE PRESENCE] Completed movement"); | ||
1143 | 1146 | ||
1144 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) | 1147 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) |
1145 | { | 1148 | { |
1149 | // We cannot sleep here since this would hold up the inbound packet processing thread, as | ||
1150 | // CompleteMovement() is executed synchronously. However, it might be better to delay the release | ||
1151 | // here until we know for sure that the agent is active in this region. Sending AgentMovementComplete | ||
1152 | // is not enough for Imprudence clients - there appears to be a small delay (<200ms, <500ms) until they regard this | ||
1153 | // region as the current region, meaning that a close sent before then will fail the teleport. | ||
1154 | // System.Threading.Thread.Sleep(2000); | ||
1155 | |||
1146 | m_log.DebugFormat( | 1156 | m_log.DebugFormat( |
1147 | "[SCENE PRESENCE]: Releasing {0} {1} with callback to {2}", | 1157 | "[SCENE PRESENCE]: Releasing {0} {1} with callback to {2}", |
1148 | client.Name, client.AgentId, m_callbackURI); | 1158 | client.Name, client.AgentId, m_callbackURI); |
@@ -1151,9 +1161,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1151 | m_callbackURI = null; | 1161 | m_callbackURI = null; |
1152 | } | 1162 | } |
1153 | 1163 | ||
1154 | // m_log.DebugFormat("[SCENE PRESENCE] Completed movement"); | ||
1155 | |||
1156 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); | ||
1157 | ValidateAndSendAppearanceAndAgentData(); | 1164 | ValidateAndSendAppearanceAndAgentData(); |
1158 | 1165 | ||
1159 | // Create child agents in neighbouring regions | 1166 | // Create child agents in neighbouring regions |
@@ -1168,7 +1175,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1168 | friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); | 1175 | friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); |
1169 | } | 1176 | } |
1170 | 1177 | ||
1171 | |||
1172 | // m_log.DebugFormat( | 1178 | // m_log.DebugFormat( |
1173 | // "[SCENE PRESENCE]: Completing movement of {0} into region {1} took {2}ms", | 1179 | // "[SCENE PRESENCE]: Completing movement of {0} into region {1} took {2}ms", |
1174 | // client.Name, Scene.RegionInfo.RegionName, (DateTime.Now - startTime).Milliseconds); | 1180 | // client.Name, Scene.RegionInfo.RegionName, (DateTime.Now - startTime).Milliseconds); |