# Navmeshes from streaming levels are not loaded if Persistent level has no Nav Bounds Volumes

**URL:** <https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936>\
**Category:** World Creation\
**Tags:** navmeshbounds, streaming-level, unreal-engine, persistent-level, navmesh, question, World-Composition\
**Created:** [July 29, 2015, 6:29am UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936 "2015-07-29T06:29:41Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![rajkosto](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@rajkosto](https://forums.unrealengine.com/u/rajkosto)\
**Post date:** [July 29, 2015, 6:29am UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/1 "2015-07-29T06:29:41Z")

</div>

When using world composition, the only map that loads if you load the persistent map is the persistent map.  
I have nothing in my persistent map save for a directional light and some clouds.  
All the actual geometry is in my streaming levels for world composition.  
So, my persistent level has no Nav bounds Volumes in it.

I wanted the navmesh for each streaming level to be loaded/unloaded with it, so i put the Nav Bounds Volumes into each of the streaming levels themselves.  
Once the blank persistent level is loaded, i go to the levels browser, select all the streaming levels, and right click-\>load them so that they show up.  
You need to have Automatic Build Navigation set to OFF to notice this, otherwise it will just rebuild navigation every load anyway (won’t care about NavMeshDataChunks inside the streaming levels themselves)  
So i build ALL LEVELs, which makes the green navigation show up over the entire world.  
Restart the editor, or create a new map and then discard it and reload the persistent level again.  
If you right click and load all the streaming levels again, you will notice that there’s no navigation data on them untill you build it again (even though it saved properly, and there are RecastNavMeshDataChunks being serialized on streaming level load)

This is because, when the persistent map was loaded, void UNavigationSystem::OnWorldInitDone was called, which has a IsThereAnywhereToBuildNavigation() check, and if there are no Nav Bounds Volumes, it DESTROYS all the NavigationData actors. This is a problem later on when any streaming level is loaded, because for it’s tiles to be AttachTo’d to the existing navmesh, OnStreamingLevelAdded must be called on an EXISTING NavData in the NavDataSet array in UNavigationSystem::OnLevelAddedToWorld. Since the NavData was previously destroyed, nothing happens and the tiles from the streaming levels are not added.

I worked around this by just making sure that first branch in OnWorldInitDone is never entered (just commented out IsThereAnywhereToBuildNavigation() == ), but not sure what the proper fix would be, nor why does the NavigationData need to be destroyed if there are no NavBoundsVolumes.

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_afd92cec](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_afd92cec](https://forums.unrealengine.com/u/anonymous_user_afd92cec)\
**Post date:** [July 29, 2015, 7:19am UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/2 "2015-07-29T07:19:20Z")

</div>

Yeah, it’s a known problem with navigation streaming. We usually workaround it by placing any navigation volume in the persistent level, to make IsThereAnywhereToBuildNavigation() happy.

---

<div class="post-metadata">

**Author:** ![rajkosto](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@rajkosto](https://forums.unrealengine.com/u/rajkosto)\
**Post date:** [July 29, 2015, 7:21am UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/3 "2015-07-29T07:21:09Z")

</div>

Earlier you could override IsThereAnywhereToBuildNavigation() by setting bWholeWorldNavigable to true, but they removed the UPROPERTY on that.

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_afd92cec](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_afd92cec](https://forums.unrealengine.com/u/anonymous_user_afd92cec)\
**Post date:** [July 29, 2015, 7:38am UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/4 "2015-07-29T07:38:59Z")

</div>

> bWholeWorldNavigable  
> It’s a deprecated property, and will be probably removed soon.

We will look into fixing UNavigationSystem behavior with world composition. NavigationSystem tries to be very helpful to the user and deletes navmesh actors when there is no bounds in the currently loaded world. Probably more correct behavior would be to let user delete navmesh if he does not need it anymore.

---

<div class="post-metadata">

**Author:** ![NorlinGames](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/norlingames/32/495614_2.png) [@NorlinGames](https://forums.unrealengine.com/u/NorlinGames)\
**Post date:** [September 7, 2019, 5:15pm UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/5 "2019-09-07T17:15:22Z")

</div>

Any update on this? I’m using 4.23.0 now and it still forces to rebuils all the navmesh with any actions with world composition (e.g. if I just load/unload sublevels, or just re-save with no changes – the engine asks to rebuild navmesh).

---

<div class="post-metadata">

**Author:** ![Sudo-Ku](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Sudo-Ku](https://forums.unrealengine.com/u/Sudo-Ku)\
**Post date:** [January 28, 2021, 12:27am UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/6 "2021-01-28T00:27:38Z")

</div>

Bumping this thread, as we’re having the same issue!

---

<div class="post-metadata">

**Author:** ![Grafix](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Grafix](https://forums.unrealengine.com/u/Grafix)\
**Post date:** [June 30, 2021, 2:09pm UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/7 "2021-06-30T14:09:20Z")

</div>

bump again

---

<div class="post-metadata">

**Author:** ![TCMPAPPY](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@TCMPAPPY](https://forums.unrealengine.com/u/TCMPAPPY)\
**Post date:** [May 9, 2023, 6:22pm UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/8 "2023-05-09T18:22:23Z")

</div>

bump

---

<div class="post-metadata">

**Author:** ![93cbbb041d664728acde881e234fed25](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@93cbbb041d664728acde881e234fed25](https://forums.unrealengine.com/u/93cbbb041d664728acde881e234fed25)\
**Post date:** [November 7, 2023, 9:02am UTC](https://forums.unrealengine.com/t/navmeshes-from-streaming-levels-are-not-loaded-if-persistent-level-has-no-nav-bounds-volumes/326936/9 "2023-11-07T09:02:44Z")

</div>

Still an issue in Unreal 5.2 As suggested putting a navigation volume in persistent level would skip the trigger that destroy navigation data.
