Namespace AnyPath.Graphs.Line

A graph that describes 3D edges/lines between points. Very similar to AnyPath.Graphs.PlatformerGraph, but in 3D. Note that the words edge and line are used interchangeably throughout the documentation.
Features:
Paths are calculated from arbitrary locations on edges to any position on another edge. So your pathfinding query doesn't have to start and end at the exact node positions but can be anywhere in between.
Edges themselves can have additional properties, like flags and additional cost to discourage paths along certain edges.
Edges can be made 'unwalkable' without rebuilding the entire graph by assigning a cost of infinity to an edge.
Closest edge queries from any position in space. If an agent moved away from an edge, it can recover it's location on the graph using these queries.
Edges can be directed and undirected.
Edges can have a user assigned Id to easily map back to MonoBehaviour scripts
The resulting path is a list of segments containing all the information, the exact enter and exit positions on each edge and it's flags, so once you have a path, there doesn't have to be any need to do additional raycasting or collision detection (with the static world at least).
AnyPath.Graphs.Line.SceneGraph, a Line Graph Scene Editor tool to design a line graph inside of your scene.
Classes
LineGraphBuilder
Utility to construct a line graph by connecting vertices by Id instead of index, which is far more convenient when building a custom editor. As an example use case, this class is used to construct the LineGraph by the LineGraph.
LineGraphDrawer
Makes it extremely easy to 'draw' a road graph. Just add lines/edges and close enough vertices will automatically be joined together.
LineGraphPopulator
Utility to populate LineGraph using Unity's Job system. This can be useful if you have frequent updates and want this process to be as fast as possible and/or on another thread.
LineGraphWelder
Utility to weld close edge endpoints in a line graph together. Also contains 'continous' weld methods, which make it extremely easy to just draw a graph and the vertices will be connected together automatically. For managed use of this continious welding, see LineGraphDrawer
Structs
LineGraph
A graph that describes 3D edges/lines between points. Pathfinding can be done from any location on these edges to any location on another edge. Making it more intuitive for agents that can move smoothly along these edges.
LineGraph.Edge
LineGraph.Enumerator
Structure that enumerates all edges/locations in the graph. This can be used to construct ALT heuristics.
LineGraphBuilder.ProtoEdge
Prototype of an edge.
LineGraphHeuristic
Simple heuristic provider for LineGraph
LineGraphLocation
Represents a location on the line graph. A location means a point somewhere along a line/edge. A location can be retrieved by calling the Closest functions on the LineGraph. A location can be used as a start/stop/goal in a path request. This same struct is also used as the path segment type after processing. This is done because the flags may contain information your agent needs while navigating through your world, and for performance reasons because a big chunk of the path can just be memcpyd'.
LineGraphProcessor
Processes the raw A* result for a request on the line graph. This processing ensures that the resulting segments all point in the correct direction.
Delegates
ClosestLineLocationPredicate
Describes a function that validates if a location on a line/edge is valid as a return value for the Closest queries. This can be used for instance to check if there are objects obstructing the line of sight between the origin and the location.