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;