コード例 #1
0
        public static bool HandleNodeInput(DragNode node, Event e, GraphCamera camera)
        {
            bool inputProcessed = false;

            var mousePosition      = e.mousePosition;
            var mousePositionWorld = camera.ScreenToWorld(mousePosition);
            int dragButton         = 0;

            // If the pins didn't already handle the input, then let the node handle it
            if (!inputProcessed)
            {
                bool insideRect = node.Bounds.Contains(mousePositionWorld);
                if (e.type == EventType.MouseDown && insideRect && e.button == dragButton)
                {
                    node.IsDragging = true;
                    inputProcessed  = true;
                }
                else if (e.type == EventType.MouseUp && insideRect && e.button == dragButton)
                {
                    node.IsDragging = false;
                }
            }

            if (node.IsDragging && !node.Selected)
            {
                node.IsDragging = false;
            }

            if (node.IsDragging && e.type == EventType.MouseDrag)
            {
                inputProcessed = true;
            }

            return(inputProcessed);
        }
コード例 #2
0
        bool SetSelectedState(DragNode node, bool selected)
        {
            bool stateChanged = (node.Selected != selected);

            node.Selected = selected;
            return(stateChanged);
        }
コード例 #3
0
 protected virtual void BringToFront(DragNode node)
 {
     /// to do list
 }
コード例 #4
0
        void HandleDrag(Event e)
        {
            int dragButton  = 0;
            int rightButton = 2;

            if (e.button == rightButton && e.type == EventType.Layout)
            {
                foreach (var node in DragNodes())
                {
                    node.MoveNode(e.delta);
                }
            }

            if (draggingNodes)
            {
                if (e.type == EventType.MouseUp && e.button == dragButton)
                {
                    draggingNodes = false;
                }
                else if (e.type == EventType.MouseDrag && e.button == dragButton)
                {
                    // Drag all the selected nodes
                    foreach (var node in DragNodes())
                    {
                        if (node.Selected)
                        {
                            node.MoveNode(e.delta);
                        }
                    }
                }
            }
            else
            {
                // Check if we have started to drag
                if (e.type == EventType.MouseDown && e.button == dragButton)
                {
                    // Find the node that was clicked below the mouse

                    DragNode mouseOverNode = HoverNode;

                    if (mouseOverNode != null && mouseOverNode.Selected)
                    {
                        draggingNodes = true;
                    }
                }
            }


            DragNode hoverNode = HoverNode;

            if (hoverNode != null)
            {
                var mouseNode = (hoverNode as BTNode.BTNode);
                var commen    = mouseNode.BtState.Notes;
                if (!string.IsNullOrEmpty(commen))
                {
                    var pos = mousePosition;
                    EditorGUI.LabelField(new Rect(pos, new Vector2(100, 30)), commen);
                }
            }
        }
コード例 #5
0
        void HandleSelect(Event e)
        {
            // Update the node selected flag

            var buttonId = 0;

            if (e.type == EventType.MouseDown && e.button == buttonId)
            {
                bool multiSelect  = keyboardState.ShiftPressed;
                bool toggleSelect = keyboardState.ControlPressed;
                // sort the nodes front to back
                DragNode[] sortedNodes = DragNodes();
                //                System.Array.Sort(sortedNodes, new NodeReversedZIndexComparer());

                DragNode mouseOverNode = HoverNode;



                foreach (var node in sortedNodes)
                {
                    var mouseOver = (node.Equals(mouseOverNode));

                    if (mouseOverNode != null && mouseOverNode.Selected && !toggleSelect)
                    {
//						multiSelect = true;	// select multi-select so that we can drag multiple objects
                    }
                    if (multiSelect || toggleSelect)
                    {
                        if (mouseOver && multiSelect)
                        {
                            node.Selected = true;
                        }
                        else if (mouseOver && toggleSelect)
                        {
                            node.Selected = !node.Selected;
                        }
                    }
                    else
                    {
                        node.Selected = mouseOver;
                        if (mouseOverNode != null)
                        {
                            OnSelectNode(mouseOverNode);
                        }
                    }

                    if (node.Selected)
                    {
                        BringToFront(node);
                    }
                }

                if (mouseOverNode == null)
                {
                    // No nodes were selected
                    Selection.activeObject = null;
                }

                OnNodeSelectionChanged();
            }
        }
コード例 #6
0
 protected virtual void OnSelectNode(DragNode node)
 {
     node.OnSelected();
 }
コード例 #7
0
 public abstract void OnClickNode(DragNode targetNode);