public void Open(ScriptGraphAsset scriptGraphAsset) { this.scriptGraphAsset = scriptGraphAsset; graphView = new ScriptGraphView(this); this.rootVisualElement.Add(graphView); this.Show(); }
private void Load(ScriptGraphAsset asset) { var tempNodeList = new List <ScriptGraphNode>(asset.list.Count); foreach (var data in asset.list) { ScriptGraphNode node = ScriptNodeDeserializer.Deserialze(data); node.onNodeContentChanged = OnNodeContentChanged; this.AddElement(node); tempNodeList.Add(node); } foreach (ScriptGraphNode nodeLeft in tempNodeList) { int portIndex = 0; for (int i = 0; i < nodeLeft.outIds.Count; ++i) { int outputId = nodeLeft.outIds[i]; if (outputId <= 0) { portIndex++; continue; } foreach (ScriptGraphNode nodeRight in tempNodeList) { if (outputId == nodeRight.id) { Edge edge = new Edge() { output = nodeLeft.outputPorts[portIndex++], input = nodeRight.inputPort }; edge.output.Connect(edge); edge.input.Connect(edge); AddElement(edge); } } } } }
private static void ConvertToMacro() { var selection = GraphWindow.active?.reference?.graph?.Canvas().selection; if (selection != null && selection.Count > 0) { var path = EditorUtility.SaveFilePanelInProject("Save Selection to Script Graph Asset", "", "asset", ""); if (!string.IsNullOrEmpty(path)) { ConvertToEmbed(); var superUnit = selection.ToList()[0] as NestedNode; var asset = ScriptGraphAsset.CreateInstance <ScriptGraphAsset>(); AssetDatabase.CreateAsset(asset, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); asset.graph = superUnit.nest.embed; superUnit.nest.SwitchToMacro(asset); } } }