No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DelayedCallback.cs 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. namespace UnityEditor.TestTools.TestRunner
  3. {
  4. internal class DelayedCallback
  5. {
  6. private Action m_Callback;
  7. private double m_CallbackTime;
  8. private double m_Delay;
  9. public DelayedCallback(Action function, double timeFromNow)
  10. {
  11. m_Callback = function;
  12. m_CallbackTime = EditorApplication.timeSinceStartup + timeFromNow;
  13. m_Delay = timeFromNow;
  14. EditorApplication.update += Update;
  15. }
  16. public void Clear()
  17. {
  18. EditorApplication.update -= Update;
  19. m_CallbackTime = 0.0;
  20. m_Callback = null;
  21. }
  22. private void Update()
  23. {
  24. if (EditorApplication.timeSinceStartup > m_CallbackTime)
  25. {
  26. // Clear state before firing callback to ensure reset (callback could call ExitGUI)
  27. var callback = m_Callback;
  28. Clear();
  29. callback?.Invoke();
  30. }
  31. }
  32. public void Reset()
  33. {
  34. if (m_Callback != null)
  35. {
  36. m_CallbackTime = EditorApplication.timeSinceStartup + m_Delay;
  37. }
  38. }
  39. }
  40. }