50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
|
using System.Collections;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
using RobocraftX.Schedulers;
|
|||
|
using Svelto.ECS;
|
|||
|
using Svelto.Tasks.ExtraLean;
|
|||
|
|
|||
|
using GamecraftModdingAPI.Engines;
|
|||
|
|
|||
|
namespace GamecraftModdingAPI.Utility
|
|||
|
{
|
|||
|
public class AsyncUtilsEngine : IApiEngine
|
|||
|
{
|
|||
|
private IEntityFunctions _efu;
|
|||
|
private IEntityFactory _efa;
|
|||
|
private IEnumerator WaitForSubmissionInternal(IEntityFunctions efu, IEntityFactory efa,
|
|||
|
EntitiesDB entitiesDB, TaskCompletionSource<object> task)
|
|||
|
{
|
|||
|
var waitEnumerator = new WaitForSubmissionEnumerator(efu, efa, entitiesDB);
|
|||
|
while (waitEnumerator.MoveNext())
|
|||
|
yield return null;
|
|||
|
task.SetResult(null);
|
|||
|
}
|
|||
|
|
|||
|
public Task WaitForSubmission()
|
|||
|
{
|
|||
|
var task = new TaskCompletionSource<object>();
|
|||
|
WaitForSubmissionInternal(_efu, _efa, entitiesDB, task).RunOn(ExtraLean.EveryFrameStepRunner);
|
|||
|
return task.Task;
|
|||
|
}
|
|||
|
|
|||
|
public void Setup(IEntityFunctions efu, IEntityFactory efa)
|
|||
|
{
|
|||
|
_efu = efu;
|
|||
|
_efa = efa;
|
|||
|
}
|
|||
|
|
|||
|
public void Ready()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
public EntitiesDB entitiesDB { get; set; }
|
|||
|
public void Dispose()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
public string Name { get; } = "GamecraftModdingAPIAsyncUtilsGameEngine";
|
|||
|
public bool isRemovable { get; } = false;
|
|||
|
}
|
|||
|
}
|