From 976108569b69d09208d0cca2ab05c2950cfe9b3d Mon Sep 17 00:00:00 2001 From: glax Date: Fri, 21 Apr 2023 15:13:42 +0200 Subject: [PATCH] Threadsafe for masstesting variables. --- Pathfinding/Pathfinder.cs | 7 +++++-- Pathfinding/RegionManager.cs | 13 ++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Pathfinding/Pathfinder.cs b/Pathfinding/Pathfinder.cs index 2a9d1c4..937c18b 100644 --- a/Pathfinding/Pathfinder.cs +++ b/Pathfinding/Pathfinder.cs @@ -9,7 +9,6 @@ public class Pathfinder { public RegionManager regionManager; - public readonly string workingDir; public PathResult? pathResult; public Dictionary? gScore; private Dictionary? _cameFromDict; @@ -20,7 +19,11 @@ public class Pathfinder if (!Path.Exists(workingDirectory)) throw new DirectoryNotFoundException(workingDirectory); regionManager = new(workingDirectory); - workingDir = workingDirectory; + } + + public Pathfinder(RegionManager regionManager) + { + this.regionManager = regionManager; } public Pathfinder AStar(Coordinates startCoordinates, Coordinates goalCoordinates, diff --git a/Pathfinding/RegionManager.cs b/Pathfinding/RegionManager.cs index 93a2f6f..f2745ea 100644 --- a/Pathfinding/RegionManager.cs +++ b/Pathfinding/RegionManager.cs @@ -23,13 +23,16 @@ namespace Pathfinding public Region? GetRegion(ulong id) { - if(_regions.TryGetValue(id, out Region? value)) - return value; + + if(_regions.TryGetValue(id, out Region? retRegion)) + return retRegion; Region? loadedRegion = RegionFromId(id); + if(loadedRegion is not null) - _regions.Add(loadedRegion!.regionHash, loadedRegion); - return loadedRegion; + _regions.TryAdd(loadedRegion.regionHash, loadedRegion); + + return _regions[id]; } public Region[] GetAllRegions() @@ -37,7 +40,7 @@ namespace Pathfinding return _regions.Values.ToArray(); } - private Region? RegionFromFile(string filePath) + private static Region? RegionFromFile(string filePath) { if (!File.Exists(filePath)) return null;