TechbloxModdingAPI/GamecraftModdingAPI/Tasks/Once.cs

39 lines
970 B
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Svelto.Tasks;
using Svelto.Tasks.Enumerators;
namespace GamecraftModdingAPI.Tasks
{
/// <summary>
/// An asynchronous task to be performed once
/// </summary>
public class Once : ISchedulable
{
private Action task;
private float delay;
public IEnumerator<TaskContract> Run()
{
yield return new WaitForSecondsEnumerator(delay).Continue();
task();
yield return Yield.It;
}
/// <summary>
/// Construct a single-run task
/// </summary>
/// <param name="task">The task to run once</param>
/// <param name="after">The delay (in seconds) before the task is run</param>
public Once(Action task, float after = 0.0f)
{
this.task = task;
this.delay = after;
}
}
}