Description

If a blueprint has its root component set in code, adding that blueprint as the child actor component of a second blueprint will cause the first to become dirty anytime the second is opened or edited. This does not occur if the root component is not defined in code.

Regression:
Yes - first blueprint does not become dirty in 4.14 Binary (CL 3249277)

Steps to Reproduce
  1. Open UE4 Editor (any project)
  2. Add code based on actor (MyActor)
  3. Add the following to MyActor.h
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = test)
    	UStaticMeshComponent* Meshy;
    
  4. Add the following to MyActor.cpp (in constructor)
    Meshy = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Meshy"));
    RootComponent = Meshy;
    
  5. Compile
  6. Create blueprint based on MyActor (MyActorBP)
  7. Create blueprint based on Actor (ActorBP)
  8. Add Child Actor Component to ActorBP
  9. Set Child Actor Component to MyActorBP
  10. Save All so neither blueprint is dirty
  11. Make an edit to ActorBP

Result:
MyActorBP becomes dirty

Expected:
Editing one blueprint does not dirty another that is not a child.

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

1
Login to Vote

Duplicate
ComponentUE - Gameplay - Blueprint
Affects Versions4.15.1
Target Fix4.16
Fix Commit3372764
Main Commit3380073
CreatedMar 31, 2017
ResolvedMar 31, 2017
UpdatedApr 27, 2018