Ejemplo n.º 1
0
        void InitializeCallbacks()
        {
            graphViewChanged     = GraphViewChangedCallback;
            viewTransformChanged = ViewTransformChangedCallback;

            CreateNodeMenu = ScriptableObject.CreateInstance <CreateNodeMenuWindow>();
            CreateNodeMenu.Initialize(this, GetNodeTypes());
            nodeCreationRequest = c => SearchWindow.Open(new SearchWindowContext(c.screenMousePosition), CreateNodeMenu);
        }
        void ShowCreateNodeMenu(Vector2 nodePosition)
        {
            Vector2 position = nodePosition;

            if (canvas.snapNodesOnGrid)
            {
                position = canvas.ConvertToSnapPosition(position);
            }

            m_nodeMenu = new GenericMenu();

            Type[] nodeTypesToAdd = ReflectionUtility.LoadClassTypes <Node, CreateNodeMenu> ();

            for (int i = 0; i < nodeTypesToAdd.Length; i++)
            {
                Type nodeTypeToAdd = nodeTypesToAdd[i];

                CreateNodeMenu createNodeMenu = nodeTypeToAdd.GetAttribute <CreateNodeMenu> ();

                // Normally this cannot happen.
                if (createNodeMenu == null)
                {
                    Debug.LogWarning("The node [" + nodeTypeToAdd.FullName + "] has no CreateNodeMenuAttribute");
                }
                else
                {
                    m_nodeMenu.AddItem(new GUIContent(createNodeMenu.path), false, () => {
                        AIController controller = graph.controller;
                        Node node     = createNodeMenu.CreateNew(nodeTypeToAdd);
                        node.position = position;
                        Serializer.AddNewNodeToController(controller, node);
                        graph.Repaint();

                        GraphUndo.Record("Add new node [" + node.name + "]",
                                         () => {
                            Serializer.RemoveNodeFromController(controller, node, false);
                            graph.Repaint();
                        },
                                         () => {
                            Serializer.RestoreNodeToController(controller, node, null);
                            graph.Repaint();
                        });
                    });
                }
            }
        }
Ejemplo n.º 3
0
        void InitializeCallbacks()
        {
            graphViewChanged       = GraphViewChangedCallback;
            serializeGraphElements = SerializeGraphElementsCallback;
            canPasteSerializedData = CanPasteSerializedDataCallback;
            unserializeAndPaste    = DeserializeAndPasteCallback;
            viewTransformChanged   = ViewTransformChangedCallback;

            RegisterCallback <DragPerformEvent>(DragPerformedCallback);
            RegisterCallback <DragUpdatedEvent>(DragUpdatedCallback);
            RegisterCallback <KeyDownEvent>(KeyDownCallback);
            RegisterCallback <MouseUpEvent>(MouseUpCallback);

            CreateNodeMenu = ScriptableObject.CreateInstance <CreateNodeMenuWindow>();
            CreateNodeMenu.Initialize(this, GetNodeTypes());
            nodeCreationRequest = c => SearchWindow.Open(new SearchWindowContext(c.screenMousePosition), CreateNodeMenu);
        }