Hey, Stu!
Thanks for the response. We started running into this assertion right after switching to 5.6, but unfortunately, don’t have an isolated repro case. Our setup runs like this:
- Game starts in a “Hub” level.
- Player picks an option to jump to a different level B, using GameplayStatic’s OpenLevel
- Level B programmatically streams in a large number of sublevels (~25), each with its own VFX, geometry, etc.
This assertion will happen frequently (and not always) when running this flow and closing PIE, and never if we directly run B in PIE. I can see that, using the flow, the world we’re getting settings from on cleanup is the sublevel’s. Some will contain a PersistentLevel, and some won’t. While if we directly load and run level B, World is always B.
This could be the way we’re configuring or streaming the sublevels. Streaming is simply:
// where World is always the currently active world (B), regardless of flow
World->SpawnActor<ALevelInstance>(..)
Because the Cleanup calls expect that WorldSettings might not exist, I thought “maybe there is a curious optimization now in place”
I haven’t encountered this on UNiagaraComponentPool::Cleanup, but will keep an eye on it.
Thank you!!
Dan.