diff --git a/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs b/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs index 7412ca4dc..bad441d20 100644 --- a/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs +++ b/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs @@ -96,14 +96,7 @@ namespace FlaxEditor.CustomEditors.Editors // Update tooltip if (_value is SceneObject sceneObject) { - var str = sceneObject is Actor actor ? actor.Name : type.Name; - var o = sceneObject.Parent; - while (o) - { - str = o.Name + " -> " + str; - o = o.Parent; - } - TooltipText = str; + TooltipText = Utilities.Utils.GetTooltip(sceneObject); } else { diff --git a/Source/Editor/CustomEditors/Editors/TypeEditor.cs b/Source/Editor/CustomEditors/Editors/TypeEditor.cs index 95b9d0f9d..8d32d6c3e 100644 --- a/Source/Editor/CustomEditors/Editors/TypeEditor.cs +++ b/Source/Editor/CustomEditors/Editors/TypeEditor.cs @@ -76,14 +76,7 @@ namespace FlaxEditor.CustomEditors.Editors if (_value) { _valueName = _value.Name; - TooltipText = _value.TypeName; - - var attributes = _value.GetAttributes(false); - var tooltipAttribute = (TooltipAttribute)attributes.FirstOrDefault(x => x is TooltipAttribute); - if (tooltipAttribute != null) - { - TooltipText += "\n" + tooltipAttribute.Text; - } + TooltipText = Surface.SurfaceUtils.GetVisualScriptTypeDescription(_value); } else { diff --git a/Source/Editor/GUI/Timeline/Tracks/ActorTrack.cs b/Source/Editor/GUI/Timeline/Tracks/ActorTrack.cs index 22dae35e0..8a4e4b4d2 100644 --- a/Source/Editor/GUI/Timeline/Tracks/ActorTrack.cs +++ b/Source/Editor/GUI/Timeline/Tracks/ActorTrack.cs @@ -103,7 +103,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks { if (selection.Count == 1 && selection[0] is ActorNode actorNode && actorNode.Actor && IsActorValid(actorNode.Actor)) { - menu.AddButton("Select " + actorNode.Actor, OnClickedSelectActor); + menu.AddButton("Select " + actorNode.Actor, OnClickedSelectActor).TooltipText = Utilities.Utils.GetTooltip(actorNode.Actor); } else { diff --git a/Source/Editor/GUI/Timeline/Tracks/ObjectTrack.cs b/Source/Editor/GUI/Timeline/Tracks/ObjectTrack.cs index 2ed5070c5..e8ef8794b 100644 --- a/Source/Editor/GUI/Timeline/Tracks/ObjectTrack.cs +++ b/Source/Editor/GUI/Timeline/Tracks/ObjectTrack.cs @@ -7,6 +7,7 @@ using System.Reflection; using System.Text; using FlaxEditor.CustomEditors; using FlaxEditor.GUI.ContextMenu; +using FlaxEditor.Scripting; using FlaxEngine; using FlaxEngine.GUI; @@ -197,8 +198,8 @@ namespace FlaxEditor.GUI.Timeline.Tracks AddMemberTag tag; tag.Member = m; tag.Archetype = EventTrack.GetArchetype(); - - menu.AddButton(sb.ToString(), OnAddMemberTrack).Tag = tag; + var tooltip = Surface.SurfaceUtils.GetVisualScriptMemberInfoDescription(new ScriptMemberInfo(m)); + menu.AddButton(sb.ToString(), OnAddMemberTrack).LinkTooltip(tooltip).Tag = tag; count++; } @@ -295,7 +296,8 @@ namespace FlaxEditor.GUI.Timeline.Tracks AddMemberTag tag; tag.Member = m; tag.Archetype = archetype; - menu.AddButton(name + " " + m.Name, OnAddMemberTrack).Tag = tag; + var tooltip = Surface.SurfaceUtils.GetVisualScriptMemberInfoDescription(new ScriptMemberInfo(m)); + menu.AddButton(name + " " + m.Name, OnAddMemberTrack).LinkTooltip(tooltip).Tag = tag; count++; } diff --git a/Source/Editor/Surface/Archetypes/Packing.cs b/Source/Editor/Surface/Archetypes/Packing.cs index 83d321577..c3866b101 100644 --- a/Source/Editor/Surface/Archetypes/Packing.cs +++ b/Source/Editor/Surface/Archetypes/Packing.cs @@ -122,10 +122,7 @@ namespace FlaxEditor.Surface.Archetypes { GetBox(0).CurrentType = type; Title = (_isUnpacking ? "Unpack " : "Pack ") + type.Name; - var attributes = type.GetAttributes(false); - var tooltipAttribute = (TooltipAttribute)attributes.FirstOrDefault(x => x is TooltipAttribute); - if (tooltipAttribute != null) - TooltipText += "\n" + tooltipAttribute.Text; + TooltipText = SurfaceUtils.GetVisualScriptTypeDescription(type); } else { diff --git a/Source/Editor/Surface/SurfaceUtils.cs b/Source/Editor/Surface/SurfaceUtils.cs index 74f1d6130..c86a5ae14 100644 --- a/Source/Editor/Surface/SurfaceUtils.cs +++ b/Source/Editor/Surface/SurfaceUtils.cs @@ -427,6 +427,22 @@ namespace FlaxEditor.Surface return !TypeUtils.IsDelegate(managedType); } + internal static string GetVisualScriptTypeDescription(ScriptType type) + { + var sb = new StringBuilder(); + if (type.IsStatic) + sb.Append("static "); + else if (type.IsAbstract) + sb.Append("abstract "); + sb.Append(type.TypeName); + + var attributes = type.GetAttributes(false); + var tooltipAttribute = (TooltipAttribute)attributes.FirstOrDefault(x => x is TooltipAttribute); + if (tooltipAttribute != null) + sb.Append("\n").Append(tooltipAttribute.Text); + return sb.ToString(); + } + internal static string GetVisualScriptMemberInfoDescription(ScriptMemberInfo member) { var name = member.Name; diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs index 721b5a0bc..5364cf3b8 100644 --- a/Source/Editor/Utilities/Utils.cs +++ b/Source/Editor/Utilities/Utils.cs @@ -76,6 +76,18 @@ namespace FlaxEditor.Utilities return string.Format("{0:0.##} {1}", bytes, MemorySizePostfixes[order]); } + internal static string GetTooltip(SceneObject obj) + { + var str = obj is Actor actor ? actor.Name : TypeUtils.GetObjectType(obj).Name; + var o = obj.Parent; + while (o) + { + str = o.Name + " -> " + str; + o = o.Parent; + } + return str; + } + /// /// The colors for the keyframes used by the curve editor. /// diff --git a/Source/Editor/Windows/ToolboxWindow.cs b/Source/Editor/Windows/ToolboxWindow.cs index 33827ea93..15d4a0948 100644 --- a/Source/Editor/Windows/ToolboxWindow.cs +++ b/Source/Editor/Windows/ToolboxWindow.cs @@ -204,14 +204,7 @@ namespace FlaxEditor.Windows continue; var item = _groupSearch.AddChild(CreateActorItem(CustomEditors.CustomEditorsUtil.GetPropertyNameUI(text), actorType)); - item.TooltipText = actorType.TypeName; - var attributes = actorType.GetAttributes(false); - var tooltipAttribute = (TooltipAttribute)attributes.FirstOrDefault(x => x is TooltipAttribute); - if (tooltipAttribute != null) - { - item.TooltipText += '\n'; - item.TooltipText += tooltipAttribute.Text; - } + item.TooltipText = Surface.SurfaceUtils.GetVisualScriptTypeDescription(actorType); var highlights = new List(ranges.Length); var style = Style.Current;