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); }