refactor: precalculate the fixed movement factor for avatar tilting (sqrt(2)) rather than doing it multiple times on every move.
parent
5f2a65c976
commit
86bd287b53
|
@ -114,6 +114,11 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
|
||||
private float m_tainted_CAPSULE_LENGTH; // set when the capsule length changes.
|
||||
|
||||
/// <summary>
|
||||
/// Base movement for calculating tilt.
|
||||
/// </summary>
|
||||
private float m_tiltBaseMovement = (float)Math.Sqrt(2);
|
||||
|
||||
/// <summary>
|
||||
/// Used to introduce a fixed tilt because a straight-up capsule falls through terrain, probably a bug in terrain collider
|
||||
/// </summary>
|
||||
|
@ -524,14 +529,14 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
if (movementVector.Y > 0)
|
||||
{
|
||||
// northeast
|
||||
movementVector.X = (float)Math.Sqrt(2.0);
|
||||
movementVector.Y = (float)Math.Sqrt(2.0);
|
||||
movementVector.X = m_tiltBaseMovement;
|
||||
movementVector.Y = m_tiltBaseMovement;
|
||||
}
|
||||
else
|
||||
{
|
||||
// southeast
|
||||
movementVector.X = (float)Math.Sqrt(2.0);
|
||||
movementVector.Y = -(float)Math.Sqrt(2.0);
|
||||
movementVector.X = m_tiltBaseMovement;
|
||||
movementVector.Y = -m_tiltBaseMovement;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -540,14 +545,14 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
if (movementVector.Y > 0)
|
||||
{
|
||||
// northwest
|
||||
movementVector.X = -(float)Math.Sqrt(2.0);
|
||||
movementVector.Y = (float)Math.Sqrt(2.0);
|
||||
movementVector.X = -m_tiltBaseMovement;
|
||||
movementVector.Y = m_tiltBaseMovement;
|
||||
}
|
||||
else
|
||||
{
|
||||
// southwest
|
||||
movementVector.X = -(float)Math.Sqrt(2.0);
|
||||
movementVector.Y = -(float)Math.Sqrt(2.0);
|
||||
movementVector.X = -m_tiltBaseMovement;
|
||||
movementVector.Y = -m_tiltBaseMovement;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -185,6 +185,9 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
/// <summary>
|
||||
/// true = old compatibility mode with leaning capsule; false = new corrected mode
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Even when set to false, the capsule still tilts but this is done in a different way.
|
||||
/// </remarks>
|
||||
public bool IsAvCapsuleTilted { get; private set; }
|
||||
|
||||
private float avDensity = 80f;
|
||||
|
|
Loading…
Reference in New Issue