diff options
author | Teravus Ovares | 2007-11-09 21:01:55 +0000 |
---|---|---|
committer | Teravus Ovares | 2007-11-09 21:01:55 +0000 |
commit | e9e72fe9079ab011dc43199496fb9a9dc7ea5b3a (patch) | |
tree | 5c202b24b748e147b7aa4692044d618bfec522d0 /OpenSim/Region/Physics/OdePlugin | |
parent | add a few more verbose bits (diff) | |
download | opensim-SC-e9e72fe9079ab011dc43199496fb9a9dc7ea5b3a.zip opensim-SC-e9e72fe9079ab011dc43199496fb9a9dc7ea5b3a.tar.gz opensim-SC-e9e72fe9079ab011dc43199496fb9a9dc7ea5b3a.tar.bz2 opensim-SC-e9e72fe9079ab011dc43199496fb9a9dc7ea5b3a.tar.xz |
* Added an internal throttle on ODE physics updates
* Added a ThrottleUpdates member to PhysicsActor to expose 'throttle' ability to the Scene.
* Updated the ode.dll file with a fix to invalid data passed to ODE's heightfield collision calculator.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 79f51a1..decf93f 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -212,6 +212,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
212 | 212 | ||
213 | // We only need to test p2 for 'jump crouch purposes' | 213 | // We only need to test p2 for 'jump crouch purposes' |
214 | p2.IsColliding = true; | 214 | p2.IsColliding = true; |
215 | if (count > 3) | ||
216 | { | ||
217 | p2.ThrottleUpdates = true; | ||
218 | } | ||
219 | //System.Console.WriteLine(count.ToString()); | ||
215 | //System.Console.WriteLine("near: A collision was detected between {1} and {2}", 0, name1, name2); | 220 | //System.Console.WriteLine("near: A collision was detected between {1} and {2}", 0, name1, name2); |
216 | } | 221 | } |
217 | } | 222 | } |
@@ -667,7 +672,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
667 | get { return false; } | 672 | get { return false; } |
668 | set { return; } | 673 | set { return; } |
669 | } | 674 | } |
670 | 675 | public override bool ThrottleUpdates | |
676 | { | ||
677 | get { return false; } | ||
678 | set { return; } | ||
679 | } | ||
671 | public override bool Flying | 680 | public override bool Flying |
672 | { | 681 | { |
673 | get { return flying; } | 682 | get { return flying; } |
@@ -929,6 +938,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
929 | public IntPtr _triMeshData; | 938 | public IntPtr _triMeshData; |
930 | private bool iscolliding = false; | 939 | private bool iscolliding = false; |
931 | private bool m_isphysical = false; | 940 | private bool m_isphysical = false; |
941 | private bool m_throttleUpdates = false; | ||
942 | private int throttleCounter = 0; | ||
932 | 943 | ||
933 | public bool _zeroFlag = false; | 944 | public bool _zeroFlag = false; |
934 | private bool m_lastUpdateSent = false; | 945 | private bool m_lastUpdateSent = false; |
@@ -1098,7 +1109,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1098 | get { return iscolliding; } | 1109 | get { return iscolliding; } |
1099 | set { iscolliding = value; } | 1110 | set { iscolliding = value; } |
1100 | } | 1111 | } |
1101 | 1112 | public override bool ThrottleUpdates | |
1113 | { | ||
1114 | get { return m_throttleUpdates; } | ||
1115 | set { m_throttleUpdates=value; } | ||
1116 | } | ||
1102 | 1117 | ||
1103 | public override PhysicsVector Position | 1118 | public override PhysicsVector Position |
1104 | { | 1119 | { |
@@ -1347,6 +1362,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1347 | m_rotationalVelocity.Y = 0; | 1362 | m_rotationalVelocity.Y = 0; |
1348 | m_rotationalVelocity.Z = 0; | 1363 | m_rotationalVelocity.Z = 0; |
1349 | base.RequestPhysicsterseUpdate(); | 1364 | base.RequestPhysicsterseUpdate(); |
1365 | m_throttleUpdates = false; | ||
1366 | throttleCounter = 0; | ||
1350 | _zeroFlag = true; | 1367 | _zeroFlag = true; |
1351 | } | 1368 | } |
1352 | 1369 | ||
@@ -1382,6 +1399,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1382 | m_rotationalVelocity.Z = 0; | 1399 | m_rotationalVelocity.Z = 0; |
1383 | if (!m_lastUpdateSent) | 1400 | if (!m_lastUpdateSent) |
1384 | { | 1401 | { |
1402 | m_throttleUpdates = false; | ||
1403 | throttleCounter = 0; | ||
1385 | base.RequestPhysicsterseUpdate(); | 1404 | base.RequestPhysicsterseUpdate(); |
1386 | m_lastUpdateSent = true; | 1405 | m_lastUpdateSent = true; |
1387 | } | 1406 | } |
@@ -1406,7 +1425,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1406 | _orientation.y = ori.Y; | 1425 | _orientation.y = ori.Y; |
1407 | _orientation.z = ori.Z; | 1426 | _orientation.z = ori.Z; |
1408 | m_lastUpdateSent = false; | 1427 | m_lastUpdateSent = false; |
1409 | base.RequestPhysicsterseUpdate(); | 1428 | if (!m_throttleUpdates || throttleCounter > 15) |
1429 | { | ||
1430 | base.RequestPhysicsterseUpdate(); | ||
1431 | } | ||
1432 | else | ||
1433 | { | ||
1434 | throttleCounter++; | ||
1435 | } | ||
1410 | } | 1436 | } |
1411 | m_lastposition = l_position; | 1437 | m_lastposition = l_position; |
1412 | } | 1438 | } |