Rasagar/Library/PackageCache/com.unity.visualscripting/Runtime/VisualScripting.Flow/Framework/Control/LoopUnit.cs
2024-08-26 23:07:20 +03:00

41 lines
1.1 KiB
C#

using System.Collections;
namespace Unity.VisualScripting
{
public abstract class LoopUnit : Unit
{
/// <summary>
/// The entry point for the loop.
/// </summary>
[DoNotSerialize]
[PortLabelHidden]
public ControlInput enter { get; private set; }
/// <summary>
/// The action to execute after the loop has been completed or broken.
/// </summary>
[DoNotSerialize]
public ControlOutput exit { get; private set; }
/// <summary>
/// The action to execute at each loop.
/// </summary>
[DoNotSerialize]
public ControlOutput body { get; private set; }
protected override void Definition()
{
enter = ControlInputCoroutine(nameof(enter), Loop, LoopCoroutine);
exit = ControlOutput(nameof(exit));
body = ControlOutput(nameof(body));
Succession(enter, body);
Succession(enter, exit);
}
protected abstract ControlOutput Loop(Flow flow);
protected abstract IEnumerator LoopCoroutine(Flow flow);
}
}