/// <summary> /// Draws gizmos for open / closed nodes colored by their F values, be careful with less greedy algorithms, can cause heavy lag /// </summary> private void VisualizePathfinding() { if (!visualizePathfinding) { return; } if (openNodes == null && closedNodes == null) { return; } float lowestF = 0; float highestF = 0; if (openNodes?.Count > 0) { highestF = openNodes.Last().F; } else if (closedNodes?.Count == 0) { return; } else { highestF = closedNodes.OrderBy(n => n.F).Last().F; } if (closedNodes?.Count > 0) { lowestF = closedNodes.OrderBy(n => n.F).First().F; } if (openNodes?.Count > 0) { foreach (var node in openNodes) { Gizmos.color = Color.Lerp(Color.green, Color.red, (node.F - lowestF) / (highestF - lowestF)); Gizmos.DrawCube(node.pos, Vector3.one); } } if (closedNodes?.Count > 0) { foreach (var node in closedNodes) { Gizmos.color = Color.Lerp(Color.green, Color.red, (node.F - lowestF) / (highestF - lowestF)); Gizmos.DrawCube(node.pos, Vector3.one * 2); } } }