private void findClosestFish(Fish refFish, int num, out List <Fish> closest) { closest = new List <Fish>(); List <FishDist> dist = new List <FishDist>(); foreach (var fish in fishes) { if (fish.transform != refFish.transform) { Vector3 toRef = refFish.transform.position - fish.transform.position; FishDist fd = new FishDist(); fd.fish = fish; fd.sqrDist = Vector3.Dot(toRef, toRef); dist.Add(fd); } } dist.Sort(SortSqrDist); for (int i = 0; i < Mathf.Min(num, dist.Count); i++) { closest.Add(dist[i].fish); } }
static int SortSqrDist(FishDist f1, FishDist f2) { return(f1.sqrDist.CompareTo(f2.sqrDist)); }