diff options
author | UbitUmarov | 2012-03-31 00:03:45 +0100 |
---|---|---|
committer | UbitUmarov | 2012-03-31 00:03:45 +0100 |
commit | c4e4e04eee0741795e7b9fe53cc5820422755683 (patch) | |
tree | 765973651def6f16813bd940f3362d3ca1338553 /OpenSim/Region/Physics/UbitOdePlugin | |
parent | Merge branch 'master' of ssh://3dhosting.de/var/git/careminster into ubitwork (diff) | |
download | opensim-SC_OLD-c4e4e04eee0741795e7b9fe53cc5820422755683.zip opensim-SC_OLD-c4e4e04eee0741795e7b9fe53cc5820422755683.tar.gz opensim-SC_OLD-c4e4e04eee0741795e7b9fe53cc5820422755683.tar.bz2 opensim-SC_OLD-c4e4e04eee0741795e7b9fe53cc5820422755683.tar.xz |
reduced instability in vertical atractor with eficiency of 1 and banking
this will need a nicer solution sometime...
Diffstat (limited to 'OpenSim/Region/Physics/UbitOdePlugin')
-rw-r--r-- | OpenSim/Region/Physics/UbitOdePlugin/ODEDynamics.cs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODEDynamics.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODEDynamics.cs index d0b4546..dcd02e2 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/ODEDynamics.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/ODEDynamics.cs | |||
@@ -153,7 +153,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
153 | if (m_linearFrictionTimescale.Z < timestep) m_linearFrictionTimescale.Z = timestep; | 153 | if (m_linearFrictionTimescale.Z < timestep) m_linearFrictionTimescale.Z = timestep; |
154 | 154 | ||
155 | m_linearMotorDecayTimescale = vd.m_linearMotorDecayTimescale; | 155 | m_linearMotorDecayTimescale = vd.m_linearMotorDecayTimescale; |
156 | if (m_linearMotorDecayTimescale < 0.5f) m_linearMotorDecayTimescale = 0.5f; | 156 | if (m_linearMotorDecayTimescale < timestep) m_linearMotorDecayTimescale = timestep; |
157 | m_linearMotorDecayTimescale *= invtimestep; | 157 | m_linearMotorDecayTimescale *= invtimestep; |
158 | 158 | ||
159 | m_linearMotorTimescale = vd.m_linearMotorTimescale; | 159 | m_linearMotorTimescale = vd.m_linearMotorTimescale; |
@@ -168,7 +168,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
168 | if (m_angularMotorTimescale < timestep) m_angularMotorTimescale = timestep; | 168 | if (m_angularMotorTimescale < timestep) m_angularMotorTimescale = timestep; |
169 | 169 | ||
170 | m_angularMotorDecayTimescale = vd.m_angularMotorDecayTimescale; | 170 | m_angularMotorDecayTimescale = vd.m_angularMotorDecayTimescale; |
171 | if (m_angularMotorDecayTimescale < 0.5f) m_angularMotorDecayTimescale = 0.5f; | 171 | if (m_angularMotorDecayTimescale < timestep) m_angularMotorDecayTimescale = timestep; |
172 | m_angularMotorDecayTimescale *= invtimestep; | 172 | m_angularMotorDecayTimescale *= invtimestep; |
173 | 173 | ||
174 | m_angularFrictionTimescale = vd.m_angularFrictionTimescale; | 174 | m_angularFrictionTimescale = vd.m_angularFrictionTimescale; |
@@ -230,9 +230,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
230 | m_angularDeflectionTimescale = pValue; | 230 | m_angularDeflectionTimescale = pValue; |
231 | break; | 231 | break; |
232 | case Vehicle.ANGULAR_MOTOR_DECAY_TIMESCALE: | 232 | case Vehicle.ANGULAR_MOTOR_DECAY_TIMESCALE: |
233 | // if (pValue < timestep) pValue = timestep; | 233 | if (pValue < timestep) pValue = timestep; |
234 | // try to make impulses to work a bit better | 234 | // try to make impulses to work a bit better |
235 | if (pValue < 0.5f) pValue = 0.5f; | 235 | // if (pValue < 0.5f) pValue = 0.5f; |
236 | else if (pValue > 120) pValue = 120; | 236 | else if (pValue > 120) pValue = 120; |
237 | m_angularMotorDecayTimescale = pValue * invtimestep; | 237 | m_angularMotorDecayTimescale = pValue * invtimestep; |
238 | break; | 238 | break; |
@@ -281,9 +281,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
281 | m_linearDeflectionTimescale = pValue; | 281 | m_linearDeflectionTimescale = pValue; |
282 | break; | 282 | break; |
283 | case Vehicle.LINEAR_MOTOR_DECAY_TIMESCALE: | 283 | case Vehicle.LINEAR_MOTOR_DECAY_TIMESCALE: |
284 | // if (pValue < timestep) pValue = timestep; | 284 | if (pValue < timestep) pValue = timestep; |
285 | // try to make impulses to work a bit better | 285 | // try to make impulses to work a bit better |
286 | if (pValue < 0.5f) pValue = 0.5f; | 286 | //if (pValue < 0.5f) pValue = 0.5f; |
287 | else if (pValue > 120) pValue = 120; | 287 | else if (pValue > 120) pValue = 120; |
288 | m_linearMotorDecayTimescale = pValue * invtimestep; | 288 | m_linearMotorDecayTimescale = pValue * invtimestep; |
289 | break; | 289 | break; |
@@ -444,9 +444,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
444 | m_linearFrictionTimescale = new Vector3(1000, 1000, 1000); | 444 | m_linearFrictionTimescale = new Vector3(1000, 1000, 1000); |
445 | m_angularFrictionTimescale = new Vector3(1000, 1000, 1000); | 445 | m_angularFrictionTimescale = new Vector3(1000, 1000, 1000); |
446 | m_linearMotorTimescale = 1000; | 446 | m_linearMotorTimescale = 1000; |
447 | m_linearMotorDecayTimescale = 120; | 447 | m_linearMotorDecayTimescale = 120 * invtimestep; |
448 | m_angularMotorTimescale = 1000; | 448 | m_angularMotorTimescale = 1000; |
449 | m_angularMotorDecayTimescale = 1000; | 449 | m_angularMotorDecayTimescale = 1000 * invtimestep; |
450 | m_VhoverHeight = 0; | 450 | m_VhoverHeight = 0; |
451 | m_VhoverEfficiency = 1; | 451 | m_VhoverEfficiency = 1; |
452 | m_VhoverTimescale = 1000; | 452 | m_VhoverTimescale = 1000; |
@@ -901,7 +901,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
901 | GetRollPitch(irotq, out roll, out pitch); | 901 | GetRollPitch(irotq, out roll, out pitch); |
902 | 902 | ||
903 | float ftmp = 1.0f / m_verticalAttractionTimescale / m_verticalAttractionTimescale / _pParentScene.ODE_STEPSIZE; | 903 | float ftmp = 1.0f / m_verticalAttractionTimescale / m_verticalAttractionTimescale / _pParentScene.ODE_STEPSIZE; |
904 | float ftmp2 = m_verticalAttractionEfficiency / _pParentScene.ODE_STEPSIZE; | 904 | float ftmp2; |
905 | if (m_bankingEfficiency == 0) | ||
906 | ftmp2 = m_verticalAttractionEfficiency / _pParentScene.ODE_STEPSIZE; | ||
907 | else | ||
908 | ftmp2 = 0; | ||
905 | 909 | ||
906 | if (roll > halfpi) | 910 | if (roll > halfpi) |
907 | roll = pi - roll; | 911 | roll = pi - roll; |