# Description This module contains a few helpful editor tools, like favorites, history and some handy toolbar tools. ## Favorites An editor window, where you can pin folders and assets, so you can easily find the most used assets in your project. ## History An editor window, where the history of all selected assets are shown. An asset in the window can be selected to easy get back to previous selections. ## Toolbar Toolbars to the left and right of the play-buttons. Anything can be added, as long as it is supported by IMGUI. ### Default tools Three tools are available from start: * UI Layer: Toggle the UI layer on/off * UI Canvas: Select and center the camera on any Canvases in the scene * Scene: Load any scene in the project easily by using the dropdown * Time Scale: Adjust the time scale from [0;1] from a slider ### Customization You can create your own toolbar extensions by extending `AbstractToolbarDrawer`. ``` internal sealed class MyCustomTool : AbstractToolbarDrawer { public override bool Visible => true; public override bool Enabled => true; public override EToolbarPlacement Placement => EToolbarPlacement.Left; public override int Priority => (int)EToolbarPriority.Medium; protected override void Draw(Rect rect) { // Use IMGUI methods for drawing } public override float CalculateWidth() { // Default height for toolbar buttons is 30 return 30.0f; } } ``` The four properties help define draw and enable state: * `Visible`: If it is visible in the toolbar * `Enabled`: If it is enabled in the toolbar (`GUI.enabled`) * `Placement`: If it is placed to the left or right of the play-buttons * `Priority`: Sort order/priority, when drawing the tool ### Customization - Settings To add enable/disable settings or more to Preferences -> Toolbar, you can implement `IToolbarSettings`. ``` internal sealed class ToolbarUiSettings : IToolbarSettings { public string Title => "UI"; private const string PREF_IS_UI_ENABLED = "ToolbarSettings_IsUiEnabled"; private const string PREF_IS_UI_LAYER_ENABLED = "ToolbarSettings_IsUiLayerEnabled"; public static bool IsUiEnabled { get => EditorPrefs.GetBool(PREF_IS_UI_ENABLED, false); set => EditorPrefs.SetBool(PREF_IS_UI_ENABLED, value); } public static bool IsUiLayerEnabled { get => EditorPrefs.GetBool(PREF_IS_UI_LAYER_ENABLED, false); set => EditorPrefs.SetBool(PREF_IS_UI_LAYER_ENABLED, value); } public void Draw() { IsUiEnabled = EditorGUILayout.Toggle("Enable Canvas picker", IsUiEnabled); IsUiLayerEnabled = EditorGUILayout.Toggle("Enable Layer toggle", IsUiLayerEnabled); } } ```