aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs18
1 files changed, 10 insertions, 8 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index afa8de5..5a7626e 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -542,16 +542,18 @@ namespace OpenSim.Region.Physics.OdePlugin
542 } 542 }
543 543
544 /// <summary> 544 /// <summary>
545 /// This creates the Avatar's physical Surrogate at the position supplied 545 /// This creates the Avatar's physical Surrogate in ODE at the position supplied
546 /// </summary> 546 /// </summary>
547 /// <remarks>
548 /// WARNING: This MUST NOT be called outside of ProcessTaints, else we can have unsynchronized access
549 /// to ODE internals. ProcessTaints is called from within thread-locked Simulate(), so it is the only
550 /// place that is safe to call this routine AvatarGeomAndBodyCreation.
551 /// </remarks>
547 /// <param name="npositionX"></param> 552 /// <param name="npositionX"></param>
548 /// <param name="npositionY"></param> 553 /// <param name="npositionY"></param>
549 /// <param name="npositionZ"></param> 554 /// <param name="npositionZ"></param>
550 555 /// <param name="tensor"></param>
551 // WARNING: This MUST NOT be called outside of ProcessTaints, else we can have unsynchronized access 556 private void CreateOdeStructures(float npositionX, float npositionY, float npositionZ, float tensor)
552 // to ODE internals. ProcessTaints is called from within thread-locked Simulate(), so it is the only
553 // place that is safe to call this routine AvatarGeomAndBodyCreation.
554 private void AvatarGeomAndBodyCreation(float npositionX, float npositionY, float npositionZ, float tensor)
555 { 557 {
556 int dAMotorEuler = 1; 558 int dAMotorEuler = 1;
557// _parent_scene.waitForSpaceUnlock(_parent_scene.space); 559// _parent_scene.waitForSpaceUnlock(_parent_scene.space);
@@ -1268,7 +1270,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1268 + (Amotor!=IntPtr.Zero ? "Amotor ":"")); 1270 + (Amotor!=IntPtr.Zero ? "Amotor ":""));
1269 } 1271 }
1270 1272
1271 AvatarGeomAndBodyCreation(_position.X, _position.Y, _position.Z, m_tensor); 1273 CreateOdeStructures(_position.X, _position.Y, _position.Z, m_tensor);
1272 _parent_scene.AddCharacter(this); 1274 _parent_scene.AddCharacter(this);
1273 } 1275 }
1274 else 1276 else
@@ -1296,7 +1298,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1296 float prevCapsule = CAPSULE_LENGTH; 1298 float prevCapsule = CAPSULE_LENGTH;
1297 CAPSULE_LENGTH = m_tainted_CAPSULE_LENGTH; 1299 CAPSULE_LENGTH = m_tainted_CAPSULE_LENGTH;
1298 1300
1299 AvatarGeomAndBodyCreation( 1301 CreateOdeStructures(
1300 _position.X, 1302 _position.X,
1301 _position.Y, 1303 _position.Y,
1302 _position.Z + (Math.Abs(CAPSULE_LENGTH - prevCapsule) * 2), m_tensor); 1304 _position.Z + (Math.Abs(CAPSULE_LENGTH - prevCapsule) * 2), m_tensor);