44 lines
1.2 KiB
C#
44 lines
1.2 KiB
C#
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|