Beispiel #1
0
        public static void SyncWait(IEnumerator runner)
        {
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
            }
        }
Beispiel #2
0
        public static T SyncWaitGet <T>(IEnumerator runner)
        {
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
            }

            return((T)coroutine.ReturnValue);
        }
Beispiel #3
0
        public static void SyncWaitWithTimeout(IEnumerator runner, float timeout)
        {
            var startTime = DateTime.UtcNow;
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
                if ((DateTime.UtcNow - startTime).TotalSeconds > timeout)
                {
                    throw new CoRoutineTimeoutException();
                }
            }
        }
Beispiel #4
0
        public static IEnumerator <T> Wrap <T>(IEnumerator runner)
        {
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
                yield return(default(T));
            }

            if (coroutine.ReturnValue != null)
            {
                Assert.That(coroutine.ReturnValue.GetType().DerivesFromOrEqual <T>(),
                            "Unexpected type returned from coroutine!  Expected '{0}' and found '{1}'", typeof(T).Name, coroutine.ReturnValue.GetType().Name);
            }

            yield return((T)coroutine.ReturnValue);
        }