From cd3905915bac221c30f4bffc7785003659982d80 Mon Sep 17 00:00:00 2001 From: glax Date: Fri, 21 Apr 2023 13:43:50 +0200 Subject: [PATCH] Cleanup --- Pathfinding/Pathfinder.cs | 14 ++++++-------- Pathfinding/RegionManager.cs | 3 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Pathfinding/Pathfinder.cs b/Pathfinding/Pathfinder.cs index 7f9692b..be66723 100644 --- a/Pathfinding/Pathfinder.cs +++ b/Pathfinding/Pathfinder.cs @@ -1,9 +1,7 @@ -using System.Diagnostics; -using System.Text.Json; +using System.Text.Json; using OSMDatastructure; using OSMDatastructure.Graph; using static OSMDatastructure.Tag; -using WayType = OSMDatastructure.Tag.WayType; namespace Pathfinding; @@ -96,13 +94,13 @@ public class Pathfinder double nodeAngle = v1.Angle(v2); angle = ((180 - nodeAngle) / 180) * angleWeightFactor; } - double prio = regionManager.GetPriorityForVehicle(_speedType,edge, regionManager.GetRegion(currentNode.coordinates)!); + double prio = regionManager.GetPriorityForVehicle(_speedType,edge, currentNode); return distance / (1 + speed + angle + prio); } private double Heuristic(OsmNode currentNode, OsmNode neighborNode, OsmNode goalNode, OsmEdge edge, double roadPriorityFactor, double junctionFactor, double sameRoadFactor, double nodeAngleFactor) { - double roadPriority = regionManager.GetPriorityForVehicle(_speedType, edge, regionManager.GetRegion(currentNode.coordinates)!) * roadPriorityFactor; + double roadPriority = regionManager.GetPriorityForVehicle(_speedType, edge, currentNode) * roadPriorityFactor; if (roadPriority == 0) return double.MaxValue; @@ -155,9 +153,9 @@ public class Pathfinder double weight = 0; while (_cameFromDict!.ContainsKey(_cameFromDict[currentNode])) { - OsmEdge? currentEdge = _cameFromDict[currentNode].edges.First(edge => edge.neighborId == currentNode.nodeId); + OsmEdge? currentEdge = _cameFromDict[currentNode].edges.FirstOrDefault(edge => edge.neighborId == currentNode.nodeId); HashSet? tags = - regionManager.GetRegion(currentNode.coordinates)!.tagManager.GetTagsForWayId(currentEdge.wayId); + regionManager.GetRegion(currentNode.coordinates)!.tagManager.GetTagsForWayId(currentEdge!.wayId); PathNode? newNode = PathNode.FromOsmNode(currentNode, tags); if(newNode is not null) path.Add(newNode); @@ -176,7 +174,7 @@ public class Pathfinder private class Vector { - public float x, y; + public readonly float x, y; public Vector(float x, float y) { diff --git a/Pathfinding/RegionManager.cs b/Pathfinding/RegionManager.cs index 1b3febf..304b64a 100644 --- a/Pathfinding/RegionManager.cs +++ b/Pathfinding/RegionManager.cs @@ -131,10 +131,11 @@ namespace Pathfinding } } - public double GetPriorityForVehicle(SpeedType speedType, OsmEdge edge, Region region) + public double GetPriorityForVehicle(SpeedType speedType, OsmEdge edge, OsmNode node) { if (speedType == SpeedType.any) return 1; + Region region = GetRegion(node.coordinates)!; WayType? wayType = (WayType?)region.tagManager.GetTag(edge.wayId, Tag.TagType.highway); if(wayType is null) return 0;