From 45271b954417ef44112301f12388f28e36005283 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 19:31:59 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Optimize=20AStar=20dictionary=20loo?= =?UTF-8?q?kup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: johnstrand <11484777+johnstrand@users.noreply.github.com> --- src/GameUtils/Entity/AStar.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/GameUtils/Entity/AStar.cs b/src/GameUtils/Entity/AStar.cs index 1305f11..85ad8e5 100644 --- a/src/GameUtils/Entity/AStar.cs +++ b/src/GameUtils/Entity/AStar.cs @@ -1,3 +1,5 @@ +using System.Runtime.InteropServices; + namespace GameUtils.Entity; /// @@ -126,9 +128,10 @@ public bool Solve(T start, T end, Func heuristic, out List path) var tentativeG = currentG + weight; - if (tentativeG < gScore.GetValueOrDefault(neighbor, float.MaxValue)) + ref var neighborG = ref CollectionsMarshal.GetValueRefOrAddDefault(gScore, neighbor, out var exists); + if (!exists || tentativeG < neighborG) { - gScore[neighbor] = tentativeG; + neighborG = tentativeG; previousNodes[neighbor] = current; open.Enqueue(neighbor, tentativeG + heuristic(neighbor, end)); }