diff --git a/Source/Editor/Surface/ContextMenu/VisjectCM.cs b/Source/Editor/Surface/ContextMenu/VisjectCM.cs
index b2b7507d5..e386fa668 100644
--- a/Source/Editor/Surface/ContextMenu/VisjectCM.cs
+++ b/Source/Editor/Surface/ContextMenu/VisjectCM.cs
@@ -667,6 +667,7 @@ namespace FlaxEditor.Surface.ContextMenu
_descriptionOutputPanel.RemoveChildren();
var spriteHandle = _surfaceStyle.Icons.BoxOpen;
+
if (archetype.Tag is ScriptMemberInfo memberInfo)
{
var name = memberInfo.Name;
@@ -681,39 +682,13 @@ namespace FlaxEditor.Surface.ContextMenu
if (!memberInfo.IsStatic)
{
_surfaceStyle.GetConnectionColor(declaringType, archetype.ConnectionsHints, out typeColor);
- _descriptionInputPanel.AddChild(new Image(2, 0, 12, 12)
- {
- Brush = new SpriteBrush(spriteHandle),
- Color = typeColor,
- MouseOverColor = typeColor,
- AutoFocus = false,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
- _descriptionInputPanel.AddChild(new Label(0,0,100, 16)
- {
- Text = $">Instance ({memberInfo.DeclaringType.Name})",
- HorizontalAlignment = TextAlignment.Near,
- VerticalAlignment = TextAlignment.Near,
- Wrapping = TextWrapping.NoWrap,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
+ AddInputElement(spriteHandle, typeColor, $">Instance ({memberInfo.DeclaringType.Name})");
}
if (memberInfo.ValueType != ScriptType.Null && memberInfo.ValueType != ScriptType.Void)
{
_surfaceStyle.GetConnectionColor(memberInfo.ValueType, archetype.ConnectionsHints, out typeColor);
- _descriptionOutputPanel.AddChild(new Image(2, 0, 12, 12)
- {
- Brush = new SpriteBrush(spriteHandle),
- Color = typeColor,
- MouseOverColor = typeColor,
- AutoFocus = false,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
- _descriptionOutputPanel.AddChild(new Label(0,0,100, 16)
- {
- Text = $">Return ({memberInfo.ValueType.Name})",
- HorizontalAlignment = TextAlignment.Near,
- VerticalAlignment = TextAlignment.Near,
- Wrapping = TextWrapping.NoWrap,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
+ AddOutputElement(spriteHandle, typeColor, $">Return ({memberInfo.ValueType.Name})");
}
for(int i = 0; i < memberInfo.ParametersCount; i++)
@@ -722,38 +697,11 @@ namespace FlaxEditor.Surface.ContextMenu
_surfaceStyle.GetConnectionColor(param.Type, archetype.ConnectionsHints, out typeColor);
if (param.IsOut)
{
- _descriptionOutputPanel.AddChild(new Image(2, 0, 12, 12)
- {
- Brush = new SpriteBrush(spriteHandle),
- Color = typeColor,
- MouseOverColor = typeColor,
- AutoFocus = false,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
- _descriptionOutputPanel.AddChild(new Label(12,0,100, 16)
- {
- Text = $"{param.Name} ({param.Type.Name})",
- HorizontalAlignment = TextAlignment.Near,
- VerticalAlignment = TextAlignment.Near,
- Wrapping = TextWrapping.NoWrap,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
-
+ AddOutputElement(spriteHandle, typeColor, $"{param.Name} ({param.Type.Name})");
continue;
}
-
- _descriptionInputPanel.AddChild(new Image(2, 0, 12, 12)
- {
- Brush = new SpriteBrush(spriteHandle),
- Color = typeColor,
- MouseOverColor = typeColor,
- AutoFocus = false,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
- _descriptionInputPanel.AddChild(new Label(12,0,100, 16)
- {
- Text = $"{param.Name} ({param.Type.Name})",
- HorizontalAlignment = TextAlignment.Near,
- VerticalAlignment = TextAlignment.Near,
- Wrapping = TextWrapping.NoWrap,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
+
+ AddInputElement(spriteHandle, typeColor, $"{param.Name} ({param.Type.Name})");
}
}
else
@@ -761,27 +709,18 @@ namespace FlaxEditor.Surface.ContextMenu
_descriptionSignatureLabel.Text = archetype.Signature;
declaringType = archetype.DefaultType;
+ Debug.Log(archetype.Elements);
foreach (var element in archetype.Elements)
{
if (element.Type == NodeElementType.Input)
{
- _descriptionInputPanel.AddChild(new Label(0,0,100, 16)
- {
- Text = element.Text,
- HorizontalAlignment = TextAlignment.Near,
- VerticalAlignment = TextAlignment.Near,
- Wrapping = TextWrapping.NoWrap,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
+ _surfaceStyle.GetConnectionColor(element.ConnectionsType, archetype.ConnectionsHints, out typeColor);
+ AddInputElement(spriteHandle, typeColor, element.Text);
}
else if (element.Type == NodeElementType.Output)
{
- _descriptionOutputPanel.AddChild(new Label(0,0,100, 16)
- {
- Text = element.Text,
- HorizontalAlignment = TextAlignment.Near,
- VerticalAlignment = TextAlignment.Near,
- Wrapping = TextWrapping.NoWrap,
- }).SetAnchorPreset(AnchorPresets.TopLeft, true);
+ _surfaceStyle.GetConnectionColor(element.ConnectionsType, archetype.ConnectionsHints, out typeColor);
+ AddOutputElement(spriteHandle, typeColor, element.Text);
}
}
}
@@ -810,6 +749,67 @@ namespace FlaxEditor.Surface.ContextMenu
Profiler.EndEvent();
}
+ private void AddInputElement(SpriteHandle sprite, Color typeColor, string text)
+ {
+ var elementPanel = new Panel()
+ {
+ Width = Width * 0.5f,
+ Height = 16,
+ Parent = _descriptionInputPanel,
+ AnchorPreset = AnchorPresets.TopLeft
+ };
+
+ elementPanel.AddChild(new Image(2, 0, 12, 12)
+ {
+ Brush = new SpriteBrush(sprite),
+ Color = typeColor,
+ MouseOverColor = typeColor,
+ AutoFocus = false,
+ }).SetAnchorPreset(AnchorPresets.TopLeft, true);
+
+ var elementText = new Label(16, 0, Width * 0.5f - 32, 16)
+ {
+ Text = text,
+ HorizontalAlignment = TextAlignment.Near,
+ VerticalAlignment = TextAlignment.Near,
+ Wrapping = TextWrapping.WrapWords,
+ AutoHeight = true,
+ };
+ elementText.SetAnchorPreset(AnchorPresets.TopLeft, true);
+ elementPanel.AddChild(elementText);
+ elementPanel.Height = elementText.Height;
+ }
+
+ private void AddOutputElement(SpriteHandle sprite, Color typeColor, string text)
+ {
+ var elementPanel = new Panel()
+ {
+ Width = Width * 0.5f,
+ Height = 16,
+ Parent = _descriptionOutputPanel,
+ AnchorPreset = AnchorPresets.TopLeft
+ };
+
+ elementPanel.AddChild(new Image(2, 0, 12, 12)
+ {
+ Brush = new SpriteBrush(sprite),
+ Color = typeColor,
+ MouseOverColor = typeColor,
+ AutoFocus = false,
+ }).SetAnchorPreset(AnchorPresets.TopLeft, true);
+
+ var elementText = new Label(16, 0, Width * 0.5f - 32, 16)
+ {
+ Text = text,
+ HorizontalAlignment = TextAlignment.Near,
+ VerticalAlignment = TextAlignment.Near,
+ Wrapping = TextWrapping.NoWrap,
+ };
+ elementText.SetAnchorPreset(AnchorPresets.TopLeft, true);
+ elementPanel.AddChild(elementText);
+ elementPanel.Height = elementText.Height;
+ }
+
///
/// Hides the description panel and resets the context menu to its original size
///
diff --git a/Source/Editor/Surface/VisualScriptSurface.cs b/Source/Editor/Surface/VisualScriptSurface.cs
index 39a705ff9..7ee3a381b 100644
--- a/Source/Editor/Surface/VisualScriptSurface.cs
+++ b/Source/Editor/Surface/VisualScriptSurface.cs
@@ -422,6 +422,7 @@ namespace FlaxEditor.Surface
node.Signature = SurfaceUtils.GetVisualScriptMemberInfoSignature(member);
node.Description = SurfaceUtils.GetVisualScriptMemberShortDescription(member);
node.SubTitle = string.Format(" (in {0})", scriptTypeName);
+ node.Tag = member;
// Create group archetype
var groupKey = new KeyValuePair(scriptTypeName, 16);
@@ -457,6 +458,7 @@ namespace FlaxEditor.Surface
node.Signature = SurfaceUtils.GetVisualScriptMemberInfoSignature(member);
node.Description = SurfaceUtils.GetVisualScriptMemberShortDescription(member);
node.SubTitle = string.Format(" (in {0})", scriptTypeName);
+ node.Tag = member;
// Create group archetype
var groupKey = new KeyValuePair(scriptTypeName, 16);
@@ -516,6 +518,7 @@ namespace FlaxEditor.Surface
bindNode.Signature = SurfaceUtils.GetVisualScriptMemberInfoSignature(member);
bindNode.Description = SurfaceUtils.GetVisualScriptMemberShortDescription(member);
bindNode.SubTitle = string.Format(" (in {0})", scriptTypeName);
+ bindNode.Tag = member;
((IList)group.Archetypes).Add(bindNode);
// Add Unbind event node
@@ -527,6 +530,7 @@ namespace FlaxEditor.Surface
unbindNode.Signature = bindNode.Signature;
unbindNode.Description = bindNode.Description;
unbindNode.SubTitle = bindNode.SubTitle;
+ unbindNode.Tag = member;
((IList)group.Archetypes).Add(unbindNode);
#if DEBUG_EVENTS_SEARCHING