Merge branch 'master' into keep-scroll-scene-play
This commit is contained in:
@@ -236,6 +236,7 @@ namespace FlaxEditor.Windows.Assets
|
||||
var group = layout.Group("General");
|
||||
|
||||
var minScreenSize = group.FloatValue("Min Screen Size", "The minimum screen size to draw model (the bottom limit). Used to cull small models. Set to 0 to disable this feature.");
|
||||
minScreenSize.ValueBox.SlideSpeed = 0.005f;
|
||||
minScreenSize.ValueBox.MinValue = 0.0f;
|
||||
minScreenSize.ValueBox.MaxValue = 1.0f;
|
||||
minScreenSize.ValueBox.Value = proxy.Asset.MinScreenSize;
|
||||
@@ -476,12 +477,12 @@ namespace FlaxEditor.Windows.Assets
|
||||
}
|
||||
}
|
||||
|
||||
[EditorOrder(1), EditorDisplay(null, "LOD"), Limit(0, Model.MaxLODs), VisibleIf("ShowUVs")]
|
||||
[Tooltip("Level Of Detail index to preview UVs layout.")]
|
||||
[EditorOrder(1), EditorDisplay(null, "LOD"), Limit(0, Model.MaxLODs, 0.01f), VisibleIf("ShowUVs")]
|
||||
[Tooltip("Level Of Detail index to preview UVs layout at.")]
|
||||
public int LOD = 0;
|
||||
|
||||
[EditorOrder(2), EditorDisplay(null, "Mesh"), Limit(-1, 1000000), VisibleIf("ShowUVs")]
|
||||
[Tooltip("Mesh index to preview UVs layout. Use -1 for all meshes")]
|
||||
[EditorOrder(2), EditorDisplay(null, "Mesh"), Limit(-1, 1000000, 0.01f), VisibleIf("ShowUVs")]
|
||||
[Tooltip("Mesh index to show UVs layout for. Use -1 to display all UVs of all meshes")]
|
||||
public int Mesh = -1;
|
||||
|
||||
private bool ShowUVs => _uvChannel != UVChannel.None;
|
||||
|
||||
@@ -81,6 +81,7 @@ namespace FlaxEditor.Windows.Assets
|
||||
}
|
||||
|
||||
var resolution = group.FloatValue("Resolution Scale", Window.Editor.CodeDocs.GetTooltip(typeof(ModelTool.Options), nameof(ModelImportSettings.Settings.SDFResolution)));
|
||||
resolution.ValueBox.SlideSpeed = 0.001f;
|
||||
resolution.ValueBox.MinValue = 0.0001f;
|
||||
resolution.ValueBox.MaxValue = 100.0f;
|
||||
resolution.ValueBox.Value = sdf.Texture != null ? sdf.ResolutionScale : 1.0f;
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using FlaxEditor.Content;
|
||||
using FlaxEditor.CustomEditors;
|
||||
using FlaxEditor.GUI;
|
||||
using FlaxEditor.Scripting;
|
||||
using FlaxEditor.Surface;
|
||||
using FlaxEditor.Viewport.Previews;
|
||||
@@ -114,6 +115,7 @@ namespace FlaxEditor.Windows.Assets
|
||||
|
||||
private readonly PropertiesProxy _properties;
|
||||
private Tab _previewTab;
|
||||
private ToolStripButton _showSourceCodeButton;
|
||||
|
||||
/// <inheritdoc />
|
||||
public ParticleEmitterWindow(Editor editor, AssetItem item)
|
||||
@@ -146,7 +148,8 @@ namespace FlaxEditor.Windows.Assets
|
||||
|
||||
// Toolstrip
|
||||
SurfaceUtils.PerformCommonSetup(this, _toolstrip, _surface, out _saveButton, out _undoButton, out _redoButton);
|
||||
_toolstrip.AddButton(editor.Icons.Code64, ShowSourceCode).LinkTooltip("Show generated shader source code");
|
||||
_showSourceCodeButton = _toolstrip.AddButton(editor.Icons.Code64, ShowSourceCode);
|
||||
_showSourceCodeButton.LinkTooltip("Show generated shader source code");
|
||||
_toolstrip.AddSeparator();
|
||||
_toolstrip.AddButton(editor.Icons.Docs64, () => Platform.OpenUrl(Utilities.Constants.DocsUrl + "manual/particles/index.html")).LinkTooltip("See documentation to learn more");
|
||||
}
|
||||
@@ -285,5 +288,15 @@ namespace FlaxEditor.Windows.Assets
|
||||
|
||||
/// <inheritdoc />
|
||||
public SearchAssetTypes AssetType => SearchAssetTypes.ParticleEmitter;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Update(float deltaTime)
|
||||
{
|
||||
base.Update(deltaTime);
|
||||
|
||||
if (_asset == null)
|
||||
return;
|
||||
_showSourceCodeButton.Enabled = _asset.HasShaderCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,10 +97,7 @@ namespace FlaxEditor.Windows.Assets
|
||||
|
||||
// For single node selected scroll view so user can see it
|
||||
if (nodes.Count == 1)
|
||||
{
|
||||
nodes[0].ExpandAllParents(true);
|
||||
ScrollViewTo(nodes[0]);
|
||||
}
|
||||
ScrollToSelectedNode();
|
||||
}
|
||||
|
||||
// Update properties editor
|
||||
|
||||
@@ -318,7 +318,7 @@ namespace FlaxEditor.Windows
|
||||
private Color _colorWarning;
|
||||
private Color _colorError;
|
||||
private bool _colorDebugLogText;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="DebugLogWindow"/> class.
|
||||
/// </summary>
|
||||
@@ -352,24 +352,12 @@ namespace FlaxEditor.Windows
|
||||
editor.Options.Apply(editor.Options.Options);
|
||||
}).SetAutoCheck(true).LinkTooltip("Performs auto pause on error");
|
||||
toolstrip.AddSeparator();
|
||||
_groupButtons[0] = (ToolStripButton)toolstrip.AddButton(editor.Icons.Error32, () =>
|
||||
{
|
||||
UpdateLogTypeVisibility(LogGroup.Error, _groupButtons[0].Checked);
|
||||
editor.Options.Options.Interface.DebugLogShowErrorMessages = _groupButtons[0].Checked;
|
||||
editor.Options.Apply(editor.Options.Options);
|
||||
}).SetAutoCheck(true).LinkTooltip("Shows/hides error messages");
|
||||
_groupButtons[1] = (ToolStripButton)toolstrip.AddButton(editor.Icons.Warning32, () =>
|
||||
{
|
||||
UpdateLogTypeVisibility(LogGroup.Warning, _groupButtons[1].Checked);
|
||||
editor.Options.Options.Interface.DebugLogShowWarningMessages = _groupButtons[1].Checked;
|
||||
editor.Options.Apply(editor.Options.Options);
|
||||
}).SetAutoCheck(true).LinkTooltip("Shows/hides warning messages");
|
||||
_groupButtons[2] = (ToolStripButton)toolstrip.AddButton(editor.Icons.Info32, () =>
|
||||
{
|
||||
UpdateLogTypeVisibility(LogGroup.Info, _groupButtons[2].Checked);
|
||||
editor.Options.Options.Interface.DebugLogShowInfoMessages = _groupButtons[2].Checked;
|
||||
editor.Options.Apply(editor.Options.Options);
|
||||
}).SetAutoCheck(true).LinkTooltip("Shows/hides info messages");
|
||||
_groupButtons[0] = (ToolStripButton)toolstrip.AddButton(editor.Icons.Error32, () => { OnGroupButtonPressed(0); })
|
||||
.SetAutoCheck(true).LinkTooltip("Shows/hides error messages");
|
||||
_groupButtons[1] = (ToolStripButton)toolstrip.AddButton(editor.Icons.Warning32, () => { OnGroupButtonPressed(1); })
|
||||
.SetAutoCheck(true).LinkTooltip("Shows/hides warning messages");
|
||||
_groupButtons[2] = (ToolStripButton)toolstrip.AddButton(editor.Icons.Info32, () => { OnGroupButtonPressed(2); })
|
||||
.SetAutoCheck(true).LinkTooltip("Shows/hides info messages");
|
||||
UpdateCount();
|
||||
|
||||
// Split panel
|
||||
@@ -418,6 +406,27 @@ namespace FlaxEditor.Windows
|
||||
OnEditorOptionsChanged(Editor.Options.Options);
|
||||
}
|
||||
|
||||
private void OnGroupButtonPressed(int index)
|
||||
{
|
||||
UpdateLogTypeVisibility((LogGroup)index, _groupButtons[index].Checked);
|
||||
if (Input.GetKey(KeyboardKeys.Shift))
|
||||
{
|
||||
for (int i = 0; i < (int)LogGroup.Max; i++)
|
||||
{
|
||||
if (i == index)
|
||||
continue;
|
||||
_groupButtons[i].Checked = !_groupButtons[index].Checked;
|
||||
UpdateLogTypeVisibility((LogGroup)i, _groupButtons[i].Checked);
|
||||
}
|
||||
}
|
||||
|
||||
var options = Editor.Options.Options.Interface;
|
||||
options.DebugLogShowErrorMessages = _groupButtons[0].Checked;
|
||||
options.DebugLogShowWarningMessages = _groupButtons[1].Checked;
|
||||
options.DebugLogShowInfoMessages = _groupButtons[2].Checked;
|
||||
Editor.Options.Apply(Editor.Options.Options);
|
||||
}
|
||||
|
||||
private void OnEditorOptionsChanged(EditorOptions options)
|
||||
{
|
||||
_timestampsFormats = options.Interface.DebugLogTimestampsFormat;
|
||||
@@ -455,15 +464,9 @@ namespace FlaxEditor.Windows
|
||||
// Create new entry
|
||||
switch (_timestampsFormats)
|
||||
{
|
||||
case InterfaceOptions.TimestampsFormats.Utc:
|
||||
desc.Title = $"[{DateTime.UtcNow}] {desc.Title}";
|
||||
break;
|
||||
case InterfaceOptions.TimestampsFormats.LocalTime:
|
||||
desc.Title = $"[{DateTime.Now}] {desc.Title}";
|
||||
break;
|
||||
case InterfaceOptions.TimestampsFormats.TimeSinceStartup:
|
||||
desc.Title = string.Format("[{0:g}] ", TimeSpan.FromSeconds(Time.TimeSinceStartup)) + desc.Title;
|
||||
break;
|
||||
case InterfaceOptions.TimestampsFormats.Utc: desc.Title = $"[{DateTime.UtcNow}] {desc.Title}"; break;
|
||||
case InterfaceOptions.TimestampsFormats.LocalTime: desc.Title = $"[{DateTime.Now}] {desc.Title}"; break;
|
||||
case InterfaceOptions.TimestampsFormats.TimeSinceStartup: desc.Title = string.Format("[{0:g}] ", TimeSpan.FromSeconds(Time.TimeSinceStartup)) + desc.Title; break;
|
||||
}
|
||||
var newEntry = new LogEntry(this, ref desc);
|
||||
|
||||
|
||||
@@ -219,6 +219,13 @@ namespace FlaxEditor.Windows
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when Editor will leave the play mode.
|
||||
/// </summary>
|
||||
public virtual void OnPlayEnding()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when Editor leaves the play mode.
|
||||
/// </summary>
|
||||
|
||||
@@ -405,6 +405,7 @@ namespace FlaxEditor.Windows
|
||||
return;
|
||||
Editor.Instance.SceneEditing.Delete();
|
||||
});
|
||||
InputActions.Add(options => options.FocusConsoleCommand, () => Editor.Instance.Windows.OutputLogWin.FocusCommand());
|
||||
}
|
||||
|
||||
private void ChangeViewportRatio(ViewportScaleOptions v)
|
||||
|
||||
@@ -830,6 +830,15 @@ namespace FlaxEditor.Windows
|
||||
OnOutputTextChanged();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Focus the debug command line and ensure that the output log window is visible.
|
||||
/// </summary>
|
||||
public void FocusCommand()
|
||||
{
|
||||
FocusOrShow();
|
||||
_commandLineBox.Focus();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Update(float deltaTime)
|
||||
{
|
||||
|
||||
@@ -35,6 +35,7 @@ namespace FlaxEditor.Windows
|
||||
private DragScriptItems _dragScriptItems;
|
||||
private DragHandlers _dragHandlers;
|
||||
private bool _isDropping = false;
|
||||
private bool _forceScrollNodeToView = false;
|
||||
|
||||
/// <summary>
|
||||
/// Scene tree panel.
|
||||
@@ -92,6 +93,15 @@ namespace FlaxEditor.Windows
|
||||
_tree.SelectedChanged += Tree_OnSelectedChanged;
|
||||
_tree.RightClick += OnTreeRightClick;
|
||||
_tree.Parent = _sceneTreePanel;
|
||||
_tree.AfterDeferredLayout += () =>
|
||||
{
|
||||
if (_forceScrollNodeToView)
|
||||
{
|
||||
_forceScrollNodeToView = false;
|
||||
ScrollToSelectedNode();
|
||||
}
|
||||
};
|
||||
|
||||
headerPanel.Parent = this;
|
||||
|
||||
Editor.PlayModeBeginning += () => _blockSceneTreeScroll = true;
|
||||
@@ -148,6 +158,16 @@ namespace FlaxEditor.Windows
|
||||
root.TreeNode.UpdateFilter(query);
|
||||
|
||||
_tree.UnlockChildrenRecursive();
|
||||
|
||||
// When keep the selected nodes in a view
|
||||
var nodeSelection = _tree.Selection;
|
||||
if (nodeSelection.Count != 0)
|
||||
{
|
||||
var node = nodeSelection[nodeSelection.Count - 1];
|
||||
node.Expand(true);
|
||||
_forceScrollNodeToView = true;
|
||||
}
|
||||
|
||||
PerformLayout();
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ namespace FlaxEditor.Windows.Search
|
||||
if (value == _selectedItem || (value != null && !_matchedItems.Contains(value)))
|
||||
return;
|
||||
|
||||
// Restore the previous selected item to the non-selected color
|
||||
if (_selectedItem != null)
|
||||
{
|
||||
_selectedItem.BackgroundColor = Color.Transparent;
|
||||
@@ -54,6 +55,7 @@ namespace FlaxEditor.Windows.Search
|
||||
_selectedItem.BackgroundColor = Style.Current.BackgroundSelected;
|
||||
if (_matchedItems.Count > VisibleItemCount)
|
||||
{
|
||||
_selectedItem.Focus();
|
||||
_resultPanel.ScrollViewTo(_selectedItem, true);
|
||||
}
|
||||
}
|
||||
@@ -180,39 +182,17 @@ namespace FlaxEditor.Windows.Search
|
||||
switch (key)
|
||||
{
|
||||
case KeyboardKeys.ArrowDown:
|
||||
{
|
||||
if (_matchedItems.Count == 0)
|
||||
return true;
|
||||
int currentPos;
|
||||
if (_selectedItem != null)
|
||||
{
|
||||
currentPos = _matchedItems.IndexOf(_selectedItem) + 1;
|
||||
if (currentPos >= _matchedItems.Count)
|
||||
currentPos--;
|
||||
}
|
||||
else
|
||||
{
|
||||
currentPos = 0;
|
||||
}
|
||||
SelectedItem = _matchedItems[currentPos];
|
||||
return true;
|
||||
}
|
||||
case KeyboardKeys.ArrowUp:
|
||||
{
|
||||
if (_matchedItems.Count == 0)
|
||||
return true;
|
||||
int currentPos;
|
||||
if (_selectedItem != null)
|
||||
{
|
||||
currentPos = _matchedItems.IndexOf(_selectedItem) - 1;
|
||||
if (currentPos < 0)
|
||||
currentPos = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
currentPos = 0;
|
||||
}
|
||||
SelectedItem = _matchedItems[currentPos];
|
||||
|
||||
var focusedIndex = _matchedItems.IndexOf(_selectedItem);
|
||||
int delta = key == KeyboardKeys.ArrowDown ? -1 : 1;
|
||||
int nextIndex = Mathf.Wrap(focusedIndex - delta, 0, _matchedItems.Count - 1);
|
||||
var nextItem = _matchedItems[nextIndex];
|
||||
|
||||
SelectedItem = nextItem;
|
||||
return true;
|
||||
}
|
||||
case KeyboardKeys.Return:
|
||||
@@ -234,6 +214,17 @@ namespace FlaxEditor.Windows.Search
|
||||
Hide();
|
||||
return true;
|
||||
}
|
||||
case KeyboardKeys.Backspace:
|
||||
{
|
||||
// Alow the user to quickly focus the searchbar
|
||||
if (_searchBox != null && !_searchBox.IsFocused)
|
||||
{
|
||||
_searchBox.Focus();
|
||||
_searchBox.SelectAll();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return base.OnKeyDown(key);
|
||||
|
||||
Reference in New Issue
Block a user