A Brushfire algorithm to generate a distance map in a grid
I would suggest to implement a HeatMapGridPoints class and inside this class, create two separate methods for GetUnexploredPoints and GetOpenPoints which will return list of GridPoint. This way, you can expand and also reuse the HeatMap. Also, it would be more readable than just gathering them into one method. 

Example : 

public class HeatMapGridPoints
{

    public IList&lt;GridPoint&gt; GetUnexploredPoints(IGrid grid)
    {
        var points = new List&lt;GridPoint&gt;();

        for (int i = 0; i &lt; grid.Width; i++)
        {
            for (int j = 0; j &lt; grid.Height; j++)
            {
                points.Add(new GridPoint(i, j));
            }
        }

        return points;

    }


    public IList&lt;GridPoint&gt; GetOpenPoints(IGrid grid, GridPoint goal)
    {
        // rest of the code 
    }


}


you can also do something like this : 

public class HeatMapGridPoints
{
    private readonly IGrid _grid;

    private readonly GridPoint _gridPoint;

    public IList&lt;GridPoint&gt; OpenPoints { get; private set; }

    public IList&lt;GridPoint&gt; UnexploredPoints { get; private set; }



    public HeatMap(IGrid grid, GridPoint goal)
    {
        _grid = grid;

        _gridPoint = goal;

        OpenPoints = GetOpenPoints(); 

        UnexploredPoints = GetUnexploredPoints();
    }


    private IList&lt;GridPoint&gt; GetUnexploredPoints()
    {
        ...
    }


    private IList&lt;GridPoint&gt; GetOpenPoints()
    {
        ...
    }


}


usage : 

var heatMap = new HeatMapGridPoints(grid, goal);

foreach(var point in heatMap.OpenPoints)
{
    ....
}


this would make it much easier to maintain and also more readable.