diff options
Fixes height on Basic Physics in local teleports. Plus some small refactoring.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index df6c97a..fc883db 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -934,6 +934,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
934 | Velocity = new Vector3(0, 0, 0); | 934 | Velocity = new Vector3(0, 0, 0); |
935 | AbsolutePosition = pos; | 935 | AbsolutePosition = pos; |
936 | AddToPhysicalScene(isFlying); | 936 | AddToPhysicalScene(isFlying); |
937 | if (m_appearance != null) | ||
938 | { | ||
939 | if (m_appearance.AvatarHeight > 0) | ||
940 | SetHeight(m_appearance.AvatarHeight); | ||
941 | } | ||
942 | |||
937 | SendTerseUpdateToAllClients(); | 943 | SendTerseUpdateToAllClients(); |
938 | } | 944 | } |
939 | 945 | ||
@@ -2438,14 +2444,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
2438 | /// </summary> | 2444 | /// </summary> |
2439 | protected void CrossToNewRegion() | 2445 | protected void CrossToNewRegion() |
2440 | { | 2446 | { |
2447 | InTransit(); | ||
2448 | m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying); | ||
2449 | } | ||
2450 | |||
2451 | public void InTransit() | ||
2452 | { | ||
2441 | m_inTransit = true; | 2453 | m_inTransit = true; |
2442 | 2454 | ||
2443 | if ((m_physicsActor != null) && m_physicsActor.Flying) | 2455 | if ((m_physicsActor != null) && m_physicsActor.Flying) |
2444 | m_AgentControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 2456 | m_AgentControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; |
2445 | else if ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) | 2457 | else if ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) |
2446 | m_AgentControlFlags &= ~(uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 2458 | m_AgentControlFlags &= ~(uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; |
2459 | } | ||
2447 | 2460 | ||
2448 | m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying); | 2461 | public void NotInTransit() |
2462 | { | ||
2463 | m_inTransit = false; | ||
2449 | } | 2464 | } |
2450 | 2465 | ||
2451 | public void RestoreInCurrentScene() | 2466 | public void RestoreInCurrentScene() |