BITFALL/Assets/GSpawn - Level Designer/Scripts/Core/EditorUpdateAction.cs

42 lines
1.4 KiB
C#

#if UNITY_EDITOR
using UnityEditor;
namespace GSpawn
{
public enum EditorUpdateActionDelayMode
{
Frame = 0,
Seconds
}
public abstract class EditorUpdateAction
{
private EditorUpdateActionDelayMode _delayMode = EditorUpdateActionDelayMode.Frame;
private int _numElapsedFrames = 0;
private int _numDelayFrames = 2;
private double _executionTime = 0.0f;
public EditorUpdateActionDelayMode delayMode { get { return _delayMode; } set { _delayMode = value; } }
public double executionTime { get { return _executionTime; } set { _executionTime = value; if (_executionTime < 0.0) _executionTime = 0.0f; } }
public bool attemptExecute()
{
if (_delayMode == EditorUpdateActionDelayMode.Frame)
{
++_numElapsedFrames;
if (_numElapsedFrames < _numDelayFrames) return false;
}
else
if (_delayMode == EditorUpdateActionDelayMode.Seconds)
{
if (EditorApplication.timeSinceStartup < executionTime) return false;
}
execute();
return true;
}
protected abstract void execute();
}
}
#endif