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

This commit is contained in:
UbitUmarov
2022-04-15 21:47:38 +01:00
parent 91167c47ea
commit 6d701b6759
11 changed files with 34 additions and 1 deletions

View File

@@ -215,6 +215,8 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics
{
}
public override void AvatarJump(float forceZ) { }
public override void AddForce(Vector3 force, bool pushforce)
{
}

View File

@@ -228,6 +228,8 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics
{
}
public override void AvatarJump(float forceZ) { }
public override void AddForce(Vector3 force, bool pushforce)
{
}

View File

@@ -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.

View File

@@ -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);

View File

@@ -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);
}
/// <summary>
/// Adds the force supplied to the Target Velocity
/// The PID controller takes this target velocity and tries to make it a reality

View File

@@ -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())

View File

@@ -252,6 +252,8 @@ namespace OpenSim.Region.PhysicsModule.POS
{
}
public override void AvatarJump(float forceZ) { }
public override void AddForce(Vector3 force, bool pushforce)
{
}

View File

@@ -202,6 +202,8 @@ namespace OpenSim.Region.PhysicsModule.POS
set { }
}
public override void AvatarJump(float forceZ) { }
public override void AddForce(Vector3 force, bool pushforce)
{
}

View File

@@ -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) { }

View File

@@ -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)

View File

@@ -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())