Ejemplo n.º 1
0
        private static void RunOnStartup()
        {
            int initOperationsCount = 20;

            for (int i = 0; i < initOperationsCount; i++)
            {
                OperationQueueAndRunnerWrapper wrapper = MakeOperationQueueAndRunnerWrapper();
                _wrappers.Add(wrapper);

                // Callbacks
                wrapper.operationQueue.OnStart += () => {
                    wrapper.operationRunner.name = wrapper.operationQueue.name;
                };

                wrapper.operationQueue.OnStop += () => {
                    wrapper.operationRunner.name = "_Idle";
                    _wrappers.Add(wrapper);
                };

                wrapper.operationQueue.OnFinish += () => {
                    wrapper.operationRunner.name = "_Idle";
                    _wrappers.Add(wrapper);
                };
            }
        }
Ejemplo n.º 2
0
        public static void RunActionAfterSeconds(string name, float seconds, Action action)
        {
            OperationQueueAndRunnerWrapper wrapper = GetOrMakeOperationQueueAndRunnerWrapper();

            wrapper.operationQueue.name = name;

            wrapper.operationQueue.AddOperation(RoutineRunActionAfterSeconds(seconds, action));

            wrapper.operationQueue.Start(wrapper.operationRunner);
        }
Ejemplo n.º 3
0
 private static OperationQueueAndRunnerWrapper GetOrMakeOperationQueueAndRunnerWrapper()
 {
     // Get a wrapper or make if there's none in the
     // buffer
     if (_wrappers.Count > 0)
     {
         OperationQueueAndRunnerWrapper wrapper = _wrappers[0];
         _wrappers.RemoveAt(0);
         return(wrapper);
     }
     else
     {
         return(MakeOperationQueueAndRunnerWrapper());
     }
 }
Ejemplo n.º 4
0
        private static OperationQueueAndRunnerWrapper MakeOperationQueueAndRunnerWrapper()
        {
            // Make a non-destroyable container of the wrappers in the hierarchy
            // for a clean display
            if (_operationsContainer == null)
            {
                _operationsContainer = Utilities.CreateOrGetObject("OperationQueueHelper").GetComponent <Transform>();
                UnityEngine.Object.DontDestroyOnLoad(_operationsContainer.gameObject);
            }

            // Makes a wrapper and puts it in a container in the hierarchy
            OperationQueueAndRunnerWrapper wrapper = new OperationQueueAndRunnerWrapper()
            {
                operationQueue  = new OperationQueue(),
                operationRunner = new GameObject("_Idle").AddComponent <OperationQueue.OperationRunner>(),
            };

            wrapper.operationRunner.GetComponent <Transform>().SetParent(_operationsContainer);

            return(wrapper);
        }