From cd15c103c6f1113461ead6065e47130276cb61a1 Mon Sep 17 00:00:00 2001 From: Simon O'Shea Date: Wed, 9 Aug 2023 09:37:44 -0400 Subject: [PATCH] astar is animated primitively --- .../Assets/Scripts/CellMesh.cs | 18 +++++++++++++++ Pathfinding Visualizer/Assets/Scripts/Main.cs | 12 ++++++---- .../Assets/Scripts/Pathfinder.cs | 22 +++++-------------- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/Pathfinding Visualizer/Assets/Scripts/CellMesh.cs b/Pathfinding Visualizer/Assets/Scripts/CellMesh.cs index 9e62969..aa6acc8 100644 --- a/Pathfinding Visualizer/Assets/Scripts/CellMesh.cs +++ b/Pathfinding Visualizer/Assets/Scripts/CellMesh.cs @@ -78,6 +78,24 @@ public class CellMesh : MonoBehaviour mesh.triangles = triangles; } + public void Animate(Stack result) + { + int count = result.Count; + for (int i = 0; i < count; i++) + { + Node n = result.Pop(); + Debug.Log("Agent at: " + n.agent.x + ", " + n.agent.y); + Debug.Log(n.lastMove); + + grid.SetValue(n.agent.x, n.agent.y, 3); + //grid.SetValue(n.parent.agent.x, n.parent.agent.y, 0); + + UpdateCellVisual(); + + } + } + + void Start() { diff --git a/Pathfinding Visualizer/Assets/Scripts/Main.cs b/Pathfinding Visualizer/Assets/Scripts/Main.cs index 8cbb5ce..590723b 100644 --- a/Pathfinding Visualizer/Assets/Scripts/Main.cs +++ b/Pathfinding Visualizer/Assets/Scripts/Main.cs @@ -102,14 +102,16 @@ public class Main : MonoBehaviour public void ResetGrid() { world.reset(); - agent = new Vector2Int(-1, -1); + agent = new Vector2Int(); obstacles = new List(); samples = new List(); } public void StartAlgorithm() { + Vector2Int coord = new Vector2Int(); + bool agentFound = false; // Collect information about world for (int x = 0; x < world.GetWidth(); x++) @@ -138,15 +140,16 @@ public class Main : MonoBehaviour if (!samples.Contains(coord)) samples.Add(coord); } - // Add coordinate to obstacle array + // Add coordinate to agent array if (value == 3) { agent.x = x; agent.y = y; + agentFound = true; } } - if (agent.x == -1 && agent.y == -1) + if (!agentFound) { Debug.Log("NO AGENT!"); return; @@ -157,11 +160,12 @@ public class Main : MonoBehaviour Debug.Log("NO SAMPLES!"); return; } - if ( true ) { Pathfinder path = new Pathfinder(world, agent, obstacles, samples, 0, 0); + Stack result = path.result; + cellMesh.Animate(result); } } diff --git a/Pathfinding Visualizer/Assets/Scripts/Pathfinder.cs b/Pathfinding Visualizer/Assets/Scripts/Pathfinder.cs index 3085868..556abdb 100644 --- a/Pathfinding Visualizer/Assets/Scripts/Pathfinder.cs +++ b/Pathfinding Visualizer/Assets/Scripts/Pathfinder.cs @@ -21,12 +21,12 @@ public class Pathfinder public static int height; public static int width; - public static Stack result; + public Stack result; public Pathfinder(LogicGrid world, Vector2Int a, List o, List s, int algo, int heu) { - this.world = world; + this.world = world; height = world.GetHeight(); width = world.GetWidth(); @@ -39,9 +39,6 @@ public class Pathfinder //printInfo(); - - - StartWork(); } @@ -69,21 +66,14 @@ public class Pathfinder if (algorithm == 0) { result = StartAStar(initialState); - Debug.Log(" "); - - int count = result.Count; - for(int i = 0; i < count; i++) - { - Node n = result.Pop(); - Debug.Log("Agent at: " + n.agent.x + ", " + n.agent.y); - Debug.Log(n.lastMove); - } } } public static Stack StartAStar(Node initialState) { - Stack solution = new Stack(); + Debug.Log("GO!"); + + Stack solution = new Stack(); List open = new List(); @@ -105,6 +95,7 @@ public class Pathfinder if (currentNode.samples.Count() == 0) { Debug.Log("Gottem"); + //Node n = FindLastSample(open); @@ -299,7 +290,6 @@ public class Node onSample = CanSample(); if (onSample.x == 1) { - Debug.Log("SAMPLING"); Node child = new Node(this, this.agent, this.samples, 'S', this.distanceTraveled + 1, this.heuristic); child.samples.RemoveAt(onSample.y);