aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs9
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs6
2 files changed, 14 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index 1fff846..ef0e56e 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();
@@ -1112,10 +1118,11 @@ namespace OpenSim.Region.Physics.OdePlugin
1112 } 1118 }
1113 catch (NullReferenceException) 1119 catch (NullReferenceException)
1114 { 1120 {
1121 bad = true;
1115 _parent_scene.BadCharacter(this); 1122 _parent_scene.BadCharacter(this);
1116 vec = new d.Vector3(_position.X, _position.Y, _position.Z); 1123 vec = new d.Vector3(_position.X, _position.Y, _position.Z);
1117 base.RaiseOutOfBounds(_position); // Tells ScenePresence that there's a problem! 1124 base.RaiseOutOfBounds(_position); // Tells ScenePresence that there's a problem!
1118 m_log.WarnFormat("[ODEPLUGIN]: Avatar Null reference for Avatar: {0}", m_name); 1125 m_log.WarnFormat("[ODEPLUGIN]: Avatar Null reference for Avatar {0}, physical actor {1}", m_name, m_uuid);
1119 } 1126 }
1120 1127
1121 1128
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 0e03e81..7187fbe 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -1664,6 +1664,8 @@ namespace OpenSim.Region.Physics.OdePlugin
1664 if (!_characters.Contains(chr)) 1664 if (!_characters.Contains(chr))
1665 { 1665 {
1666 _characters.Add(chr); 1666 _characters.Add(chr);
1667 if (chr.bad)
1668 m_log.DebugFormat("[PHYSICS] Added BAD actor {0} to characters list", chr.m_uuid);
1667 } 1669 }
1668 } 1670 }
1669 } 1671 }
@@ -2581,7 +2583,11 @@ namespace OpenSim.Region.Physics.OdePlugin
2581 lock (_taintedActors) 2583 lock (_taintedActors)
2582 { 2584 {
2583 if (!(_taintedActors.Contains(taintedchar))) 2585 if (!(_taintedActors.Contains(taintedchar)))
2586 {
2584 _taintedActors.Add(taintedchar); 2587 _taintedActors.Add(taintedchar);
2588 if (taintedchar.bad)
2589 m_log.DebugFormat("[PHYSICS]: Added BAD actor {0} to tainted actors", taintedchar.m_uuid);
2590 }
2585 } 2591 }
2586 } 2592 }
2587 } 2593 }