diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index dfaf06d..b340bda 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -161,6 +161,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
161 | private bool m_setAlwaysRun; | 161 | private bool m_setAlwaysRun; |
162 | private bool m_forceFly; | 162 | private bool m_forceFly; |
163 | private bool m_flyDisabled; | 163 | private bool m_flyDisabled; |
164 | private bool m_flyingOld; // add for fly velocity control | ||
165 | public bool m_wasFlying; // add for fly velocity control | ||
164 | 166 | ||
165 | private float m_speedModifier = 1.0f; | 167 | private float m_speedModifier = 1.0f; |
166 | 168 | ||
@@ -2564,14 +2566,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
2564 | Vector3 direc = vec * rotation; | 2566 | Vector3 direc = vec * rotation; |
2565 | direc.Normalize(); | 2567 | direc.Normalize(); |
2566 | PhysicsActor actor = m_physicsActor; | 2568 | PhysicsActor actor = m_physicsActor; |
2569 | |||
2570 | if (actor.Flying != m_flyingOld) // add for fly velocity control | ||
2571 | { | ||
2572 | m_flyingOld = actor.Flying; // add for fly velocity control | ||
2573 | if (!actor.Flying) m_wasFlying = true; // add for fly velocity control | ||
2574 | } | ||
2575 | |||
2576 | if (m_physicsActor.IsColliding == true) m_wasFlying = false; // add for fly velocity control | ||
2577 | |||
2567 | if ((vec.Z == 0f) && !actor.Flying) direc.Z = 0f; // Prevent camera WASD up. | 2578 | if ((vec.Z == 0f) && !actor.Flying) direc.Z = 0f; // Prevent camera WASD up. |
2568 | 2579 | ||
2569 | direc *= 0.03f * 128f * m_speedModifier; | 2580 | direc *= 0.03f * 128f * m_speedModifier; |
2570 | 2581 | ||
2571 | if (actor != null) | 2582 | if (actor != null) |
2572 | { | 2583 | { |
2573 | // rm falling if (actor.Flying) | 2584 | if (actor.Flying) |
2574 | if ((actor.Flying) || Animator.m_falling) // add for falling lateral speed | ||
2575 | { | 2585 | { |
2576 | // rm speed mod direc *= 4.0f; | 2586 | // rm speed mod direc *= 4.0f; |
2577 | direc *= 5.2f; // for speed mod | 2587 | direc *= 5.2f; // for speed mod |
@@ -2587,6 +2597,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
2587 | // m_log.Info("[AGENT]: Stop FLying"); | 2597 | // m_log.Info("[AGENT]: Stop FLying"); |
2588 | //} | 2598 | //} |
2589 | } | 2599 | } |
2600 | if (Animator.m_falling && m_wasFlying) // if falling from flying, disable motion add | ||
2601 | { | ||
2602 | direc *= 0.0f; | ||
2603 | } | ||
2590 | /* This jumping section removed to SPA | 2604 | /* This jumping section removed to SPA |
2591 | else if (!actor.Flying && actor.IsColliding) | 2605 | else if (!actor.Flying && actor.IsColliding) |
2592 | { | 2606 | { |