in GameOfLife/ViewModel/PetriDish.cs [121:149]
private Cell GetNextGenerationCell(int i, int j) // OPTIMIZED
{
var currentCell = currentCells[i, j];
var isAlive = currentCell.IsAlive;
var neighborsCount = CountNeighbors(i, j);
var cell = nextGenerationCells[i, j];
if (!isAlive)
{
if (neighborsCount == 3)
{
cell.IsAlive = true;
cell.Age = 0;
}
}
else if (neighborsCount == 2 || neighborsCount == 3)
{
cell.IsAlive = true;
cell.Age = currentCell.Age + 1;
}
else
{
cell.IsAlive = false;
cell.Age = 0;
}
return cell;
}