void AActor::PreEditChange(UProperty* PropertyThatWillChange) { Super::PreEditChange(PropertyThatWillChange); UObjectProperty* ObjProp = Cast<UObjectProperty>(PropertyThatWillChange); UBlueprintGeneratedClass* BPGC = Cast<UBlueprintGeneratedClass>(GetClass()); if ( BPGC != nullptr && ObjProp != nullptr ) { BPGC->UnbindDynamicDelegatesForProperty(this, ObjProp); } if ( ReregisterComponentsWhenModified() ) { UnregisterAllComponents(); } }
void AActor::PreEditChange(UProperty* PropertyThatWillChange) { Super::PreEditChange(PropertyThatWillChange); UObjectProperty* ObjProp = Cast<UObjectProperty>(PropertyThatWillChange); UBlueprintGeneratedClass* BPGC = Cast<UBlueprintGeneratedClass>(GetClass()); if ( BPGC != nullptr && ObjProp != nullptr ) { BPGC->UnbindDynamicDelegatesForProperty(this, ObjProp); } // During SIE, allow components to be unregistered here, and then reregistered and reconstructed in PostEditChangeProperty. if ((GEditor && GEditor->bIsSimulatingInEditor) || ReregisterComponentsWhenModified()) { UnregisterAllComponents(); } }