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); }
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); } } }
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); } } } }