From 99c10e5ed3c6037c751e4d2227941900c3978062 Mon Sep 17 00:00:00 2001 From: Nils Hausfeld Date: Mon, 10 Jun 2024 23:14:24 +0200 Subject: [PATCH] - Now correctly fetching signature and description for properties - Minor code cleanup --- .../Editor/Surface/ContextMenu/VisjectCM.cs | 19 ++++++++++++++--- Source/Editor/Surface/SurfaceUtils.cs | 21 ++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/Source/Editor/Surface/ContextMenu/VisjectCM.cs b/Source/Editor/Surface/ContextMenu/VisjectCM.cs index ce2b5d12b..2844d16b0 100644 --- a/Source/Editor/Surface/ContextMenu/VisjectCM.cs +++ b/Source/Editor/Surface/ContextMenu/VisjectCM.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using FlaxEditor.GUI.ContextMenu; using FlaxEditor.GUI.Input; +using FlaxEditor.Scripting; using FlaxEngine; using FlaxEngine.GUI; using FlaxEngine.Utilities; @@ -638,15 +639,27 @@ namespace FlaxEditor.Surface.ContextMenu } Profiler.BeginEvent("VisjectCM.SetDescriptionPanelArchetype"); - - _descriptionSignatureLabel.Text = archetype.Signature; + + if (archetype.Tag is ScriptMemberInfo memberInfo) + { + var name = memberInfo.Name; + if (memberInfo.IsMethod && memberInfo.Name.StartsWith("get_") || memberInfo.Name.StartsWith("set_")) + { + name = memberInfo.Name.Substring(4); + } + + _descriptionSignatureLabel.Text = memberInfo.DeclaringType + "." + name; + } + else + _descriptionSignatureLabel.Text = archetype.Signature; + float panelHeight = _descriptionSignatureLabel.Height; _descriptionLabel.Y = _descriptionSignatureLabel.Bounds.Bottom + 6f; _descriptionLabel.Text = archetype.Description; panelHeight += _descriptionLabel.Height + 6f + 18f; - + _descriptionPanel.Height = panelHeight; Height = 400 + Mathf.RoundToInt(_descriptionPanel.Height); UpdateWindowSize(); diff --git a/Source/Editor/Surface/SurfaceUtils.cs b/Source/Editor/Surface/SurfaceUtils.cs index 936aa52eb..8e14787b6 100644 --- a/Source/Editor/Surface/SurfaceUtils.cs +++ b/Source/Editor/Surface/SurfaceUtils.cs @@ -440,7 +440,7 @@ namespace FlaxEditor.Surface return sb.ToString(); } - internal static string GetVisualScriptMemberInfoSignature(ScriptMemberInfo member, bool appendPropertyInfo = true) + internal static string GetVisualScriptMemberInfoSignature(ScriptMemberInfo member) { var name = member.Name; var declaringType = member.DeclaringType; @@ -454,7 +454,7 @@ namespace FlaxEditor.Surface var property = declaringType.GetMembers(name.Substring(4), MemberTypes.Property, flags); if (property != null && property.Length != 0) { - return GetVisualScriptMemberInfoDescription(property[0]); + return GetVisualScriptMemberInfoSignature(property[0]); } } @@ -483,7 +483,7 @@ namespace FlaxEditor.Surface } sb.Append(')'); } - else if (member.IsProperty && appendPropertyInfo) + else if (member.IsProperty) { sb.Append(' '); sb.Append('{'); @@ -500,6 +500,21 @@ namespace FlaxEditor.Surface internal static string GetVisualScriptMemberShortDescription(ScriptMemberInfo member) { + var name = member.Name; + var declaringType = member.DeclaringType; + + // Getter/setter method of the property - we can return early here + bool isGetterOrSetter = name.StartsWith("get_") || name.StartsWith("set_"); + if (member.IsMethod && isGetterOrSetter) + { + var flags = member.IsStatic ? BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly : BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly; + var property = declaringType.GetMembers(name.Substring(4), MemberTypes.Property, flags); + if (property != null && property.Length != 0) + { + return GetVisualScriptMemberShortDescription(property[0]); + } + } + return Editor.Instance.CodeDocs.GetTooltip(member); }