public IEnumerator AStarPathFindingNoBlocksTest() { float xStart = NodeMeasures.NODE_DIAMETER * 5; float yStart = NodeMeasures.NODE_DIAMETER * 5; float xEnd = NodeMeasures.NODE_DIAMETER * 1; float yEnd = NodeMeasures.NODE_DIAMETER * 2; // 5 * i i i i S // 4 * i * * * * // 3 * i * * * * // 2 * E * * * * // 1 * * * * * * // 0 * * * * * * // 0 0 1 2 3 4 5 var start = new Vector2(xStart, yStart); var end = new Vector2(xEnd, yEnd); Node startNode = currNodeGrid.GetNodeFromVector2(start); Node endNode = currNodeGrid.GetNodeFromVector2(end); Vector2[] path = null; PathRequest request = new PathRequest("test", startNode, endNode, (Vector2[] _path, bool foundPath) => { path = _path; Assert.IsTrue(foundPath); }); currRequestManager.RequestPath(request); yield return(new WaitForSeconds(0.1f)); Assert.NotNull(path); Assert.AreEqual(7, currNodeGrid.GetManhattanDistance(startNode, endNode)); Assert.AreEqual(7, path.Length); }
public void ManhattanDistanceTest() { Vector2 vector_1 = new Vector2(NodeMeasures.NODE_DIAMETER * 5, NodeMeasures.NODE_DIAMETER * 5); Vector2 vector_2 = new Vector2(NodeMeasures.NODE_DIAMETER * 6, NodeMeasures.NODE_DIAMETER * 6); Vector2 vector_3 = new Vector2(NodeMeasures.NODE_DIAMETER * 5, NodeMeasures.NODE_DIAMETER * 9); Node node_1 = currNodeGrid.GetNodeFromVector2(vector_1 + (Vector2)currNodeGrid.transform.position); Node node_2 = currNodeGrid.GetNodeFromVector2(vector_2 + (Vector2)currNodeGrid.transform.position); Node node_3 = currNodeGrid.GetNodeFromVector2(vector_3 + (Vector2)currNodeGrid.transform.position); Assert.AreEqual(2, currNodeGrid.GetManhattanDistance(node_1, node_2)); Assert.AreEqual(2, currNodeGrid.GetManhattanDistance(node_2, node_1)); Assert.AreEqual(4, currNodeGrid.GetManhattanDistance(node_1, node_3)); Assert.AreEqual(4, currNodeGrid.GetManhattanDistance(node_3, node_1)); Assert.AreEqual(4, currNodeGrid.GetManhattanDistance(node_3, node_2)); Assert.AreEqual(4, currNodeGrid.GetManhattanDistance(node_2, node_3)); }