From 0e131731199a2d8ab420ef47e0c88992146dbcc8 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 25 Nov 2024 22:13:46 +0100 Subject: [PATCH] Fix actor reference select in prefab editor --- .../Editors/FlaxObjectRefEditor.cs | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs b/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs index fd367d21f..8abe54e78 100644 --- a/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs +++ b/Source/Editor/CustomEditors/Editors/FlaxObjectRefEditor.cs @@ -328,9 +328,9 @@ namespace FlaxEditor.CustomEditors.Editors { // Select object if (_value is Actor actor) - Editor.Instance.SceneEditing.Select(actor); + Select(actor); else if (_value is Script script && script.Actor) - Editor.Instance.SceneEditing.Select(script.Actor); + Select(script.Actor); else if (_value is Asset asset) Editor.Instance.Windows.ContentWin.Select(asset); } @@ -348,6 +348,28 @@ namespace FlaxEditor.CustomEditors.Editors ShowDropDownMenu(); } + private void Select(Actor actor) + { + var node = SceneGraphFactory.FindNode(actor.ID) as ActorNode; + if (node == null) + return; + + var c = Parent; + while (c != null) + { + if (c is Windows.Assets.PrefabWindow prefabWindow) + { + // Prefab editor + prefabWindow.Select(node); + return; + } + c = c.Parent; + } + + // Global selection + Editor.Instance.SceneEditing.Select(actor); + } + private void DoDrag() { // Do the drag drop operation if has selected element