using UnityEngine; using System.Collections; public class TweenRect : Tween { #region public override bool InOrigin { get { if (Target.sizeDelta.Equal(Origin)) { _InOrigin = true; } else { _InOrigin = false; } return _InOrigin; } set { _InOrigin = value; if (_InOrigin) { Target.sizeDelta = Origin; BackwardFinish(); } } } public override bool InDestination { get { if (Target.sizeDelta.Equal(Destination)) { _InDestination = true; } else { _InDestination = false; } return _InDestination; } set { _InDestination = value; if (_InDestination) { Target.sizeDelta = Destination; ForwardFinish(); } } } public Vector2 Delta; public Vector2 Origin; public Vector2 Destination; public RectTransform Target; public CurveFunctionV Func; #endregion public TweenRect(RectTransform target, Vector2 origin, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve,bool cg=false) : base(cg, curve, target) { CanvasGroup = target.GetComponent(); Func = ManaAnim.CurveFuncDicV[curve]; Target = target; InForward = false; InBackward = false; Delta = destination - origin; Origin = origin; Duration = duration; DestActive = destActive; Destination = destination; OriginActive = originActive; } public override void StartForward() { base.StartForward(); if (InBackward) { Timer = ManaAnim.GetTimerVec(Target.sizeDelta, Duration, Origin, Delta, Curve); } } public override void StartBackward() { base.StartBackward(); if (InForward) { Timer = ManaAnim.GetTimerVec(Target.sizeDelta, Duration, Destination, -Delta, Curve); } } public override bool DoForward() { Timer += Time.fixedDeltaTime; if (Timer > Duration) { InForward = false; InDestination = true; if (OnForwardFinish != null) { OnForwardFinish.Invoke(); } return true; } else { Target.sizeDelta = Func(Timer, Duration, Origin, Delta); return false; } } public override bool DoBackward() { Timer += Time.fixedDeltaTime; if (Timer > Duration) { InBackward = false; InOrigin = true; if (OnBackwardFinish != null) { OnBackwardFinish.Invoke(); } return true; } else { Target.sizeDelta = Func(Timer, Duration, Destination, -Delta); return false; } } }