public void RemoveChild(BeTreeNode node)
 {
     NodeChildren.Remove(node);
     FloorCount = 0;
     NodeParent = null;
     node.SetParent(null);
 }
 public void AddChild(BeTreeNode node, IEditorControl parent)
 {
     NodeChildren.Add(node);
     node.NodeParent = this;
     node.FloorCount = FloorCount + 1;
     node.SetParent(parent);
 }
        public static BeTreeNode CreateTree(NodeParam root, TreeNodeCanvas canvas, Dictionary <int, BeTreeNode> dict)
        {
            _canvas = canvas;
            _dict   = dict;

            List <int> ids = new List <int>(dict.Keys);

            foreach (int id in ids)
            {
                dict[id].RemoveBTN();
            }

            Queue <NodeParam> queue = new Queue <NodeParam>();

            queue.Enqueue(root);
            BeTreeNode rootNode = null;

            while (queue.Count > 0)
            {
                NodeParam  p    = queue.Dequeue();
                BeTreeNode pBtn = p.CreateBTN();
                pBtn.DeployNodeEvent();
                if (p.Parent == null)
                {
                    rootNode = pBtn;
                    rootNode.SetParent(canvas.NodePanels);
                }
                else
                {
                    dict[p.Parent.NodeID].AddChild(pBtn, _canvas.NodePanels);
                }

                foreach (NodeParam child in p.ChildrenList)
                {
                    queue.Enqueue(child);
                }
            }

            return(rootNode);
        }