public static void RemoveTask(HEU_Task task) { if(_tasks.Contains(task) && !_pendingRemove.Contains(task)) { _pendingRemove.Add(task); } }
public static void ExecuteTask(HEU_Task task) { if (task._status == HEU_Task.TaskStatus.PENDING_START) { task._status = HEU_Task.TaskStatus.STARTED; task.DoTask(); } }
public static void KillTask(System.Guid taskGuid, bool bRemove) { HEU_Task task = GetTask(taskGuid); if(task != null) { KillTask(task, bRemove); } }
public static void AddTask(HEU_Task task) { if (!_tasks.Contains(task) && !_pendingAdd.Contains(task)) { task._status = HEU_Task.TaskStatus.PENDING_START; _pendingAdd.Add(task); } }
private static void InternalCompleteTask(HEU_Task task) { if (task._status == HEU_Task.TaskStatus.PENDING_COMPLETE) { task._status = HEU_Task.TaskStatus.COMPLETED; // Do callbacks task.CompleteTask(task._result); task._taskCompletedDelegate(task); } }
public static void CompleteTask(HEU_Task task, HEU_Task.TaskResult result) { if(task._status == HEU_Task.TaskStatus.STARTED) { // Marking this as pending complete allows to defer // the actual 'completion work' resulting in cleaner // task management, where tasks aren't adding and removing // in the same tick. task._status = HEU_Task.TaskStatus.PENDING_COMPLETE; task._result = result; } }
public static void KillTask(HEU_Task task, bool bRemove) { if(_tasks.Contains(task)) { if(task._status == HEU_Task.TaskStatus.STARTED) { task.KillTask(); } task._status = HEU_Task.TaskStatus.COMPLETED; task._result = HEU_Task.TaskResult.KILLED; // Note that the complete callback is not invoked if killed // because presumably it is most likely the invoker that killed it if (bRemove) { RemoveTask(task); } } }