/// <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);
                }
            }
        }