Description

We recently hit a situation where some actors would suddenly teleport across the map when they were modified in the editor.

We figured out that the AttachParent of some actors got reset on editor load while still keeping their relative transform to the original intended parent.

Once you modified the actor in any way, the cached transform got updated and it would then have its position updated.

 

The UDN has more details and the repro: [Link Removed]

Adding this check in AActor PostLoad will break and show that the AttachParent is TRASH_* / pendingkill : (pointing to the old REINST actor). So clearly an edge case where the reinst actor should have been patched.

 

void AActor::PostLoad()
{
    Super::PostLoad();
    check( !RootComponent || !RootComponent->AttachParent || !RootComponent->AttachParent->IsPendingKill() );
 

 

 

Steps to Reproduce

Description of reproduction scene (repro project "ReinstCorruption" found in UDN):

  • World parition level
  • We have 3 actors (all non-spatially loaded)
    • The Parent actor - MUST be a blueprint class
    • The Child actor - can be either pure native, or blueprint - in our example it's simply a native StaticMeshActor.
    • The Bystander actor - MUST to be a pure native actor.
  • Child is attached to Parent - either by dragging them via the World Outliner, or you can also use the right-click Attach feature.
  • Level Script Blueprint
    • Need a reference to the Parent actor, as well as a reference to the Bystander actor.

Once the following above has been setup, restart the editor and notice that the child that was attached to the parent is no longer so.

 

The repro project has everything setup except that the Child needs to be parented to Parent before restarting the editor.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-184182 in the post.

4
Login to Vote

Unresolved
CreatedApr 25, 2023
UpdatedFeb 29, 2024