aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorRobert Adams2013-03-16 15:34:07 -0700
committerRobert Adams2013-03-16 15:34:07 -0700
commit464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766 (patch)
treeac5c22979a2dfeeb1d940223abddb2a8160aec74 /OpenSim/Region
parentBulletSim: Working Implementation of Angular Banking for Vehicles (Not SL Gra... (diff)
downloadopensim-SC_OLD-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.zip
opensim-SC_OLD-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.tar.gz
opensim-SC_OLD-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.tar.bz2
opensim-SC_OLD-464201b41d5f5fdd7c88ab5e95dd7b6fbae6d766.tar.xz
BulletSim: add INI parameter for angular banking timescale fudge parameter.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs12
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSParam.cs7
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; },