aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/OdePlugin
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs14
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs10
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