Inheritance: uControlBase
Example #1
0
        /// <summary>
        /// エッジ伸ばし開始
        /// </summary>
        /// <param name="start"></param>
        public void EdgeStart(uDraggableNode node, ConnectBox start)
        {
            // 既に接続されてないかチェック
            foreach (var edge in edgeList)
            {
                if (edge.edgeEnd != null && edge.edgeEnd.connact == start)
                {
                    edge.edgeEnd = null;
                    ActiveEdge   = edge;
                    return;
                }
                if (edge.edgeStart.connact == start)
                {
                    edge.edgeStart = null;
                    ActiveEdge     = edge;
                    return;
                }
            }


            uNodeEdge newedge = new uNodeEdge(this, new uNodeEdge.ConnectNode(node, start));

            ActiveEdge = newedge;
            edgeList.Add(newedge);
        }
Example #2
0
        /// <summary>
        /// エッジ伸ばし終了
        /// </summary>
        /// <param name="start"></param>
        public void EdgeEnd(uDraggableNode node, ConnectBox end)
        {
            // 既に接続されてないかチェック
            foreach (var edge in edgeList)
            {
                if (edge.edgeEnd != null && (edge.edgeEnd.connact == end) ||
                    edge.edgeStart != null && (edge.edgeStart.connact == end))
                {
                    return;
                }
            }

            if ((ActiveEdge.edgeStart != null && ActiveEdge.edgeStart.node == node) ||
                (ActiveEdge.edgeEnd != null && ActiveEdge.edgeEnd.node == node))
            {
                return;
            }

            if (ActiveEdge.edgeEnd == null)
            {
                ActiveEdge.edgeEnd = new uNodeEdge.ConnectNode(node, end);
            }
            else if (ActiveEdge.edgeStart == null)
            {
                ActiveEdge.edgeStart = new uNodeEdge.ConnectNode(node, end);
            }
            ActiveEdge = null;
        }
Example #3
0
        /// <summary>
        /// 範囲選択
        /// </summary>
        void SelectArea()
        {
            // ズーム中心を選択範囲の中心に
            gridContorol.GridZoomCenterPoint = new Vector2(position.width / 2, position.height / 2);

            // ノード単体選択
            bool isOverrapped = false;

            if (mouseData.IsDown(MouseButton.Left))
            {
                foreach (var node in this.nodeList)
                {
                    if (node.windowRect.Overlaps(mouseData.rect))
                    {
                        node.Active  = true;
                        isOverrapped = true;

                        if (selectedNodeList.Count == 0)
                        {
                            if (selectedNode != null)
                            {
                                if (selectedNode != node)
                                {
                                    selectedNode.Active = false;
                                }
                            }
                        }
                        selectedNode = node;
                        // ズーム中心を選択したノードに
                        //gridContorol.GridZoomCenterPoint = mouseData.pos;
                    }
                    else
                    {
                        if (selectedNodeList.Count == 0)
                        {
                            node.Active = false;
                        }
                    }
                }
            }

            //------------------------------
            // 複数ノードドラッグ
            //------------------------------
            if (mouseData.IsDrag(MouseButton.Left))
            {
                // ズーム中心を選択範囲の中心に
                //if (selectedNode != null)
                //{
                //	gridContorol.GridZoomCenterPoint = selectedNode.windowRect.center;
                //}

                var find = selectedNodeList.Find(n => n.handle == selectedNode.handle);
                if (find == null || selectedNode == null)
                {
                    ClearSelectedNodes();
                }
                foreach (var node in selectedNodeList)
                {
                    isOverrapped = true;
                    //if (!node.windowRect.Overlaps(mouseData.rect))
                    if (selectedNode != node)
                    {
                        node.windowRect.position += mouseData.delta;
                    }
                    else
                    {
                    }
                }
            }
            if (mouseData.IsUp(MouseButton.Left) /*|| mouseData.IsDrag(MouseButton.Left)*/)
            {
                // 選択されてる人たち一旦クリア
                bool bOtherNodeSelect = true;
                foreach (var node in selectedNodeList)
                {
                    if (node.windowRect.Overlaps(mouseData.rect))
                    {
                        bOtherNodeSelect = false;
                    }
                }
                if (bOtherNodeSelect)
                {
                    isOverrapped = false;
                    ClearSelectedNodes();
                }
                //-------------------------------
            }


            if (isOverrapped)
            {
                CleareSelectArea();
                return;
            }


            // 接続中のエッジ削除
            if (mouseData.IsDown(MouseButton.Left))
            {
                if (ActiveEdge != null)
                {
                    ActiveEdge.Remove();
                    edgeList.Remove(ActiveEdge);
                    ActiveEdge = null;
                }
            }

            // 範囲選択
            if (mouseData.IsDown(MouseButton.Left))
            {
                m_SelectedArea.position = mouseData.pos;
            }
            else if (mouseData.IsDrag(MouseButton.Left))
            {
                m_SelectedArea.width  = mouseData.pos.x - m_SelectedArea.position.x;
                m_SelectedArea.height = mouseData.pos.y - m_SelectedArea.position.y;
            }
            else if (mouseData.IsUp(MouseButton.Left))
            {
                GUIHelper.RectAdjust(ref m_SelectedArea);

                // 選択範囲内のノードをアクティブに
                if ((m_SelectedArea.xMax - m_SelectedArea.xMin) != 0 && (m_SelectedArea.yMax - m_SelectedArea.yMin) != 0)
                {
                    foreach (var node in this.nodeList)
                    {
                        if (node.windowRect.Overlaps(m_SelectedArea))
                        {
                            node.Active = true;
                            selectedNodeList.Add(node);

                            // ズーム中心を選択範囲の中心に
                            //gridContorol.GridZoomCenterPoint = m_SelectedArea.center;
                        }
                        else
                        {
                            node.Active = false;
                        }
                    }
                }

                CleareSelectArea();
            }
            else
            {
                CleareSelectArea();
            }

            // ノードドラッグ中たまに現点から伸びちゃうので。。。
            if (m_SelectedArea.position.x == 0 && m_SelectedArea.position.y == 0)
            {
                CleareSelectArea();
            }

            //Debug.Log(mouseData.type.ToString() + "(" + mouseData.button.ToString() +  "):" + mouseData.pos.ToString());
        }
Example #4
0
        /// <summary>
        /// エッジ伸ばし開始
        /// </summary>
        /// <param name="start"></param>
        public void EdgeStart(uDraggableNode node,ConnectBox start)
        {
            // 既に接続されてないかチェック
            foreach (var edge in edgeList)
            {
                if (edge.edgeEnd != null && edge.edgeEnd.connact == start)
                {
                    edge.edgeEnd = null;
                    ActiveEdge = edge;
                    return;
                }
                if( edge.edgeStart.connact == start)
                {
                    edge.edgeStart = null;
                    ActiveEdge = edge;
                    return;
                }
            }

            uNodeEdge newedge = new uNodeEdge(this, new uNodeEdge.ConnectNode(node, start));
            ActiveEdge = newedge;
            edgeList.Add(newedge);
        }