예제 #1
0
        private void RenderStats(RoutineStats inStats, bool inbCanAdjust, bool inbNested)
        {
            if (!inbNested)
            {
                // Render id
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("ID/", GUILayout.Width(FIELD_NAME_WIDTH));
                    uint handleID = (uint)inStats.Handle;
                    uint index    = handleID & Table.INDEX_MASK;
                    uint counter  = (handleID & Table.COUNTER_MASK) >> Table.COUNTER_SHIFT;
                    EditorGUILayout.LabelField(index.ToString() + " (" + counter.ToString("X2") + ")", GUILayout.ExpandWidth(true));
                }
                EditorGUILayout.EndHorizontal();

                // Render name
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("NAME/", GUILayout.Width(FIELD_NAME_WIDTH));
                    if (!inbCanAdjust)
                    {
                        GUI.enabled = false;
                    }
                    string newName = EditorGUILayout.TextField(inStats.Name, GUILayout.ExpandWidth(true));
                    if (newName != inStats.Name)
                    {
                        inStats.Handle.SetName(newName);
                    }
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            if (!inbNested && !ReferenceEquals(inStats.Host, null))
            {
                // Render host
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("HOST/", GUILayout.Width(FIELD_NAME_WIDTH));
                    GUI.enabled = false;
                    EditorGUILayout.ObjectField(inStats.Host, typeof(MonoBehaviour), true, GUILayout.ExpandWidth(true));
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            // Current state
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("STATUS/", GUILayout.Width(FIELD_NAME_WIDTH));
                EditorGUILayout.LabelField(inStats.State, GUILayout.ExpandWidth(true));
            }
            EditorGUILayout.EndHorizontal();

            // Time Scale
            if (!inbNested)
            {
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("TIMESCALE/", GUILayout.Width(FIELD_NAME_WIDTH));
                    if (!inbCanAdjust)
                    {
                        GUI.enabled = false;
                    }
                    #if SUPPORTS_DELAYEDFIELDS
                    float timeScale = EditorGUILayout.DelayedFloatField(inStats.TimeScale, GUILayout.ExpandWidth(true));
                    #else
                    float timeScale = EditorGUILayout.FloatField(inStats.TimeScale, GUILayout.ExpandWidth(true));
                    #endif
                    if (timeScale < 0)
                    {
                        timeScale = 0;
                    }
                    if (timeScale != inStats.TimeScale)
                    {
                        inStats.Handle.SetTimeScale(timeScale);
                    }
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            // Priority
            if (!inbNested)
            {
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("PRIORITY/", GUILayout.Width(FIELD_NAME_WIDTH));
                    if (!inbCanAdjust)
                    {
                        GUI.enabled = false;
                    }
                    #if SUPPORTS_DELAYEDFIELDS
                    int priority = EditorGUILayout.DelayedIntField(inStats.Priority, GUILayout.ExpandWidth(true));
                    #else
                    int priority = EditorGUILayout.IntField(inStats.Priority, GUILayout.ExpandWidth(true));
                    #endif
                    if (priority != inStats.Priority)
                    {
                        inStats.Handle.SetPriority(priority);
                    }
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("PHASE/", GUILayout.Width(FIELD_NAME_WIDTH));
                    if (!inbCanAdjust)
                    {
                        GUI.enabled = false;
                    }
                    RoutinePhase update = (RoutinePhase)EditorGUILayout.EnumPopup(inStats.Phase, GUILayout.ExpandWidth(true));
                    if (update != inStats.Phase)
                    {
                        inStats.Handle.SetPhase(update);
                    }
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            // Current Function Name
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("FUNCTION/" + inStats.StackDepth + "/", GUILayout.Width(FIELD_NAME_WIDTH));
                EditorGUILayout.LabelField(inStats.Function == null ? "[Null]" : inStats.Function, GUILayout.ExpandWidth(true));
            }
            EditorGUILayout.EndHorizontal();

            if (inStats.State != RoutineState.Disposing && inbCanAdjust)
            {
                // Functions
                EditorGUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("Pause"))
                    {
                        inStats.Handle.Pause();
                    }
                    if (GUILayout.Button("Resume"))
                    {
                        inStats.Handle.Resume();
                    }
                    if (GUILayout.Button("Stop"))
                    {
                        inStats.Handle.Stop();
                    }
                }
                EditorGUILayout.EndHorizontal();
            }

            if (inStats.Nested != null && inStats.Nested.Length > 0)
            {
                EditorGUILayout.LabelField("NESTED/");
                BeginIndent();
                RenderStatGroup(inStats.Nested, inbCanAdjust, true);
                EndIndent();
            }
        }
