From be204fd2f5a730724569b044f8266e8de86c85ee Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Wed, 19 Apr 2023 14:05:51 -0500 Subject: [PATCH] Ensure prefab actors static flags match parent flags or keeps it's own. --- Source/Editor/SceneGraph/GUI/ActorTreeNode.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs b/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs index 2e9aab3b4..5c87cbff6 100644 --- a/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs +++ b/Source/Editor/SceneGraph/GUI/ActorTreeNode.cs @@ -625,7 +625,16 @@ namespace FlaxEditor.SceneGraph.GUI { var item = _dragAssets.Objects[i]; var actor = item.OnEditorDrop(this); - actor.StaticFlags = spawnParent.StaticFlags; + if (spawnParent.GetType() != typeof(Scene)) + { + // Set all Actors static flags to match parents + List childActors = new List(); + GetActorsTree(childActors, actor); + foreach (var child in childActors) + { + child.StaticFlags = spawnParent.StaticFlags; + } + } actor.Name = item.ShortName; actor.Transform = spawnParent.Transform; Editor.Instance.SceneEditing.Spawn(actor, spawnParent, false); @@ -670,6 +679,16 @@ namespace FlaxEditor.SceneGraph.GUI return result; } + + private void GetActorsTree(List list, Actor a) + { + list.Add(a); + int cnt = a.ChildrenCount; + for (int i = 0; i < cnt; i++) + { + GetActorsTree(list, a.GetChild(i)); + } + } private bool ValidateDragActor(ActorNode actorNode) {