From 3aed901834e3551c6ce1ef64a749041ce326c2cc Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 22 Jul 2026 11:53:22 +0200 Subject: [PATCH] Simplify code around assets editing and selecting in Editor --- .../CustomEditors/Dedicated/ActorEditor.cs | 6 ++-- .../CustomEditors/Dedicated/ScriptsEditor.cs | 7 ++--- .../CustomEditors/Editors/TypeEditor.cs | 4 +-- Source/Editor/GUI/AssetPicker.cs | 1 - Source/Editor/Modules/ContentEditingModule.cs | 2 +- Source/Editor/Modules/PrefabsModule.cs | 3 +- Source/Editor/Modules/UIModule.cs | 10 +------ Source/Editor/Modules/WindowsModule.cs | 8 ++--- Source/Editor/Surface/Archetypes/Function.cs | 29 +++++++++---------- .../Editor/Windows/Assets/JsonAssetWindow.cs | 10 ++----- .../Windows/Assets/VisualScriptWindow.cs | 13 ++++----- Source/Editor/Windows/ContentWindow.cs | 6 ++-- Source/Editor/Windows/Profiler/Assets.cs | 3 +- Source/Editor/Windows/Profiler/MemoryGPU.cs | 3 +- 14 files changed, 34 insertions(+), 71 deletions(-) diff --git a/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs b/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs index def57b332..573ba2c77 100644 --- a/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs +++ b/Source/Editor/CustomEditors/Dedicated/ActorEditor.cs @@ -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); } /// diff --git a/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs b/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs index efcd1bec3..14ea87718 100644 --- a/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs +++ b/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs @@ -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); } /// diff --git a/Source/Editor/CustomEditors/Editors/TypeEditor.cs b/Source/Editor/CustomEditors/Editors/TypeEditor.cs index 462902181..148d75169 100644 --- a/Source/Editor/CustomEditors/Editors/TypeEditor.cs +++ b/Source/Editor/CustomEditors/Editors/TypeEditor.cs @@ -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); diff --git a/Source/Editor/GUI/AssetPicker.cs b/Source/Editor/GUI/AssetPicker.cs index 56c358c2f..70fe2394c 100644 --- a/Source/Editor/GUI/AssetPicker.cs +++ b/Source/Editor/GUI/AssetPicker.cs @@ -347,7 +347,6 @@ namespace FlaxEditor.GUI Editor.Instance.ContentEditing.Open(Validator.SelectedItem); } - // Handled return true; } diff --git a/Source/Editor/Modules/ContentEditingModule.cs b/Source/Editor/Modules/ContentEditingModule.cs index 9e29f288e..056584c90 100644 --- a/Source/Editor/Modules/ContentEditingModule.cs +++ b/Source/Editor/Modules/ContentEditingModule.cs @@ -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); diff --git a/Source/Editor/Modules/PrefabsModule.cs b/Source/Editor/Modules/PrefabsModule.cs index f7b984056..8a2cc64bc 100644 --- a/Source/Editor/Modules/PrefabsModule.cs +++ b/Source/Editor/Modules/PrefabsModule.cs @@ -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) diff --git a/Source/Editor/Modules/UIModule.cs b/Source/Editor/Modules/UIModule.cs index 9edfb816f..5edba3fb9 100644 --- a/Source/Editor/Modules/UIModule.cs +++ b/Source/Editor/Modules/UIModule.cs @@ -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."); diff --git a/Source/Editor/Modules/WindowsModule.cs b/Source/Editor/Modules/WindowsModule.cs index 7e01dff67..dd522534d 100644 --- a/Source/Editor/Modules/WindowsModule.cs +++ b/Source/Editor/Modules/WindowsModule.cs @@ -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; diff --git a/Source/Editor/Surface/Archetypes/Function.cs b/Source/Editor/Surface/Archetypes/Function.cs index 2801ffd10..452a5b15e 100644 --- a/Source/Editor/Surface/Archetypes/Function.cs +++ b/Source/Editor/Surface/Archetypes/Function.cs @@ -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; } } } diff --git a/Source/Editor/Windows/Assets/JsonAssetWindow.cs b/Source/Editor/Windows/Assets/JsonAssetWindow.cs index 4d9c04942..3c721c09e 100644 --- a/Source/Editor/Windows/Assets/JsonAssetWindow.cs +++ b/Source/Editor/Windows/Assets/JsonAssetWindow.cs @@ -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)); diff --git a/Source/Editor/Windows/Assets/VisualScriptWindow.cs b/Source/Editor/Windows/Assets/VisualScriptWindow.cs index 14761c6c8..51c9d4ba5 100644 --- a/Source/Editor/Windows/Assets/VisualScriptWindow.cs +++ b/Source/Editor/Windows/Assets/VisualScriptWindow.cs @@ -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; } diff --git a/Source/Editor/Windows/ContentWindow.cs b/Source/Editor/Windows/ContentWindow.cs index 2d9daabeb..dc9baf091 100644 --- a/Source/Editor/Windows/ContentWindow.cs +++ b/Source/Editor/Windows/ContentWindow.cs @@ -1129,8 +1129,7 @@ namespace FlaxEditor.Windows throw new ArgumentNullException(); var item = Editor.ContentDatabase.Find(asset.ID); - if (item != null) - Select(item); + Select(item); } /// @@ -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; diff --git a/Source/Editor/Windows/Profiler/Assets.cs b/Source/Editor/Windows/Profiler/Assets.cs index 8ee6f5f6d..bd5d15d35 100644 --- a/Source/Editor/Windows/Profiler/Assets.cs +++ b/Source/Editor/Windows/Profiler/Assets.cs @@ -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) diff --git a/Source/Editor/Windows/Profiler/MemoryGPU.cs b/Source/Editor/Windows/Profiler/MemoryGPU.cs index 31fa600ea..2b6a68c62 100644 --- a/Source/Editor/Windows/Profiler/MemoryGPU.cs +++ b/Source/Editor/Windows/Profiler/MemoryGPU.cs @@ -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)