diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin/OdePlugin.cs')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 23 |
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 |