From 1b84f57a5bf9b78fe700f5fbf44a127fe0f331ad Mon Sep 17 00:00:00 2001 From: davevanegdom Date: Sat, 23 Sep 2023 03:24:19 +0200 Subject: [PATCH] Small optimization --- Source/Editor/Modules/PrefabsModule.cs | 15 +++++++++------ .../Editor/Windows/SceneTreeWindow.ContextMenu.cs | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Source/Editor/Modules/PrefabsModule.cs b/Source/Editor/Modules/PrefabsModule.cs index b0be909fa..e044e9767 100644 --- a/Source/Editor/Modules/PrefabsModule.cs +++ b/Source/Editor/Modules/PrefabsModule.cs @@ -113,15 +113,18 @@ namespace FlaxEditor.Modules /// Open a prefab in a Prefab Editor /// /// Whether the prefab was successfully opened in a Prefab Editor - public bool OpenPrefab() + public bool OpenPrefab(Guid prefabID = default) { - var selection = Editor.SceneEditing.Selection.Where(x => x is ActorNode actorNode && actorNode.HasPrefabLink).ToList().BuildNodesParents(); - if (selection.Count == 0 || !((ActorNode)selection[0]).Actor.HasPrefabLink) - return false; + if(prefabID == Guid.Empty) + { + var selection = Editor.SceneEditing.Selection.Where(x => x is ActorNode actorNode && actorNode.HasPrefabLink).ToList().BuildNodesParents(); + if (selection.Count == 0 || !((ActorNode)selection[0]).Actor.HasPrefabLink) + return false; - var prefabId = ((ActorNode)selection[0]).Actor.PrefabID; - var item = Editor.Instance.ContentDatabase.Find(prefabId); + prefabID = ((ActorNode)selection[0]).Actor.PrefabID; + } + var item = Editor.Instance.ContentDatabase.Find(prefabID); if(item != null) { Editor.Instance.ContentEditing.Open(item); diff --git a/Source/Editor/Windows/SceneTreeWindow.ContextMenu.cs b/Source/Editor/Windows/SceneTreeWindow.ContextMenu.cs index 442a774fb..5e7e2a3f8 100644 --- a/Source/Editor/Windows/SceneTreeWindow.ContextMenu.cs +++ b/Source/Editor/Windows/SceneTreeWindow.ContextMenu.cs @@ -141,7 +141,7 @@ namespace FlaxEditor.Windows bool hasPrefabLink = canEditScene && isSingleActorSelected && actorNode.HasPrefabLink; if (hasPrefabLink) { - contextMenu.AddButton("Open Prefab", () => Editor.Prefabs.OpenPrefab()); + contextMenu.AddButton("Open Prefab", () => Editor.Prefabs.OpenPrefab(actorNode.Actor.PrefabID)); contextMenu.AddButton("Select Prefab", Editor.Prefabs.SelectPrefab); contextMenu.AddButton("Break Prefab Link", Editor.Prefabs.BreakLinks); }