aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneGraph.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-04-03 05:50:13 +0100
committerJustin Clark-Casey (justincc)2012-04-03 05:51:38 +0100
commit746829967315cc82560a855a4772e45888bf8fbe (patch)
tree1e21d5c27101cb505a4ac4bcdf6e356f2e409d52 /OpenSim/Region/Framework/Scenes/SceneGraph.cs
parentImplement bulk inventory update over CAPS (not recursive by design, (diff)
downloadopensim-SC_OLD-746829967315cc82560a855a4772e45888bf8fbe.zip
opensim-SC_OLD-746829967315cc82560a855a4772e45888bf8fbe.tar.gz
opensim-SC_OLD-746829967315cc82560a855a4772e45888bf8fbe.tar.bz2
opensim-SC_OLD-746829967315cc82560a855a4772e45888bf8fbe.tar.xz
Eliminate race condition where many callers would check SOP.PhysicsActor != null then assume it was still not null in later code.
Another thread could come and turn off physics for a part (null PhysicsActor) at any point. Had to turn off localCopy on warp3D CoreModules section in prebuild.xml since on current nant this copies all DLLs in bin/ which can be a very large number with compiled DLLs No obvious reason for doing that copy - nothing else does it.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs3
1 files changed, 2 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 8a05772..0098add 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -306,7 +306,8 @@ namespace OpenSim.Region.Framework.Scenes
306 if (rot != null) 306 if (rot != null)
307 sceneObject.UpdateGroupRotationR((Quaternion)rot); 307 sceneObject.UpdateGroupRotationR((Quaternion)rot);
308 308
309 if (sceneObject.RootPart.PhysActor != null && sceneObject.RootPart.PhysActor.IsPhysical && vel != Vector3.Zero) 309 PhysicsActor pa = sceneObject.RootPart.PhysActor;
310 if (pa != null && pa.IsPhysical && vel != Vector3.Zero)
310 { 311 {
311 sceneObject.RootPart.ApplyImpulse((vel * sceneObject.GetMass()), false); 312 sceneObject.RootPart.ApplyImpulse((vel * sceneObject.GetMass()), false);
312 sceneObject.Velocity = vel; 313 sceneObject.Velocity = vel;