using System.Collections;
using UnityEngine;
namespace Unity.VisualScripting
{
/// <summary>
/// Delays flow by waiting a specified number of seconds.
/// </summary>
[UnitTitle("Wait For Seconds")]
[UnitOrder(1)]
public class WaitForSecondsUnit : WaitUnit
{
/// <summary>
/// The number of seconds to await.
/// </summary>
[DoNotSerialize]
[PortLabel("Delay")]
public ValueInput seconds { get; private set; }
/// <summary>
/// Whether to ignore the time scale.
/// </summary>
[DoNotSerialize]
[PortLabel("Unscaled")]
public ValueInput unscaledTime { get; private set; }
protected override void Definition()
{
base.Definition();
seconds = ValueInput(nameof(seconds), 0f);
unscaledTime = ValueInput(nameof(unscaledTime), false);
Requirement(seconds, enter);
Requirement(unscaledTime, enter);
}
protected override IEnumerator Await(Flow flow)
{
var seconds = flow.GetValue<float>(this.seconds);
if (flow.GetValue<bool>(unscaledTime))
{
yield return new WaitForSecondsRealtime(seconds);
}
else
{
yield return new WaitForSeconds(seconds);
}
yield return exit;
}
}
}