예제 #2
0
        private void RenderStats(RoutineStats inStats, bool inbCanAdjust, bool inbNested)
        {
            if (!inbNested)
            {
                // Render name
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("NAME/", GUILayout.Width(FIELD_NAME_WIDTH));
                    if (!inbCanAdjust)
                    {
                        GUI.enabled = false;
                    }
                    string newName = EditorGUILayout.TextField(inStats.Name, GUILayout.ExpandWidth(true));
                    if (newName != inStats.Name)
                    {
                        inStats.Handle.SetName(newName);
                    }
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            if (!inbNested && !ReferenceEquals(inStats.Host, null))
            {
                // Render host
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("HOST/", GUILayout.Width(FIELD_NAME_WIDTH));
                    GUI.enabled = false;
                    EditorGUILayout.ObjectField(inStats.Host, typeof(MonoBehaviour), true, GUILayout.ExpandWidth(true));
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            // Current state
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("STATUS/", GUILayout.Width(FIELD_NAME_WIDTH));
                EditorGUILayout.LabelField(inStats.State.ToString(), GUILayout.ExpandWidth(true));
            }
            EditorGUILayout.EndHorizontal();

            // Time Scale
            if (!inbNested)
            {
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("TIMESCALE/", GUILayout.Width(FIELD_NAME_WIDTH));
                    if (!inbCanAdjust)
                    {
                        GUI.enabled = false;
                    }
                    float timeScale = EditorGUILayout.DelayedFloatField(inStats.TimeScale, GUILayout.ExpandWidth(true));
                    if (timeScale < 0)
                    {
                        timeScale = 0;
                    }
                    if (timeScale != inStats.TimeScale)
                    {
                        inStats.Handle.SetTimeScale(timeScale);
                    }
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            // Priority
            if (!inbNested)
            {
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("PRIORITY/", GUILayout.Width(FIELD_NAME_WIDTH));
                    if (!inbCanAdjust)
                    {
                        GUI.enabled = false;
                    }
                    int priority = EditorGUILayout.DelayedIntField(inStats.Priority, GUILayout.ExpandWidth(true));
                    if (priority != inStats.Priority)
                    {
                        inStats.Handle.SetPriority(priority);
                    }
                    GUI.enabled = true;
                }
                EditorGUILayout.EndHorizontal();
            }

            // Current Function Name
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("FUNCTION/" + inStats.StackDepth + "/", GUILayout.Width(FIELD_NAME_WIDTH));
                EditorGUILayout.LabelField(inStats.Function == null ? "[Null]" : inStats.Function, GUILayout.ExpandWidth(true));
            }
            EditorGUILayout.EndHorizontal();

            if (inStats.State != RoutineState.Disposing && inbCanAdjust)
            {
                // Functions
                EditorGUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("Pause"))
                    {
                        inStats.Handle.Pause();
                    }
                    if (GUILayout.Button("Resume"))
                    {
                        inStats.Handle.Resume();
                    }
                    if (GUILayout.Button("Stop"))
                    {
                        inStats.Handle.Stop();
                    }
                }
                EditorGUILayout.EndHorizontal();
            }

            if (inStats.Nested != null && inStats.Nested.Length > 0)
            {
                EditorGUILayout.LabelField("NESTED/");
                BeginIndent();
                RenderStatGroup(inStats.Nested, inbCanAdjust, true);
                EndIndent();
            }
        }