Description

In AActor::GatherCurrentMovement, bWasAttachmentModified will be set to true if the actor’s root component has an AttachParent, even if none of the values in the AttachmentReplication struct have changed.
Additionally, AActor::PreReplication will set the AttachmentReplication struct’s AttachParent and AttachComponent to null before calling GatherCurrentMovement, which will get the current values for these pointers. After GatherCurrentMovement, PreReplication then checks if the old AttachParent/AttachComponent differ from the current AttachParent/AttachComponent, marking the struct dirty if so.
However, AActor::GatherCurrentMovement also performs this handling of setting the AttachParent/AttachComponent to null before later checking if the old values differ from the current ones. Because these were already reset to null in PreReplication, the “old” values in GatherCurrentMovement will always be null. If the actor’s root component has a non-null AttachParent, this value will always differ from the OldAttachParent, causing AttachmentReplication to be marked as dirty.

Steps to Reproduce
  • Attach a replicated actor to another actor.
  • Observe that AActor::GatherCurrentMovement will call MARK_PROPERTY_DIRTY_FROM_NAME for AttachmentReplication every net update.

Have Comments or More Details?

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

0
Login to Vote

Unresolved
ComponentUE - Networking
Affects Versions5.8
CreatedFeb 11, 2026
UpdatedFeb 11, 2026
View Jira Issue