Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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();
         }
     }
 }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public AnalyzeStageAttribute(EAnalyzeStageType stage)
 {
     Stage = stage;
 }