aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSScene.cs')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSScene.cs11
1 files changed, 9 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index 7d57751..46a13ab 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -130,6 +130,11 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
130 internal int m_maxUpdatesPerFrame; 130 internal int m_maxUpdatesPerFrame;
131 internal EntityProperties[] m_updateArray; 131 internal EntityProperties[] m_updateArray;
132 132
133 /// <summary>
134 /// Used to control physics simulation timing if Bullet is running on its own thread.
135 /// </summary>
136 private ManualResetEvent m_updateWaitEvent;
137
133 public const uint TERRAIN_ID = 0; // OpenSim senses terrain with a localID of zero 138 public const uint TERRAIN_ID = 0; // OpenSim senses terrain with a localID of zero
134 public const uint GROUNDPLANE_ID = 1; 139 public const uint GROUNDPLANE_ID = 1;
135 public const uint CHILDTERRAIN_ID = 2; // Terrain allocated based on our mega-prim childre start here 140 public const uint CHILDTERRAIN_ID = 2; // Terrain allocated based on our mega-prim childre start here
@@ -839,6 +844,7 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
839 public void BulletSPluginPhysicsThread() 844 public void BulletSPluginPhysicsThread()
840 { 845 {
841 Thread.CurrentThread.Priority = ThreadPriority.Highest; 846 Thread.CurrentThread.Priority = ThreadPriority.Highest;
847 m_updateWaitEvent = new ManualResetEvent(false);
842 848
843 while (m_initialized) 849 while (m_initialized)
844 { 850 {
@@ -853,8 +859,9 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
853 if (simulationTimeVsRealtimeDifferenceMS > 0) 859 if (simulationTimeVsRealtimeDifferenceMS > 0)
854 { 860 {
855 // The simulation of the time interval took less than realtime. 861 // The simulation of the time interval took less than realtime.
856 // Do a sleep for the rest of realtime. 862 // Do a wait for the rest of realtime.
857 Thread.Sleep(simulationTimeVsRealtimeDifferenceMS); 863 m_updateWaitEvent.WaitOne(simulationTimeVsRealtimeDifferenceMS);
864 //Thread.Sleep(simulationTimeVsRealtimeDifferenceMS);
858 } 865 }
859 else 866 else
860 { 867 {