public AsyncTaskRunner(ITaskScheduler taskScheduler, ExecutionTargetSide executionSide) { this.taskScheduler = taskScheduler; this.executionSide = executionSide; EventWaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset); }
public void RunFrameUpdate(ExecutionTargetSide target) { for (int index = 0; index < InternalTasks.Count; index++) { var task = InternalTasks[index]; if (task.ExecutionTarget == ExecutionTargetContext.NextFrame || task.ExecutionTarget == ExecutionTargetContext.EveryFrame) { if (target != ExecutionTargetSide.SyncFrame) { continue; } RunTask(task); } if (task.ExecutionTarget == ExecutionTargetContext.NextPhysicsUpdate || task.ExecutionTarget == ExecutionTargetContext.EveryPhysicsUpdate) { if (target != ExecutionTargetSide.PhysicsFrame) { continue; } RunTask(task); } if (task.ExecutionTarget == ExecutionTargetContext.NextAsyncFrame || task.ExecutionTarget == ExecutionTargetContext.EveryAsyncFrame) { if (target != ExecutionTargetSide.AsyncFrame) { continue; } RunTask(task); } } }