using GFramework.Core.Abstractions.coroutine;
namespace GFramework.Core.coroutine;
///
/// 表示一个等待条件为假时才完成的协程指令
///
/// 用于判断是否继续等待的条件函数,当返回true时继续等待,返回false时完成
public sealed class WaitWhile(Func predicate) : IYieldInstruction
{
private readonly Func _predicate = predicate ?? throw new ArgumentNullException(nameof(predicate));
///
/// 更新协程状态(此实现中为空方法)
///
/// 时间增量
public void Update(double deltaTime)
{
}
///
/// 获取协程指令是否已完成
/// 当谓词函数返回false时,表示条件不再满足,指令完成
///
public bool IsDone => !_predicate();
}