コード例 #1
0
        public static IEnumerator Join(IResumable resumable)
        {
            resumable.Resume(Coroutine.Delta);
            while (!resumable.Finished)
            {
                yield return(null);

                resumable.Resume(Coroutine.Delta);
            }
        }
コード例 #2
0
        /// <summary>
        /// Resume a resumable until the condition is met.
        /// </summary>
        /// <param name="resumable">The resumable.</param>
        /// <param name="condition">Condition delegate. It will be evaluated every before resuming.</param>
        /// <returns></returns>
        public static IEnumerator JoinWhile(this IResumable resumable, Condition condition)
        {
            if (!condition())
            {
                resumable.Resume(Coroutine.Delta);
            }

            while (condition())
            {
                yield return(null);

                resumable.Resume(Coroutine.Delta);
            }
        }
コード例 #3
0
        /// <summary>
        /// Resume a resumable until it is finished or time is up
        /// </summary>
        /// <param name="resumable">The resumable.</param>
        /// <param name="wait_time">Time to wait for resuming the resumable.</param>
        /// <returns></returns>
        public static IEnumerator TimedJoin(this IResumable resumable, float waitTime)
        {
            if (waitTime > 0 && !resumable.Finished)
            {
                resumable.Resume(Coroutine.Delta);
            }

            while (waitTime > 0 && !resumable.Finished)
            {
                yield return(null);

                waitTime -= Coroutine.Delta;
                resumable.Resume(Coroutine.Delta);
            }
        }