예제 #1
0
 public NodeController Add(NodeController node)
 {
     node = node.GetRoot();
     Children.Add(node);
     node.Parent = this;
     return(node);
 }
예제 #2
0
 public NodeController GetPosition(int x, int y)
 {
     if (X <= x && x <= X + Width && Y <= y && y <= Y + Height)
     {
         return(this);
     }
     foreach (NodeController n in Children)
     {
         NodeController nodePosition = n.GetPosition(x, y);
         if (nodePosition != null)
         {
             return(nodePosition);
         }
     }
     return(null);
 }
예제 #3
0
        public NodeController GetRoot()
        {
            NodeController current = this;

            while (true)
            {
                if (current.Parent != null)
                {
                    current = current.Parent;
                }
                else
                {
                    break;
                }
            }
            return(current);
        }
예제 #4
0
        public NodeController Add()
        {
            int addNodeX = X + Width + NodeX;
            int addNodeY = Y;

            foreach (var n in children)
            {
                addNodeY = Math.Max(addNodeY, n.Y + n.Height + NodeY);
            }
            NodeController node = new NodeController(addNodeX, addNodeY, Width, Height)
            {
                Parent = this
            };

            Children.Add(node);
            return(node);
        }
예제 #5
0
 public NodeController Remove(NodeController node)
 {
     node.Parent.Children.Remove(node);
     node.Parent = this;
     return(node);
 }