private void SetInfoList() { #region Node for (int i = 0; i < nodeList.Count; ++i) { string name = string.Format("{0}/{1}", "Add Node", typeNameArr[i]); Node_Draw_Info drawInfo = new Node_Draw_Info(name); NODE_TYPE[] arr = nodeList[i]; for (NODE_TYPE nodeType = arr[0]; nodeType <= arr[1]; ++nodeType) { drawInfo.AddNodeType(nodeType); infoList.Add(drawInfo); } } { // 条件节点 string conditionName = string.Format("{0}/{1}", "Add Node", "条件节点"); Node_Draw_Info conditionDrawInfo = new Node_Draw_Info(conditionName); infoList.Add(conditionDrawInfo); // 行为节点 string actionName = string.Format("{0}/{1}", "Add Node", "行为节点"); Node_Draw_Info actionDrawInfo = new Node_Draw_Info(actionName); infoList.Add(actionDrawInfo); Dictionary <string, ICustomIdentification <NodeLeaf> > nodeDic = CustomNode.Instance.GetNodeDic(); foreach (var kv in nodeDic) { ICustomIdentification <NodeLeaf> customIdentification = kv.Value; if (customIdentification.NodeType == NODE_TYPE.CONDITION) { conditionDrawInfo.AddNodeType(NODE_TYPE.CONDITION, customIdentification.Name, customIdentification.IdentificationName); } else if (customIdentification.NodeType == NODE_TYPE.ACTION) { actionDrawInfo.AddNodeType(NODE_TYPE.ACTION, customIdentification.Name, customIdentification.IdentificationName); } } } #endregion #region Sub_Tree { Node_Draw_Info drawInfo = new Node_Draw_Info("AddSubTree"); drawInfo.AddNodeType(NODE_TYPE.SUB_TREE); infoList.Add(drawInfo); } #endregion }
private void ShowMenu(NodeValue currentNode, NodeValue nodeValue) { int menuType = (nodeValue != null) ? 1 : 0; GenericMenu menu = new GenericMenu(); if (menuType == 0) { GenericMenu.MenuFunction2 CallBack = (object userData) => { if (null != BehaviorManager.behaviorAddNode) { BehaviorManager.behaviorAddNode((Node_Draw_Info_Item)userData, mousePosition, BehaviorManager.Instance.CurrentOpenSubTreeId); } }; List <Node_Draw_Info> nodeList = _drawController._behaviorDrawModel.InfoList; for (int i = 0; i < nodeList.Count; ++i) { Node_Draw_Info draw_Info = nodeList[i]; for (int j = 0; j < draw_Info._nodeArr.Count; ++j) { KeyValuePair <string, Node_Draw_Info_Item> kv = draw_Info._nodeArr[j]; //string itemName = string.Format("Add Node/{0}", kv.Key); string itemName = string.Format("{0}", kv.Key); GenericMenuAddItem(menu, new GUIContent(itemName), CallBack, kv.Value); } } } else { if (null != currentNode && nodeValue.id == currentNode.id && (NODE_TYPE)nodeValue.NodeType < NODE_TYPE.CONDITION) { // 连线子节点 GenericMenuAddItem(menu, new GUIContent("Make Transition"), MakeTransition); menu.AddSeparator(""); } // 删除节点 GenericMenuAddItem(menu, new GUIContent("Delete Node"), DeleteNode); if (nodeValue.parentNodeID >= 0) { GenericMenuAddItem(menu, new GUIContent("Remove Parent"), RemoveParentNode); } } menu.ShowAsContext(); Event.current.Use(); }
private void SetInfoList() { for (int i = 0; i < nodeList.Count; ++i) { Node_Draw_Info drawInfo = new Node_Draw_Info(typeNameArr[i]); NODE_TYPE[] arr = nodeList[i]; for (NODE_TYPE nodeType = arr[0]; nodeType <= arr[1]; ++nodeType) { drawInfo.AddNodeType(nodeType); infoList.Add(drawInfo); } } { // 条件节点 Node_Draw_Info conditionDrawInfo = new Node_Draw_Info("条件节点"); infoList.Add(conditionDrawInfo); // 行为节点 Node_Draw_Info actionDrawInfo = new Node_Draw_Info("行为节点"); infoList.Add(actionDrawInfo); List <CustomIdentification> nodeList = CustomNode.Instance.GetNodeList(); for (int i = 0; i < nodeList.Count; ++i) { CustomIdentification customIdentification = nodeList[i]; if (customIdentification.NodeType == NODE_TYPE.CONDITION) { conditionDrawInfo.AddNodeType(NODE_TYPE.CONDITION, customIdentification.Name, (int)customIdentification.Identification); } else if (customIdentification.NodeType == NODE_TYPE.ACTION) { actionDrawInfo.AddNodeType(NODE_TYPE.ACTION, customIdentification.Name, (int)customIdentification.Identification); } } } }