Пример #1
0
    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
    }
Пример #2
0
    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();
    }
Пример #3
0
    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);
                }
            }
        }
    }