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();
        }
Example #2
0
 public GroupSlot(Type type, Group group) : this()
 {
     Type      = type;
     Group     = group;
     DebugInfo = new GroupDebugInfo(group);
 }