using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace Module.NavigationTool.Editor.Toolbar { internal static class ToolbarSettingsProvider { private static Styles STYLES; private static IToolbarSettings[] SETTINGS; [SettingsProvider] public static SettingsProvider GetProvider() { Initialize(); var keywords = new List { "Toolbar" }; for (var i = 0; i < SETTINGS.Length; i++) { keywords.Add(SETTINGS[i].Title); } return new SettingsProvider("Module/Toolbar", SettingsScope.User) { label = "Toolbar", keywords = keywords.ToArray(), guiHandler = OnGui }; } private static void Initialize() { if (STYLES == null) STYLES = new Styles(); if (SETTINGS == null) SETTINGS = ToolbarSettingsUtility.GetAllSettings(); } private static void OnGui(string searchContext) { Initialize(); STYLES.Initialize(GUI.skin); EditorGUILayout.BeginVertical(STYLES.settingsGroup); { for (var i = 0; i < SETTINGS.Length; i++) { IToolbarSettings settings = SETTINGS[i]; EditorGUILayout.LabelField(settings.Title, EditorStyles.boldLabel); settings.Draw(); EditorGUILayout.Space(); } } EditorGUILayout.EndVertical(); } } }