Merge remote-tracking branch 'origin/master' into 1.7

# Conflicts:
#	Source/Engine/Level/Actors/AnimatedModel.cpp
This commit is contained in:
Wojtek Figat
2023-10-05 10:44:03 +02:00
83 changed files with 1809 additions and 519 deletions

View File

@@ -5,7 +5,6 @@ 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;
@@ -41,6 +40,8 @@ namespace FlaxEditor.Surface.ContextMenu
public delegate List<SurfaceParameter> ParameterGetterDelegate();
private readonly List<VisjectCMGroup> _groups = new List<VisjectCMGroup>(16);
private CheckBox _contextSensitiveToggle;
private bool _contextSensitiveSearchEnabled = true;
private readonly TextBox _searchBox;
private bool _waitingForInput;
private VisjectCMGroup _surfaceParametersGroup;
@@ -128,7 +129,7 @@ namespace FlaxEditor.Surface.ContextMenu
_parameterSetNodeArchetype = info.ParameterSetNodeArchetype ?? Archetypes.Parameters.Nodes[3];
// Context menu dimensions
Size = new Float2(320, 248);
Size = new Float2(300, 400);
var headerPanel = new Panel(ScrollBars.None)
{
@@ -140,17 +141,41 @@ namespace FlaxEditor.Surface.ContextMenu
};
// Title bar
var titleFontReference = new FontReference(Style.Current.FontLarge.Asset, 10);
var titleLabel = new Label
{
Width = Width - 8,
Width = Width * 0.5f - 8f,
Height = 20,
X = 4,
Parent = headerPanel,
Text = "Select Node",
HorizontalAlignment = TextAlignment.Center,
Font = new FontReference(Style.Current.FontLarge.Asset, 10),
HorizontalAlignment = TextAlignment.Near,
Font = titleFontReference,
};
// Context sensitive toggle
var contextSensitiveLabel = new Label
{
Width = Width * 0.5f - 28,
Height = 20,
X = Width * 0.5f,
Parent = headerPanel,
Text = "Context Sensitive",
TooltipText = "Should the nodes be filtered to only show those that can be connected in the current context?",
HorizontalAlignment = TextAlignment.Far,
Font = titleFontReference,
};
_contextSensitiveToggle = new CheckBox
{
Width = 20,
Height = 20,
X = Width - 24,
Parent = headerPanel,
Checked = _contextSensitiveSearchEnabled,
};
_contextSensitiveToggle.StateChanged += OnContextSensitiveToggleStateChanged;
// Search box
_searchBox = new SearchBox(false, 2, 22)
{
@@ -291,6 +316,10 @@ namespace FlaxEditor.Surface.ContextMenu
OnSearchFilterChanged();
}
}
else if (_contextSensitiveSearchEnabled)
{
group.EvaluateVisibilityWithBox(_selectedBox);
}
Profiler.EndEvent();
}
@@ -324,6 +353,8 @@ namespace FlaxEditor.Surface.ContextMenu
Parent = group
};
}
if (_contextSensitiveSearchEnabled)
group.EvaluateVisibilityWithBox(_selectedBox);
group.SortChildren();
if (ShowExpanded)
group.Open(false);
@@ -423,8 +454,26 @@ namespace FlaxEditor.Surface.ContextMenu
return;
Profiler.BeginEvent("VisjectCM.OnSearchFilterChanged");
if (string.IsNullOrEmpty(_searchBox.Text))
UpdateFilters();
_searchBox.Focus();
Profiler.EndEvent();
}
private void OnContextSensitiveToggleStateChanged(CheckBox checkBox)
{
// Skip events during setup or init stuff
if (IsLayoutLocked)
return;
Profiler.BeginEvent("VisjectCM.OnContextSensitiveToggleStateChanged");
_contextSensitiveSearchEnabled = checkBox.Checked;
UpdateFilters();
Profiler.EndEvent();
}
private void UpdateFilters()
{
if (string.IsNullOrEmpty(_searchBox.Text) && _selectedBox == null)
{
ResetView();
Profiler.EndEvent();
@@ -435,7 +484,7 @@ namespace FlaxEditor.Surface.ContextMenu
LockChildrenRecursive();
for (int i = 0; i < _groups.Count; i++)
{
_groups[i].UpdateFilter(_searchBox.Text);
_groups[i].UpdateFilter(_searchBox.Text, _contextSensitiveSearchEnabled ? _selectedBox : null);
_groups[i].UpdateItemSort(_selectedBox);
}
SortGroups();
@@ -448,9 +497,6 @@ namespace FlaxEditor.Surface.ContextMenu
PerformLayout();
if (SelectedItem != null)
_panel1.ScrollViewTo(SelectedItem);
_searchBox.Focus();
Profiler.EndEvent();
Profiler.EndEvent();
}
@@ -508,7 +554,11 @@ namespace FlaxEditor.Surface.ContextMenu
_searchBox.Clear();
SelectedItem = null;
for (int i = 0; i < _groups.Count; i++)
{
_groups[i].ResetView();
if (_contextSensitiveSearchEnabled)
_groups[i].EvaluateVisibilityWithBox(_selectedBox);
}
UnlockChildrenRecursive();
SortGroups();
@@ -764,5 +814,12 @@ namespace FlaxEditor.Surface.ContextMenu
{
return GetPreviousSiblings(item).OfType<T>();
}
/// <inheritdoc />
public override void OnDestroy()
{
_contextSensitiveToggle.StateChanged -= OnContextSensitiveToggleStateChanged;
base.OnDestroy();
}
}
}