void DrawTaskList(TasksProfilerBehaviour taskProfilerBehaviour, TaskInfo[] tasks)
        {
            ProfilerEditorLayout.BeginVerticalBox();
            {
                ProfilerEditorLayout.BeginHorizontal();
                {
                    if (GUILayout.Button("Remove Finished Tasks", GUILayout.Width(180), GUILayout.Height(14)))
                    {
                        taskProfilerBehaviour.ResetDurations();
                    }
                }
                ProfilerEditorLayout.EndHorizontal();

                _sortingOption = (SORTING_OPTIONS)EditorGUILayout.EnumPopup("Sort By:", _sortingOption);

                EditorGUILayout.Space();

                ProfilerEditorLayout.BeginHorizontal();
                {
                    _systemNameSearchTerm = EditorGUILayout.TextField("Search", _systemNameSearchTerm);

                    const string clearButtonControlName = "Clear Button";
                    GUI.SetNextControlName(clearButtonControlName);
                    if (GUILayout.Button("x", GUILayout.Width(19), GUILayout.Height(14)))
                    {
                        _systemNameSearchTerm = string.Empty;
                        GUI.FocusControl(clearButtonControlName);
                    }
                }
                ProfilerEditorLayout.EndHorizontal();

                _showTickTasks = EditorGUILayout.Foldout(_showTickTasks, "Tasks Ticks");
                //       if (_showTickTasks && ShouldShowSystems(tasks))
                {
                    ProfilerEditorLayout.BeginVerticalBox();
                    {
                        var systemsDrawn = DrawUpdateTaskInfos(tasks);
                        if (systemsDrawn == 0)
                        {
                            EditorGUILayout.LabelField(string.Empty);
                        }
                    }
                    ProfilerEditorLayout.EndVertical();
                }
            }
            ProfilerEditorLayout.EndVertical();
        }
        void DrawTasksMonitor(TaskInfo[] tasks)
        {
            if (_tasksMonitor == null)
            {
                _tasksMonitor    = new TasksMonitor(SYSTEM_MONITOR_DATA_LENGTH);
                _taskMonitorData = new Queue <float>(new float[SYSTEM_MONITOR_DATA_LENGTH]);
                if (EditorApplication.update != Repaint)
                {
                    EditorApplication.update += Repaint;
                }
            }
            double totalDuration = 0;

            for (int i = 0; i < tasks.Length; i++)
            {
                totalDuration += tasks[i].lastUpdateDuration;
            }

            ProfilerEditorLayout.BeginVerticalBox();
            {
                EditorGUILayout.LabelField("Execution duration", EditorStyles.boldLabel);

                ProfilerEditorLayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("Total", totalDuration.ToString());
                }
                ProfilerEditorLayout.EndHorizontal();

                ProfilerEditorLayout.BeginHorizontal();
                {
                    _axisUpperBounds = EditorGUILayout.FloatField("Axis Upper Bounds", _axisUpperBounds);
                }
                ProfilerEditorLayout.EndHorizontal();

                if (!EditorApplication.isPaused)
                {
                    if (_taskMonitorData.Count >= SYSTEM_MONITOR_DATA_LENGTH)
                    {
                        _taskMonitorData.Dequeue();
                    }

                    _taskMonitorData.Enqueue((float)totalDuration);
                }
                _tasksMonitor.Draw(_taskMonitorData.ToArray(), 80f, _axisUpperBounds);
            }
            ProfilerEditorLayout.EndVertical();
        }
        int DrawUpdateTaskInfos(TaskInfo[] tasks)
        {
            if (_sortingOption != SORTING_OPTIONS.NONE)
            {
                SortUpdateTasks(tasks);
            }

            string title =
                updateTitle
                .FastConcat(minTitle)
                .FastConcat(maxTitle);

            ProfilerEditorLayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("Task Name", EditorStyles.boldLabel);
                EditorGUILayout.TextArea(title, EditorStyles.boldLabel, GUILayout.MaxWidth(200));
            }
            ProfilerEditorLayout.EndHorizontal();

            int tasksDrawn = 0;

            for (int i = 0; i < tasks.Length; i++)
            {
                TaskInfo taskInfo = tasks[i];

                if (taskInfo.taskName.ToLower().Contains(_systemNameSearchTerm.ToLower()))
                {
                    ProfilerEditorLayout.BeginHorizontal();
                    {
                        var avg = string.Format("{0:0.000}", taskInfo.averageUpdateDuration).PadRight(15);
                        var min = string.Format("{0:0.000}", taskInfo.minUpdateDuration).PadRight(15);
                        var max = string.Format("{0:0.000}", taskInfo.maxUpdateDuration);

                        string output = avg.FastConcat(min).FastConcat(max);

                        EditorGUILayout.LabelField(taskInfo.taskName);
                        EditorGUILayout.TextArea(output, GetTaskStyle(), GUILayout.MaxWidth(200));
                    }
                    ProfilerEditorLayout.EndHorizontal();

                    tasksDrawn += 1;
                }
            }
            return(tasksDrawn);
        }
Exemplo n.º 4
0
        int DrawUpdateTaskInfos(TaskInfo[] tasks)
        {
            if (_sortingOption != SORTING_OPTIONS.NONE)
            {
                SortUpdateTasks(tasks);
            }

            string title =
                avgTitle.FastConcat(updateTitle, minTitle, maxTitle, calls);

            ProfilerEditorLayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("Task Name", EditorStyles.boldLabel);
                EditorGUILayout.TextArea(title, EditorStyles.boldLabel, GUILayout.MaxWidth(400));
            }
            ProfilerEditorLayout.EndHorizontal();

            int tasksDrawn = 0;

            for (int i = 0; i < tasks.Length; i++)
            {
                ref TaskInfo taskInfo = ref tasks[i];

                if (taskInfo.taskName.ToLower().Contains(_systemNameSearchTerm.ToLower()))
                {
                    ProfilerEditorLayout.BeginHorizontal();
                    {
                        var cur   = (taskInfo.currentUpdateDuration.ToString("000.000")).PadRight(15);
                        var avg   = (taskInfo.averageUpdateDuration.ToString("000.000")).PadRight(15);
                        var min   = (taskInfo.minUpdateDuration.ToString("000.000")).PadRight(15);
                        var max   = (taskInfo.maxUpdateDuration.ToString("000.000")).PadRight(15);
                        var calls = (taskInfo.deltaCalls.ToString()).PadRight(15);

                        string output = avg.FastConcat(cur, min, max, calls);

                        EditorGUILayout.LabelField(taskInfo.taskName);
                        EditorGUILayout.TextArea(output, GetTaskStyle(), GUILayout.MaxWidth(400));
                    }
                    ProfilerEditorLayout.EndHorizontal();

                    tasksDrawn += 1;
                }
            }