public void Update() { if (Neighbours == null) { Neighbours = Grid.GetCellsAround(GridX, GridY); } var neighboursAlive = Neighbours.Count(cell => cell.IsAlive); if (!IsAlive) { IsAliveNext = false; if (neighboursAlive == 3) { IsAliveNext = true; } } else { IsAliveNext = true; if (neighboursAlive > 3) { IsAliveNext = false; } if (neighboursAlive < 2) { IsAliveNext = false; } } IsMarked = IsAlive != IsAliveNext; }
public List <Cell> GetNeighbours() { return(Neighbours ?? (Neighbours = Grid.GetCellsAround(GridX, GridY))); }