Ejemplo n.º 1
0
    internal OwlTreeNode AddNode(NodeInstance graphNode)
    {
        TreeNode <OwlTreeNode> treePtr = m_tree;

        int depth = 0;

        string fullName = "";

        foreach (string pathSegment in graphNode.m_pathSegments)
        {
            depth++;
            bool found = false;
            TreeNode <OwlTreeNode> newPtr = null;

            fullName += pathSegment + " ";

            foreach (var kid in treePtr.Children)
            {
                OwlTreeNode kidElem = kid.Value;

                found = kidElem.matchesString(pathSegment);

                if (found)
                {
                    newPtr = kid;
                    break;
                }
            }

            if (!found)
            {
                newPtr = treePtr.AddChild(
                    new OwlTreeNode(pathSegment, depth, treePtr.Value.mNumKids++));
                if (GraphManager.m_debug)
                {
                    newPtr.Value.mFullName = '<' + fullName + '>';
                }
            }

            treePtr = newPtr;
        }

        if (treePtr.Value.mNodeInstance != null)
        {
            Debug.Log("dupe node: " + treePtr.Value);
        }

        treePtr.Value.mNodeInstance = graphNode;

        if (graphNode.m_owlNode != null) // && GraphManager.m_debug)
        {
            treePtr.Value.mFullName += "(" + graphNode.m_owlNode.ID + ')';
        }

        return(treePtr.Value);
    }