Example #1
0
 public static void TimeOutExecute()
 {
     System.Threading.Thread.Sleep(timeoutSec * 1000);
     Debug.Log("Timeout!!!");
     currentReader.ForceExit();
     timeouted = true;
 }
        void OnGUI()
        {
            EditorGUILayout.LabelField("Profiler BinLog Hack");
            EditorGUILayout.BeginHorizontal();
            this.filePath = EditorGUILayout.TextField(this.filePath);
            if (GUILayout.Button("File", GUILayout.Width(40.0f)))
            {
                this.filePath = EditorUtility.OpenFilePanelWithFilters("", "Select BinaryLogFile", new string[] { "profiler log", "data,raw" });
            }
            EditorGUILayout.EndHorizontal();
            {
                EditorGUILayout.LabelField("Concition");
                EditorGUILayout.BeginHorizontal();
                sampleNameCondition       = EditorGUILayout.TextField("sample name ", sampleNameCondition);
                this.stringCheckCondition = (EConditionType)EditorGUILayout.EnumPopup(this.stringCheckCondition);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("HierarchyMode");
                this.sampleCondition = (ESampleCondition)EditorGUILayout.EnumPopup(this.sampleCondition);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                this.conditionExecuteTime = EditorGUILayout.FloatField("Execute time(ms)", this.conditionExecuteTime);
                this.conditionAlloc       = EditorGUILayout.IntField("Alloc(byte)", conditionAlloc);
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.BeginHorizontal();
            if (!IsExecuting())
            {
                if (GUILayout.Button("Analyze", GUILayout.Width(100)))
                {
                    this.pageIndex = 1;
                    if (string.IsNullOrEmpty(filePath) || !System.IO.File.Exists(filePath))
                    {
                        Debug.LogError("No such File ");
                    }
                    else
                    {
                        logReader = ProfilerLogUtil.CreateLogReader(filePath);
                        columnList.Clear();
                    }
                }
            }
            else
            {
                if (GUILayout.Button("Cancel", GUILayout.Width(100)))
                {
                    logReader.ForceExit();
                }
            }
            GUILayout.Label("");
            if (logReader != null && logReader.IsComplete)
            {
                if (GUILayout.Button("Write To CSV", GUILayout.Width(100)))
                {
                    SaveToCsv();
                }
            }
            EditorGUILayout.EndHorizontal();
            // execute now
            if (IsExecuting())
            {
                EditorGUILayout.LabelField("Progress " + logReader.Progress * 100.0f + "%");
            }
            else
            {
                this.ONGUIResultList();
                treeView.OnGUI();
            }
        }
        void OnGUI()
        {
            EditorGUILayout.LabelField("Convert profiler log to csv");
            EditorGUILayout.BeginHorizontal();
            if (string.IsNullOrEmpty(filePath))
            {
                EditorGUILayout.LabelField("Select File");
            }
            else
            {
                EditorGUILayout.LabelField(this.filePath);
            }
            if (GUILayout.Button("File", GUILayout.Width(40.0f)))
            {
                this.filePath = EditorUtility.OpenFilePanelWithFilters("", "Select BinaryLogFile", new string[] { "profiler log", "data,raw" });
            }

            if (!IsExecute())
            {
                if (GUILayout.Button("Analyze", GUILayout.Width(100)))
                {
                    if (string.IsNullOrEmpty(filePath) || !System.IO.File.Exists(filePath))
                    {
                        Debug.LogError("No such File ");
                    }
                    else
                    {
                        logReader    = ProfilerLogUtil.CreateLogReader(filePath);
                        isFirstFrame = true;
                        for (int i = 0; i < fileWriterFlags.Count; ++i)
                        {
                            if (this.fileWriterFlags[i].flag)
                            {
                                var analyzer = System.Activator.CreateInstance(fileWriterFlags[i].type) as IAnalyzeFileWriter;
                                analyzeExecutes.Add(analyzer);
                            }
                        }
                    }
                }
            }
            else
            {
                if (GUILayout.Button("ForceExit", GUILayout.Width(100)))
                {
                    if (logReader != null)
                    {
                        logReader.ForceExit();
                    }
                }
            }
            EditorGUILayout.EndHorizontal();
            if (IsExecute())
            {
                EditorGUILayout.LabelField("Progress " + logReader.Progress * 100.0f + "%");
            }
            else
            {
                for (int i = 0; i < fileWriterFlags.Count; ++i)
                {
                    EditorGUILayout.BeginHorizontal();
                    this.fileWriterFlags[i].flag = EditorGUILayout.Toggle(this.fileWriterFlags[i].flag, GUILayout.Width(20));
                    EditorGUILayout.LabelField(this.fileWriterFlags[i].name);
                    EditorGUILayout.EndHorizontal();
                }
            }

            EditorGUILayout.LabelField("The results are in csv file.");
        }