For two map placed actors, if one actor B's non root component is attached to another actor A, the attachment is not retained when actor A reruns its construction script, such as when moving actor A in the editor.
AActor::RerunConstructionScripts() attempts to cache and restore attached components. However, the logic assumes that any attached actors are attached via their root component, which is not necessarily true. While the following code there does find attached actors who are attached via their non-root component:
// If there are attached objects detach them and store the socket names TArray<AActor*> AttachedActors; GetAttachedActors(AttachedActors);
the function then proceeds to assume that the attached actor's root component is how that actor is attached to this one:
USceneComponent* EachRoot = AttachedActor->GetRootComponent(); // If the component we are attached to is about to go away... if (EachRoot && EachRoot->GetAttachParent() && EachRoot->GetAttachParent()->IsCreatedByConstructionScript())
The attached actor's non-root component is not processed, so their attachment to this actor won't be reattached.
I suggest considering either to:
See attached repro UE 5.3 project.
Repro steps:
Question about issue UE - 20421
Status update on UE-21075 and UE-20622?
I am not able to find world outliner how to enable it?
Undefined sysmbol: typeinfo for AActor when cross-compile linux dedicated server on windows
Delay nodes occasionally don't fire the "Completed" output in a nativized build
How can i modify the param name in EQS node
Teleporter in the Creative Hub is Locked and cannot be accessed
When I open UE4 4.24.3 it appears that. Does anyone know how to solve?
How to achieve HLSL Multiple Render Target in Material blueprints?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-204110 in the post.