BSP navigation mesh does not work properly with level streaming offsets

I am trying to make a procedural generation system which spawns in levels by using the “Load Level Instance” function.

Additionally I want my generated level to be navigable by AI, so I have added a NavMeshboundsVolume to each level, including the master level and all streamed levels, and I set the default NavRecast to dynamic in the project settings.

In the editor all the navigation generates correctly, and while playing all player collisions with the geometry are also correct.

The issue I found is when you stream in a level (made with BSP) with an offset, when you do this the navigation mesh does not generate correctly.

I have made a ( [bug repro project][1] ) with the simplest repro setup.

Notice how the NavRecast debug for collisions seems to show all of the collision data from each streamed level stacked on top of each other at world origin. I believe the BSP collision data (somehow for navigation but not player collision) is not being updated when the streamed level has an offset applied to it.

There is a workaround for this issue, if you convert your BSP to a static mesh and then make sure it has appropriate collisions, that seems to fix the issue and navigation generates correctly across all levels as you would expect.

I noticed this too. I’m doing exactly the same thing and noticed I have some prototype areas that are still using BSP and they happen to be the places my nav mesh isn’t auto generating.

Is there a solution for this that doesn’t involve converting all the BSP brushes to static meshes? I want to be able to edit my levels.