mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 19:03:29 +08:00
- 重命名命名空间从GFramework.Game.Abstractions.coroutine到GFramework.Core.Abstractions.coroutine - 更新ICoroutineContext.cs、ICoroutineHandle.cs、ICoroutineScheduler.cs、 ICoroutineScope.cs、ICoroutineSystem.cs、IYieldInstruction.cs的命名空间 - 更新测试覆盖率计划文档,添加协程模块测试计划 - 新增协程模块测试计划,包含15个源文件,计划91个测试用例 - 添加CoroutineHandleTests.cs等7个协程相关测试文件的计划
33 lines
876 B
C#
33 lines
876 B
C#
using GFramework.Core.Abstractions.coroutine;
|
|
|
|
namespace GFramework.Core.coroutine;
|
|
|
|
/// <summary>
|
|
/// 等待条件为假时继续执行的协程等待指令
|
|
/// </summary>
|
|
/// <param name="predicate">用于判断是否继续等待的布尔函数委托</param>
|
|
public class WaitWhile(Func<bool> predicate) : IYieldInstruction
|
|
{
|
|
/// <summary>
|
|
/// 获取当前等待指令是否已完成
|
|
/// </summary>
|
|
public bool IsDone { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 更新等待状态
|
|
/// </summary>
|
|
/// <param name="deltaTime">时间增量</param>
|
|
public void Update(float deltaTime)
|
|
{
|
|
// 当前未完成时,检查谓词条件来更新完成状态
|
|
if (!IsDone) IsDone = !predicate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 重置等待指令状态
|
|
/// </summary>
|
|
public void Reset()
|
|
{
|
|
IsDone = false;
|
|
}
|
|
} |