using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using UnityEngine.Events; public abstract class StreamRoot : TweenRoot { #region public bool AtOrigin; public bool AtDestination; public int Phase; public int TotPhase; public bool ActionLock; public bool Consecutive; public float TempDelay; public float TempDuration; public List DelayList = new List(); public List DurationList = new List(); public List StartActionList = new List(); public List FinishActionList = new List(); #endregion public StreamRoot( bool cg, Curve curve, Component comp) : base(cg, curve, comp) { } public override bool StartForward() { InPause = false; if (InForward || AtDestination) { return true; } Timer = 0; InForward = true; AtOrigin = false; Component.SetActive(true); if (InOrigin) { OnForwardStart.SafeInvoke(); } if (CG) { CanvasGroup.interactable = false; } if (InBackward) { AnimManager.MoveBacList.Remove(this); } AnimManager.MoveForList.Add(this); return false; } public override bool StartBackward() { InPause = false; if (InBackward || AtOrigin) { return true; } Timer = 0; InBackward = true; AtDestination = false; Component.SetActive(true); OnBackwardStart.SafeInvoke(); if (CG) { CanvasGroup.interactable = false; } if (InForward) { AnimManager.MoveForList.Remove(this); } AnimManager.MoveBacList.Add(this); return false; } public override void ForwardFinish() { base.ForwardFinish(); AtOrigin = false; AtDestination = true; } public override void BackwardFinish() { base.BackwardFinish(); AtOrigin = true; AtDestination = false; } }