Asynchronously loading a level that has one or more Actors using the "Async Load Primary Asset" node will enable dirty grug for that level asset.
The cause is a modified code(CL-3764602) for the [Link Removed].
in AsyncLoading.cpp
#if WITH_EDITOR // In editor builds, call the asset load callback. This happens in both editor and standalone to match EndLoad for (const FWeakObjectPtr& WeakAsset : LoadedAssets) { // It may have been unloaded/marked pending kill since being added, ignore those cases if (UObject* LoadedAsset = WeakAsset.Get()) { FCoreUObjectDelegates::OnAssetLoaded.Broadcast(LoadedAsset); } } LoadedAssets.Reset(); #endif
This code calls OnAssetLoaded for the level asset, and some functions of the actor of that level (AActor :: RerunConstructionScripts, AActor :: DestroyConstructedComponents (), UActorComponent :: Rename) are called. This causes dirtyflag of the level asset to be effective.
Probably, if we judge whether LoadedAsset is level or not with the above code, I think that this issue will be fixed.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-62175 in the post.
3 |
Component | UE - Gameplay |
---|---|
Affects Versions | 4.19.2, 4.20 |
Target Fix | 4.21 |
Created | Jul 26, 2018 |
---|---|
Resolved | Aug 9, 2018 |
Updated | Oct 2, 2018 |