From 716e643f2a609cbc829dc8c117bd3ed4d2cf14e0 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 10 Sep 2023 21:07:41 +0200 Subject: [PATCH] Fix applying prefab changes to nesting prefab instances #1256 --- Source/Editor/Modules/SceneModule.cs | 2 +- Source/Editor/SceneGraph/GUI/ActorTreeNode.cs | 5 ----- Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs | 2 +- Source/Engine/Level/Prefabs/Prefab.Apply.cpp | 7 +++---- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Source/Editor/Modules/SceneModule.cs b/Source/Editor/Modules/SceneModule.cs index 0a51038ac..257262585 100644 --- a/Source/Editor/Modules/SceneModule.cs +++ b/Source/Editor/Modules/SceneModule.cs @@ -591,7 +591,7 @@ namespace FlaxEditor.Modules private void OnActorNameChanged(Actor actor) { ActorNode node = GetActorNode(actor); - node?.TreeNode.OnNameChanged(); + node?.TreeNode.UpdateText(); } private void OnActorActiveChanged(Actor actor) diff --git a/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs b/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs index 83ea666d9..c4edda65e 100644 --- a/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs +++ b/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs @@ -97,11 +97,6 @@ namespace FlaxEditor.SceneGraph.GUI } } - internal void OnNameChanged() - { - UpdateText(); - } - /// /// Updates the tree node text. /// diff --git a/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs b/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs index 1b1cfb4ff..5a532e362 100644 --- a/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs +++ b/Source/Editor/Windows/Assets/PrefabWindow.Hierarchy.cs @@ -430,7 +430,7 @@ namespace FlaxEditor.Windows.Assets { if (actorNode.Actor) { - actorNode.TreeNode.OnNameChanged(); + actorNode.TreeNode.UpdateText(); actorNode.TreeNode.OnOrderInParentChanged(); } diff --git a/Source/Engine/Level/Prefabs/Prefab.Apply.cpp b/Source/Engine/Level/Prefabs/Prefab.Apply.cpp index 5ea8ad0a4..e0df48fae 100644 --- a/Source/Engine/Level/Prefabs/Prefab.Apply.cpp +++ b/Source/Engine/Level/Prefabs/Prefab.Apply.cpp @@ -1255,20 +1255,19 @@ void Prefab::SyncNestedPrefabs(const NestedPrefabsList& allPrefabs, ArrayWaitForLoaded()) { LOG(Warning, "Waiting for prefab asset load failed."); continue; } + // Sync only if prefab is used by this prefab (directly) and it has been captured before const int32 nestedPrefabIndex = nestedPrefab->NestedPrefabs.Find(GetID()); if (nestedPrefabIndex != -1) { - if (nestedPrefab->SyncChangesInternal(allPrefabsInstancesData[nestedPrefabIndex])) + if (nestedPrefab->SyncChangesInternal(allPrefabsInstancesData[i])) continue; - nestedPrefab->SyncNestedPrefabs(allPrefabs, allPrefabsInstancesData); - ObjectsRemovalService::Flush(); } }