public static IEnumerator If(Func <bool> condition, Cancelator p, params IEnumerator[] actions) { if (condition()) { yield return(ChainLocal(p, actions)); } }
static IEnumerator ChainLocal(Cancelator cancel, params IEnumerator[] actions) { foreach (var action in actions) { if (cancel.Interrupt) { break; } ++Instance.RunningCount; var c = Instance.StartCoroutine(action); cancel.last.Add(c); yield return(c); cancel.last.Remove(c); --Instance.RunningCount; } }
public static void Chain(Cancelator c, params IEnumerator[] actions) { c.Interrupt = false; c.parent.Add(Instance.StartCoroutine(ChainLocal(c, actions))); }