diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | 14 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 10 |
2 files changed, 18 insertions, 6 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index 1fff846..71ace16 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | |||
@@ -139,8 +139,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
139 | public int m_eventsubscription = 0; | 139 | public int m_eventsubscription = 0; |
140 | private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate(); | 140 | private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate(); |
141 | 141 | ||
142 | // unique UUID of this character object | ||
143 | public UUID m_uuid; | ||
144 | public bool bad = false; | ||
145 | |||
142 | public OdeCharacter(String avName, OdeScene parent_scene, PhysicsVector pos, CollisionLocker dode, PhysicsVector size, float pid_d, float pid_p, float capsule_radius, float tensor, float density, float height_fudge_factor, float walk_divisor, float rundivisor) | 146 | public OdeCharacter(String avName, OdeScene parent_scene, PhysicsVector pos, CollisionLocker dode, PhysicsVector size, float pid_d, float pid_p, float capsule_radius, float tensor, float density, float height_fudge_factor, float walk_divisor, float rundivisor) |
143 | { | 147 | { |
148 | m_uuid = UUID.Random(); | ||
149 | |||
144 | // ode = dode; | 150 | // ode = dode; |
145 | _velocity = new PhysicsVector(); | 151 | _velocity = new PhysicsVector(); |
146 | _target_velocity = new PhysicsVector(); | 152 | _target_velocity = new PhysicsVector(); |
@@ -225,11 +231,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
225 | set { m_localID = value; } | 231 | set { m_localID = value; } |
226 | } | 232 | } |
227 | 233 | ||
228 | public override int GetHashCode() | ||
229 | { | ||
230 | return (int)m_localID; | ||
231 | } | ||
232 | |||
233 | public override bool Grabbed | 234 | public override bool Grabbed |
234 | { | 235 | { |
235 | set { return; } | 236 | set { return; } |
@@ -1112,10 +1113,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1112 | } | 1113 | } |
1113 | catch (NullReferenceException) | 1114 | catch (NullReferenceException) |
1114 | { | 1115 | { |
1116 | bad = true; | ||
1115 | _parent_scene.BadCharacter(this); | 1117 | _parent_scene.BadCharacter(this); |
1116 | vec = new d.Vector3(_position.X, _position.Y, _position.Z); | 1118 | vec = new d.Vector3(_position.X, _position.Y, _position.Z); |
1117 | base.RaiseOutOfBounds(_position); // Tells ScenePresence that there's a problem! | 1119 | base.RaiseOutOfBounds(_position); // Tells ScenePresence that there's a problem! |
1118 | m_log.WarnFormat("[ODEPLUGIN]: Avatar Null reference for Avatar: {0}", m_name); | 1120 | m_log.WarnFormat("[ODEPLUGIN]: Avatar Null reference for Avatar {0}, physical actor {1}", m_name, m_uuid); |
1119 | } | 1121 | } |
1120 | 1122 | ||
1121 | 1123 | ||
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 9429544..0a065be 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -1665,6 +1665,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1665 | if (!_characters.Contains(chr)) | 1665 | if (!_characters.Contains(chr)) |
1666 | { | 1666 | { |
1667 | _characters.Add(chr); | 1667 | _characters.Add(chr); |
1668 | if (chr.bad) | ||
1669 | m_log.DebugFormat("[PHYSICS] Added BAD actor {0} to characters list", chr.m_uuid); | ||
1668 | } | 1670 | } |
1669 | } | 1671 | } |
1670 | } | 1672 | } |
@@ -2587,7 +2589,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
2587 | lock (_taintedActors) | 2589 | lock (_taintedActors) |
2588 | { | 2590 | { |
2589 | if (!(_taintedActors.Contains(taintedchar))) | 2591 | if (!(_taintedActors.Contains(taintedchar))) |
2592 | { | ||
2590 | _taintedActors.Add(taintedchar); | 2593 | _taintedActors.Add(taintedchar); |
2594 | if (taintedchar.bad) | ||
2595 | m_log.DebugFormat("[PHYSICS]: Added BAD actor {0} to tainted actors", taintedchar.m_uuid); | ||
2596 | } | ||
2591 | } | 2597 | } |
2592 | } | 2598 | } |
2593 | } | 2599 | } |
@@ -2992,7 +2998,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
2992 | foreach (OdeCharacter actor in _characters) | 2998 | foreach (OdeCharacter actor in _characters) |
2993 | { | 2999 | { |
2994 | if (actor != null) | 3000 | if (actor != null) |
3001 | { | ||
3002 | if (actor.bad) | ||
3003 | m_log.WarnFormat("[PHYSICS]: BAD Actor {0} in _characters list was not removed?", actor.m_uuid); | ||
2995 | actor.UpdatePositionAndVelocity(); | 3004 | actor.UpdatePositionAndVelocity(); |
3005 | } | ||
2996 | } | 3006 | } |
2997 | } | 3007 | } |
2998 | 3008 | ||