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