Experimental locking of taint processing

avinationmerge
Melanie 2010-09-25 05:57:08 +02:00
parent 1c1f308052
commit 83b16612ce
1 changed files with 92 additions and 88 deletions

View File

@ -143,6 +143,7 @@ namespace OpenSim.Region.Physics.OdePlugin
// unique UUID of this character object
public UUID m_uuid;
public bool bad = false;
private Object m_syncRoot = new Object();
public OdeCharacter(String avName, OdeScene parent_scene, Vector3 pos, CollisionLocker dode, Vector3 size, float pid_d, float pid_p, float capsule_radius, float tensor, float density, float height_fudge_factor, float walk_divisor, float rundivisor)
{
@ -1322,6 +1323,8 @@ Console.WriteLine("**** Create {2} Dicts: actor={0} name={1} height={3} ra
}
public void ProcessTaints(float timestep)
{
lock (m_syncRoot)
{
if (m_tainted_isPhysical != m_isPhysical)
@ -1370,9 +1373,9 @@ Console.WriteLine("**** Create {2} Dicts: actor={0} name={1} height={3} ra
m_log.Error("[PHYSICS]: PrimGeom dead");
}
// Remove any old entries
//string tShell;
//_parent_scene.geom_name_map.TryGetValue(Shell, out tShell);
//Console.WriteLine("**** Remove {0}", tShell);
//string tShell;
//_parent_scene.geom_name_map.TryGetValue(Shell, out tShell);
//Console.WriteLine("**** Remove {0}", tShell);
if(_parent_scene.geom_name_map.ContainsKey(Shell)) _parent_scene.geom_name_map.Remove(Shell);
if(_parent_scene.actor_name_map.ContainsKey(Shell)) _parent_scene.actor_name_map.Remove(Shell);
@ -1421,6 +1424,7 @@ Console.WriteLine("**** Create {2} Dicts: actor={0} name={1} height={3} ra
}
}
}
internal void AddCollisionFrameTime(int p)
{