NavMesh

Navmesh is an invisible layer of a game level that the AI (monsters) use to assist in navigating a level.

NavMesh in Prodeus
Prodeus automatically generates NavMesh for you when compiling a level. Prodeus will attempt generate NavMesh on any horizontal surface facing upwards, with some allowances for inclines up to 45 degrees. That is, Prodeus will generate NavMesh on floors, but not ceilings. There is a limit to the amount of NavMesh that Prodeus will generate, so level designers need to take time to optimise NavMesh generation where they can. A common problem is NavMesh being generated on unnecessary surfaces such as distant vista objects, leaving no NavMesh left for play spaces. In this situation monsters will not move.

Note: Flying monsters (bloaters, skullfish) do not use NavMesh.

General recommendations
You should prevent NavMesh generation on surfaces that you know monsters will not be navigating on. Examples include:
 * 1) Distant / vista objects that are only intended as background.
 * 2) Decorative brushes, including those that are moving or rotating.
 * 3) Roofs of structures (if applicable).

You may want to generate NavMesh in the following situations:
 * 1) To bridge a gap between brushes that a monster can traverse.
 * 2) To create a kind of "jump" point where a monster will fall off a cliff face.

Viewing the NavMesh
There are two levels of NavMesh in Prodeus:
 * 1) A static mesh. Prodeus generates this based of the geometry of the level. Any faces of a brush which are horizontal, up to a 45 degree incline (or thereabouts), are eligible for static NavMesh generation. Brushes which are parented to a function (such as a mover, or container) are not eligible for static NavMesh.
 * 2) A realtime mesh. This mesh is derived from the static mesh. It is this mesh that the AI uses for navigating the level. This mesh is modified by the game in realtime based on events in the level. For example, an elevator moving, a brush being hidden by a container, or even the player's position in the level.

NavMesh is only accessible when playtesting a level from the level editor. After loading the level press:
 * 1) [Ctrl] + [.] for static mesh. This will display as a blue overlay in the level.
 * 2) [Ctrl] + [,] for realtime mesh. This will display as a green overlay in the level.

Adjusting the NavMesh
You can add and remove NavMesh with the editor tools.

Adding NavMesh
Apply the NavOnly material to a face. This face does not have collision and will not be rendered in game, but static mesh will be generated in the location where that face is placed (subject to horizontal +/- 45 degree incline rules). Use this material to plug gaps in autogenerated NavMesh that the game can't solve itself.

Removing NavMesh
There are two ways to remove NavMesh:
 * 1) Parent a brush to a EditorIconContainer.png Container with either the 'No Nav' or 'Distant Object' flags set. This will exclude the brush from NavMesh generation.
 * 2) Use a NavBlocker (Asset Browser > Navigation) to create smaller areas that are excluded from NavMesh generation. Useful for more precision when removing NavMesh.