public override Dictionary<uint, float> GetTopColliders()
{
Dictionary<uint, float> returncolliders = new Dictionary<uint, float>();
List<ODEPrim> collidingPrims = new List<ODEPrim>();
lock (_prims)
{
foreach (
ODEPrim prm in
_prims.Where(prm => prm.CollisionScore > 0).Where(prm => !collidingPrims.Contains(prm)))
{
collidingPrims.Add(prm);
}
}
//Sort them by their score
collidingPrims.Sort((a, b) => b.CollisionScore.CompareTo(a.CollisionScore));
//Limit to 25
if (collidingPrims.Count > 25)
collidingPrims.RemoveRange(25, collidingPrims.Count - 25);
foreach (ODEPrim prm in collidingPrims)
{
returncolliders[prm.LocalID] = prm.CollisionScore;
prm.ResetCollisionAccounting();
}
return returncolliders;
}