diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | 11 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index e80a33b..13d4562 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | |||
@@ -399,6 +399,15 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
399 | { | 399 | { |
400 | float fallVelocity = actor.Velocity.Z; | 400 | float fallVelocity = actor.Velocity.Z; |
401 | 401 | ||
402 | // if stable on Hover assume falling | ||
403 | if(actor.PIDHoverActive && fallVelocity < 0.05f) | ||
404 | { | ||
405 | Falling = true; | ||
406 | currentControlState = motionControlStates.falling; | ||
407 | m_lastFallVelocity = fallVelocity; | ||
408 | return "FALLDOWN"; | ||
409 | } | ||
410 | |||
402 | if (fallVelocity < -2.5f) | 411 | if (fallVelocity < -2.5f) |
403 | Falling = true; | 412 | Falling = true; |
404 | 413 | ||
@@ -431,7 +440,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
431 | 440 | ||
432 | #region Jumping // section added for jumping... | 441 | #region Jumping // section added for jumping... |
433 | 442 | ||
434 | if (isColliding && heldUp && currentControlState != motionControlStates.jumping) | 443 | if (isColliding && heldUp && currentControlState != motionControlStates.jumping && !actor.PIDHoverActive) |
435 | { | 444 | { |
436 | // Start jumping, prejump | 445 | // Start jumping, prejump |
437 | currentControlState = motionControlStates.jumping; | 446 | currentControlState = motionControlStates.jumping; |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 4252bd6..9996f6e 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -3363,7 +3363,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3363 | 3363 | ||
3364 | // m_log.DebugFormat("[SCENE PRESENCE]: Force to apply before modification was {0} for {1}", direc, Name); | 3364 | // m_log.DebugFormat("[SCENE PRESENCE]: Force to apply before modification was {0} for {1}", direc, Name); |
3365 | 3365 | ||
3366 | if (Animator.currentControlState == ScenePresenceAnimator.motionControlStates.falling) | 3366 | if (Animator.currentControlState == ScenePresenceAnimator.motionControlStates.falling |
3367 | && (PhysicsActor == null || !PhysicsActor.PIDHoverActive)) | ||
3367 | { | 3368 | { |
3368 | if (breaking) | 3369 | if (breaking) |
3369 | direc.Z = -9999f; //hack to tell physics to stop on Z | 3370 | direc.Z = -9999f; //hack to tell physics to stop on Z |