Пример #1
0
        //Handles events, Mouse downs, ups etc.
        static void HandleEvents(Node node, Event e)
        {
            //Node click
            if (e.type == EventType.MouseDown && GraphEditorUtility.allowClick && e.button != 2)
            {
                Undo.RegisterCompleteObjectUndo(node.graph, "Move Node");

                if (!e.control)
                {
                    GraphEditorUtility.activeElement = node;
                }

                if (e.control)
                {
                    if (node.isSelected)
                    {
                        GraphEditorUtility.activeElements.Remove(node);
                    }
                    else
                    {
                        GraphEditorUtility.activeElements.Add(node);
                    }
                }

                if (e.button == 0)
                {
                    node.nodeIsPressed = true;
                }

                //Double click
                if (e.button == 0 && e.clickCount == 2)
                {
                    if (node is IGraphAssignable && (node as IGraphAssignable).nestedGraph != null)
                    {
                        node.graph.currentChildGraph = (node as IGraphAssignable).nestedGraph;
                        node.nodeIsPressed           = false;
                    }
                    else if (node is ITaskAssignable && (node as ITaskAssignable).task != null)
                    {
                        EditorUtils.OpenScriptOfType((node as ITaskAssignable).task.GetType());
                    }
                    else
                    {
                        EditorUtils.OpenScriptOfType(node.GetType());
                    }
                    e.Use();
                }

                node.OnNodePicked();
            }

            //Mouse up
            if (e.type == EventType.MouseUp)
            {
                node.nodeIsPressed = false;
                if (node.graph.autoSort)
                {
                    node.SortConnectionsByPositionX();
                }
                node.OnNodeReleased();
            }
        }