using System;
using UnityEngine;
using System.Threading.Tasks;
using System.Collections;
using System.Collections.Generic;
namespace UnityAsync
{
///
/// Encapsulates a , allowing it to be yielded in an IEnumerator coroutine.
///
public class TaskYieldInstruction : CustomYieldInstruction
{
readonly Task task;
public TaskYieldInstruction(Task task) => this.task = task;
public override bool keepWaiting => !task.IsCompleted;
}
///
/// Encapsulates a , allowing it to be yielded in an IEnumerator coroutine.
///
public class TaskYieldInstruction : IEnumerator
{
readonly Task task;
public TaskYieldInstruction(Task task) => this.task = task;
object IEnumerator.Current => Current;
///
/// Returns the encapsulated 's result if it has completed, otherwise the
/// default TResult value.
///
public TResult Current => task.IsCompleted ? task.Result : default;
public void Dispose() => task.Dispose();
public bool MoveNext() => !task.IsCompleted;
public void Reset() => throw new NotSupportedException();
}
}