private IEnumerator GenerateTilesForNormalChunks(Chunk chunk)
    {
        SaveEdges(chunk);
        int   breakGeneration = (int)(Chunk.chunkSize * 0.1f);
        float heightCell, moistureCell, temperatureCell;

        Vector3Int[] positionArray = new Vector3Int[Chunk.chunkSize * Chunk.chunkSize];
        TileBase[]   tileArray     = new TileBase[Chunk.chunkSize * Chunk.chunkSize];
        for (int x = 0; x < Chunk.chunkSize; x++)
        {
            for (int y = 0; y < Chunk.chunkSize; y++)
            {
                heightCell      = PerlinNoise.Calculate(x, y, chunk.topographyScale, topographySeed, chunk.offsetTopography, Chunk.chunkSize);
                moistureCell    = PerlinNoise.Calculate(x, y, Chunk.moistureScale, moistureSeed, chunk.offsetMoisture, Chunk.chunkSize);
                temperatureCell = PerlinNoise.Calculate(x, y, Chunk.temperatureScale, temperatureSeed, chunk.offsetTemperature, Chunk.chunkSize);
                Field field = ChooseFieldType(chunk.TerrainBiome, heightCell, moistureCell, temperatureCell);
                chunk.Fields[x][y] = field.ID;
                positionArray[x * Chunk.chunkSize + y] = new Vector3Int((int)(-x + chunk.transform.position.x + Chunk.chunkSizeHalf),
                                                                        (int)(-y + chunk.transform.position.y + Chunk.chunkSizeHalf), 0);
                tileArray[x * Chunk.chunkSize + y] = field.TileRepresentation;
            }
        }
        chunk.tilemap.SetTiles(positionArray, tileArray);
        yield return(StartCoroutine(staticObjectGenerator.Generate(chunk)));

        enemySpawn.SpawnOnChunk(chunk);
    }