Ensure prefab actors static flags match parent flags or keeps it's own.

This commit is contained in:
Chandler Cox
2023-04-19 14:05:51 -05:00
parent b6a46a5ec2
commit be204fd2f5

View File

@@ -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<Actor> childActors = new List<Actor>();
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<Actor> 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)
{