Beispiel #1
0
        public void Stop()
        {
            if (state == OperationQueueState.Stopped)
            {
                return;
            }

            _operations.Clear();
            _operationRunner.StopCoroutine(_operationRoutine);

            state = OperationQueueState.Stopped;
            OnStop();
        }
Beispiel #2
0
        public void Start(MonoBehaviour operationRunner)
        {
            if (state == OperationQueueState.Playing)
            {
                return;
            }

            state = OperationQueueState.Playing;
            OnStart();

            _operationRunner  = operationRunner;
            _operationRoutine = _operationRunner.StartCoroutine(RoutineRunOperationQueue());
        }
Beispiel #3
0
        private IEnumerator RoutineRunOperationQueue()
        {
            while (_operations.Count != 0)
            {
                if (state == OperationQueueState.Paused)
                {
                    yield return(null);
                }

                object operation = _operations.Dequeue();

                Action action = operation as Action;
                if (action != null)
                {
                    action();
                    yield return(null);

                    continue;
                }

                IEnumerator enumerator = operation as IEnumerator;
                if (enumerator != null)
                {
                    yield return(_operationRunner.StartCoroutine(enumerator));

                    continue;
                }

                YieldInstruction yieldInstruction = operation as YieldInstruction;
                if (yieldInstruction != null)
                {
                    yield return(yieldInstruction);

                    continue;
                }

                Coroutine coroutine = operation as Coroutine;
                if (coroutine != null)
                {
                    yield return(coroutine);

                    continue;
                }
            }

            state = OperationQueueState.Finished;
            OnFinish();
        }
Beispiel #4
0
 public void Pause()
 {
     state = OperationQueueState.Paused;
     OnPause();
 }
Beispiel #5
0
 public void Resume()
 {
     state = OperationQueueState.Playing;
     OnResume();
 }