diff options
Major changes in interregion communications. This breaks compatibility with older versions, and may result is all sorts of weirdnesses when interacting with sims in older versions. Changes:
- Introducing synchronous Teleports. Now the receiving region calls back the sending region after the client has been made a root agent there, that is, after client sends CompleteMovement to the destination.
- SendCloseAgent moved from OGS1 Remoting to RESTComms.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 23dc9be..166e051 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -217,6 +217,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
217 | 217 | ||
218 | private Dictionary<UUID, ScenePartUpdate> m_updateTimes = new Dictionary<UUID, ScenePartUpdate>(); | 218 | private Dictionary<UUID, ScenePartUpdate> m_updateTimes = new Dictionary<UUID, ScenePartUpdate>(); |
219 | 219 | ||
220 | // For teleports and crossings callbacks | ||
221 | string m_callbackURI; | ||
222 | ulong m_rootRegionHandle; | ||
223 | |||
220 | #region Properties | 224 | #region Properties |
221 | 225 | ||
222 | /// <summary> | 226 | /// <summary> |
@@ -1000,6 +1004,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1000 | /// </summary> | 1004 | /// </summary> |
1001 | public void CompleteMovement() | 1005 | public void CompleteMovement() |
1002 | { | 1006 | { |
1007 | //Console.WriteLine("\n CompleteMovement \n"); | ||
1003 | Vector3 look = Velocity; | 1008 | Vector3 look = Velocity; |
1004 | if ((look.X == 0) && (look.Y == 0) && (look.Z == 0)) | 1009 | if ((look.X == 0) && (look.Y == 0) && (look.Z == 0)) |
1005 | { | 1010 | { |
@@ -1013,6 +1018,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1013 | m_isChildAgent = false; | 1018 | m_isChildAgent = false; |
1014 | 1019 | ||
1015 | MakeRootAgent(AbsolutePosition, false); | 1020 | MakeRootAgent(AbsolutePosition, false); |
1021 | |||
1022 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) | ||
1023 | { | ||
1024 | Scene.SendReleaseAgent(m_rootRegionHandle, UUID, m_callbackURI); | ||
1025 | m_callbackURI = null; | ||
1026 | } | ||
1016 | } | 1027 | } |
1017 | } | 1028 | } |
1018 | 1029 | ||
@@ -2582,7 +2593,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2582 | if (!IsChildAgent) | 2593 | if (!IsChildAgent) |
2583 | return; | 2594 | return; |
2584 | 2595 | ||
2585 | //Console.WriteLine(" >>> ChildAgentDataUpdate <<<"); | 2596 | //Console.WriteLine(" >>> ChildAgentDataUpdate <<< " + rRegionX + "-" + rRegionY); |
2586 | int shiftx = ((int)rRegionX - (int)tRegionX) * (int)Constants.RegionSize; | 2597 | int shiftx = ((int)rRegionX - (int)tRegionX) * (int)Constants.RegionSize; |
2587 | int shifty = ((int)rRegionY - (int)tRegionY) * (int)Constants.RegionSize; | 2598 | int shifty = ((int)rRegionY - (int)tRegionY) * (int)Constants.RegionSize; |
2588 | 2599 | ||
@@ -2615,6 +2626,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
2615 | if (m_scene.m_seeIntoRegionFromNeighbor) | 2626 | if (m_scene.m_seeIntoRegionFromNeighbor) |
2616 | m_pendingObjects = null; | 2627 | m_pendingObjects = null; |
2617 | 2628 | ||
2629 | m_callbackURI = cAgentData.CallbackURI; | ||
2630 | m_rootRegionHandle = Util.UIntsToLong(rRegionX * Constants.RegionSize, rRegionY * Constants.RegionSize); | ||
2631 | |||
2618 | //cAgentData.AVHeight; | 2632 | //cAgentData.AVHeight; |
2619 | //cAgentData.regionHandle; | 2633 | //cAgentData.regionHandle; |
2620 | //m_velocity = cAgentData.Velocity; | 2634 | //m_velocity = cAgentData.Velocity; |