private void executeNext() { if (m_CurrentStage != null) { m_CurrentStage.Clear(); } m_CurrentStageType = m_CurrentStageType + 1; if (m_CurrentStageType > EAnalyzeStageType.EndAnalyze) { m_AnalyzeFinish?.Invoke(m_AnalyzeWrap.AnalyzedData); Clear(); return; } EditorUtility.DisplayProgressBar(m_CurrentStageType.ToString(), m_CurrentStageType.ToString(), (float)m_CurrentStageType / (float)EAnalyzeStageType.EndAnalyze); m_CurrentStage = getAnalyzeStage(m_CurrentStageType, m_Params.Vendor); if (m_CurrentStage == null) { Debug.LogErrorFormat("未能找到{0}阶段", m_CurrentStageType.ToString()); Clear(); return; } EAnalyzeStageStatus status = m_CurrentStage.Init(m_AnalyzeWrap, m_Params); handleStageStatus(status); }
private void Clear() { EditorUtility.ClearProgressBar(); EditorApplication.update -= update; m_CurrentStageType = EAnalyzeStageType.None; m_CurrentStage = null; m_AnalyzeWrap = null; m_Params = null; m_AnalyzeFinish = null; foreach (var item in AnalyzedStageMap) { foreach (var item1 in item.Value) { item1.Value.Clear(); } } }
private void handleStageStatus(EAnalyzeStageStatus status) { switch (status) { case EAnalyzeStageStatus.Error: //TODO 处理错误 break; case EAnalyzeStageStatus.Finish: executeNext(); break; case EAnalyzeStageStatus.Complete: m_CurrentStageType = EAnalyzeStageType.EndAnalyze; executeNext(); break; } }
private AnalyzeStageBase getAnalyzeStage(EAnalyzeStageType stageType, EGPUVendorType vendorType) { Dictionary <EGPUVendorType, AnalyzeStageBase> stageDic; if (!AnalyzedStageMap.TryGetValue(m_CurrentStageType, out stageDic) || stageDic.Count == 0) { return(null); } if (stageDic.Count == 1) { return(stageDic[EGPUVendorType.None]); } AnalyzeStageBase stage; if (!stageDic.TryGetValue(vendorType, out stage)) { return(null); } return(stage); }
public AnalyzeStageAttribute(EAnalyzeStageType stage) { Stage = stage; }