public static bool Draw <T>(T node, bool isSelected) where T : Object, InITreeNode <T> { if (noMargain == null) { noMargain = new GUIStyle(); noMargain.margin = new RectOffset(0, 0, 0, 0); } Rect area = EditorGUILayout.BeginHorizontal(); if (isSelected) { GUI.DrawTexture(area, EditorResources.Background); } GUILayout.Space(EditorGUI.indentLevel * 16); bool folded = node.IsFoldedOut; Texture picture; if (folded || node.GetChildren.Count == 0) { picture = EditorResources.Minus; } else { picture = EditorResources.Plus; } GUILayout.Label(picture, noMargain, GUILayout.Height(EditorResources.Minus.height), GUILayout.Width(EditorResources.Minus.width)); Rect foldRect = GUILayoutUtility.GetLastRect(); if (Event.current.ClickedWithin(foldRect)) { folded = !folded; Event.current.Use(); } Texture icon = TreeNodeDrawerHelper.LookUpIcon(node); TreeNodeDrawerHelper.DrawIcon(GUILayoutUtility.GetLastRect(), icon, noMargain); EditorGUILayout.LabelField(""); EditorGUILayout.EndHorizontal(); Rect labelArea = GUILayoutUtility.GetLastRect(); Rect buttonArea = labelArea; if (!node.IsRoot) { buttonArea.x = buttonArea.x + 56 + EditorGUI.indentLevel * 16; buttonArea.width = 20; buttonArea.height = 14; GUI.Label(buttonArea, EditorResources.Up, noMargain); if (Event.current.ClickedWithin(buttonArea)) { NodeWorker.MoveNodeOneUp(node); Event.current.Use(); } buttonArea.y += 15; GUI.Label(buttonArea, EditorResources.Down, noMargain); if (Event.current.ClickedWithin(buttonArea)) { NodeWorker.MoveNodeOneDown(node); Event.current.Use(); } labelArea.x += 20; } labelArea.y += 6; labelArea.x += 65; EditorGUI.LabelField(labelArea, node.GetName); return(folded); }
public static bool Draw <T>(T node, bool isSelected, out bool clicked) where T : Object, InITreeNode <T> { clicked = false; Rect fullArea = EditorGUILayout.BeginHorizontal(); Rect area = EditorGUILayout.BeginHorizontal(); if (isSelected) { GUI.DrawTexture(area, EditorResources.Instance.GetBackground()); } GUILayout.Space(EditorGUI.indentLevel * 16); bool folded = node.IsFoldedOut; Texture picture; if (EditorResources.Instance != null) { if (folded || node._getChildren.Count == 0) { picture = EditorResources.Instance.Minus; } else { picture = EditorResources.Instance.Plus; } } else { picture = null; } if (GUILayout.Button(picture, GUIStyle.none, GUILayout.Height(EditorResources.Instance.Minus.height), GUILayout.Width(EditorResources.Instance.Minus.width))) { node.IsFoldedOut = !node.IsFoldedOut; Event.current.UseEvent(); } Texture icon = TreeNodeDrawerHelper.LookUpIcon(node); TreeNodeDrawerHelper.DrawIcon(GUILayoutUtility.GetLastRect(), icon, GUIStyle.none); EditorGUILayout.LabelField(""); EditorGUILayout.EndHorizontal(); Rect labelArea = GUILayoutUtility.GetLastRect(); var audioNode = node as InAudioNode; if (audioNode != null) { TreeNodeDrawerHelper.DrawVolume(fullArea, audioNode._nodeData as InFolderData); } labelArea.y += 6; labelArea.x += 60; EditorGUI.LabelField(labelArea, node.GetName); EditorGUILayout.EndHorizontal(); if (Event.current.ClickedWithin(fullArea)) { clicked = true; } return(node.IsFoldedOut); }