Universe.Physics.OpenDynamicsEngine.ODEPhysicsScene.GetTopColliders C# (CSharp) Method

GetTopColliders() public method

public GetTopColliders ( ) : float>.Dictionary
return float>.Dictionary
        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;
        }