From cfbfca64471bf3b0f53a37eb00edbe59855c7497 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Jul 2014 17:54:10 +0100 Subject: [PATCH] With ODE physics, fix an issue where the avatar couldn't jump and then move forward when moving south or west. Addresses http://opensimulator.org/mantis/view.php?id=5003 Thanks to UbitUmarov for this fix. --- .../Region/Physics/OdePlugin/ODECharacter.cs | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index 319f6ab884..2fac33fe65 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs @@ -895,30 +895,17 @@ namespace OpenSim.Region.Physics.OdePlugin // We're colliding with something and we're not flying but we're moving // This means we're walking or running. d.Vector3 pos = d.BodyGetPosition(Body); - vec.Z = (_target_velocity.Z - vel.Z)*PID_D + (_zeroPosition.Z - pos.Z)*PID_P; - if (_target_velocity.X > 0) - { - vec.X = ((_target_velocity.X - vel.X) / 1.2f) * PID_D; - } - if (_target_velocity.Y > 0) - { - vec.Y = ((_target_velocity.Y - vel.Y) / 1.2f) * PID_D; - } + vec.Z = (_target_velocity.Z - vel.Z) * PID_D + (_zeroPosition.Z - pos.Z) * PID_P; + vec.X = ((_target_velocity.X - vel.X) / 1.2f) * PID_D; + vec.Y = ((_target_velocity.Y - vel.Y) / 1.2f) * PID_D; } else if (!m_iscolliding && !flying) { // we're not colliding and we're not flying so that means we're falling! // m_iscolliding includes collisions with the ground. - // d.Vector3 pos = d.BodyGetPosition(Body); - if (_target_velocity.X > 0) - { - vec.X = ((_target_velocity.X - vel.X) / 1.2f) * PID_D; - } - if (_target_velocity.Y > 0) - { - vec.Y = ((_target_velocity.Y - vel.Y) / 1.2f) * PID_D; - } + vec.X = ((_target_velocity.X - vel.X) / 1.2f) * PID_D; + vec.Y = ((_target_velocity.Y - vel.Y) / 1.2f) * PID_D; } if (flying)