aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs38
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs6
3 files changed, 18 insertions, 32 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 302103a..ff05e95 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -509,12 +509,6 @@ namespace OpenSim.Region.Framework.Scenes
509 } 509 }
510 } 510 }
511 511
512 // This gets locked so things stay thread safe.
513 public object SyncRoot
514 {
515 get { return m_sceneGraph.m_syncRoot; }
516 }
517
518 public string DefaultScriptEngine 512 public string DefaultScriptEngine
519 { 513 {
520 get { return m_defaultScriptEngine; } 514 get { return m_defaultScriptEngine; }
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 542bd51..1af18e7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -84,8 +84,6 @@ namespace OpenSim.Region.Framework.Scenes
84 protected int m_activeScripts = 0; 84 protected int m_activeScripts = 0;
85 protected int m_scriptLPS = 0; 85 protected int m_scriptLPS = 0;
86 86
87 protected internal object m_syncRoot = new object();
88
89 protected internal PhysicsScene _PhyScene; 87 protected internal PhysicsScene _PhyScene;
90 88
91 /// <summary> 89 /// <summary>
@@ -187,26 +185,22 @@ namespace OpenSim.Region.Framework.Scenes
187 /// <returns></returns> 185 /// <returns></returns>
188 protected internal float UpdatePhysics(double elapsed) 186 protected internal float UpdatePhysics(double elapsed)
189 { 187 {
190 lock (m_syncRoot) 188 // Here is where the Scene calls the PhysicsScene. This is a one-way
191 { 189 // interaction; the PhysicsScene cannot access the calling Scene directly.
192 // Here is where the Scene calls the PhysicsScene. This is a one-way 190 // But with joints, we want a PhysicsActor to be able to influence a
193 // interaction; the PhysicsScene cannot access the calling Scene directly. 191 // non-physics SceneObjectPart. In particular, a PhysicsActor that is connected
194 // But with joints, we want a PhysicsActor to be able to influence a 192 // with a joint should be able to move the SceneObjectPart which is the visual
195 // non-physics SceneObjectPart. In particular, a PhysicsActor that is connected 193 // representation of that joint (for editing and serialization purposes).
196 // with a joint should be able to move the SceneObjectPart which is the visual 194 // However the PhysicsActor normally cannot directly influence anything outside
197 // representation of that joint (for editing and serialization purposes). 195 // of the PhysicsScene, and the non-physical SceneObjectPart which represents
198 // However the PhysicsActor normally cannot directly influence anything outside 196 // the joint in the Scene does not exist in the PhysicsScene.
199 // of the PhysicsScene, and the non-physical SceneObjectPart which represents 197 //
200 // the joint in the Scene does not exist in the PhysicsScene. 198 // To solve this, we have an event in the PhysicsScene that is fired when a joint
201 // 199 // has changed position (because one of its associated PhysicsActors has changed
202 // To solve this, we have an event in the PhysicsScene that is fired when a joint 200 // position).
203 // has changed position (because one of its associated PhysicsActors has changed 201 //
204 // position). 202 // Therefore, JointMoved and JointDeactivated events will be fired as a result of the following Simulate().
205 // 203 return _PhyScene.Simulate((float)elapsed);
206 // Therefore, JointMoved and JointDeactivated events will be fired as a result of the following Simulate().
207
208 return _PhyScene.Simulate((float)elapsed);
209 }
210 } 204 }
211 205
212 protected internal void UpdateScenePresenceMovement() 206 protected internal void UpdateScenePresenceMovement()
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 0880e21..bb820aa 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -521,8 +521,7 @@ namespace OpenSim.Region.Framework.Scenes
521 { 521 {
522 try 522 try
523 { 523 {
524 lock (m_scene.SyncRoot) 524 PhysicsActor.Position = value;
525 PhysicsActor.Position = value;
526 } 525 }
527 catch (Exception e) 526 catch (Exception e)
528 { 527 {
@@ -572,8 +571,7 @@ namespace OpenSim.Region.Framework.Scenes
572 { 571 {
573 try 572 try
574 { 573 {
575 lock (m_scene.SyncRoot) 574 PhysicsActor.Velocity = value;
576 PhysicsActor.Velocity = value;
577 } 575 }
578 catch (Exception e) 576 catch (Exception e)
579 { 577 {