/// /// SURGE FRAMEWORK /// Author: Bob Berkebile /// Email: bobb@pixelplacement.com /// using UnityEngine; using System; using Pixelplacement; namespace Pixelplacement.TweenSystem { class ValueRect : TweenBase { //Public Properties: public Rect EndValue {get; private set;} //Private Variables: Action _valueUpdatedCallback; Rect _start; //Constructor: public ValueRect (Rect startValue, Rect endValue, Action valueUpdatedCallback, float duration, float delay, bool obeyTimescale, AnimationCurve curve, Tween.LoopType loop, Action startCallback, Action completeCallback) { //set essential properties: SetEssentials (Tween.TweenType.Value, -1, duration, delay, obeyTimescale, curve, loop, startCallback, completeCallback); //catalog custom properties: _valueUpdatedCallback = valueUpdatedCallback; _start = startValue; EndValue = endValue; } //Processes: protected override bool SetStartValue () { return true; } protected override void Operation (float percentage) { Rect calculatedValue = TweenUtilities.LinearInterpolate (_start, EndValue, percentage); _valueUpdatedCallback (calculatedValue); } //Loops: public override void Loop () { ResetStartTime (); } public override void PingPong () { ResetStartTime (); Rect temp = _start; _start = EndValue; EndValue = temp; } } }