예제 #1
0
        public void ShiftNode(NodeDesigner dstNode)
        {
            Log.Info("shift node");

            if (mSelectedNode == null)
            {
                return;
            }
            NodeDesigner node1   = dstNode;
            NodeDesigner node2   = mSelectedNode;
            NodeDesigner parent1 = node1.Parent;
            NodeDesigner parent2 = node2.Parent;

            //根节点不可交换
            if (parent2 == null)
            {
                return;
            }
            //同父交换位置
            if (parent1 == parent2)
            {
                parent1.RemoveChild(node2);
                int idx = parent1.Children.IndexOf(node1);
                parent1.AddChild(node2, idx);
                parent1.AutoSort();
                //BTEntity.GetInstance().ResetTreeId();
            }

            //             //不同父,插到node1的子节点
            //             if (!node1.NodeData.CanAddChild())
            //                 return;
            //
            //             parent2.RemoveChild(node2);
            //             parent2.AutoSort();
            //             node1.AddChild(node2);
            //             node1.AutoSort();
            //             BTEntity.GetInstance().ResetTreeId();
        }
예제 #2
0
        //src接到dst的子节点
        public void ConnectNode(NodeDesigner srcNode, NodeDesigner dstNode)
        {
            if (srcNode == null || dstNode == null || !dstNode.NodeData.CanAddChild())
            {
                return;
            }
            if (srcNode.FindChild(dstNode))
            {
                //src有dst这个子节点不让连,避免死循环
                //Log.Info("found child");
                return;
            }

            NodeDesigner parent = srcNode.Parent;

            if (parent != null)
            {
                parent.RemoveChild(srcNode);
            }
            dstNode.AddChild(srcNode);
            dstNode.AutoSort();

            mDetachedNodes.Remove(srcNode);
        }