// The window function. This works just like ingame GUI.Window private void DrawWindow(int unusedWindowID) { _searchText = GUILayout.TextField(_searchText, GUI.skin.FindStyle("ToolbarSeachTextField"), GUILayout.Height(50)); var typeNames = nodeTypes.Select(x => new { type = x, name = GetNodeMenuName(x), tags = GetNodeMenuTags(x) }) .Where(x => !string.IsNullOrEmpty(x.tags.Union(new[] { x.name }).FirstOrDefault(tag => tag.ToLower().Contains(_searchText.ToLower())))) .ToArray(); foreach (var availableNodeType in typeNames) { if (GUILayout.Button(Path.GetFileName(availableNodeType.name), GUILayout.Height(50))) { graphEditor.CreateNode(availableNodeType.type, Vector2.zero); currentActivity = NodeActivity.Idle; Repaint(); } } if (GUILayout.Button("Preferences")) { NodeEditorWindow.OpenPreferences(); currentActivity = NodeActivity.Idle; Repaint(); } GUI.DragWindow(); }