Advertisement
jefflynch

Untitled

Aug 18th, 2023
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.19 KB | None | 0 0
  1. public static class Wait
  2. {
  3.     private static readonly Dictionary<float, WaitForSeconds> WaitTimes = new();
  4.     private static readonly Dictionary<float, WaitForSecondsRealtime> WaitTimesRealtime = new();
  5.    
  6.     private static readonly object m_Null = default;
  7.    
  8.     public static WaitForEndOfFrame ForEndOfFrame { get; } = new();
  9.     public static WaitForFixedUpdate ForFixedUpdate { get; } = new();
  10.     public static object ForNextFrame { get; } = null;
  11.        
  12.        
  13.     public static WaitForSecondsRealtime ForSecondsRealtime(float seconds) =>
  14.         WaitTimesRealtime.TryGetValue(seconds, out var wait)
  15.             ? wait
  16.             : WaitTimesRealtime[seconds] = new WaitForSecondsRealtime(seconds);
  17.     public static WaitForSeconds ForSeconds(float seconds) => WaitTimes.TryGetValue(seconds, out var wait) ? wait : WaitTimes[seconds] = new WaitForSeconds(seconds);
  18.    
  19.     public static WaitUntil Until(System.Func<bool> condition) => new(condition);
  20.    
  21.     public static WaitWhile While(System.Func<bool> condition) => new WaitWhile(condition);
  22.  
  23.  
  24.     public static WaitUntil WaitForFrames(int frames) => Until(() => frames-- <= 0);
  25.  
  26.     public static object Null => m_Null;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement