You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/Plugins/UltEvents/Event Holders/DelayedUltEventHolder.cs

60 lines
1.9 KiB
C#

3 months ago
// UltEvents // Copyright 2020 Kybernetik //
using System.Collections;
using UnityEngine;
namespace UltEvents
{
/// <summary>
/// A component which encapsulates a single <see cref="UltEventBase"/> with a delay before its invocation.
/// </summary>
[AddComponentMenu(UltEventUtils.ComponentMenuPrefix + "Delayed Ult Event Holder")]
[HelpURL(UltEventUtils.APIDocumentationURL + "/DelayedUltEventHolder")]
public class DelayedUltEventHolder : UltEventHolder
{
/************************************************************************************************************************/
[SerializeField]
private float _Delay;
private WaitForSeconds _Wait;
/// <summary>
/// The number of seconds that will pass between calling <see cref="Invoke"/> and the event actually being invoked.
/// </summary>
public float Delay
{
get { return _Delay; }
set
{
_Delay = value;
_Wait = null;
}
}
/************************************************************************************************************************/
/// <summary>Waits for <see cref="Delay"/> seconds then calls Event.Invoke().</summary>
public override void Invoke()
{
if (_Delay < 0)
base.Invoke();
else
StartCoroutine(DelayedInvoke());
}
/************************************************************************************************************************/
private IEnumerator DelayedInvoke()
{
if (_Wait == null)
_Wait = new WaitForSeconds(_Delay);
yield return _Wait;
base.Invoke();
}
/************************************************************************************************************************/
}
}