private void DrawNode(string name, FNode <T> node) { bool expanded = IsExpanded(currentPath); GUILayout.BeginHorizontal(); { // Delete Button if (!node.isRoot) { // RemoveButton(node.parent, name); GUILayout.Button("x", SMALL_BUTTON); } GUILayout.Label(name, FIXED_WIDTH); // Select Button if (GUILayout.Button(active == node ? "()" : "", SMALL_BUTTON)) { active = node; } GUILayout.Label(": {", FIXED_WIDTH); if (!expanded) { if (GUILayout.Button("...")) { Toggle(currentPath); } GUILayout.Label("}"); GUILayout.FlexibleSpace(); } else { if (GUILayout.Button("---", SMALL_BUTTON)) { Toggle(currentPath); } } } GUILayout.EndHorizontal(); if (expanded) { GUI.color = ModColor(visited.Count); GUILayout.BeginVertical("box"); { GUI.color = Color.white; var childrens = node.childrenNames; foreach (var childName in childrens) { var child = node.GetChild(childName); Push(node, child); DrawNode(childName, child); Pop(); } FieldControls(node); } GUILayout.EndVertical(); } }