Simplify code around assets editing and selecting in Editor

This commit is contained in:
2026-07-22 11:53:22 +02:00
parent c306781eb3
commit 3aed901834
14 changed files with 34 additions and 71 deletions
@@ -168,8 +168,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
var actor = (Actor)Values[0];
var scriptType = TypeUtils.GetType(actor.TypeName);
var item = scriptType.ContentItem;
if (item != null)
Editor.Instance.ContentEditing.Open(item);
Editor.Instance.ContentEditing.Open(item);
}
private void OnClickShowActorType()
@@ -177,8 +176,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
var actor = (Actor)Values[0];
var scriptType = TypeUtils.GetType(actor.TypeName);
var item = scriptType.ContentItem;
if (item != null)
Editor.Instance.Windows.ContentWin.Select(item);
Editor.Instance.Windows.ContentWin.Select(item);
}
/// <inheritdoc />
@@ -1044,9 +1044,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
{
var script = (Script)button.ParentContextMenu.Tag;
var scriptType = TypeUtils.GetType(script.TypeName);
var item = scriptType.ContentItem;
if (item != null)
Editor.Instance.ContentEditing.Open(item);
Editor.Instance.ContentEditing.Open(scriptType.ContentItem);
}
private void OnClickShowScript(ContextMenuButton button)
@@ -1054,8 +1052,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
var script = (Script)button.ParentContextMenu.Tag;
var scriptType = TypeUtils.GetType(script.TypeName);
var item = scriptType.ContentItem;
if (item != null)
Editor.Instance.Windows.ContentWin.Select(item);
Editor.Instance.Windows.ContentWin.Select(item);
}
/// <inheritdoc />
@@ -235,9 +235,7 @@ namespace FlaxEditor.CustomEditors.Editors
// Navigate to types from game project
if (button == MouseButton.Left && _value != ScriptType.Null)
{
var item = _value.ContentItem;
if (item != null)
Editor.Instance.ContentEditing.Open(item);
Editor.Instance.ContentEditing.Open(_value.ContentItem);
}
return base.OnMouseDoubleClick(location, button);
-1
View File
@@ -347,7 +347,6 @@ namespace FlaxEditor.GUI
Editor.Instance.ContentEditing.Open(Validator.SelectedItem);
}
// Handled
return true;
}
@@ -42,7 +42,7 @@ namespace FlaxEditor.Modules
public EditorWindow Open(ContentItem item, bool disableAutoShow = false)
{
if (item == null)
throw new ArgumentNullException();
return null;
// Check if any window is already editing this item
var window = Editor.Windows.FindEditor(item);
+1 -2
View File
@@ -128,8 +128,7 @@ namespace FlaxEditor.Modules
}
var item = Editor.ContentDatabase.Find(prefabID);
if (item != null)
Editor.ContentEditing.Open(item);
Editor.ContentEditing.Open(item);
}
private void OnPrefabCreated(ContentItem contentItem, Actor actor, Windows.Assets.PrefabWindow prefabWindow)
+1 -9
View File
@@ -706,12 +706,7 @@ namespace FlaxEditor.Modules
_menuCreateParentForSelectedActors = cm.AddButton("Parent to new Actor", inputOptions.GroupSelectedActors, Editor.SceneEditing.CreateParentForSelectedActors);
_menuEditFind = cm.AddButton("Find", inputOptions.Search, Editor.Windows.SceneWin.Search);
cm.AddSeparator();
cm.AddButton("Game Settings", () =>
{
var item = Editor.ContentDatabase.Find(GameSettings.GameSettingsAssetPath);
if (item != null)
Editor.ContentEditing.Open(item);
});
cm.AddButton("Game Settings", () => Editor.ContentEditing.Open(Editor.ContentDatabase.Find(GameSettings.GameSettingsAssetPath)));
cm.AddButton("Editor Options", inputOptions.EditorOptionsWindow, () => Editor.Windows.EditorOptionsWin.Show());
// Scene
@@ -729,16 +724,13 @@ namespace FlaxEditor.Modules
MenuGame = MainMenu.AddButton("Game");
cm = MenuGame.ContextMenu;
cm.VisibleChanged += OnMenuGameShowHide;
_menuGamePlayGame = cm.AddButton("Play Game", inputOptions.Play, Editor.Simulation.RequestPlayGameOrStopPlay);
_menuGamePlayCurrentScenes = cm.AddButton("Play Current Scenes", inputOptions.PlayCurrentScenes, Editor.Simulation.RequestPlayScenesOrStopPlay);
_menuGameStop = cm.AddButton("Stop Game", inputOptions.Play, Editor.Simulation.RequestStopPlay);
_menuGamePause = cm.AddButton("Pause", inputOptions.Pause, Editor.Simulation.RequestPausePlay);
cm.AddSeparator();
var numberOfClientsMenu = cm.AddChildMenu("Number of game clients");
_numberOfClientsGroup.AddItemsToContextMenu(numberOfClientsMenu.ContextMenu);
cm.AddSeparator();
_menuGameCookAndRun = cm.AddButton("Cook & Run", inputOptions.CookAndRun, Editor.Windows.GameCookerWin.BuildAndRun);
_menuGameCookAndRun.LinkTooltip("Runs Game Cooker to build the game for this platform and runs the game after.");
+2 -6
View File
@@ -743,12 +743,8 @@ namespace FlaxEditor.Modules
// Check if it's an asset ID
if (Guid.TryParse(typename, out Guid id))
{
var el = Editor.ContentDatabase.Find(id);
if (el != null)
{
// Open asset
return Editor.ContentEditing.Open(el, true);
}
// Open asset
return Editor.ContentEditing.Open(Editor.ContentDatabase.Find(id), true);
}
return null;
+13 -16
View File
@@ -1131,25 +1131,22 @@ namespace FlaxEditor.Surface.Archetypes
// Open function content item if exists
var method = GetMethod(out var scriptType, out _, out _);
var item = scriptType.ContentItem;
if (item != null)
{
var window = Editor.Instance.ContentEditing.Open(item);
var window = Editor.Instance.ContentEditing.Open(item);
// Focus method
if (window is VisualScriptWindow vsWindow && method)
// Focus method
if (window is VisualScriptWindow vsWindow && method)
{
foreach (var node in vsWindow.Surface.Nodes)
{
foreach (var node in vsWindow.Surface.Nodes)
if (node is VisualScriptFunctionNode functionNode &&
method.Name == functionNode._signature.Name &&
((method.ParametersCount == 0 && functionNode._signature.Parameters == null) || method.ParametersCount == functionNode._signature.Parameters.Length) &&
method.IsVirtual == functionNode._signature.IsVirtual &&
method.IsStatic == functionNode._signature.IsStatic &&
method.ValueType == functionNode._signature.ReturnType)
{
if (node is VisualScriptFunctionNode functionNode &&
method.Name == functionNode._signature.Name &&
((method.ParametersCount == 0 && functionNode._signature.Parameters == null) || method.ParametersCount == functionNode._signature.Parameters.Length) &&
method.IsVirtual == functionNode._signature.IsVirtual &&
method.IsStatic == functionNode._signature.IsStatic &&
method.ValueType == functionNode._signature.ReturnType)
{
vsWindow.ShowNode(node);
break;
}
vsWindow.ShowNode(node);
break;
}
}
}
@@ -309,14 +309,8 @@ namespace FlaxEditor.Windows.Assets
_optionsCM.AddSeparator();
if (_optionsButton.Tag is ContentItem item)
{
_optionsCM.AddButton("Edit asset code", () =>
{
Editor.Instance.ContentEditing.Open(item);
});
_optionsCM.AddButton("Show asset code item in content window", () =>
{
Editor.Instance.Windows.ContentWin.Select(item);
});
_optionsCM.AddButton("Edit asset code", () => Editor.Instance.ContentEditing.Open(item));
_optionsCM.AddButton("Show asset code item in content window", () => Editor.Instance.Windows.ContentWin.Select(item));
}
_optionsCM.Show(_optionsButton, _optionsButton.PointFromScreen(Input.MouseScreenPosition));
@@ -766,15 +766,12 @@ namespace FlaxEditor.Windows.Assets
{
_debugStepOutNodesIds.Clear();
var item = Editor.ContentDatabase.Find(flowInfo.Script.ID);
if (item != null)
var editor = Editor.ContentEditing.Open(item);
if (editor is VisualScriptWindow vsWindow)
{
var editor = Editor.ContentEditing.Open(item);
if (editor is VisualScriptWindow vsWindow)
{
lock (vsWindow._debugFlows)
vsWindow._debugFlows.Add(flowInfo);
vsWindow.OnDebugBreakpointHit(ref flowInfo, vsWindow.Surface.FindNode(flowInfo.NodeId));
}
lock (vsWindow._debugFlows)
vsWindow._debugFlows.Add(flowInfo);
vsWindow.OnDebugBreakpointHit(ref flowInfo, vsWindow.Surface.FindNode(flowInfo.NodeId));
}
return;
}
+2 -4
View File
@@ -1129,8 +1129,7 @@ namespace FlaxEditor.Windows
throw new ArgumentNullException();
var item = Editor.ContentDatabase.Find(asset.ID);
if (item != null)
Select(item);
Select(item);
}
/// <summary>
@@ -1142,8 +1141,7 @@ namespace FlaxEditor.Windows
public void Select(ContentItem item, bool fastScroll = false, bool additive = false)
{
if (item == null)
throw new ArgumentNullException();
return;
if (!_navigationUnlocked)
return;
var parent = item.ParentFolder;
+1 -2
View File
@@ -279,8 +279,7 @@ namespace FlaxEditor.Windows.Profiler
{
var assetId = (Guid)row.Tag;
var assetItem = Editor.Instance.ContentDatabase.FindAsset(assetId);
if (assetItem != null)
Editor.Instance.ContentEditing.Open(assetItem);
Editor.Instance.ContentEditing.Open(assetItem);
}
private void OnRowRightClick(ClickableRow row)
+1 -2
View File
@@ -613,8 +613,7 @@ namespace FlaxEditor.Windows.Profiler
{
var e = (Resource)row.Tag;
var assetItem = Editor.Instance.ContentDatabase.FindAsset(e.AssetId);
if (assetItem != null)
Editor.Instance.ContentEditing.Open(assetItem);
Editor.Instance.ContentEditing.Open(assetItem);
}
private void ShowResourcePanel(bool visible = true)