I’m having difficulty understanding the navigation system in UE4. Not how to use the given tools inside of the editor, but how the implementation files all fit together. Perhaps the work I intend to do on the nav system is a bit over my reach but I find the limited information to be even more inhibiting.
What would really help is if I could get a description of the flow of the working parts. From the time the navigation volume is created and a navmesh starts to assemble what are the key implementation files for generating that navigation mesh. Particularly I’m interested in finding where the raycast occurs that determines if the reference mesh surface should generate navmesh there because of surface normals exceeding the maximum walkable slope angle.
Somewhere in the navigation implementation is a trace or raycast that checks the slope angle of the world geometry to determine if the nav mesh should be assembled there or not. Does anyone have an idea of where that might be?
Inside the NavigationSystem.cpp I find a UNavigationSystem::NavigationRaycast but I can’t find where this raycast is ever called at. It has a RayStart Vector and a RayEnd Vector but where these values come from is a mystery for me.
Still haven’t found the proper implementation files to get me started. I’m looking for the areas that describe how the nav mesh is built - not how it is traversed by AI or anything like that. Just the section where the Navigation volume starts it building a navmesh and how it is built.
So far this is where I’m at: I believe the NavigationSystem has a system in it called Recast that is responsible for the generation of the navmesh, specifically RecastNavMeshGenerator. I see throughout this implementation file all the bits I would expect to see for gathering and storing the tiles generated. However, I don’t see the actual raycast that determines if the geometry in question is within the walkable slope limit.
It reads as though the tiles generated are stored 2 dimensionally for easy access through X, Y inputs. So, now I’m trying to find where the surface is analyzed to see if it is walkable and a tile should be generated or otherwise. This angle has to be acquired somehow right?