From dea7b7b1a7ab6501d89f3ce92425c45147156541 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 16 Apr 2022 13:41:31 +0100 Subject: [PATCH] remove effect of avatar mass, so all jump similar height --- .../Framework/Scenes/Animation/ScenePresenceAnimator.cs | 4 ++-- OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs | 2 +- OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs | 2 +- OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index 1d1f5b8871..5af6959f0a 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -449,7 +449,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation m_animTickJump = Environment.TickCount - PREJUMP_DELAY - 1; currentControlState = motionControlStates.jumping; - m_scenePresence.Jump(18f); + m_scenePresence.Jump(9.4f); return "JUMP"; } @@ -465,7 +465,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation // jump up isJumping = true; currentControlState = motionControlStates.jumping; - m_scenePresence.Jump(18f); + m_scenePresence.Jump(9.4f); return "JUMP"; } diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs b/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs index e61ed073a5..9ce77b1d14 100755 --- a/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs +++ b/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs @@ -688,7 +688,7 @@ namespace OpenSim.Region.PhysicsModule.BulletS public override void AvatarJump(float impulseZ) { - AddForce(false, new OMV.Vector3(0, 0, 0.22f * impulseZ / PhysScene.m_fixedTimeStep)); + AddForce(false, new OMV.Vector3(0, 0, 0.22f * Mass * impulseZ / PhysScene.m_fixedTimeStep)); } public override void AddForce(OMV.Vector3 force, bool pushforce) diff --git a/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs b/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs index c4591de1a2..a6a20c50c1 100644 --- a/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs +++ b/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs @@ -745,7 +745,7 @@ namespace OpenSim.Region.PhysicsModule.ODE public override void AvatarJump(float forceZ) { m_pidControllerActive = false; - m_taintForce += new Vector3(0, 0, forceZ / _parent_scene.ODE_STEPSIZE); + m_taintForce += new Vector3(0, 0, m_mass * forceZ / _parent_scene.ODE_STEPSIZE); _parent_scene.AddPhysicsActorTaint(this); } diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs index d7c6d2067a..d87539f45e 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs @@ -808,7 +808,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde public override void AvatarJump(float impulseZ) { - AddChange(changes.Force, new Vector3(0, 0, impulseZ * m_sceneInverseTimeStep)); + // convert back to force and remove mass effect + AddChange(changes.Force, new Vector3(0, 0, impulseZ * m_sceneInverseTimeStep * m_mass)); } public override void AddAngularForce(Vector3 force, bool pushforce)