Ejemplo n.º 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);
    }
Ejemplo n.º 2
0
    // 获取鼠标所在位置的节点
    private NodeValue GetMouseInNode(List <NodeValue> nodeList)
    {
        NodeValue selectNode = null;

        for (int i = 0; i < nodeList.Count; i++)
        {
            NodeValue nodeValue = nodeList[i];
            // 如果鼠标位置 包含在 节点的 Rect 范围,则视为可以选择的节点
            if (RectTool.RectTToRect(nodeValue.position).Contains(mousePosition))
            {
                selectNode = nodeValue;
                break;
            }
        }

        return(selectNode);
    }
Ejemplo n.º 3
0
    // 绘制节点
    private void DrawNodeWindows(List <NodeValue> nodeList)
    {
        Action CallBack = () =>
        {
            for (int i = 0; i < nodeList.Count; i++)
            {
                NodeValue nodeValue = nodeList[i];
                int       xConst    = 330;
                int       yConst    = 0;
                if (nodeValue.position.x < xConst || nodeValue.position.y < yConst)
                {
                    float x = (nodeValue.position.x < xConst ? (xConst - nodeValue.position.x + 30): 0);
                    float y = (nodeValue.position.y < yConst ? (yConst - nodeValue.position.y + 30): 0);

                    Vector2 offset = new Vector2(x, y);
                    nodeValue.position.x += offset.x;
                    nodeValue.position.y += offset.y;

                    SyncChildNodePosition(nodeValue, offset);
                }

                GUI.enabled = !BehaviorManager.Instance.CurrentOpenConfigSubTree();
                string     name    = string.Format("{0}", nodeValue.nodeName);
                GUIContent nameGui = new GUIContent(name, name);
                Rect       rect    = GUI.Window(i, RectTool.RectTToRect(nodeValue.position), DrawNodeWindow, nameGui);
                if (!BehaviorManager.Instance.CurrentOpenConfigSubTree())
                {
                    ResetNodePosition(nodeValue, rect);
                }
                GUI.enabled = true;

                if (nodeValue.NodeType != (int)NODE_TYPE.SUB_TREE)
                {
                    DrawToChildCurve(nodeValue);
                }
            }
        };

        _treeNodeWindow.DrawWindow(CallBack);
    }