Hello,
We are currently working on a level loading system that uses sub-world partition levels loaded in a persistent empty world.
The sub-world partition is loaded into the persistent one using the UWorldPartition::RegisterWorldAssetStreaming function and then potentially unloaded by disabling/moving the streaming source.
Our problem appears when trying to unload and reload a sub WP world that uses static baked navdata (with nav chunks). When unloading the level, the navdata is not directly destroyed because of the GC. If we reload the level before the GC pass (that effectively destroys the navdata object), the RecastNavMesh is not re-constructed/serialized and so is not reallocating memory for its DetourNavmesh (in FPImplRecastNavMesh::Serialize => DetourNavMesh = dtAllocNavMesh(); ).
This issue prevent any navigation on the level, even if RecastNavMesh actors are correctly registered in the navigation system.
For now, it seems like we are able to mitigate this issue by forcing the GC after each level loading (hence forcing the destruction of unloaded objects) but this solution is not ideal.
Do you have any ideas for us to resolve this problem ?
[Attachment Removed]