diff --git a/Source/Editor/GUI/AssetPicker.cs b/Source/Editor/GUI/AssetPicker.cs index b78ec2259..bd7cfd575 100644 --- a/Source/Editor/GUI/AssetPicker.cs +++ b/Source/Editor/GUI/AssetPicker.cs @@ -92,7 +92,7 @@ namespace FlaxEditor.GUI return _selectedItem.ID; return Guid.Empty; } - set => SelectedAsset = FlaxEngine.Content.LoadAsync(value); + set => SelectedItem = Editor.Instance.ContentDatabase.FindAsset(value); } /// @@ -149,6 +149,11 @@ namespace FlaxEditor.GUI /// public event Action SelectedItemChanged; + /// + /// False if changing selected item is disabled. + /// + public bool CanEdit = true; + private bool IsValid(AssetItem item) { // Faster path for binary items (in-build) @@ -243,7 +248,6 @@ namespace FlaxEditor.GUI /// public override void Draw() { - // Cache data var style = Style.Current; var iconRect = IconRect; var button1Rect = Button1Rect; @@ -251,19 +255,24 @@ namespace FlaxEditor.GUI var button3Rect = Button3Rect; // Draw asset picker button - Render2D.DrawSprite(style.ArrowDown, button1Rect, button1Rect.Contains(_mousePos) ? style.Foreground : style.ForegroundGrey); + if (CanEdit) + Render2D.DrawSprite(style.ArrowDown, button1Rect, button1Rect.Contains(_mousePos) ? style.Foreground : style.ForegroundGrey); - // Check if has item selected if (_selectedItem != null) { // Draw item preview _selectedItem.DrawThumbnail(ref iconRect); - // Draw find button - Render2D.DrawSprite(style.Search, button2Rect, button2Rect.Contains(_mousePos) ? style.Foreground : style.ForegroundGrey); - - // Draw remove button - Render2D.DrawSprite(style.Cross, button3Rect, button3Rect.Contains(_mousePos) ? style.Foreground : style.ForegroundGrey); + // Draw buttons + if (CanEdit) + { + Render2D.DrawSprite(style.Search, button2Rect, button2Rect.Contains(_mousePos) ? style.Foreground : style.ForegroundGrey); + Render2D.DrawSprite(style.Cross, button3Rect, button3Rect.Contains(_mousePos) ? style.Foreground : style.ForegroundGrey); + } + else + { + Render2D.DrawSprite(style.Search, button1Rect, button1Rect.Contains(_mousePos) ? style.Foreground : style.ForegroundGrey); + } // Draw name float sizeForTextLeft = Width - button1Rect.Right; @@ -373,7 +382,15 @@ namespace FlaxEditor.GUI _isMouseDown = false; // Buttons logic - if (Button1Rect.Contains(location)) + if (!CanEdit) + { + if (Button1Rect.Contains(location) && _selectedItem != null) + { + // Select asset + Editor.Instance.Windows.ContentWin.Select(_selectedItem); + } + } + else if (Button1Rect.Contains(location)) { // Show asset picker popup Focus(); @@ -442,7 +459,7 @@ namespace FlaxEditor.GUI // Check if drop asset if (_dragOverElement == null) _dragOverElement = new DragAssets(IsValid); - if (_dragOverElement.OnDragEnter(data)) + if (CanEdit && _dragOverElement.OnDragEnter(data)) { } @@ -471,7 +488,7 @@ namespace FlaxEditor.GUI { base.OnDragDrop(ref location, data); - if (_dragOverElement.HasValidDrag) + if (CanEdit && _dragOverElement.HasValidDrag) { // Select element SelectedItem = _dragOverElement.Objects[0];