Exemple #1
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);
        }
Exemple #2
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 = !BehaviorDataController.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 (!BehaviorDataController.Instance.CurrentOpenConfigSubTree())
                    {
                        ResetNodePosition(nodeValue, rect);
                    }
                    GUI.enabled = true;

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

            TreeNodeWindow._drawWindowCallBack(CallBack);
        }