aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin/OdePlugin.cs')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs23
1 files changed, 22 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 78831f8..9429544 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -243,6 +243,7 @@ namespace OpenSim.Region.Physics.OdePlugin
243 private readonly HashSet<OdeCharacter> _taintedActors = new HashSet<OdeCharacter>(); 243 private readonly HashSet<OdeCharacter> _taintedActors = new HashSet<OdeCharacter>();
244 private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>(); 244 private readonly List<d.ContactGeom> _perloopContact = new List<d.ContactGeom>();
245 private readonly List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>(); 245 private readonly List<PhysicsActor> _collisionEventPrim = new List<PhysicsActor>();
246 private readonly HashSet<OdeCharacter> _badCharacter = new HashSet<OdeCharacter>();
246 public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>(); 247 public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>();
247 public Dictionary<IntPtr, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>(); 248 public Dictionary<IntPtr, PhysicsActor> actor_name_map = new Dictionary<IntPtr, PhysicsActor>();
248 private bool m_NINJA_physics_joints_enabled = false; 249 private bool m_NINJA_physics_joints_enabled = false;
@@ -1678,6 +1679,14 @@ namespace OpenSim.Region.Physics.OdePlugin
1678 } 1679 }
1679 } 1680 }
1680 } 1681 }
1682 public void BadCharacter(OdeCharacter chr)
1683 {
1684 lock (_badCharacter)
1685 {
1686 if (!_badCharacter.Contains(chr))
1687 _badCharacter.Add(chr);
1688 }
1689 }
1681 1690
1682 public override void RemoveAvatar(PhysicsActor actor) 1691 public override void RemoveAvatar(PhysicsActor actor)
1683 { 1692 {
@@ -2987,6 +2996,18 @@ namespace OpenSim.Region.Physics.OdePlugin
2987 } 2996 }
2988 } 2997 }
2989 2998
2999 lock (_badCharacter)
3000 {
3001 if (_badCharacter.Count > 0)
3002 {
3003 foreach (OdeCharacter chr in _badCharacter)
3004 {
3005 RemoveCharacter(chr);
3006 }
3007 _badCharacter.Clear();
3008 }
3009 }
3010
2990 lock (_activeprims) 3011 lock (_activeprims)
2991 { 3012 {
2992 //if (timeStep < 0.2f) 3013 //if (timeStep < 0.2f)
@@ -3792,7 +3813,7 @@ namespace OpenSim.Region.Physics.OdePlugin
3792 } 3813 }
3793 3814
3794 public void start(int unused) 3815 public void start(int unused)
3795 { 3816 {
3796 ds.SetViewpoint(ref xyz, ref hpr); 3817 ds.SetViewpoint(ref xyz, ref hpr);
3797 } 3818 }
3798#endif 3819#endif