public static Run OnDelegate(SimpleEvent aDelegate, System.Action aAction) { var tmp = new Run(); tmp.action = _RunOnDelegate(tmp, aDelegate, aAction); tmp.Start(); return tmp; }
public static Run Every(float aInitialDelay, float aDelay, System.Action aAction) { var tmp = new Run(); tmp.action = _RunEvery(tmp, aInitialDelay, aDelay, aAction); tmp.Start(); return tmp; }
public static Run Lerp(float aDuration, System.Action<float> aAction) { var tmp = new Run(); tmp.action = _RunLerp(tmp, aDuration, aAction); tmp.Start(); return tmp; }
public static Run Coroutine(IEnumerator aCoroutine) { var tmp = new Run(); tmp.action = _Coroutine(tmp, aCoroutine); tmp.Start(); return tmp; }
public static Run EachFrame(System.Action aAction) { var tmp = new Run(); tmp.action = _RunEachFrame(tmp, aAction); tmp.Start(); return tmp; }
public static Run After(float aDelay, System.Action aAction) { var tmp = new Run(); tmp.action = _RunAfter(tmp, aDelay, aAction); tmp.Start(); return tmp; }
public static Run OnGUI(float aDuration, System.Action aAction) { var tmp = new Run(); tmp.onGUIaction = aAction; if (aDuration > 0.0f) tmp.action = _RunAfter(tmp, aDuration, null); else tmp.action = null; tmp.Start(); CoroutineHelper.Instance.Add(tmp); return tmp; }
public Run ExecuteWhenDone(System.Action aAction) { var tmp = new Run(); tmp.action = _WaitFor(aAction); tmp.Start(); return tmp; }
private static IEnumerator _RunOnDelegate(Run aRun, SimpleEvent aDelegate, System.Action aAction) { aRun.isDone = false; System.Action action = () => { aAction(); }; aDelegate.Add(action); while (!aRun.abort && aAction != null) { yield return null; } aDelegate.Remove(action); aRun.isDone = true; }
private static IEnumerator _RunLerp(Run aRun, float aDuration, System.Action<float> aAction) { aRun.isDone = false; float t = 0f; while (t < 1.0f) { t = Mathf.Clamp01(t + Time.deltaTime / aDuration); if (!aRun.abort && aAction != null) aAction(t); yield return null; } aRun.isDone = true; }
private static IEnumerator _RunEvery(Run aRun, float aInitialDelay, float aSeconds, System.Action aAction) { aRun.isDone = false; if (aInitialDelay > 0f) yield return new WaitForSeconds(aInitialDelay); else { int FrameCount = Mathf.RoundToInt(-aInitialDelay); for (int i = 0; i < FrameCount; i++) yield return null; } while (true) { if (!aRun.abort && aAction != null) aAction(); else break; if (aSeconds > 0) yield return new WaitForSeconds(aSeconds); else { int FrameCount = Mathf.Max(1, Mathf.RoundToInt(-aSeconds)); for (int i = 0; i < FrameCount; i++) yield return null; } } aRun.isDone = true; }
private static IEnumerator _RunEachFrame(Run aRun, System.Action aAction) { aRun.isDone = false; while (true) { if (!aRun.abort && aAction != null) aAction(); else break; yield return null; } aRun.isDone = true; }
private static IEnumerator _RunAfter(Run aRun, float aDelay, System.Action aAction) { aRun.isDone = false; yield return new WaitForSeconds(aDelay); if (!aRun.abort && aAction != null) aAction(); aRun.isDone = true; }
private static IEnumerator _Coroutine(Run aRun, IEnumerator aCoroutine) { yield return CoroutineHelper.Instance.StartCoroutine(aCoroutine); aRun.isDone = true; }