private bool NextYieldInternal() { if (_stopAndCancel) { return(false); } _currentCallAgainRequest = null; _enumeratorStackChanged = false; if (_task != null) { if (!_task.IsCompleted) { return(true); } _task = null; } try { IEnumerator en = _enumerator[_enumerator.Count - 1]; if (en.MoveNext()) { _yields++; _current = en.Current; if (_current == null) { return(true); } if (_current is string) { _state = _current as string; return(true); } var enm = _current as IEnumerator; if (enm != null) { _enumerator.Add(enm); _current = null; _enumeratorStackChanged = true; return(true); } _currentCallAgainRequest = _current as CallAgain; if (_currentCallAgainRequest != null) { if (_currentCallAgainRequest.message != null) { _state = _currentCallAgainRequest.message; } if (_currentCallAgainRequest.task != null) { _task = _currentCallAgainRequest.task; } return(true); } // _state = "Timed Enumerator {0} doesn't know how to process {1}".F(NameForPEGI, _current.ToString()); return(true); } else { if (_enumerator.Count > 1) { _enumerator.RemoveAt(_enumerator.Count - 1); _enumeratorStackChanged = true; return(true); } } } catch (Exception ex) { _state = "Error after {0}: {1}".F(_state, ex.ToString()); Debug.LogError("Managed Exception in Timed Enumerator: " + _state); _task = null; _stopAndCancel = true; } return(false); }
private bool NextYieldInternal() { _currentCallAgainRequest = null; if (_task != null) { if (!_task.IsCompleted) { return(true); } _task = null; } try { IEnumerator en = _enumerator[_enumerator.Count - 1]; if (en.MoveNext()) { _yields++; _current = en.Current; if (_current is string) { _state = _current as string; } else { _currentCallAgainRequest = _current as CallAgain; if (_currentCallAgainRequest != null) { if (_currentCallAgainRequest.message != null) { _state = _currentCallAgainRequest.message; } if (_currentCallAgainRequest.task != null) { _task = _currentCallAgainRequest.task; // Debug.LogError("Found nested tesk"); } /* if (_currentCallAgainRequest.returnData != null) * { * returnedData = _currentCallAgainRequest.returnData; * }*/ } else { if (_current is IEnumerator) { _enumerator.Add(_current as IEnumerator); // Debug.LogError("Found nested IEnumerator: {0}".F(_current.ToString())); _current = null; } } } return(true); } else { if (_enumerator.Count > 1) { _enumerator.RemoveAt(_enumerator.Count - 1); return(true); } } } catch (Exception ex) { _state = "Error after {0}: {1}".F(_state, ex.ToString()); Debug.LogError("Managed Exception in Timed Enumerator: " + _state); _task = null; _stopAndCancel = true; StoppedOnError = true; } return(false); }