From 6d701b6759583eea4329f4ff9f86b1de2e1d9f30 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 15 Apr 2022 21:47:38 +0100 Subject: [PATCH] add AvatarJump to phsycis engines. This is just a push in Z direction, Still needs scaling so engines to match. This new scaling is needed so does not impact old push ones --- .../PhysicsModules/BasicPhysics/BasicPhysicsActor.cs | 2 ++ .../Region/PhysicsModules/BasicPhysics/BasicPhysicsPrim.cs | 2 ++ OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs | 6 ++++++ OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs | 2 ++ OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs | 7 +++++++ OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs | 2 ++ OpenSim/Region/PhysicsModules/POS/POSCharacter.cs | 2 ++ OpenSim/Region/PhysicsModules/POS/POSPrim.cs | 2 ++ OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs | 2 ++ OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs | 6 +++++- OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs | 2 ++ 11 files changed, 34 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsActor.cs b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsActor.cs index 67d92071f1..189e943d8e 100644 --- a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsActor.cs +++ b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsActor.cs @@ -215,6 +215,8 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics { } + public override void AvatarJump(float forceZ) { } + public override void AddForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsPrim.cs b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsPrim.cs index 58c25814b7..eb370e6ae9 100644 --- a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsPrim.cs +++ b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsPrim.cs @@ -228,6 +228,8 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics { } + public override void AvatarJump(float forceZ) { } + public override void AddForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs b/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs index 2fc95e34fc..416872b627 100755 --- a/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs +++ b/OpenSim/Region/PhysicsModules/BulletS/BSCharacter.cs @@ -686,6 +686,12 @@ namespace OpenSim.Region.PhysicsModule.BulletS set { _PIDTau = value; } } + public override void AvatarJump(float forceZ) + { + OMV.Vector3 addForce = new OMV.Vector3(0, 0, forceZ / PhysScene.m_fixedTimeStep); + AddForce(false, addForce); + } + public override void AddForce(OMV.Vector3 force, bool pushforce) { // Since this force is being applied in only one step, make this a force per second. diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs b/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs index 7ac739d936..552955593c 100644 --- a/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs +++ b/OpenSim/Region/PhysicsModules/BulletS/BSPrim.cs @@ -1202,6 +1202,8 @@ namespace OpenSim.Region.PhysicsModule.BulletS } } + public override void AvatarJump(float forceZ) { } + public override void AddForce(OMV.Vector3 force, bool pushforce) { // Per documentation, max force is limited. OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude); diff --git a/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs b/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs index 441aa227dd..c4591de1a2 100644 --- a/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs +++ b/OpenSim/Region/PhysicsModules/Ode/ODECharacter.cs @@ -742,6 +742,13 @@ namespace OpenSim.Region.PhysicsModule.ODE set { _acceleration = value; } } + public override void AvatarJump(float forceZ) + { + m_pidControllerActive = false; + m_taintForce += new Vector3(0, 0, forceZ / _parent_scene.ODE_STEPSIZE); + _parent_scene.AddPhysicsActorTaint(this); + } + /// /// Adds the force supplied to the Target Velocity /// The PID controller takes this target velocity and tries to make it a reality diff --git a/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs b/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs index d7792f42e1..16b2551174 100644 --- a/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs +++ b/OpenSim/Region/PhysicsModules/Ode/ODEPrim.cs @@ -2593,6 +2593,8 @@ Console.WriteLine(" JointCreateFixed"); set { _acceleration = value; } } + public override void AvatarJump(float forceZ) { } + public override void AddForce(Vector3 force, bool pushforce) { if (force.IsFinite()) diff --git a/OpenSim/Region/PhysicsModules/POS/POSCharacter.cs b/OpenSim/Region/PhysicsModules/POS/POSCharacter.cs index 341530ef91..13dbbde9b9 100644 --- a/OpenSim/Region/PhysicsModules/POS/POSCharacter.cs +++ b/OpenSim/Region/PhysicsModules/POS/POSCharacter.cs @@ -252,6 +252,8 @@ namespace OpenSim.Region.PhysicsModule.POS { } + public override void AvatarJump(float forceZ) { } + public override void AddForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/PhysicsModules/POS/POSPrim.cs b/OpenSim/Region/PhysicsModules/POS/POSPrim.cs index 180885db7e..d7292da1a0 100644 --- a/OpenSim/Region/PhysicsModules/POS/POSPrim.cs +++ b/OpenSim/Region/PhysicsModules/POS/POSPrim.cs @@ -202,6 +202,8 @@ namespace OpenSim.Region.PhysicsModule.POS set { } } + public override void AvatarJump(float forceZ) { } + public override void AddForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs b/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs index 53b45952cc..c4e8e7e632 100644 --- a/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs +++ b/OpenSim/Region/PhysicsModules/SharedBase/PhysicsActor.cs @@ -448,6 +448,7 @@ namespace OpenSim.Region.PhysicsModules.SharedBase public abstract float APIDDamping { set;} public abstract void AddForce(Vector3 force, bool pushforce); + public abstract void AvatarJump(float forceZ); public abstract void AddAngularForce(Vector3 force, bool pushforce); public abstract void SetMomentum(Vector3 momentum); public abstract void SubscribeEvents(int ms); @@ -663,6 +664,7 @@ namespace OpenSim.Region.PhysicsModules.SharedBase public override void link(PhysicsActor obj) { } public override void delink() { } public override void LockAngularMotion(byte axislocks) { } + public override void AvatarJump(float forceZ) { } public override void AddForce(Vector3 force, bool pushforce) { } public override void AddAngularForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs index e82b43ff0d..931330ff31 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs @@ -806,9 +806,13 @@ namespace OpenSim.Region.PhysicsModule.ubOde //m_lastUpdateSent = false; } + public override void AvatarJump(float forceZ) + { + AddChange(changes.Force, new Vector3(0, 0, forceZ * m_sceneInverseTimeStep)); + } + public override void AddAngularForce(Vector3 force, bool pushforce) { - } public override void SetMomentum(Vector3 momentum) diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs index b54ec588da..d140a14675 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEPrim.cs @@ -933,6 +933,8 @@ namespace OpenSim.Region.PhysicsModule.ubOde m_acceleration = accel; } + public override void AvatarJump(float forceZ) { } + public override void AddForce(Vector3 force, bool pushforce) { if (force.IsFinite())