Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
 static int SortSqrDist(FishDist f1, FishDist f2)
 {
     return(f1.sqrDist.CompareTo(f2.sqrDist));
 }