using System; using System.Collections; using SUISS.Scheduling; namespace SUISSEngine { public class Wait { public static Func UntilTrue(Func isDone) { return isDone; } public static IEnumerator UntilTrue(Func isDone, double intervals) { while (!isDone()) { yield return intervals; } yield break; } public static IEnumerator UnityUntilTrue(Func isDone) { while (!isDone()) { yield return null; } yield break; } public static IEnumerator Milliseconds(double amount) { yield return Timing.time + amount / 1000.0; yield break; } public static IEnumerator Seconds(double amount) { yield return Timing.time + amount; yield break; } public static IEnumerator Minutes(double amount) { yield return Timing.time + amount * 60.0; yield break; } public static IEnumerator Hours(double amount) { yield return Timing.time + amount * 60.0 * 60.0; yield break; } public static IEnumerator Days(double amount) { yield return Timing.time + amount * 60.0 * 60.0 * 24.0; yield break; } public static IEnumerator Frame() { yield return null; yield break; } public static IEnumerator Frames(int count) { for (int i = 0; i < count; i++) { yield return Wait.Frame(); } yield break; } } }