/// Creates a new Task object for the given coroutine. /// /// If autoStart is true (default) the task is automatically started /// upon construction. public Task(IEnumerator c, bool autoStart = true) { task = TaskManager.CreateTask(c); task.Finished += TaskFinished; if(autoStart) Start(); }
/// Don't use this, use Task.Get instead to be able get from /// unused task, Preveting futher GC Allocates public Task(IEnumerator c, bool autoStart = true) { task = TaskManager.CreateTask(c); task.Finished += TaskFinished; if (autoStart) { Start(); } }
public void StartStory() { _storyGraph.ConnectStoryElements(); _currentElement = _storyGraph.GetRootStory()[0]; _currentTask = TaskManager.CreateTask(_currentElement.Execute(_manager, _canvas)); _currentTask.Finished += AdvanceStory; _currentTask.Start(); }
public void AdvanceStory(bool manual) { if (!manual && !_handlingSubgraph) { if (_currentElement.Next != null && _currentTask != null && !_currentTask.Running) { _currentElement = _currentElement.Next; _currentTask = TaskManager.CreateTask(_currentElement.Execute(_manager, _canvas)); _currentTask.Finished += AdvanceStory; _currentTask.Start(); } else { _afterSubgraphHandler?.Invoke(); } } }
public void AdvanceStory(StoryElement newStoryPoint, bool continueToRun = false) { if (_handlingSubgraph) { _subgraphHandler.AdvanceStory(false); } else if (newStoryPoint != null) { if (!continueToRun) { _currentTask.Stop(); } _currentElement = newStoryPoint; _currentTask = TaskManager.CreateTask(_currentElement.Execute(_manager, _canvas)); _currentTask.Finished += AdvanceStory; _currentTask.Start(); } else { _afterSubgraphHandler?.Invoke(); } }
/// <summary> /// 恢复任务状态 /// </summary> /// <param name="state"></param> public virtual void Recovery(TaskManager.TaskState state) { intHeap = state.completed; totalHeap = state.total; }