コード例 #1
0
        void Analyze()
        {
            m_AnalyzeButtonAnalytic = ProjectAuditorAnalytics.BeginAnalytic();

            m_ShouldRefresh = true;
            m_AnalysisState = AnalysisState.InProgress;
            m_ProjectReport = new ProjectReport();
            foreach (var view in m_Views)
            {
                if (view != null)
                {
                    view.Clear();
                }
            }

            AnalysisView.SetReport(m_ProjectReport);

            var newIssues = new List <ProjectIssue>();

            m_ProjectAuditor.Audit(projectIssue =>
            {
                newIssues.Add(projectIssue);
                m_ProjectReport.AddIssue(projectIssue);
            },
                                   completed =>
            {
                // add batch of issues
                foreach (var view in m_Views)
                {
                    if (view != null)
                    {
                        view.AddIssues(newIssues);
                    }
                }
                newIssues.Clear();

                if (completed)
                {
                    m_AnalysisState = AnalysisState.Completed;
                }

                m_ShouldRefresh = true;
            },
                                   new ProgressBarDisplay()
                                   );
        }
コード例 #2
0
        void OnEnable()
        {
            var currentState = m_AnalysisState;

            m_AnalysisState = AnalysisState.Initializing;

            ProjectAuditorAnalytics.EnableAnalytics();

            m_ProjectAuditor = new ProjectAuditor();

            UpdateAreaSelection();
            UpdateAssemblySelection();

            if (m_TextFilter == null)
            {
                m_TextFilter = new TextFilter();
            }

            var viewDescriptors = ViewDescriptor.GetAll();

            Array.Sort(viewDescriptors, (a, b) => a.menuOrder.CompareTo(b.menuOrder));

            m_ViewDropdownItems = new Utility.DropdownItem[viewDescriptors.Length];
            m_Views             = new AnalysisView[viewDescriptors.Length];
            for (int i = 0; i < viewDescriptors.Length; i++)
            {
                var desc        = viewDescriptors[i];
                var layout      = m_ProjectAuditor.GetLayout(desc.category);
                var isSupported = layout != null;

                m_ViewDropdownItems[i] = new Utility.DropdownItem
                {
                    Content          = new GUIContent(string.IsNullOrEmpty(desc.menuLabel) ? desc.name : desc.menuLabel),
                    SelectionContent = new GUIContent("View: " + desc.name),
                    Enabled          = isSupported
                };

                if (!isSupported)
                {
                    Debug.Log("Project Auditor module " + desc.category + " is not supported.");
                    continue;
                }

                var view = desc.viewType != null ? (AnalysisView)Activator.CreateInstance(desc.viewType) : new AnalysisView();
                view.Create(desc, layout, m_ProjectAuditor.config, m_Preferences, this);

                if (currentState == AnalysisState.Valid)
                {
                    view.AddIssues(m_ProjectReport.GetIssues(desc.category));
                }

                m_Views[i] = view;
            }

            if (currentState != AnalysisState.Valid)
            {
                m_ProjectReport = new ProjectReport();
            }

            AnalysisView.SetReport(m_ProjectReport);
            AnalysisView.OnChangeView = SelectView;

            GetView <ShaderVariantsView>().SetShadersAuditor(m_ProjectAuditor.GetAuditor <ShadersAuditor>());

            // are we reloading from a valid state?
            if (currentState == AnalysisState.Valid && m_ActiveViewIndex < viewDescriptors.Length)
            {
                m_AnalysisState = currentState;
            }
            else
            {
                m_AnalysisState = AnalysisState.Initialized;
            }

            RefreshDisplay();

            Instance = this;
        }