public void AddNodeType(NODE_TYPE nodeType, string nodeName, string identificationName) { Node_Draw_Info_Item item = new Node_Draw_Info_Item(nodeType); item.SetName(nodeName); item.SetIdentification(identificationName); string name = string.Format("{0}/{1}", _nodeTypeName, nodeName); KeyValuePair <string, Node_Draw_Info_Item> kv = new KeyValuePair <string, Node_Draw_Info_Item>(name, item); _nodeArr.Add(kv); }
// 添加节点 public void AddNode(Node_Draw_Info_Item info, Vector3 mousePosition, int openSubTreeId) { NodeValue newNodeValue = new NodeValue(); newNodeValue.id = GetNewNodeId(); if (BehaviorDataController.Instance.BehaviorTreeData.rootNodeId < 0) { BehaviorDataController.Instance.BehaviorTreeData.rootNodeId = newNodeValue.id; newNodeValue.isRootNode = true; } newNodeValue.nodeName = info._nodeName; newNodeValue.identificationName = info._identificationName; newNodeValue.NodeType = (int)info._nodeType; newNodeValue.parentNodeID = -1; newNodeValue.function = NodeDescript.GetFunction((NODE_TYPE)info._nodeType); RectT rectT = new RectT(); Rect rect = new Rect(mousePosition.x, mousePosition.y, rectT.width, rectT.height); newNodeValue.position = RectTool.RectToRectT(rect); newNodeValue.parentSubTreeNodeId = openSubTreeId; List <NodeValue> NodeList = BehaviorDataController.Instance.NodeList; NodeList.Add(newNodeValue); if (openSubTreeId >= 0) { bool hasEntryNode = false; for (int i = 0; i < NodeList.Count; ++i) { if (NodeList[i].parentSubTreeNodeId == openSubTreeId && (NodeList[i].subTreeEntry)) { hasEntryNode = true; break; } } if (!hasEntryNode) { ChangeSubTreeEntryNode(newNodeValue.parentSubTreeNodeId, newNodeValue.id); } } }