aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
diff options
context:
space:
mode:
authorRobert Adams2012-08-15 16:27:30 -0700
committerRobert Adams2012-08-15 16:29:50 -0700
commit376441e5507052b36279279f64896542d44ec12a (patch)
tree0dd9e1df759f76eb516c1ce5efca1829f658d76e /OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
parentBulletSim: update DLLs and SOs to fix the problem with avatars jumping around... (diff)
downloadopensim-SC_OLD-376441e5507052b36279279f64896542d44ec12a.zip
opensim-SC_OLD-376441e5507052b36279279f64896542d44ec12a.tar.gz
opensim-SC_OLD-376441e5507052b36279279f64896542d44ec12a.tar.bz2
opensim-SC_OLD-376441e5507052b36279279f64896542d44ec12a.tar.xz
BulletSim: make it so objects in a linkset do not generate collisions with each other.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSScene.cs12
1 files changed, 10 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index a31c578..0a0e27e 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -78,10 +78,16 @@ public class BSScene : PhysicsScene, IPhysicsParameters
78 public string BulletSimVersion = "?"; 78 public string BulletSimVersion = "?";
79 79
80 private Dictionary<uint, BSCharacter> m_avatars = new Dictionary<uint, BSCharacter>(); 80 private Dictionary<uint, BSCharacter> m_avatars = new Dictionary<uint, BSCharacter>();
81 public Dictionary<uint, BSCharacter> Characters { get { return m_avatars; } }
82
81 private Dictionary<uint, BSPrim> m_prims = new Dictionary<uint, BSPrim>(); 83 private Dictionary<uint, BSPrim> m_prims = new Dictionary<uint, BSPrim>();
84 public Dictionary<uint, BSPrim> Prims { get { return m_prims; } }
85
82 private HashSet<BSCharacter> m_avatarsWithCollisions = new HashSet<BSCharacter>(); 86 private HashSet<BSCharacter> m_avatarsWithCollisions = new HashSet<BSCharacter>();
83 private HashSet<BSPrim> m_primsWithCollisions = new HashSet<BSPrim>(); 87 private HashSet<BSPrim> m_primsWithCollisions = new HashSet<BSPrim>();
88
84 private List<BSPrim> m_vehicles = new List<BSPrim>(); 89 private List<BSPrim> m_vehicles = new List<BSPrim>();
90
85 private float[] m_heightMap; 91 private float[] m_heightMap;
86 private float m_waterLevel; 92 private float m_waterLevel;
87 private uint m_worldID; 93 private uint m_worldID;
@@ -429,13 +435,13 @@ public class BSScene : PhysicsScene, IPhysicsParameters
429 { 435 {
430 numSubSteps = BulletSimAPI.PhysicsStep(m_worldID, timeStep, m_maxSubSteps, m_fixedTimeStep, 436 numSubSteps = BulletSimAPI.PhysicsStep(m_worldID, timeStep, m_maxSubSteps, m_fixedTimeStep,
431 out updatedEntityCount, out updatedEntitiesPtr, out collidersCount, out collidersPtr); 437 out updatedEntityCount, out updatedEntitiesPtr, out collidersCount, out collidersPtr);
432 // DetailLog("{0},Simulate,call, substeps={1}, updates={2}, colliders={3}", DetailLogZero, numSubSteps, updatedEntityCount, collidersCount); 438 DetailLog("{0},Simulate,call, substeps={1}, updates={2}, colliders={3}", DetailLogZero, numSubSteps, updatedEntityCount, collidersCount);
433 } 439 }
434 catch (Exception e) 440 catch (Exception e)
435 { 441 {
436 m_log.WarnFormat("{0},PhysicsStep Exception: substeps={1}, updates={2}, colliders={3}, e={4}", LogHeader, numSubSteps, updatedEntityCount, collidersCount, e); 442 m_log.WarnFormat("{0},PhysicsStep Exception: substeps={1}, updates={2}, colliders={3}, e={4}", LogHeader, numSubSteps, updatedEntityCount, collidersCount, e);
437 // DetailLog("{0},PhysicsStepException,call, substeps={1}, updates={2}, colliders={3}", DetailLogZero, numSubSteps, updatedEntityCount, collidersCount); 443 // DetailLog("{0},PhysicsStepException,call, substeps={1}, updates={2}, colliders={3}", DetailLogZero, numSubSteps, updatedEntityCount, collidersCount);
438 // updatedEntityCount = 0; 444 updatedEntityCount = 0;
439 collidersCount = 0; 445 collidersCount = 0;
440 } 446 }
441 447
@@ -534,6 +540,8 @@ public class BSScene : PhysicsScene, IPhysicsParameters
534 else if (m_avatars.ContainsKey(collidingWith)) 540 else if (m_avatars.ContainsKey(collidingWith))
535 type = ActorTypes.Agent; 541 type = ActorTypes.Agent;
536 542
543 DetailLog("{0},BSScene.SendCollision,collide,id={1},with={2}", DetailLogZero, localID, collidingWith);
544
537 BSPrim prim; 545 BSPrim prim;
538 if (m_prims.TryGetValue(localID, out prim)) { 546 if (m_prims.TryGetValue(localID, out prim)) {
539 prim.Collide(collidingWith, type, collidePoint, collideNormal, penitration); 547 prim.Collide(collidingWith, type, collidePoint, collideNormal, penitration);