Beispiel #1
0
    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();
        }
    }