Ejemplo n.º 1
0
        public void Update(double dt)
        {
            foreach (var elem in m_callStack)
            {
                elem.Task.Update(dt);
            }

            if (m_callStack.Count() != 0)
            {
                int        lastIndex = m_callStack.Count() - 1;
                _StackData lastElem  = m_callStack[lastIndex];
                if (lastElem.Process.MoveNext())
                {
                    // has next element
                    CoroutineTask newTask = lastElem.Process.Current;
                    if (newTask != null)
                    {
                        // stack new sub-coroutine
                        m_callStack.Add(new _StackData()
                        {
                            Process = newTask.Execute(), Task = newTask
                        });
                    }
                }
                else
                {
                    // finish current coroutine
                    m_callStack.RemoveAt(lastIndex);
                }
            }
        }
Ejemplo n.º 2
0
 public void Start(CoroutineTask task)
 {
     Stop();
     m_callStack.Add(new _StackData()
     {
         Process = task.Execute(), Task = task
     });
 }