Exemplo n.º 1
0
 /// <summary>
 /// Waits while condition is true
 /// If timed out, callback will be invoked with false
 /// </summary>
 /// <param name="condition"></param>
 /// <param name="completeCallback"></param>
 /// <param name="timeoutSeconds"></param>
 public static void WaitWhile(Func <bool> condition, TimerActionCompleteHandler completeCallback, float timeoutSeconds)
 {
     if (Instance)
     {
         Instance.StartCoroutine(WaitWhileTrueCoroutine(condition, completeCallback, timeoutSeconds));
     }
 }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="completeCallback"></param>
        /// <param name="timeoutSeconds"></param>
        /// <param name="reverseCondition"></param>
        /// <returns></returns>
        private static IEnumerator WaitWhileTrueCoroutine(Func <bool> condition, TimerActionCompleteHandler completeCallback, float timeoutSeconds, bool reverseCondition = false)
        {
            while ((timeoutSeconds > 0) && (condition.Invoke() == !reverseCondition))
            {
                timeoutSeconds -= Time.deltaTime;
                yield return(null);
            }

            completeCallback.Invoke(timeoutSeconds > 0);
        }