astar is animated primitively

This commit is contained in:
Simon O'Shea
2023-08-09 09:37:44 -04:00
parent ea904845a7
commit cd15c103c6
3 changed files with 32 additions and 20 deletions
@@ -78,6 +78,24 @@ public class CellMesh : MonoBehaviour
mesh.triangles = triangles;
}
public void Animate(Stack<Node> 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()
{
@@ -102,14 +102,16 @@ public class Main : MonoBehaviour
public void ResetGrid()
{
world.reset();
agent = new Vector2Int(-1, -1);
agent = new Vector2Int();
obstacles = new List<Vector2Int>();
samples = new List<Vector2Int>();
}
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<Node> result = path.result;
cellMesh.Animate(result);
}
}
@@ -21,12 +21,12 @@ public class Pathfinder
public static int height;
public static int width;
public static Stack<Node> result;
public Stack<Node> result;
public Pathfinder(LogicGrid world, Vector2Int a, List<Vector2Int> o, List<Vector2Int> 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<Node> StartAStar(Node initialState)
{
Stack<Node> solution = new Stack<Node>();
Debug.Log("GO!");
Stack<Node> solution = new Stack<Node>();
List<Node> open = new List<Node>();
@@ -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);