diff --git a/Source/Editor/EditorIcons.cs b/Source/Editor/EditorIcons.cs
index d4b89b8d3..ff3164dcc 100644
--- a/Source/Editor/EditorIcons.cs
+++ b/Source/Editor/EditorIcons.cs
@@ -46,6 +46,10 @@ namespace FlaxEditor
public SpriteHandle Down32;
public SpriteHandle FolderClosed32;
public SpriteHandle FolderOpen32;
+ public SpriteHandle FolderFill32;
+ public SpriteHandle Info32;
+ public SpriteHandle Warning32;
+ public SpriteHandle Error32;
// Visject
public SpriteHandle VisjectBoxOpen32;
@@ -128,6 +132,10 @@ namespace FlaxEditor
public SpriteHandle AndroidIcon128;
public SpriteHandle PS4Icon128;
public SpriteHandle FlaxLogo128;
+ public SpriteHandle SwitchIcon128;
+ public SpriteHandle SwitchSettings128;
+ public SpriteHandle Json128;
+ public SpriteHandle LocalizationSettings128;
internal void LoadIcons()
{
diff --git a/Source/Editor/Windows/Assets/VisualScriptWindow.cs b/Source/Editor/Windows/Assets/VisualScriptWindow.cs
index b9ddafa87..545f15867 100644
--- a/Source/Editor/Windows/Assets/VisualScriptWindow.cs
+++ b/Source/Editor/Windows/Assets/VisualScriptWindow.cs
@@ -167,6 +167,8 @@ namespace FlaxEditor.Windows.Assets
///
public override DisplayStyle Style => DisplayStyle.InlineIntoParent;
+ private Control _overrideButton;
+
///
public override void Initialize(LayoutElementsContainer layout)
{
@@ -178,6 +180,21 @@ namespace FlaxEditor.Windows.Assets
var group = layout.Group("Functions");
var nodes = window.VisjectSurface.Nodes;
+ var grid = group.CustomContainer();
+ var gridControl = grid.CustomControl;
+ gridControl.ClipChildren = false;
+ gridControl.Height = Button.DefaultHeight;
+ gridControl.SlotsHorizontally = 2;
+ gridControl.SlotsVertically = 1;
+
+ var addOverride = grid.Button("Add Override");
+ addOverride.Button.Clicked += OnOverrideMethodClicked;
+ // TODO: Add sender arg to button clicked action?
+ _overrideButton = addOverride.Control;
+
+ var addFuncction = grid.Button("Add Function");
+ addFuncction.Button.Clicked += OnAddNewFunctionClicked;
+
// List of functions in the graph
for (int i = 0; i < nodes.Count; i++)
{
@@ -192,60 +209,20 @@ namespace FlaxEditor.Windows.Assets
}
else if (node is Surface.Archetypes.Function.MethodOverrideNode overrideNode)
{
- var label = group.ClickableLabel(overrideNode.Title + " (override)").CustomControl;
+ var label = group.ClickableLabel($"{overrideNode.Title} (override)").CustomControl;
label.TextColorHighlighted = Color.FromBgra(0xFFA0A0A0);
label.TooltipText = overrideNode.TooltipText;
label.DoubleClick += () => ((VisualScriptWindow)Values[0]).Surface.FocusNode(overrideNode);
label.RightClick += () => ShowContextMenu(overrideNode, label);
}
}
-
- // New function button
- const float groupPanelButtonSize = 14;
- var addNewFunction = new Image
- {
- TooltipText = "Add new function",
- AutoFocus = true,
- AnchorPreset = AnchorPresets.TopRight,
- Parent = group.Panel,
- Bounds = new Rectangle(group.Panel.Width - groupPanelButtonSize, 0, groupPanelButtonSize, groupPanelButtonSize),
- IsScrollable = false,
- Color = FlaxEngine.GUI.Style.Current.ForegroundGrey,
- Margin = new Margin(1),
- Brush = new SpriteBrush(Editor.Instance.Icons.Add64),
- };
- addNewFunction.Clicked += OnAddNewFunctionClicked;
-
- // Override method button
- var overrideMethod = new Image
- {
- TooltipText = "Override method",
- AutoFocus = true,
- AnchorPreset = AnchorPresets.TopRight,
- Parent = group.Panel,
- Bounds = new Rectangle(group.Panel.Width - groupPanelButtonSize * 2, 0, groupPanelButtonSize, groupPanelButtonSize),
- IsScrollable = false,
- Color = FlaxEngine.GUI.Style.Current.ForegroundGrey,
- Margin = new Margin(1),
- Brush = new SpriteBrush(Editor.Instance.Icons.Import64),
- };
- overrideMethod.Clicked += OnOverrideMethodClicked;
- }
-
- private void OnAddNewFunctionClicked(Image image, MouseButton button)
- {
- if (button != MouseButton.Left)
- return;
- var surface = ((VisualScriptWindow)Values[0]).Surface;
- var surfaceBounds = surface.AllNodesBounds;
- surface.ShowArea(new Rectangle(surfaceBounds.BottomLeft, new Vector2(200, 150)).MakeExpanded(400.0f));
- var node = surface.Context.SpawnNode(16, 6, surfaceBounds.BottomLeft + new Vector2(0, 50));
- surface.Select(node);
}
private void ShowContextMenu(SurfaceNode node, ClickableLabel label)
{
+ // TODO: Execute only on "Edit Signature...", this makes the "Show" button useless
((VisualScriptWindow)Values[0]).Surface.FocusNode(node);
+
var cm = new ContextMenu();
cm.AddButton("Show", () => ((VisualScriptWindow)Values[0]).Surface.FocusNode(node)).Icon = Editor.Instance.Icons.Search12;
cm.AddButton("Delete", () => ((VisualScriptWindow)Values[0]).Surface.Delete(node)).Icon = Editor.Instance.Icons.Cross12;
@@ -253,11 +230,17 @@ namespace FlaxEditor.Windows.Assets
cm.Show(label, new Vector2(0, label.Height));
}
- private void OnOverrideMethodClicked(Image image, MouseButton button)
+ private void OnAddNewFunctionClicked()
{
- if (button != MouseButton.Left)
- return;
+ var surface = ((VisualScriptWindow)Values[0]).Surface;
+ var surfaceBounds = surface.AllNodesBounds;
+ surface.ShowArea(new Rectangle(surfaceBounds.BottomLeft, new Vector2(200, 150)).MakeExpanded(400.0f));
+ var node = surface.Context.SpawnNode(16, 6, surfaceBounds.BottomLeft + new Vector2(0, 50));
+ surface.Select(node);
+ }
+ private void OnOverrideMethodClicked()
+ {
var cm = new ContextMenu();
var window = (VisualScriptWindow)Values[0];
var scriptMeta = window.Asset.Meta;
@@ -310,7 +293,7 @@ namespace FlaxEditor.Windows.Assets
{
cm.AddButton("Nothing to override");
}
- cm.Show(image, new Vector2(0, image.Height));
+ cm.Show(_overrideButton, new Vector2(0, _overrideButton.Height));
}
}