diff --git a/Editor/PlayableGraphVisualizerWindow.cs b/Editor/PlayableGraphVisualizerWindow.cs index c9c3560..82aff10 100644 --- a/Editor/PlayableGraphVisualizerWindow.cs +++ b/Editor/PlayableGraphVisualizerWindow.cs @@ -46,10 +46,16 @@ private PlayableGraph GetSelectedGraphInToolBar(List graphs, Play List options = new List(graphs.Count); foreach (var graph in graphs) { - string name = graph.GetEditorName(); + string name = GraphVisualizerClient.GetName(graph); + if (name == null) + { + name = graph.GetEditorName(); + } options.Add(name.Length != 0 ? name : "[Unnamed]"); } + options.Sort(); + int currentSelection = graphs.IndexOf(currentGraph); int newSelection = EditorGUILayout.Popup(currentSelection != -1 ? currentSelection : 0, options.ToArray(), GUILayout.Width(200)); diff --git a/Runtime/GraphVisualizerClient.cs b/Runtime/GraphVisualizerClient.cs index 728f26e..b7f0cc5 100644 --- a/Runtime/GraphVisualizerClient.cs +++ b/Runtime/GraphVisualizerClient.cs @@ -7,6 +7,7 @@ public class GraphVisualizerClient { private static GraphVisualizerClient s_Instance; private List m_Graphs = new List(); + private Dictionary m_GraphNames = new Dictionary(); public static GraphVisualizerClient instance { @@ -24,19 +25,27 @@ public static GraphVisualizerClient instance } public static void Show(PlayableGraph graph) + { +#if UNITY_EDITOR + Show(graph, graph.GetEditorName()); +#else + Show(graph, null); +#endif + } + + public static void Show(PlayableGraph graph, string name) { if (!instance.m_Graphs.Contains(graph)) { instance.m_Graphs.Add(graph); } + instance.m_GraphNames[graph] = name; } public static void Hide(PlayableGraph graph) { - if (instance.m_Graphs.Contains(graph)) - { - instance.m_Graphs.Remove(graph); - } + instance.m_Graphs.Remove(graph); + instance.m_GraphNames.Remove(graph); } public static void ClearGraphs() @@ -48,4 +57,13 @@ public static IEnumerable GetGraphs() { return instance.m_Graphs; } + + public static string GetName(PlayableGraph graph) + { + if (instance.m_GraphNames.TryGetValue(graph, out var name)) + { + return name; + } + return null; + } }