public static Enemy.EnemyController GetClosestEnemyFromList(List <Enemy.EnemyController> targets, Transform reference, out float sqrDistance)
 {
     Enemy.EnemyController closest = null;
     sqrDistance = float.MaxValue;
     foreach (var target in targets)
     {
         var dist = (target.transform.position - reference.transform.position).sqrMagnitude;
         if (dist < sqrDistance)
         {
             closest     = target;
             sqrDistance = dist;
         }
     }
     return(closest);
 }
 public static Enemy.EnemyController GetFarthestEnemyFromList(List <Enemy.EnemyController> targets, Transform reference, out float sqrDistance, float acuracy = 0.001f)
 {
     Enemy.EnemyController closest = null;
     sqrDistance = -1;
     foreach (var target in targets)
     {
         var dist = (target.transform.position - reference.transform.position).sqrMagnitude;
         if (dist > sqrDistance)
         {
             closest     = target;
             sqrDistance = dist;
         }
     }
     sqrDistance = EstimateSquareRoot(sqrDistance, acuracy);
     return(closest);
 }