using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System.Linq;
|
|
using System;
|
|
|
|
/// <summary>
|
|
/// Utility Class used for common methodes which don't fit in a class
|
|
/// </summary>
|
|
public static class Utility
|
|
{
|
|
|
|
/// <summary>
|
|
/// Gets the smallest item in an array based on the provided function
|
|
/// </summary>
|
|
/// <typeparam name="T">Array type</typeparam>
|
|
/// <param name="values">Array to find smallest item in</param>
|
|
/// <param name="predicate">What to compare items with</param>
|
|
/// <returns></returns>
|
|
public static T minBy<T>(T[] values, Func<T,IComparable> predicate)
|
|
{
|
|
//if empty return null
|
|
if (values.Length == 0)
|
|
return default;
|
|
|
|
//Define smallest value as first
|
|
T min = values[0];
|
|
|
|
//compare all other values
|
|
for (int i = 1; i < values.Length; i++)
|
|
if (predicate(values[i]).CompareTo(predicate(min)) < 0)
|
|
min = values[i];
|
|
|
|
//return
|
|
return min;
|
|
}
|
|
}
|