diff options
author | Robert Adams | 2013-03-16 15:34:07 -0700 |
---|---|---|
committer | Robert Adams | 2013-03-16 15:34:07 -0700 |
commit | 464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766 (patch) | |
tree | ac5c22979a2dfeeb1d940223abddb2a8160aec74 /OpenSim/Region/Physics | |
parent | BulletSim: Working Implementation of Angular Banking for Vehicles (Not SL Gra... (diff) | |
download | opensim-SC-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.zip opensim-SC-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.tar.gz opensim-SC-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.tar.bz2 opensim-SC-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.tar.xz |
BulletSim: add INI parameter for angular banking timescale fudge parameter.
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | 12 | ||||
-rwxr-xr-x | OpenSim/Region/Physics/BulletSPlugin/BSParam.cs | 7 |
2 files changed, 12 insertions, 7 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs index 96eaa6b..38596fa 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | |||
@@ -1437,21 +1437,21 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
1437 | // As the vehicle rolls to the right or left, the Y value will increase from | 1437 | // As the vehicle rolls to the right or left, the Y value will increase from |
1438 | // zero (straight up) to 1 or -1 (full tilt right or left) | 1438 | // zero (straight up) to 1 or -1 (full tilt right or left) |
1439 | Vector3 rollComponents = Vector3.UnitZ * VehicleOrientation; | 1439 | Vector3 rollComponents = Vector3.UnitZ * VehicleOrientation; |
1440 | |||
1440 | // Figure out the yaw value for this much roll. | 1441 | // Figure out the yaw value for this much roll. |
1441 | // Squared because that seems to give a good value | ||
1442 | // float yawAngle = (float)Math.Asin(rollComponents.X * rollComponents.X) * m_bankingEfficiency; | ||
1443 | float yawAngle = m_angularMotorDirection.X * m_bankingEfficiency; | 1442 | float yawAngle = m_angularMotorDirection.X * m_bankingEfficiency; |
1444 | // actual error = static turn error + dynamic turn error | 1443 | // actual error = static turn error + dynamic turn error |
1445 | float mixedYawAngle =(yawAngle * (1f - m_bankingMix)) + ((yawAngle * m_bankingMix) * VehicleForwardSpeed); | 1444 | float mixedYawAngle =(yawAngle * (1f - m_bankingMix)) + ((yawAngle * m_bankingMix) * VehicleForwardSpeed); |
1446 | // TODO: the banking effect should not go to infinity but what to limit it to? and what should happen when this is | 1445 | |
1447 | // being added to a user defined yaw that is already PI*4? | 1446 | // TODO: the banking effect should not go to infinity but what to limit it to? |
1447 | // And what should happen when this is being added to a user defined yaw that is already PI*4? | ||
1448 | mixedYawAngle = ClampInRange(-12, mixedYawAngle, 12); | 1448 | mixedYawAngle = ClampInRange(-12, mixedYawAngle, 12); |
1449 | 1449 | ||
1450 | // Build the force vector to change rotation from what it is to what it should be | 1450 | // Build the force vector to change rotation from what it is to what it should be |
1451 | bankingContributionV.Z = -mixedYawAngle; | 1451 | bankingContributionV.Z = -mixedYawAngle; |
1452 | 1452 | ||
1453 | // Don't do it all at once. 60 becouse 1 second is too fast with most user defined roll as PI*4 | 1453 | // Don't do it all at once. Fudge because 1 second is too fast with most user defined roll as PI*4. |
1454 | bankingContributionV /= m_bankingTimescale*60; | 1454 | bankingContributionV /= m_bankingTimescale * BSParam.VehicleAngularBankingTimescaleFudge; |
1455 | 1455 | ||
1456 | //VehicleRotationalVelocity += bankingContributionV * VehicleOrientation; | 1456 | //VehicleRotationalVelocity += bankingContributionV * VehicleOrientation; |
1457 | VehicleRotationalVelocity += bankingContributionV; | 1457 | VehicleRotationalVelocity += bankingContributionV; |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs index 2af8468..77bdacb 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs | |||
@@ -123,6 +123,7 @@ public static class BSParam | |||
123 | public static Vector3 VehicleLinearFactor { get; private set; } | 123 | public static Vector3 VehicleLinearFactor { get; private set; } |
124 | public static Vector3 VehicleAngularFactor { get; private set; } | 124 | public static Vector3 VehicleAngularFactor { get; private set; } |
125 | public static float VehicleGroundGravityFudge { get; private set; } | 125 | public static float VehicleGroundGravityFudge { get; private set; } |
126 | public static float VehicleAngularBankingTimescaleFudge { get; private set; } | ||
126 | public static bool VehicleDebuggingEnabled { get; private set; } | 127 | public static bool VehicleDebuggingEnabled { get; private set; } |
127 | 128 | ||
128 | // Linkset implementation parameters | 129 | // Linkset implementation parameters |
@@ -543,10 +544,14 @@ public static class BSParam | |||
543 | 0.0f, | 544 | 0.0f, |
544 | (s) => { return VehicleRestitution; }, | 545 | (s) => { return VehicleRestitution; }, |
545 | (s,v) => { VehicleRestitution = v; } ), | 546 | (s,v) => { VehicleRestitution = v; } ), |
546 | new ParameterDefn<float>("VehicleGroundGravityFudge", "Factor to multiple gravity if a ground vehicle is probably on the ground (0.0 - 1.0)", | 547 | new ParameterDefn<float>("VehicleGroundGravityFudge", "Factor to multiply gravity if a ground vehicle is probably on the ground (0.0 - 1.0)", |
547 | 0.2f, | 548 | 0.2f, |
548 | (s) => { return VehicleGroundGravityFudge; }, | 549 | (s) => { return VehicleGroundGravityFudge; }, |
549 | (s,v) => { VehicleGroundGravityFudge = v; } ), | 550 | (s,v) => { VehicleGroundGravityFudge = v; } ), |
551 | new ParameterDefn<float>("VehicleAngularBankingTimescaleFudge", "Factor to multiple angular banking timescale. Tune to increase realism.", | ||
552 | 60.0f, | ||
553 | (s) => { return VehicleAngularBankingTimescaleFudge; }, | ||
554 | (s,v) => { VehicleAngularBankingTimescaleFudge = v; } ), | ||
550 | new ParameterDefn<bool>("VehicleDebuggingEnable", "Turn on/off vehicle debugging", | 555 | new ParameterDefn<bool>("VehicleDebuggingEnable", "Turn on/off vehicle debugging", |
551 | false, | 556 | false, |
552 | (s) => { return VehicleDebuggingEnabled; }, | 557 | (s) => { return VehicleDebuggingEnabled; }, |