// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik // #if UNITY_EDITOR using UnityEditor; using UnityEngine; namespace Animancer.Editor { /// [Editor-Only] s for a group of connected buttons. /// https://kybernetik.com.au/animancer/api/Animancer.Editor/ButtonGroupStyles public struct ButtonGroupStyles { /************************************************************************************************************************/ /// The style for the button on the far left. public GUIStyle left; /// The style for any buttons in the middle. public GUIStyle middle; /// The style for the button on the far right. public GUIStyle right; /************************************************************************************************************************/ /// Creates a new . public ButtonGroupStyles( GUIStyle left, GUIStyle middle, GUIStyle right) { this.left = left; this.middle = middle; this.right = right; } /************************************************************************************************************************/ /// Copies any null values from another group. public void CopyMissingStyles(ButtonGroupStyles copyFrom) { left ??= copyFrom.left; middle ??= copyFrom.middle; right ??= copyFrom.right; } /************************************************************************************************************************/ /// The default styles for a mini button. public static ButtonGroupStyles MiniButton => new( EditorStyles.miniButtonLeft, EditorStyles.miniButtonMid, EditorStyles.miniButtonRight); /************************************************************************************************************************/ private static ButtonGroupStyles _Button; /// The default styles for a button. public static ButtonGroupStyles Button { get { _Button.left ??= MiniToRegularButtonStyle(EditorStyles.miniButtonLeft); _Button.middle ??= MiniToRegularButtonStyle(EditorStyles.miniButtonMid); _Button.right ??= MiniToRegularButtonStyle(EditorStyles.miniButtonRight); return _Button; } } /************************************************************************************************************************/ /// Creates a copy of the `style` with the size of a regular button. public static GUIStyle MiniToRegularButtonStyle(GUIStyle style) => new(style) { fixedHeight = 0, padding = GUI.skin.button.padding, stretchWidth = false, }; /************************************************************************************************************************/ } } #endif