diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | 9 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 6 |
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 92afe39..0c94fb6 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 | } |