Example #1
0
    public static IEnumerator WaitForAll(this MonoBehaviour mb, IEnumerable <IEnumerator> enumerable)
    {
        WaitForAllShared shared = new WaitForAllShared();
        int count = 0;

        foreach (IEnumerator enumerator in enumerable)
        {
            mb.StartCoroutine(IncrementDone(mb, enumerator, shared));
            count++;
        }
        yield return(new WaitUntil(() => shared.done == count));
    }
Example #2
0
    private static IEnumerator IncrementDone(MonoBehaviour mb, IEnumerator enumerator, WaitForAllShared shared)
    {
        yield return(mb.StartCoroutine(enumerator));

        shared.done++;
    }