diff options
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs | 16 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 31 |
2 files changed, 37 insertions, 10 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs index 0e7be7d..e63629e 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/Tests/ChatModuleTests.cs | |||
@@ -142,8 +142,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
142 | 142 | ||
143 | // We must update the scenes in order to make the root new root agents trigger position updates in their | 143 | // We must update the scenes in order to make the root new root agents trigger position updates in their |
144 | // children. | 144 | // children. |
145 | sceneWest.Update(3); | 145 | sceneWest.Update(4); |
146 | sceneEast.Update(3); | 146 | sceneEast.Update(4); |
147 | sp1.DrawDistance += 64; | ||
148 | sp2.DrawDistance += 64; | ||
149 | sceneWest.Update(2); | ||
150 | sceneEast.Update(2); | ||
147 | 151 | ||
148 | // Check child positions are correct. | 152 | // Check child positions are correct. |
149 | Assert.AreEqual( | 153 | Assert.AreEqual( |
@@ -233,8 +237,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat.Tests | |||
233 | 237 | ||
234 | // We must update the scenes in order to make the root new root agents trigger position updates in their | 238 | // We must update the scenes in order to make the root new root agents trigger position updates in their |
235 | // children. | 239 | // children. |
236 | sceneNorth.Update(3); | 240 | sceneNorth.Update(4); |
237 | sceneSouth.Update(3); | 241 | sceneSouth.Update(4); |
242 | sp1.DrawDistance += 64; | ||
243 | sp2.DrawDistance += 64; | ||
244 | sceneNorth.Update(2); | ||
245 | sceneSouth.Update(2); | ||
238 | 246 | ||
239 | // Check child positions are correct. | 247 | // Check child positions are correct. |
240 | Assert.AreEqual( | 248 | Assert.AreEqual( |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 12887fb..c71d20d 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -2168,8 +2168,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2168 | m_inTransit = false; | 2168 | m_inTransit = false; |
2169 | 2169 | ||
2170 | // Tell the client that we're ready to send rest | 2170 | // Tell the client that we're ready to send rest |
2171 | m_gotRegionHandShake = false; // allow it | 2171 | if (!gotCrossUpdate) |
2172 | ControllingClient.SendRegionHandshake(); | 2172 | { |
2173 | m_gotRegionHandShake = false; // allow it if not a crossing | ||
2174 | ControllingClient.SendRegionHandshake(); | ||
2175 | } | ||
2173 | 2176 | ||
2174 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); | 2177 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); |
2175 | 2178 | ||
@@ -2300,6 +2303,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
2300 | 2303 | ||
2301 | if (!IsNPC) | 2304 | if (!IsNPC) |
2302 | { | 2305 | { |
2306 | if(gotCrossUpdate) | ||
2307 | { | ||
2308 | // Create child agents in neighbouring regions | ||
2309 | IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>(); | ||
2310 | if (m_agentTransfer != null) | ||
2311 | { | ||
2312 | m_agentTransfer.EnableChildAgents(this); | ||
2313 | } | ||
2314 | |||
2315 | m_lastChildUpdatesTime = Util.EnvironmentTickCount() + 10000; | ||
2316 | m_lastChildAgentUpdatePosition = AbsolutePosition; | ||
2317 | m_lastChildAgentUpdateDrawDistance = DrawDistance; | ||
2318 | |||
2319 | m_lastChildAgentUpdateGodLevel = GodController.ViwerUIGodLevel; | ||
2320 | m_childUpdatesBusy = false; // allow them | ||
2321 | } | ||
2303 | // send the rest of the world | 2322 | // send the rest of the world |
2304 | if (m_teleportFlags > 0 || m_currentParcelHide) | 2323 | if (m_teleportFlags > 0 || m_currentParcelHide) |
2305 | //SendInitialDataToMe(); | 2324 | //SendInitialDataToMe(); |
@@ -4001,8 +4020,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
4001 | 4020 | ||
4002 | Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI); | 4021 | Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI); |
4003 | m_callbackURI = null; | 4022 | m_callbackURI = null; |
4004 | NeedInitialData = 4; | 4023 | //NeedInitialData = 4; |
4005 | return; | 4024 | //return; |
4006 | } | 4025 | } |
4007 | // v0.7 close HG sender region | 4026 | // v0.7 close HG sender region |
4008 | if (!string.IsNullOrEmpty(m_newCallbackURI)) | 4027 | if (!string.IsNullOrEmpty(m_newCallbackURI)) |
@@ -4018,8 +4037,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
4018 | 4037 | ||
4019 | Scene.SimulationService.ReleaseAgent(originID, UUID, m_newCallbackURI); | 4038 | Scene.SimulationService.ReleaseAgent(originID, UUID, m_newCallbackURI); |
4020 | m_newCallbackURI = null; | 4039 | m_newCallbackURI = null; |
4021 | NeedInitialData = 4; | 4040 | //NeedInitialData = 4; |
4022 | return; | 4041 | //return; |
4023 | } | 4042 | } |
4024 | 4043 | ||
4025 | // Create child agents in neighbouring regions | 4044 | // Create child agents in neighbouring regions |