コード例 #1
0
ファイル: UtilitiesMath.cs プロジェクト: TrinketBen/Courier
    public static float MapCurve(float value, float inMin, float inMax, float outMin, float outMax, bool clamp, AnimationCurve inCurve)
    {
        var result = Map(value, inMin, inMax, outMin, outMax, clamp);
        if(inCurve != null && inCurve.length > 1)
        {
            var min = inMin < inMax ? inMin : inMax;
            var max = inMax > inMin ? inMax : inMin;
            var range = max - min;

            float nt = 0f;
            if(!Mathf.Approximately(range, 0f))
            {
                nt = inCurve.GetDuration() * (Mathf.Clamp(value, min, max) - min) / (range);
            }
            else
            {
                Debug.LogWarning("Avoiding zero range for MapCurve, evaluating curve at nt = 0f");
            }

            result = inCurve.Evaluate(nt) * result;
        }

        return result;
    }