public IEnumerator onUpdateBuilding() { yield return(new WaitForSeconds(0.1f)); using (new LockAssemblies()) { while (true) { if (curEnumerator == null) { clear(); Progress = 1f; TimeSpan ts = DateTime.Now - startTime; UseTime = ts.TotalMilliseconds; Debug.Log("<color=green>Build finish!</color>"); yield break; } if (!curEnumerator.MoveNext()) { finishWeight += curBuilding.Weight; if (enumerators.Count > 0) { curBuilding = enumerators.Dequeue(); curEnumerator = curBuilding.OnBuilding(); if (curEnumerator == null) { Debug.LogError("Wtf building enumrator is null "); } } else { curEnumerator = null; curBuilding = null; } } if (curBuilding != null) { Progress = (finishWeight + curBuilding.Progress * curBuilding.Weight) / totalWeight; } yield return(null); } } }
public void StartBuild() { buildLog.Clear(); Progress = 0; curBuilding = enumerators.Dequeue(); curEnumerator = curBuilding.OnBuilding(); this.mainWindow.SetPanelState(EToolbar.Building); startTime = DateTime.Now; BuildUtil.DisableCacheServer(); EditorCoroutines.StartCoroutine(this.onUpdateBuilding(), this.mainWindow); }