private LinkedListNode <SingleTask> GetPoolNode(SingleTask value) { LinkedListNode <SingleTask> node = SuperInvokePoolHolder.PoolManager.GetInstance <LinkedListNode <SingleTask> >(); node.Value = value; return(node); }
public static SingleTask MakeInstance(Action method, float delayTime, string groupTag) { SingleTask singleTask = SuperInvokePoolSettings.PoolManager.GetInstance <SingleTask>(); singleTask.SetTask(method, delayTime); if (groupTag != null) { singleTask.groupTag = SuperInvokeTag.GetInstance(groupTag); } return(singleTask); }
public void InvokeTask() { float lastTriggerTime = GetTriggerTime(); SingleTask task = node.Value; bool invokeRepeatCompleteAction = false; if (node == tasks.Last) //last node //Continue after last node in these cases: // - infite loops // - limited loops but with avaible cycle yet //Else // - execution ended { if (iterativeMode && (!repeatSettings.thereIsIterationLimit || cycleCount < repeatSettings.repeats)) { cycleCount++; node = tasks.First; SetTriggerTime(lastTriggerTime); } else { noMoreTasks = true; } invokeRepeatCompleteAction = iterativeMode; } else { node = node.Next; SetTriggerTime(lastTriggerTime); } task.InvokeTask(); if (invokeRepeatCompleteAction) { jobRepeat.CompletedRepeatsNumber++; if (!jobRepeat.IsKilled()) { jobRepeat.OnRepeatCompleteAction.Invoke(); } } }
public void AddSingleTask(SingleTask task) { tasks.AddLast(GetPoolNode(task)); }
public void AddSingleTask(SingleTask task) { tasks.AddLast(task); }