bool ExecuteFirstTaskStep(IPausableTask task) { if (task == null) { return(false); } //if the runner is not ready to run new tasks, it //cannot run immediatly but it must be saved //in the newTaskRoutines to be executed once possible if (isStopping == true) { return(true); } #if TASKS_PROFILER_ENABLED return(Svelto.Tasks.Profiler.TaskProfiler.MonitorUpdateDuration(task, _info.runnerName)); #else #if PROFILER UnityEngine.Profiling.Profiler.BeginSample(_info.runnerName.FastConcat("+", task.ToString())); #endif var value = task.MoveNext(); #if PROFILER UnityEngine.Profiling.Profiler.EndSample(); #endif return(value); #endif }
public void StartCoroutine(IPausableTask task) { while (task.MoveNext() == true) { ThreadUtility.Yield(); } }
public void StartCoroutine(IPausableTask task) { paused = false; _runnerData._newTaskRoutines.Enqueue(task); _runnerData.UnlockThread(); }
public override void StartCoroutine(IPausableTask task) { paused = false; _newTaskRoutines.Enqueue(task); _flushingOperation.immediate = true; _processEnumerator.MoveNext(); _flushingOperation.immediate = false; }
public virtual void StartCoroutine(IPausableTask task) { paused = false; if (ExecuteFirstTaskStep(task) == true) { newTaskRoutines.Enqueue(task); //careful this could run on another thread! } }
public HandItToUnity(object current, IPausableTask task, Action <IPausableTask> resumeOperation, FlushingOperation flush) { _current = current; _task = task; _resumeOperation = resumeOperation; _isDone = false; _flushingOperation = flush; }
public virtual void StartCoroutineThreadSafe(IPausableTask task) { paused = false; if (task == null) { return; } newTaskRoutines.Enqueue(task); //careful this could run on another thread! }
public void StartCoroutine(IPausableTask task) { if (_runnerData == null) { throw new MultiThreadRunnerException("Trying to start a task on a killed runner"); } paused = false; _runnerData._newTaskRoutines.Enqueue(task); _runnerData.UnlockThread(); }
public void StartCoroutine(IPausableTask task) { paused = false; _newTaskRoutines.Enqueue(task); MemoryBarrier(); if (_isAlive == false) { _isAlive = true; UnlockThread(); } }
public override void StartCoroutine(IPausableTask task) { paused = false; if (ExecuteFirstTaskStep(task) == true) { if (task.Current is YieldInstruction == false) { _newTaskRoutines.Enqueue(task); } else { _runnerBehaviourForUnityCoroutine.StartCoroutine(SupportYieldInstruction(task)); } } }
public void StartCoroutine(IPausableTask task) { var quickIterations = 0; while (task.MoveNext()) { if (++quickIterations < 1000) { ThreadUtility.Yield(); } else { ThreadUtility.TakeItEasy(); } } }
public void StartCoroutine(IPausableTask task) { #if !NETFX_CORE if (_sleepInBetween) { while (task.MoveNext() == true) { System.Threading.Thread.Sleep(1); } } else #endif while (task.MoveNext() == true) { ; } }
bool ExecuteFirstTaskStep(IPausableTask task) { if (task == null) { return(false); } //if the runner is not ready to run new tasks, it //cannot run immediatly but it must be saved //in the newTaskRoutines to be executed once possible if (isStopping == true) { return(true); } #if TASKS_PROFILER_ENABLED && UNITY_EDITOR return(UnityCoroutineRunner.TASK_PROFILER.MonitorUpdateDuration(task, info.runnerName)); #else return(task.MoveNext()); #endif }
IEnumerator SupportYieldInstruction(IPausableTask task) { yield return(task.Current); _newTaskRoutines.Enqueue(task); }
public void StartCoroutine(IPausableTask task) { task.Complete(); }
public override void StartCoroutine(IPausableTask task) { paused = false; newTaskRoutines.Enqueue(task); //careful this could run on another thread! }
public void StartCoroutineThreadSafe(IPausableTask task) { StartCoroutine(task); }