//physicScheduler -> updateScheduler -> coroutineScheduler -> lateScheduler

        internal static void KillSchedulers()
        {
            if (_multiThreadScheduler != null)
            {
                _multiThreadScheduler.Dispose();
            }
            _multiThreadScheduler = null;

#if UNITY_5 || UNITY_5_3_OR_NEWER
            if (_coroutineScheduler != null)
            {
                _coroutineScheduler.Dispose();
            }
            if (_physicScheduler != null)
            {
                _physicScheduler.Dispose();
            }
            if (_lateScheduler != null)
            {
                _lateScheduler.Dispose();
            }
            if (_updateScheduler != null)
            {
                _updateScheduler.Dispose();
            }

            _coroutineScheduler = null;
            _physicScheduler    = null;
            _lateScheduler      = null;
            _updateScheduler    = null;
#endif
        }
 public static void StopAndCleanupAllDefaultSchedulers()
 {
     foodScheduler.Dispose();
     doofusesLogicScheduler.Dispose();
     UIInteraction.Dispose();
     rendererScheduler.Dispose();
     physicScheduler.Dispose();
 }
Example #3
0
        void OnDisable()
        {
            foreach (Transform trans in transform)
            {
                Destroy(trans.gameObject);
            }

            //don't forget to dispose the runners!
            _unityThreadRunner.Dispose();
            TaskRunner.StopAndCleanupAllDefaultSchedulers();
        }
Example #4
0
    public IEnumerator TestUnityWaitInParallel()
    {
        var updateMonoRunner = new UpdateMonoRunner("test1");
        ITaskRoutine <IEnumerator> taskRoutine = TaskRunner.Instance.AllocateNewTaskRoutine(updateMonoRunner);
        ParallelTaskCollection     pt          = new ParallelTaskCollection();

        pt.Add(new WaitForSecondsUnity().GetEnumerator());
        pt.Add(new WaitForSecondsUnity().GetEnumerator());
        taskRoutine.SetEnumerator(pt);
        taskRoutine.Start();
        DateTime then = DateTime.Now;

        while (taskRoutine.isRunning == true)
        {
            yield return(null);
        }
        updateMonoRunner.Dispose();
        var totalSeconds = (DateTime.Now - then).TotalSeconds;

        Assert.That(totalSeconds, Is.InRange(0.9, 1.1));
    }
 public static void StopAndCleanupAllRunners()
 {
     MainThreadRunner.Dispose();
 }