Add active event check to task serializer

This commit is contained in:
Tyfon
2024-07-08 18:03:58 -07:00
parent 9c30f8d3a5
commit 3b933f6536
3 changed files with 17 additions and 5 deletions

View File

@@ -8,14 +8,16 @@ namespace UIFixes
public class TaskSerializer<T> : MonoBehaviour
{
private Func<T, Task> func;
private Func<T, bool> canContinue;
private IEnumerator<T> enumerator;
private Task currentTask;
private TaskCompletionSource totalTask;
public Task Initialize(IEnumerable<T> items, Func<T, Task> func)
public Task Initialize(IEnumerable<T> items, Func<T, Task> func, Func<T, bool> canContinue = null)
{
this.enumerator = items.GetEnumerator();
this.func = func;
this.canContinue = canContinue;
currentTask = Task.CompletedTask;
totalTask = new TaskCompletionSource();
@@ -52,6 +54,11 @@ namespace UIFixes
return;
}
if (canContinue != null && enumerator.Current != null && !canContinue(enumerator.Current))
{
return;
}
if (enumerator.MoveNext())
{
currentTask = func(enumerator.Current);