public static void BeginPropertyToggleFoldGroup(string title, FoldToggleParameter foldToggleParameter) { var backgroundRect = GUILayoutUtility.GetRect(1f, 17f); var labelRect = backgroundRect; labelRect.xMin += 32f; labelRect.xMax -= 20f; var foldoutRect = backgroundRect; foldoutRect.y += 1f; foldoutRect.width = 13f; foldoutRect.height = 13f; var toggleRect = backgroundRect; toggleRect.x += 16f; toggleRect.y += 2f; toggleRect.width = 13f; toggleRect.height = 13f; backgroundRect.xMin = 0f; backgroundRect.width += 4f; // Background EditorGUI.DrawRect(backgroundRect, Styles.HeaderBackgroundColor); // Title using (new EditorGUI.DisabledScope(!foldToggleParameter.IsChecked)) { EditorGUI.LabelField(labelRect, new GUIContent(title), EditorStyles.boldLabel); } // foldout foldToggleParameter.Fold = GUI.Toggle(foldoutRect, foldToggleParameter.Fold, GUIContent.none, EditorStyles.foldout); // Active checkbox foldToggleParameter.IsChecked = GUI.Toggle(toggleRect, foldToggleParameter.IsChecked, GUIContent.none, Styles.SmallTickBox); // Handle events var e = Event.current; if (e.type == EventType.MouseDown) { if (labelRect.Contains(e.mousePosition)) { if (e.button == 0) { foldToggleParameter.Fold = !foldToggleParameter.Fold; } e.Use(); } } EditorGUI.BeginDisabledGroup(!foldToggleParameter.IsChecked); PropertyToggleFoldGroupStack.Push(foldToggleParameter); }
public PropertyToggleFoldGroupScope(string title, FoldToggleParameter foldToggleParameter) { BeginPropertyToggleFoldGroup(title, foldToggleParameter); }