private void DrawGroup(GroupDebugInfo debugInfo) { var group = debugInfo.Group; var groupType = group.GetType(); var name = groupType.Name; if (groupType.IsNested && groupType.DeclaringType != null) { name = $"{groupType.DeclaringType.Name}+{name}"; } EditorGUILayout.BeginVertical(GUI.skin.box); var width = Screen.width - 60; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(name, groupNameStyle, GUILayout.Width(width - 30)); EditorGUILayout.LabelField(group.Count.ToString(), GUILayout.Width(30)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); var usedSpace = 0.0f; var availableSpace = EditorGUIUtility.currentViewWidth - 110; var firstInRow = true; foreach (var included in debugInfo.IncludeTypes) { var size = styles.includeType.CalcSize(new GUIContent(included.Name)); usedSpace += size.x; if (usedSpace > availableSpace || firstInRow) { firstInRow = true; usedSpace = 0; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); } EditorGUILayout.LabelField(included.Name, styles.includeType, GUILayout.Width(size.x)); firstInRow = false; } foreach (var excluded in debugInfo.ExcludeTypes) { var size = styles.excludeType.CalcSize(new GUIContent(excluded.Name)); usedSpace += size.x; if (usedSpace > availableSpace || firstInRow) { firstInRow = true; usedSpace = 0; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); } EditorGUILayout.LabelField(excluded.Name, styles.excludeType, GUILayout.Width(size.x)); firstInRow = false; } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }
public GroupSlot(Type type, Group group) : this() { Type = type; Group = group; DebugInfo = new GroupDebugInfo(group); }