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(); }
//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); }