private void ShowNodeCreationPopup(Vector2 mousePos, Action <Type> callback)
        {
            var picker = ScriptableObject.CreateInstance <ActionNodePicker>();
            var size   = new Vector2(300, 400);
            var rect   = new Rect(mousePos.x, mousePos.y, 100, 100);

            picker.Data = ReferenceTypePicker.BuildTypeList(string.Empty, type => type.IsSubclassOf(typeof(ActionGraphNode))).ToList();
            // picker.position = rect;
            picker.OnElementPicked = callback;
            // picker.CloseOnLostFocus = false;
            picker.ShowAsDropDown(rect, size);
        }
Exemplo n.º 2
0
        public void RecreateNodes(ActionGraph asset)
        {
            if (NodeLookup != null)
            {
                NodeLookup.Clear();
            }
            else
            {
                NodeLookup = new Dictionary <ActionGraphNode, ActionGraphEditorNode>();
            }

            Begin = null;
            Nodes.ClearNodes();

            if (asset)
            {
                Nodes.ScrollPos = asset.EditorPos;

                Begin = new BeginNode(asset, Presenter);

                Nodes.AddNode(Begin);

                NodeEditors = ReferenceTypePicker.BuildTypeList(string.Empty,
                                                                t => t.IsSubclassOf(typeof(ActionGraphEditorNode))
                                                                ).ToList();

                foreach (ActionGraphNode node in asset.Nodes)
                {
                    CreateNodeEditor(node, asset);
                }

                foreach (GraphNode graphNode in Nodes.AllNodes.Where(t => t is ActionGraphEditorNode))
                {
                    var asGraph = (ActionGraphEditorNode)graphNode;
                    foreach (var childNode in asGraph.ActionNode.Connections)
                    {
                        ConnectNodeEditor(asGraph, childNode);
                    }
                }

                foreach (ActionGraphNode graphNode in asset.Inputs.SelectMany(i => i.Nodes))
                {
                    if (!graphNode)
                    {
                        continue;
                    }

                    ConnectNodeEditor(Begin, graphNode);
                }
            }
        }
Exemplo n.º 3
0
        public void RecreateNodes(ActionGraph asset)
        {
            using (new GraphNode.NodeRecreationContext())
            {
                if (NodeLookup != null)
                {
                    NodeLookup.Clear();
                }
                else
                {
                    NodeLookup = new Dictionary <ActionGraphNodeBase, ActionGraphEditorNode>();
                }

                ActionGraphEditorNode.WindowStyle = SpaceEditorStyles.GraphNodeBackground;

                Nodes.ClearNodes();

                if (asset)
                {
                    Nodes.ScrollPos = asset.EditorPos;

                    NodeEditors = ReferenceTypePicker.BuildTypeList(string.Empty,
                                                                    t => t.IsSubclassOf(typeof(ActionGraphEditorNode))
                                                                    ).ToList();

                    if (asset.AnyEntryNode)
                    {
                        CreateNodeEditor(asset.AnyEntryNode, asset);
                    }

                    foreach (var entry in asset.NamedEventEntries)
                    {
                        CreateNodeEditor(entry, asset);
                    }

                    foreach (ActionGraphNode node in asset.Nodes)
                    {
                        CreateNodeEditor(node, asset);
                    }

                    foreach (GraphNode graphNode in Nodes.AllNodes.Where(t => t is ActionGraphEditorNode))
                    {
                        var asGraph = (ActionGraphEditorNode)graphNode;

                        asGraph.RebuildConnections(LookupEditorNode);
                    }
                }
            }
        }