diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 2cfdd94..2cf0e9d 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -2043,6 +2043,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
2043 | look = new Vector3(0.99f, 0.042f, 0); | 2043 | look = new Vector3(0.99f, 0.042f, 0); |
2044 | } | 2044 | } |
2045 | 2045 | ||
2046 | // Check Default Location (Also See EntityTransferModule.TeleportAgentWithinRegion) | ||
2047 | if (AbsolutePosition.X == 128f && AbsolutePosition.Y == 128f) | ||
2048 | AbsolutePosition = Scene.RegionInfo.DefaultLandingPoint; | ||
2049 | |||
2046 | if (!MakeRootAgent(AbsolutePosition, flying, ref look)) | 2050 | if (!MakeRootAgent(AbsolutePosition, flying, ref look)) |
2047 | { | 2051 | { |
2048 | m_log.DebugFormat( | 2052 | m_log.DebugFormat( |
@@ -2071,14 +2075,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2071 | m_log.DebugFormat("[CompleteMovement]: Missing COF for {0} is {1}", client.AgentId, COF); | 2075 | m_log.DebugFormat("[CompleteMovement]: Missing COF for {0} is {1}", client.AgentId, COF); |
2072 | } | 2076 | } |
2073 | 2077 | ||
2074 | if(!gotCrossUpdate) | ||
2075 | RotateToLookAt(look); | ||
2076 | 2078 | ||
2077 | // Tell the client that we're totally ready | 2079 | // Tell the client that we're totally ready |
2078 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); | 2080 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); |
2079 | 2081 | ||
2080 | m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | 2082 | m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts)); |
2081 | 2083 | ||
2084 | |||
2082 | if (!string.IsNullOrEmpty(m_callbackURI)) | 2085 | if (!string.IsNullOrEmpty(m_callbackURI)) |
2083 | { | 2086 | { |
2084 | // We cannot sleep here since this would hold up the inbound packet processing thread, as | 2087 | // We cannot sleep here since this would hold up the inbound packet processing thread, as |
@@ -2107,12 +2110,28 @@ namespace OpenSim.Region.Framework.Scenes | |||
2107 | // client.Name, client.AgentId, m_scene.RegionInfo.RegionName); | 2110 | // client.Name, client.AgentId, m_scene.RegionInfo.RegionName); |
2108 | // } | 2111 | // } |
2109 | 2112 | ||
2113 | |||
2110 | m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | 2114 | m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); |
2111 | 2115 | ||
2116 | |||
2117 | if(m_teleportFlags > 0) //sanity check | ||
2118 | gotCrossUpdate = false; | ||
2119 | |||
2120 | if(!gotCrossUpdate) | ||
2121 | RotateToLookAt(look); | ||
2122 | |||
2123 | |||
2112 | // start sending terrain patchs | 2124 | // start sending terrain patchs |
2113 | if (!gotCrossUpdate && !isNPC) | 2125 | if (!gotCrossUpdate && !isNPC) |
2114 | Scene.SendLayerData(ControllingClient); | 2126 | Scene.SendLayerData(ControllingClient); |
2115 | 2127 | ||
2128 | // HG delay | ||
2129 | if((m_teleportFlags & TeleportFlags.ViaHGLogin) != 0) | ||
2130 | { | ||
2131 | Thread.Sleep(500); | ||
2132 | m_log.DebugFormat("[CompleteMovement] HG delay: {0}ms", Util.EnvironmentTickCountSubtract(ts)); | ||
2133 | } | ||
2134 | |||
2116 | m_previusParcelHide = false; | 2135 | m_previusParcelHide = false; |
2117 | m_previusParcelUUID = UUID.Zero; | 2136 | m_previusParcelUUID = UUID.Zero; |
2118 | m_currentParcelHide = false; | 2137 | m_currentParcelHide = false; |