private void ProcessingAddedTask(ITask task, TaskPriorityEnum taskPriority) { switch (taskPriority) { case TaskPriorityEnum.Default: _tasks.Add(task); break; case TaskPriorityEnum.High: _tasks.Insert(0, task); break; case TaskPriorityEnum.Interrupt: if (_currentTask != null && _currentTask.Priority != TaskPriorityEnum.Interrupt) { _currentTask.Stop(); } _currentTask = task; task.Subscribe(TaskQueueProcessing).Start(); break; } if (_currentTask != null) { return; } _currentTask = GetNextTask(); _currentTask?.Subscribe(TaskQueueProcessing).Start(); }
public void AddTask(IEnumerator taskAction, Action callback, TaskPriorityEnum taskPriority = TaskPriorityEnum.Default) { var task = Task.Create(taskAction, coroutineHost, taskPriority).Subscribe(callback); ProcessingAddedTask(task, taskPriority); }
public int TaskCount(TaskPriorityEnum priority) { return(DBSet.Count(x => x.Priority >= priority && !x.Finished));// }
public Task(IEnumerator taskAction, MonoBehaviour coroutineHost, TaskPriorityEnum priority = TaskPriorityEnum.Default) { _coroutineHost = coroutineHost; _taskPriority = priority; _taskAction = taskAction; }
public static Task Create(IEnumerator taskAction, MonoBehaviour coroutineHost, TaskPriorityEnum priority = TaskPriorityEnum.Default) { return(new Task(taskAction, coroutineHost, priority)); }
public static Task Create(IEnumerator taskAction, MonoBehaviour behaviour, TaskPriorityEnum priority = TaskPriorityEnum.Default) { return(new Task(taskAction, behaviour, priority)); }
public void AddTask(IEnumerator taskAction, TaskPriorityEnum taskPriority = TaskPriorityEnum.Default) { var task = Task.Create(taskAction, _instance, taskPriority); ProcessingAddedTask(task, taskPriority); }