Is the limit of 2 nested ChildActorComponents deliberate? I don’t see such a limitation documented anywhere.
Unreal Engine 4.27.1 release (git: SHA-1: 9e0f5f2a419a75b83392c44bf75462366ca8c1e2)
Place a blueprint with nested child actor components in the following manner:
Level > BlueprintWithChildActor > ChildActorWithChildActor1 > ChildActorWithChildActor2 > ChildActorWithChildActor3
The scene will load fine, until you at some point load a different scene, after which loading this level will throw an exception, and you have to “Set Next Statement” on the next line of code to successfully load the scene.
at EditorServer.cpp:2746, right after “LoadingMapStatus_Initializing”
FBSPOps::bspValidateBrush(Context.World()->GetDefaultBrush()->Brush, 0, 1);
Throws an exception: “read access violation __imp_UWorld::GetDefaultBrush(…) returned nullptr”
Level.cpp:GetDefaultbrush has some expectations about the actor array:
// If the builder brush exists then it will be the 2nd actor in the actors array.
However, after Level.cpp:SortActorsHierarchy performs its call to StableSortInternal, that actor array gets reordered, with a bunch of objects moved to the start of the array, which get turned into null at some point, resulting in the access violation. The builder brush (whatever that is) ends up pushed much farther down, along with the WorldSettings (which apparently has a “traditional index” of 0.
I’m getting the impression that the depth calculation in SortActorsHierarchy isn’t working correctly, as it seems to just store the value 0 for all of them. But it’s all quite complex and I don’t quite understand what is supposed to happen there.