diff --git a/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs b/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs index d312f64b2..46c4066f2 100644 --- a/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs +++ b/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs @@ -115,7 +115,7 @@ namespace FlaxEditor.CustomEditors.Dedicated { if (actor != null) group.Panel.TooltipText = Surface.SurfaceUtils.GetVisualScriptTypeDescription(TypeUtils.GetObjectType(actor)); - var settingsButton = group.AddSettingsButton(); + var settingsButton = group.AddHeaderButton("Settings.", 0.0f, FlaxEngine.GUI.Style.Current.Settings); settingsButton.Clicked += OnSettingsButtonClicked; break; } diff --git a/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs b/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs index 954599347..ef7a137f6 100644 --- a/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs +++ b/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs @@ -640,7 +640,7 @@ namespace FlaxEditor.CustomEditors.Dedicated var group = layout.Group("Missing script"); // Add settings button to the group - var settingsButton = group.AddSettingsButton(); + var settingsButton = group.AddHeaderButton("Settings.", 0.0f, FlaxEngine.GUI.Style.Current.Settings); settingsButton.Tag = index; settingsButton.Clicked += MissingSettingsButtonOnClicked; } @@ -739,6 +739,8 @@ namespace FlaxEditor.CustomEditors.Dedicated /// public override void Initialize(LayoutElementsContainer layout) { + var _style = FlaxEngine.GUI.Style.Current; + // Area for drag&drop scripts var dragArea = layout.CustomContainer(); dragArea.CustomControl.ScriptsEditor = this; @@ -905,11 +907,30 @@ namespace FlaxEditor.CustomEditors.Dedicated }; // Add settings button to the group - var settingsButton = group.AddSettingsButton(); + var settingsButton = group.AddHeaderButton("Settings.", 0.0f, _style.Settings); settingsButton.Tag = script; settingsButton.Clicked += OnSettingsButtonClicked; - group.Panel.HeaderTextMargin = new Margin(scriptDrag.Right - 12, 15, 2, 2); + // Add script obsolete icon to the group + if (scriptType.HasAttribute(typeof(ObsoleteAttribute), false)) + { + ObsoleteAttribute attribute = null; + foreach (var e in scriptType.GetAttributes(false)) + { + if (e is not ObsoleteAttribute obsoleteAttribute) + continue; + attribute = obsoleteAttribute; + break; + } + + string tooltip = "Script marked as obsolete." + + (string.IsNullOrEmpty(attribute.Message) ? "" : $"\n{attribute.Message}") + + (string.IsNullOrEmpty(attribute.DiagnosticId) ? "" : $"\n{attribute.DiagnosticId}"); + var obsoleteButton = group.AddHeaderButton(tooltip, settingsButton.Width + FlaxEditor.Utilities.Constants.UIMargin, Editor.Instance.Icons.Info32); + obsoleteButton.Color = Color.Orange; + } + + group.Panel.HeaderTextMargin = new Margin(scriptDrag.Right - 12, 35, 2, 2); group.Object(values, editor); // Remove drop down arrows and containment lines if no objects in the group if (group.Children.Count == 0) diff --git a/Source/Editor/CustomEditors/Elements/Container/GroupElement.cs b/Source/Editor/CustomEditors/Elements/Container/GroupElement.cs index 64bc9080b..e2db8b69e 100644 --- a/Source/Editor/CustomEditors/Elements/Container/GroupElement.cs +++ b/Source/Editor/CustomEditors/Elements/Container/GroupElement.cs @@ -40,21 +40,21 @@ namespace FlaxEditor.CustomEditors.Elements /// Adds utility settings button to the group header. /// /// The created control. - public Image AddSettingsButton() + public Image AddHeaderButton(string tooltipText, float xOffset, SpriteHandle sprite) { var style = Style.Current; var settingsButtonSize = Panel.HeaderHeight; return new Image { - TooltipText = "Settings", + TooltipText = tooltipText, AutoFocus = true, AnchorPreset = AnchorPresets.TopRight, Parent = Panel, - Bounds = new Rectangle(Panel.Width - settingsButtonSize, 0, settingsButtonSize, settingsButtonSize), + Bounds = new Rectangle(Panel.Width - settingsButtonSize - xOffset, 0, settingsButtonSize, settingsButtonSize), IsScrollable = false, Color = style.ForegroundGrey, Margin = new Margin(1), - Brush = new SpriteBrush(style.Settings), + Brush = new SpriteBrush(sprite), }; } } diff --git a/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs b/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs index cb39930f9..b6b67e191 100644 --- a/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs +++ b/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs @@ -249,7 +249,7 @@ namespace FlaxEditor.Windows.Assets return; var parametersGroup = SurfaceUtils.InitGraphParametersGroup(layout); - var settingButton = parametersGroup.AddSettingsButton(); + var settingButton = parametersGroup.AddHeaderButton("Settings.", 0.0f, FlaxEngine.GUI.Style.Current.Settings); settingButton.Clicked += (image, button) => OnSettingsButtonClicked(image, button, proxy.Window); var baseMaterial = materialInstance.BaseMaterial; var material = baseMaterial; diff --git a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs index 392cc896a..073cf7614 100644 --- a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs +++ b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs @@ -284,7 +284,7 @@ namespace FlaxEditor.Windows.Assets var setupGroup = layout.Group(Path.GetFileNameWithoutExtension(sourceAsset.Path)); setupGroup.Panel.Tag = sourceAsset; setupGroup.Panel.MouseButtonRightClicked += OnPanelHeaderRightClicked; - var settingsButton = setupGroup.AddSettingsButton(); + var settingsButton = setupGroup.AddHeaderButton("Settings.", 0.0f, FlaxEngine.GUI.Style.Current.Settings); settingsButton.Tag = sourceAsset; settingsButton.Clicked += OnShowSetupSettings;