public static MemberCurve CreateRedirectTo(object target, string propName, Ease ease, object start, object end, float dur, object option = null) { if (target == null) { throw new System.ArgumentNullException("target"); } if (ease == null) { throw new System.ArgumentNullException("ease"); } System.Type memberType; var accessor = MemberCurve.GetAccessor(target, propName, out memberType); var curve = CreateUnitializedCurve(memberType, accessor); curve._ease = ease; curve._accessor = accessor; if (curve is ISupportRedirectToMemberCurve) { (curve as ISupportRedirectToMemberCurve).ConfigureAsRedirectTo(memberType, dur, accessor.Get(target), start, end, option); } else { //try to coerce curve._dur = dur; var current = accessor.Get(target); dur = (1f - MathUtil.PercentageOffMinMax(ConvertUtil.ToSingle(current), ConvertUtil.ToSingle(end), ConvertUtil.ToSingle(start))) * dur; return(MemberCurve.Create(memberType, accessor, ease, dur, current, ConvertUtil.ToPrim(end, memberType), option)); } return(curve); }
public new static MemberCurve CreateFromTo(object target, string propName, Ease ease, object start, object end, float dur, object option = null) { if (target == null) { throw new System.ArgumentNullException("target"); } System.Type memberType; var accessor = MemberCurve.GetAccessor(target, propName, out memberType); return(MemberCurve.Create(memberType, accessor, ease, dur, start, end, option)); }
public sealed override void Update(object targ, float dt, float t) { var value = GetValueAt(dt, t); if (_accessor == null) { System.Type memberType; _accessor = MemberCurve.GetAccessor(targ, _memberName, out memberType); } _accessor.Set(targ, value); }
/// <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 new static MemberCurve CreateRedirectTo(object target, string propName, Ease ease, float start, float end, float dur, object option = null) { if (target == null) { throw new System.ArgumentNullException("target"); } System.Type memberType; var accessor = MemberCurve.GetAccessor(target, propName, out memberType); var current = accessor.Get(target); dur = MathUtil.PercentageOffMinMax(ConvertUtil.ToSingle(current), end, start) * dur; return(MemberCurve.Create(memberType, accessor, ease, dur, current, ConvertUtil.ToPrim(end, memberType), option)); }