コード例 #1
0
                protected override void OnLeftMouseDown(Event inputEvent)
                {
                    //Check for clicking on a link
                    NodeEditorField clickedOnNodeFromField = null;
                    NodeEditorField clickedOnNodeToField   = null;

                    for (int i = 0; i < _editableObjects.Count && clickedOnNodeFromField == null; i++)
                    {
                        NodeEditorGUI node = (NodeEditorGUI)_editableObjects[i];

                        if (node.GetOutputField() != null)
                        {
                            Vector2 toField = inputEvent.mousePosition - node.GetOutputField()._position;

                            if (toField.magnitude < kLinkIconWidth * 0.5f)
                            {
                                clickedOnNodeFromField = node.GetOutputField();
                                break;
                            }
                        }

                        foreach (NodeEditorField nodeInputField in node.GetInputFields())
                        {
                            //If has an link going into it we can drag it away
                            int linkNodeId = GetNodeInputFieldLinkNodeId(nodeInputField);

                            if (linkNodeId != -1)
                            {
                                NodeEditorGUI linkedNode = GetEditableObject(linkNodeId);

                                if (linkedNode != null)
                                {
                                    Vector2 toField = inputEvent.mousePosition - nodeInputField._position;

                                    if (toField.magnitude < kLinkIconWidth)
                                    {
                                        clickedOnNodeFromField = linkedNode.GetOutputField();
                                        clickedOnNodeToField   = nodeInputField;
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    if (clickedOnNodeFromField != null)
                    {
                        _draggingNodeFieldFrom = clickedOnNodeFromField;
                        _draggingNodeFieldTo   = clickedOnNodeToField;
                        _dragMode     = eDragType.Custom;
                        _dragPos      = inputEvent.mousePosition;
                        _dragAreaRect = new Rect(-1.0f, -1.0f, 0.0f, 0.0f);
                    }
                    //Normal object clicking
                    else
                    {
                        _dragMode = eDragType.LeftClick;

                        base.OnLeftMouseDown(inputEvent);
                    }
                }