aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics
diff options
context:
space:
mode:
authorRobert Adams2013-01-25 16:52:16 -0800
committerRobert Adams2013-01-27 12:50:05 -0800
commit36f401d85011b0ffb548e79923381be894dbfabb (patch)
treea40639407a7c8b8d258997b8f55838a3f9f754c3 /OpenSim/Region/Physics
parentBulletSim: first attempt at reporting top colliders (diff)
downloadopensim-SC_OLD-36f401d85011b0ffb548e79923381be894dbfabb.zip
opensim-SC_OLD-36f401d85011b0ffb548e79923381be894dbfabb.tar.gz
opensim-SC_OLD-36f401d85011b0ffb548e79923381be894dbfabb.tar.bz2
opensim-SC_OLD-36f401d85011b0ffb548e79923381be894dbfabb.tar.xz
BulletSim: parameterize the value for gravity reduction for ground vehicles on the ground. Set defaults for vehicle factors to one. Debug logging changes.
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs15
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs2
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSParam.cs12
3 files changed, 18 insertions, 11 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index 06b4620..90482fd 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -976,8 +976,9 @@ namespace OpenSim.Region.Physics.BulletSPlugin
976 public void ComputeLinearVelocity(float pTimestep) 976 public void ComputeLinearVelocity(float pTimestep)
977 { 977 {
978 // Step the motor from the current value. Get the correction needed this step. 978 // Step the motor from the current value. Get the correction needed this step.
979 Vector3 currentVel = VehicleVelocity * Quaternion.Inverse(VehicleOrientation); 979 Vector3 origVelW = VehicleVelocity; // DEBUG
980 Vector3 linearMotorCorrectionV = m_linearMotor.Step(pTimestep, currentVel); 980 Vector3 currentVelV = VehicleVelocity * Quaternion.Inverse(VehicleOrientation);
981 Vector3 linearMotorCorrectionV = m_linearMotor.Step(pTimestep, currentVelV);
981 982
982 // Motor is vehicle coordinates. Rotate it to world coordinates 983 // Motor is vehicle coordinates. Rotate it to world coordinates
983 Vector3 linearMotorVelocityW = linearMotorCorrectionV * VehicleOrientation; 984 Vector3 linearMotorVelocityW = linearMotorCorrectionV * VehicleOrientation;
@@ -992,8 +993,8 @@ namespace OpenSim.Region.Physics.BulletSPlugin
992 // Add this correction to the velocity to make it faster/slower. 993 // Add this correction to the velocity to make it faster/slower.
993 VehicleVelocity += linearMotorVelocityW; 994 VehicleVelocity += linearMotorVelocityW;
994 995
995 VDetailLog("{0}, MoveLinear,velocity,vehVel={1},correction={2},force={3}", 996 VDetailLog("{0}, MoveLinear,velocity,origVelW={1},velV={2},correctV={3},correctW={4},newVelW={5}",
996 Prim.LocalID, VehicleVelocity, linearMotorCorrectionV, linearMotorVelocityW); 997 Prim.LocalID, origVelW, currentVelV, linearMotorCorrectionV, linearMotorVelocityW, VehicleVelocity);
997 } 998 }
998 999
999 public void ComputeLinearTerrainHeightCorrection(float pTimestep) 1000 public void ComputeLinearTerrainHeightCorrection(float pTimestep)
@@ -1193,12 +1194,12 @@ namespace OpenSim.Region.Physics.BulletSPlugin
1193 1194
1194 // Hack to reduce downward force if the vehicle is probably sitting on the ground 1195 // Hack to reduce downward force if the vehicle is probably sitting on the ground
1195 if (Prim.IsColliding && IsGroundVehicle) 1196 if (Prim.IsColliding && IsGroundVehicle)
1196 appliedGravity *= 0.2f; 1197 appliedGravity *= BSParam.VehicleGroundGravityFudge;
1197 1198
1198 VehicleAddForce(appliedGravity); 1199 VehicleAddForce(appliedGravity);
1199 1200
1200 VDetailLog("{0}, MoveLinear,applyGravity,vehGrav={1},appliedForce-{2}", 1201 VDetailLog("{0}, MoveLinear,applyGravity,vehGrav={1},collid={2},appliedForce={3}",
1201 Prim.LocalID, m_VehicleGravity, appliedGravity); 1202 Prim.LocalID, m_VehicleGravity, Prim.IsColliding, appliedGravity);
1202 } 1203 }
1203 1204
1204 // ======================================================================= 1205 // =======================================================================
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
index 2c8dd23..6c53c50 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
@@ -232,7 +232,7 @@ public sealed class BSLinksetCompound : BSLinkset
232 newLsi.OffsetFromCenterOfMass, 232 newLsi.OffsetFromCenterOfMass,
233 newLsi.OffsetRot, 233 newLsi.OffsetRot,
234 true /* shouldRecalculateLocalAabb */); 234 true /* shouldRecalculateLocalAabb */);
235 DetailLog("{0},BSLinksetCompound.UpdateProperties,changeChildPosRot,whichUpdated={1}newLsi={2}", 235 DetailLog("{0},BSLinksetCompound.UpdateProperties,changeChildPosRot,whichUpdated={1},newLsi={2}",
236 updated.LocalID, whichUpdated, newLsi); 236 updated.LocalID, whichUpdated, newLsi);
237 updated.LinksetInfo = newLsi; 237 updated.LinksetInfo = newLsi;
238 updatedChild = true; 238 updatedChild = true;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
index 8de8905..75eed86 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
@@ -110,6 +110,7 @@ public static class BSParam
110 return (Vector3)vehicleAngularFactorV; 110 return (Vector3)vehicleAngularFactorV;
111 } 111 }
112 } 112 }
113 public static float VehicleGroundGravityFudge { get; private set; }
113 public static float VehicleDebuggingEnabled { get; private set; } 114 public static float VehicleDebuggingEnabled { get; private set; }
114 115
115 public static float LinksetImplementation { get; private set; } 116 public static float LinksetImplementation { get; private set; }
@@ -480,12 +481,12 @@ public static class BSParam
480 (s) => { return VehicleAngularDamping; }, 481 (s) => { return VehicleAngularDamping; },
481 (s,p,l,v) => { VehicleAngularDamping = v; } ), 482 (s,p,l,v) => { VehicleAngularDamping = v; } ),
482 new ParameterDefn("VehicleLinearFactor", "Fraction of physical linear changes applied to vehicle (0.0 - 1.0)", 483 new ParameterDefn("VehicleLinearFactor", "Fraction of physical linear changes applied to vehicle (0.0 - 1.0)",
483 0.2f, 484 1.0f,
484 (s,cf,p,v) => { VehicleLinearFactor = cf.GetFloat(p, v); }, 485 (s,cf,p,v) => { VehicleLinearFactor = cf.GetFloat(p, v); },
485 (s) => { return VehicleLinearFactor; }, 486 (s) => { return VehicleLinearFactor; },
486 (s,p,l,v) => { VehicleLinearFactor = v; } ), 487 (s,p,l,v) => { VehicleLinearFactor = v; } ),
487 new ParameterDefn("VehicleAngularFactor", "Fraction of physical angular changes applied to vehicle (0.0 - 1.0)", 488 new ParameterDefn("VehicleAngularFactor", "Fraction of physical angular changes applied to vehicle (0.0 - 1.0)",
488 0.2f, 489 1.0f,
489 (s,cf,p,v) => { VehicleAngularFactor = cf.GetFloat(p, v); }, 490 (s,cf,p,v) => { VehicleAngularFactor = cf.GetFloat(p, v); },
490 (s) => { return VehicleAngularFactor; }, 491 (s) => { return VehicleAngularFactor; },
491 (s,p,l,v) => { VehicleAngularFactor = v; } ), 492 (s,p,l,v) => { VehicleAngularFactor = v; } ),
@@ -495,10 +496,15 @@ public static class BSParam
495 (s) => { return VehicleFriction; }, 496 (s) => { return VehicleFriction; },
496 (s,p,l,v) => { VehicleFriction = v; } ), 497 (s,p,l,v) => { VehicleFriction = v; } ),
497 new ParameterDefn("VehicleRestitution", "Bouncyness factor for vehicles (0.0 - 1.0)", 498 new ParameterDefn("VehicleRestitution", "Bouncyness factor for vehicles (0.0 - 1.0)",
498 0.0f, 499 0.2f,
499 (s,cf,p,v) => { VehicleRestitution = cf.GetFloat(p, v); }, 500 (s,cf,p,v) => { VehicleRestitution = cf.GetFloat(p, v); },
500 (s) => { return VehicleRestitution; }, 501 (s) => { return VehicleRestitution; },
501 (s,p,l,v) => { VehicleRestitution = v; } ), 502 (s,p,l,v) => { VehicleRestitution = v; } ),
503 new ParameterDefn("VehicleGroundGravityFudge", "Factor to multiple gravity if a ground vehicle is probably on the ground (0.0 - 1.0)",
504 1.0f,
505 (s,cf,p,v) => { VehicleGroundGravityFudge = cf.GetFloat(p, v); },
506 (s) => { return VehicleGroundGravityFudge; },
507 (s,p,l,v) => { VehicleGroundGravityFudge = v; } ),
502 new ParameterDefn("VehicleDebuggingEnable", "Turn on/off vehicle debugging", 508 new ParameterDefn("VehicleDebuggingEnable", "Turn on/off vehicle debugging",
503 ConfigurationParameters.numericFalse, 509 ConfigurationParameters.numericFalse,
504 (s,cf,p,v) => { VehicleDebuggingEnabled = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, 510 (s,cf,p,v) => { VehicleDebuggingEnabled = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },