Update OperationSystem

pull/4/head
hevinci 2022-03-24 00:20:29 +08:00
parent 6dde7e8bfe
commit 9e19f776af
1 changed files with 30 additions and 3 deletions

View File

@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
namespace YooAsset
{
@ -7,16 +8,33 @@ namespace YooAsset
{
private static readonly List<AsyncOperationBase> _operations = new List<AsyncOperationBase>(100);
public static void ProcessOperaiton(AsyncOperationBase operationBase)
// 计时器相关
private static Stopwatch _watch;
private static long _maxTimeSlice;
private static long _frameTime;
/// <summary>
/// 初始化异步操作系统
/// </summary>
public static void Initialize(long maxTimeSlice)
{
_operations.Add(operationBase);
operationBase.Start();
_maxTimeSlice = maxTimeSlice;
_watch = Stopwatch.StartNew();
}
/// <summary>
/// 更新异步操作系统
/// </summary>
public static void Update()
{
_frameTime = _watch.ElapsedMilliseconds;
for (int i = _operations.Count - 1; i >= 0; i--)
{
if (_watch.ElapsedMilliseconds - _frameTime >= _maxTimeSlice)
return;
_operations[i].Update();
if (_operations[i].IsDone)
{
@ -25,5 +43,14 @@ namespace YooAsset
}
}
}
/// <summary>
/// 开始处理异步操作类
/// </summary>
public static void ProcessOperaiton(AsyncOperationBase operationBase)
{
_operations.Add(operationBase);
operationBase.Start();
}
}
}