コード例 #1
0
    // 绘制节点
    private void DrawNodeWindows(List <NodeValue> nodeList)
    {
        Action CallBack = () =>
        {
            for (int i = 0; i < nodeList.Count; i++)
            {
                NodeValue nodeValue = nodeList[i];
                string    name      = nodeValue.nodeName; //
                //if (string.IsNullOrEmpty(name))
                //{
                //    if (nodeValue.NodeType < (int)NODE_TYPE.CONDITION)
                //    {
                //        nodeValue.nodeName = NodeEditor.GetTitle((NODE_TYPE)nodeValue.NodeType);
                //    }
                //}

                name = string.Format("{0}_{1}", name, nodeValue.id);
                Rect rect = GUI.Window(i, RectTool.RectTToRect(nodeValue.position), DrawNodeWindow, name);
                nodeValue.position = RectTool.RectToRectT(rect);
                DrawToChildCurve(nodeValue);
            }
        };

        _treeNodeWindow.DrawWindow(CallBack);
    }
コード例 #2
0
    private void ResetNodePosition(NodeValue nodeValue, Rect rect)
    {
        Vector2 nodePos = new Vector2(nodeValue.position.x, nodeValue.position.y);

        nodeValue.position = RectTool.RectToRectT(rect);

        if (!nodeValue.moveWithChild)
        {
            return;
        }

        childHash = new HashSet <int>();
        Vector2 offset = new Vector2(rect.x, rect.y) - nodePos;

        SyncChildNodePosition(nodeValue, offset);
    }
コード例 #3
0
    // 添加节点
    private void AddNode(Node_Draw_Info_Item info, Vector3 mousePosition, int openSubTreeId)
    {
        NodeValue newNodeValue = new NodeValue();

        newNodeValue.id = GetNewNodeId();
        if (_behaviorTreeData.rootNodeId < 0)
        {
            _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;

        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);
            }
        }
    }
コード例 #4
0
    // 添加节点
    private void AddNode(Node_Draw_Info_Item info, Vector3 mousePosition)
    {
        NodeValue newNodeValue = new NodeValue();

        newNodeValue.id = GetNewNodeId();
        if (_behaviorTreeData.rootNodeId < 0)
        {
            _behaviorTreeData.rootNodeId = newNodeValue.id;
            newNodeValue.isRootNode      = true;
        }

        newNodeValue.nodeName       = info._nodeName;
        newNodeValue.identification = info._identification;
        newNodeValue.NodeType       = (int)info._nodeType;
        newNodeValue.parentNodeID   = -1;

        Rect rect = new Rect(mousePosition.x, mousePosition.y, 100, 100);

        newNodeValue.position = RectTool.RectToRectT(rect);

        NodeList.Add(newNodeValue);
    }