public static float EaseByType(EasingUtility.Easing e, float start, float end, float t)
    {
        t = (t).Clamp(0f, 1f);
        switch (e)
        {
        case EasingUtility.Easing.Linear:
            return(EasingUtility.Linear(start, end, t));

        case EasingUtility.Easing.InQuad:
            return(EasingUtility.InQuad(start, end, t));

        case EasingUtility.Easing.OutQuad:
            return(EasingUtility.OutQuad(start, end, t));

        case EasingUtility.Easing.InOutQuad:
            return(EasingUtility.InOutQuad(start, end, t));

        case EasingUtility.Easing.OutInQuad:
            return(EasingUtility.OutInQuad(start, end, t));

        case EasingUtility.Easing.InCubic:
            return(EasingUtility.InCubic(start, end, t));

        case EasingUtility.Easing.OutCubic:
            return(EasingUtility.OutCubic(start, end, t));

        case EasingUtility.Easing.InOutCubic:
            return(EasingUtility.InOutCubic(start, end, t));

        case EasingUtility.Easing.OutInCubic:
            return(EasingUtility.OutInCubic(start, end, t));

        case EasingUtility.Easing.InQuart:
            return(EasingUtility.InQuart(start, end, t));

        case EasingUtility.Easing.OutQuart:
            return(EasingUtility.OutQuart(start, end, t));

        case EasingUtility.Easing.InOutQuart:
            return(EasingUtility.InOutQuart(start, end, t));

        case EasingUtility.Easing.OutInQuart:
            return(EasingUtility.OutInQuart(start, end, t));

        case EasingUtility.Easing.InQuint:
            return(EasingUtility.InQuint(start, end, t));

        case EasingUtility.Easing.OutQuint:
            return(EasingUtility.OutQuint(start, end, t));

        case EasingUtility.Easing.InOutQuint:
            return(EasingUtility.InOutQuint(start, end, t));

        case EasingUtility.Easing.OutInQuint:
            return(EasingUtility.OutInQuint(start, end, t));

        case EasingUtility.Easing.InSin:
            return(EasingUtility.InSin(start, end, t));

        case EasingUtility.Easing.OutSin:
            return(EasingUtility.OutSin(start, end, t));

        case EasingUtility.Easing.InOutSin:
            return(EasingUtility.InOutSin(start, end, t));

        case EasingUtility.Easing.OutInSin:
            return(EasingUtility.OutInSin(start, end, t));

        case EasingUtility.Easing.InExp:
            return(EasingUtility.InExp(start, end, t));

        case EasingUtility.Easing.OutExp:
            return(EasingUtility.OutExp(start, end, t));

        case EasingUtility.Easing.InOutExp:
            return(EasingUtility.InOutExp(start, end, t));

        case EasingUtility.Easing.OutInExp:
            return(EasingUtility.OutInExp(start, end, t));

        case EasingUtility.Easing.InCirc:
            return(EasingUtility.InCirc(start, end, t));

        case EasingUtility.Easing.OutCirc:
            return(EasingUtility.OutCirc(start, end, t));

        case EasingUtility.Easing.InOutCirc:
            return(EasingUtility.InOutCirc(start, end, t));

        case EasingUtility.Easing.OutInCirc:
            return(EasingUtility.OutInCirc(start, end, t));

        case EasingUtility.Easing.InElastic:
            return(EasingUtility.InElastic(start, end, t));

        case EasingUtility.Easing.OutElastic:
            return(EasingUtility.OutElastic(start, end, t));

        case EasingUtility.Easing.InOutElastic:
            return(EasingUtility.InOutElastic(start, end, t));

        case EasingUtility.Easing.OutInElastic:
            return(EasingUtility.OutInElastic(start, end, t));

        case EasingUtility.Easing.InBounce:
            return(EasingUtility.InBounce(start, end, t));

        case EasingUtility.Easing.OutBounce:
            return(EasingUtility.OutBounce(start, end, t));

        case EasingUtility.Easing.InOutBounce:
            return(EasingUtility.InOutBounce(start, end, t));

        case EasingUtility.Easing.OutInBounce:
            return(EasingUtility.OutInBounce(start, end, t));

        case EasingUtility.Easing.InBack:
            return(EasingUtility.InBack(start, end, t));

        case EasingUtility.Easing.OutBack:
            return(EasingUtility.OutBack(start, end, t));

        case EasingUtility.Easing.InOutBack:
            return(EasingUtility.InOutBack(start, end, t));

        case EasingUtility.Easing.OutInBack:
            return(EasingUtility.OutInBack(start, end, t));

        default:
            return(0.0f);
        }
    }
    public static Vector3 EaseByType(EasingUtility.Easing e, Vector3 start, Vector3 end, float t)
    {
        switch (e)
        {
        case EasingUtility.Easing.Linear:
            return(EasingUtility.Linear(start, end, t));

        case EasingUtility.Easing.InQuad:
            return(EasingUtility.InQuad(start, end, t));

        case EasingUtility.Easing.OutQuad:
            return(EasingUtility.OutQuad(start, end, t));

        case EasingUtility.Easing.InOutQuad:
            return(EasingUtility.InOutQuad(start, end, t));

        case EasingUtility.Easing.OutInQuad:
            return(EasingUtility.OutInQuad(start, end, t));

        case EasingUtility.Easing.InCubic:
            return(EasingUtility.InCubic(start, end, t));

        case EasingUtility.Easing.OutCubic:
            return(EasingUtility.OutCubic(start, end, t));

        case EasingUtility.Easing.InOutCubic:
            return(EasingUtility.InOutCubic(start, end, t));

        case EasingUtility.Easing.OutInCubic:
            return(EasingUtility.OutInCubic(start, end, t));

        case EasingUtility.Easing.InQuart:
            return(EasingUtility.InQuart(start, end, t));

        case EasingUtility.Easing.OutQuart:
            return(EasingUtility.OutQuart(start, end, t));

        case EasingUtility.Easing.InOutQuart:
            return(EasingUtility.InOutQuart(start, end, t));

        case EasingUtility.Easing.OutInQuart:
            return(EasingUtility.OutInQuart(start, end, t));

        case EasingUtility.Easing.InQuint:
            return(EasingUtility.InQuint(start, end, t));

        case EasingUtility.Easing.OutQuint:
            return(EasingUtility.OutQuint(start, end, t));

        case EasingUtility.Easing.InOutQuint:
            return(EasingUtility.InOutQuint(start, end, t));

        case EasingUtility.Easing.OutInQuint:
            return(EasingUtility.OutInQuint(start, end, t));

        case EasingUtility.Easing.InSin:
            return(EasingUtility.InSin(start, end, t));

        case EasingUtility.Easing.OutSin:
            return(EasingUtility.OutSin(start, end, t));

        case EasingUtility.Easing.InOutSin:
            return(EasingUtility.InOutSin(start, end, t));

        case EasingUtility.Easing.OutInSin:
            return(EasingUtility.OutInSin(start, end, t));

        case EasingUtility.Easing.InExp:
            return(EasingUtility.InExp(start, end, t));

        case EasingUtility.Easing.OutExp:
            return(EasingUtility.OutExp(start, end, t));

        case EasingUtility.Easing.InOutExp:
            return(EasingUtility.InOutExp(start, end, t));

        case EasingUtility.Easing.OutInExp:
            return(EasingUtility.OutInExp(start, end, t));

        case EasingUtility.Easing.InCirc:
            return(EasingUtility.InCirc(start, end, t));

        case EasingUtility.Easing.OutCirc:
            return(EasingUtility.OutCirc(start, end, t));

        case EasingUtility.Easing.InOutCirc:
            return(EasingUtility.InOutCirc(start, end, t));

        case EasingUtility.Easing.OutInCirc:
            return(EasingUtility.OutInCirc(start, end, t));

        case EasingUtility.Easing.InElastic:
            return(EasingUtility.InElastic(start, end, t));

        case EasingUtility.Easing.OutElastic:
            return(EasingUtility.OutElastic(start, end, t));

        case EasingUtility.Easing.InOutElastic:
            return(EasingUtility.InOutElastic(start, end, t));

        case EasingUtility.Easing.OutInElastic:
            return(EasingUtility.OutInElastic(start, end, t));

        case EasingUtility.Easing.InBounce:
            return(EasingUtility.InBounce(start, end, t));

        case EasingUtility.Easing.OutBounce:
            return(EasingUtility.OutBounce(start, end, t));

        case EasingUtility.Easing.InOutBounce:
            return(EasingUtility.InOutBounce(start, end, t));

        case EasingUtility.Easing.OutInBounce:
            return(EasingUtility.OutInBounce(start, end, t));

        case EasingUtility.Easing.InBack:
            return(EasingUtility.InBack(start, end, t));

        case EasingUtility.Easing.OutBack:
            return(EasingUtility.OutBack(start, end, t));

        case EasingUtility.Easing.InOutBack:
            return(EasingUtility.InOutBack(start, end, t));

        case EasingUtility.Easing.OutInBack:
            return(EasingUtility.OutInBack(start, end, t));

        default:
            return(Vector3.zero);
        }
    }