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(); } }
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(); } }