Vector3 getScale(float tf)
    {
        switch (ScaleModifier)
        {
        case MeshScaleModifier.ControlPoint:
            return(Spline.InterpolateScale(tf));

        case MeshScaleModifier.UserValue:
            return(Spline.InterpolateUserValue(tf, ScaleModifierUserValueSlot));

        case MeshScaleModifier.Delegate:
            return((OnGetScale != null) ? OnGetScale(this, tf) : Vector3.one);

        case MeshScaleModifier.AnimationCurve:
            Vector3 v = Vector3.one;
            if (ScaleModifierCurve != null)
            {
                return(v * ScaleModifierCurve.Evaluate(tf));
            }
            else
            {
                return(v);
            }

        default:
            return(Vector3.one);
        }
    }