Ease.easeInOutElasticFunction C# (CSharp) Method

easeInOutElasticFunction() private method

private easeInOutElasticFunction ( float start, float end, float value ) : float
start float
end float
value float
return float
    private float easeInOutElasticFunction(float start, float end, float value)
    {
        end -= start;

        float d = 1f;
        float p = d * .3f;
        float s = 0;
        float a = 0;

        if (value == 0) return start;

        if ((value /= d/2) == 2) return start + end;

        if (a == 0f || a < Mathf.Abs(end)){
            a = end;
            s = p / 4;
            }else{
            s = p / (2 * Mathf.PI) * Mathf.Asin(end / a);
        }

        if (value < 1) return -0.5f * (a * Mathf.Pow(2, 10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start;
        return a * Mathf.Pow(2, -10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) * 0.5f + end + start;
    }