public bool UpdateTask(InvokerTaskInfo invokerTaskInfo, float dt) { bool removed = false; invokerTaskInfo.TotalRunTime += dt; if (!invokerTaskInfo.started) { if (invokerTaskInfo.TotalRunTime >= invokerTaskInfo.Delay) { invokerTaskInfo.started = true; invokerTaskInfo.Task(invokerTaskInfo.TotalRunTime - invokerTaskInfo.Delay); invokerTaskInfo.TotalRunTime -= invokerTaskInfo.Delay; invokerTaskInfo.LastInvokeTime = invokerTaskInfo.TotalRunTime; invokerTaskInfo.NextInvokeTime = invokerTaskInfo.Interval; } } else { if (invokerTaskInfo.TotalRunTime > invokerTaskInfo.NextInvokeTime) { invokerTaskInfo.Task(invokerTaskInfo.TotalRunTime - invokerTaskInfo.LastInvokeTime); invokerTaskInfo.LastInvokeTime = invokerTaskInfo.TotalRunTime; invokerTaskInfo.NextInvokeTime += invokerTaskInfo.Interval; } } if ((invokerTaskInfo.TotalRunTime >= invokerTaskInfo.cancelTime) && (invokerTaskInfo.cancelTime > 0 && invokerTaskInfo.Interval != 0 || invokerTaskInfo.Interval == 0)) { removed = true; } return(removed); }
public InvokerTaskInfo GetCleanTask() { InvokerTaskInfo taskInfo; if ((taskInfo = _invokeTasks.FirstOrDefault(t => t.active == false)) == null) { taskInfo = new InvokerTaskInfo(); _invokeTasks.Add(taskInfo); } else { taskInfo.Reset(); } return(taskInfo); }
public void StopTask(InvokerTaskInfo taskInfo) { taskInfo.active = false; }
private void StopTask(InvokerTaskInfo taskInfo) { _tasks.Remove(taskInfo); _tasksCache.StopTask(taskInfo); }
public void ReturnTask(InvokerTaskInfo taskInfo) { StopTask(taskInfo); }