diff --git a/Assets/AsmdefGraph/Editor/AsmdefGraphEditorWindow.cs b/Assets/AsmdefGraph/Editor/AsmdefGraphEditorWindow.cs index 5c6ba8a..7a9221b 100644 --- a/Assets/AsmdefGraph/Editor/AsmdefGraphEditorWindow.cs +++ b/Assets/AsmdefGraph/Editor/AsmdefGraphEditorWindow.cs @@ -1,4 +1,6 @@ -using UnityEditor; +using System.IO; +using System.Linq; +using UnityEditor; namespace AsmdefGraph.Editor { public class AsmdefGraphEditorWindow : EditorWindow { @@ -8,7 +10,14 @@ namespace AsmdefGraph.Editor { } void OnEnable() { - var graphView = new AsmdefGraphView() { + // プロジェクトのasmdefを全検索 + var asmdefs = Directory.EnumerateFiles( + Directory.GetCurrentDirectory(), "*.asmdef", SearchOption.AllDirectories); + var asmdefNames = asmdefs + .Select(x => x.Split('\\').LastOrDefault()) + .Select(x => x.Replace(".asmdef", "")) + .Where(x => !string.IsNullOrEmpty(x)); + var graphView = new AsmdefGraphView(asmdefNames) { style = { flexGrow = 1 } }; rootVisualElement.Add(graphView); diff --git a/Assets/AsmdefGraph/Editor/AsmdefGraphView.cs b/Assets/AsmdefGraph/Editor/AsmdefGraphView.cs index 952ab23..fc4604f 100644 --- a/Assets/AsmdefGraph/Editor/AsmdefGraphView.cs +++ b/Assets/AsmdefGraph/Editor/AsmdefGraphView.cs @@ -4,16 +4,16 @@ using UnityEngine.UIElements; namespace AsmdefGraph.Editor { public class AsmdefGraphView : GraphView { - public AsmdefGraphView() : base() { + public AsmdefGraphView(IEnumerable asmdefs) : base() { // zoom可能に SetupZoom(ContentZoomer.DefaultMinScale, ContentZoomer.DefaultMaxScale); // 背景を黒に Insert(0, new GridBackground()); // ドラッグによる移動可能に this.AddManipulator(new SelectionDragger()); - AddElement(new AsmdefNode()); - AddElement(new AsmdefNode()); - AddElement(new AsmdefNode()); + foreach (var asmdef in asmdefs) { + AddElement(new AsmdefNode(asmdef)); + } } public override List GetCompatiblePorts(Port startAnchor, NodeAdapter nodeAdapter) { diff --git a/Assets/AsmdefGraph/Editor/AsmdefNode.cs b/Assets/AsmdefGraph/Editor/AsmdefNode.cs index ddfafec..720ba3c 100644 --- a/Assets/AsmdefGraph/Editor/AsmdefNode.cs +++ b/Assets/AsmdefGraph/Editor/AsmdefNode.cs @@ -2,8 +2,8 @@ namespace AsmdefGraph.Editor { public class AsmdefNode : Node { - public AsmdefNode() { - title = "AsmdefNode"; + public AsmdefNode(string nodeName) { + title = nodeName; var inputPort = Port.Create(Orientation.Horizontal, Direction.Input, Port.Capacity.Multi, typeof(Port)); inputPort.portName = "In";