aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
diff options
context:
space:
mode:
authorRobert Adams2013-01-14 15:46:46 -0800
committerRobert Adams2013-01-14 15:46:46 -0800
commit4e1ca890c2d41bf244ed7d4847c0d0a4fc7f6c51 (patch)
treebef4e616c6fb6a3de0e6859b6ef3e664095c2ae6 /OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
parentBulletSim: disable center-of-mass computation for linksets until debugged. Mo... (diff)
downloadopensim-SC_OLD-4e1ca890c2d41bf244ed7d4847c0d0a4fc7f6c51.zip
opensim-SC_OLD-4e1ca890c2d41bf244ed7d4847c0d0a4fc7f6c51.tar.gz
opensim-SC_OLD-4e1ca890c2d41bf244ed7d4847c0d0a4fc7f6c51.tar.bz2
opensim-SC_OLD-4e1ca890c2d41bf244ed7d4847c0d0a4fc7f6c51.tar.xz
BulletSim: fix not moving physical objects below terrain to over terrain.
Add locking on register prestep action list preventing potential race conditions. Little comment and formatting changes.
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSScene.cs')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSScene.cs17
1 files changed, 13 insertions, 4 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index a5bdc07..e0b4992 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -387,12 +387,14 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
387 if (!m_initialized) return null; 387 if (!m_initialized) return null;
388 388
389 BSCharacter actor = new BSCharacter(localID, avName, this, position, size, isFlying); 389 BSCharacter actor = new BSCharacter(localID, avName, this, position, size, isFlying);
390 lock (PhysObjects) PhysObjects.Add(localID, actor); 390 lock (PhysObjects)
391 PhysObjects.Add(localID, actor);
391 392
392 // TODO: Remove kludge someday. 393 // TODO: Remove kludge someday.
393 // We must generate a collision for avatars whether they collide or not. 394 // We must generate a collision for avatars whether they collide or not.
394 // This is required by OpenSim to update avatar animations, etc. 395 // This is required by OpenSim to update avatar animations, etc.
395 lock (m_avatars) m_avatars.Add(actor); 396 lock (m_avatars)
397 m_avatars.Add(actor);
396 398
397 return actor; 399 return actor;
398 } 400 }
@@ -408,9 +410,11 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
408 { 410 {
409 try 411 try
410 { 412 {
411 lock (PhysObjects) PhysObjects.Remove(actor.LocalID); 413 lock (PhysObjects)
414 PhysObjects.Remove(bsactor.LocalID);
412 // Remove kludge someday 415 // Remove kludge someday
413 lock (m_avatars) m_avatars.Remove(bsactor); 416 lock (m_avatars)
417 m_avatars.Remove(bsactor);
414 } 418 }
415 catch (Exception e) 419 catch (Exception e)
416 { 420 {
@@ -419,6 +423,11 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
419 bsactor.Destroy(); 423 bsactor.Destroy();
420 // bsactor.dispose(); 424 // bsactor.dispose();
421 } 425 }
426 else
427 {
428 m_log.ErrorFormat("{0}: Requested to remove avatar that is not a BSCharacter. ID={1}, type={2}",
429 LogHeader, actor.LocalID, actor.GetType().Name);
430 }
422 } 431 }
423 432
424 public override void RemovePrim(PhysicsActor prim) 433 public override void RemovePrim(PhysicsActor prim)