aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorRobert Adams2013-01-15 04:24:24 -0800
committerRobert Adams2013-01-15 04:24:24 -0800
commit021964c6e0648cf0e75b46864bef55afb7ff0a1f (patch)
tree1c923355873e4bc07df14c66779a6684c83bba4d /OpenSim
parentBulletSim: temporarily disable banking and direction deflection (diff)
downloadopensim-SC_OLD-021964c6e0648cf0e75b46864bef55afb7ff0a1f.zip
opensim-SC_OLD-021964c6e0648cf0e75b46864bef55afb7ff0a1f.tar.gz
opensim-SC_OLD-021964c6e0648cf0e75b46864bef55afb7ff0a1f.tar.bz2
opensim-SC_OLD-021964c6e0648cf0e75b46864bef55afb7ff0a1f.tar.xz
BulletSim: tweeks to improve hover.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs26
1 files changed, 21 insertions, 5 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index f5826bc..e434412 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -1047,16 +1047,32 @@ namespace OpenSim.Region.Physics.BulletSPlugin
1047 else 1047 else
1048 { 1048 {
1049 // Error is positive if below the target and negative if above. 1049 // Error is positive if below the target and negative if above.
1050 float verticalError = m_VhoverTargetHeight - VehiclePosition.Z; 1050 Vector3 hpos = VehiclePosition;
1051 float verticalCorrectionVelocity = verticalError / m_VhoverTimescale * pTimestep; 1051 float verticalError = m_VhoverTargetHeight - hpos.Z;
1052 float verticalCorrection = verticalError / m_VhoverTimescale;
1053 verticalCorrection *= m_VhoverEfficiency;
1054
1055 hpos.Z += verticalCorrection;
1056 VehiclePosition = hpos;
1057
1058 // Since we are hovering, we need to do the opposite of falling -- get rid of world Z
1059 Vector3 vel = VehicleVelocity;
1060 vel.Z = 0f;
1061 VehicleVelocity = vel;
1062
1063 /*
1064 float verticalCorrectionVelocity = verticalError / m_VhoverTimescale;
1065 Vector3 verticalCorrection = new Vector3(0f, 0f, verticalCorrectionVelocity);
1066 verticalCorrection *= m_vehicleMass;
1052 1067
1053 // TODO: implement m_VhoverEfficiency correctly 1068 // TODO: implement m_VhoverEfficiency correctly
1054 VehicleAddForceImpulse(new Vector3(0f, 0f, verticalCorrectionVelocity)); 1069 VehicleAddForceImpulse(verticalCorrection);
1070 */
1055 1071
1056 VDetailLog("{0}, MoveLinear,hover,pos={1},eff={2},hoverTS={3},height={4},target={5},err={6},corrVel={7}", 1072 VDetailLog("{0}, MoveLinear,hover,pos={1},eff={2},hoverTS={3},height={4},target={5},err={6},corr={7}",
1057 Prim.LocalID, VehiclePosition, m_VhoverEfficiency, 1073 Prim.LocalID, VehiclePosition, m_VhoverEfficiency,
1058 m_VhoverTimescale, m_VhoverHeight, m_VhoverTargetHeight, 1074 m_VhoverTimescale, m_VhoverHeight, m_VhoverTargetHeight,
1059 verticalError, verticalCorrectionVelocity); 1075 verticalError, verticalCorrection);
1060 } 1076 }
1061 1077
1062 } 1078 }