private TweenCurve CreateCurve(PropInfo prop)
        {
            try
            {
                Ease  ease = (prop.ease == null) ? _defaultEase : prop.ease;
                float dur  = prop.dur;
                switch (prop.mode)
                {
                case AnimMode.AnimCurve:
                    return(MemberCurve.CreateFromTo(_targ, prop.name, ease, null, null, dur, prop.option));

                case AnimMode.Curve:
                    return(prop.value as TweenCurve);

                case AnimMode.To:
                    return(MemberCurve.CreateTo(_targ, prop.name, ease, prop.value, dur, prop.option));

                case AnimMode.From:
                    return(MemberCurve.CreateFrom(_targ, prop.name, ease, prop.value, dur, prop.option));

                case AnimMode.By:
                    return(MemberCurve.CreateBy(_targ, prop.name, ease, prop.value, dur, prop.option));

                case AnimMode.FromTo:
                    return(MemberCurve.CreateFromTo(_targ, prop.name, ease, prop.value, prop.altValue, dur, prop.option));

                case AnimMode.RedirectTo:
                    return(MemberCurve.CreateRedirectTo(_targ, prop.name, ease, prop.value, prop.altValue, dur, prop.option));
                }
            }
            catch
            {
                return(null);
            }

            return(null);
        }
 /// <summary>
 /// Creates a curve that will animate from the current value to the end value, but will rescale the duration from how long it should have
 /// taken from start to end, but already animated up to current.
 /// </summary>
 /// <param name="target"></param>
 /// <param name="propName"></param>
 /// <param name="ease"></param>
 /// <param name="start"></param>
 /// <param name="end"></param>
 /// <param name="dur"></param>
 /// <param name="option"></param>
 /// <returns></returns>
 public static TweenCurve CreateRedirectTo(object target, string propName, Ease ease, float start, float end, float dur, object option = null)
 {
     return(MemberCurve.CreateRedirectTo(target, propName, ease, start, end, dur, option));
 }