From aa7256c12ee7106899ae8bb4dfd18c272baa0f49 Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Fri, 26 Feb 2021 19:27:26 +0100 Subject: [PATCH] Only allow to start on streets --- src/dijkstragraph.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/dijkstragraph.c b/src/dijkstragraph.c index e893cfe..0d6259c 100644 --- a/src/dijkstragraph.c +++ b/src/dijkstragraph.c @@ -512,13 +512,22 @@ inline struct dijkstra_node *dijkstra_node_get_connection(struct dijkstra_node * struct dijkstra_node *dijkstra_node_find_closest_node(struct dijkstra_solver *solver, struct position *position) { GList *l = NULL; + GList *pl = NULL; struct dijkstra_node *node = NULL; struct dijkstra_node *closest_node = NULL; + struct dijkstra_path *path = NULL; float closest_distance; float distance; for (l = solver->nodes; l != NULL; l = l->next) { node = (struct dijkstra_node*) l->data; + for (pl = node->paths; pl != NULL; pl = pl->next) { + path = (struct dijkstra_path*) pl->data; + if (path->net_meta->type == STREET) + break; + } + if (!(path && path->net_meta->type == STREET)) + continue; // Only start on nodes that are part of a street distance = dijkstra_position_get_distance(position, &node->position); if (!closest_node || distance < closest_distance) { closest_node = node;