namespace Nerfed.Runtime;

public static class MathEx
{
    public static float ToNearestMultiple(float value, float multiple) {
        return MathF.Round(value / multiple, MidpointRounding.AwayFromZero) * multiple;
    }

    public static float Normalize(float value, float oldMin, float oldMax) {
        return Remap(value, oldMin, oldMax, 0f, 1f);
    }

    public static float Denormalize(float value, float newMin, float newMax) {
        return Remap(value, 0f, 1f, newMin, newMax);
    }

    public static float Remap(float value, float oldMin, float oldMax, float newMin, float newMax) {
        return (value - oldMin) / (oldMax - oldMin) * (newMax - newMin) + newMin;
    }
}
