33 lines
683 B
C#
33 lines
683 B
C#
|
using UnityEngine;
|
||
|
using UnityEngine.Events;
|
||
|
|
||
|
namespace RoR2.EntityLogic;
|
||
|
|
||
|
public class UpdateEvent : MonoBehaviour
|
||
|
{
|
||
|
[Tooltip("Don't call the action until at least this many updates have fired")]
|
||
|
[SerializeField]
|
||
|
private int updateSkipCount;
|
||
|
|
||
|
[Tooltip("Don't call the action after this many updates have fired. If negative, ignore.")]
|
||
|
[SerializeField]
|
||
|
private int maxInvokeCount = -1;
|
||
|
|
||
|
[SerializeField]
|
||
|
private UnityEvent action;
|
||
|
|
||
|
private int invokeCount;
|
||
|
|
||
|
private int updateCount;
|
||
|
|
||
|
private void Update()
|
||
|
{
|
||
|
if (updateSkipCount < updateCount && (maxInvokeCount < 0 || invokeCount < maxInvokeCount))
|
||
|
{
|
||
|
action?.Invoke();
|
||
|
invokeCount++;
|
||
|
}
|
||
|
updateCount++;
|
||
|
}
|
||
|
}
|