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);
    }
 protected override void CalculatePerlineEdge(float scale, float seed, Vector2 offset)
 {
     for (int i = 0; i < Chunk.chunkSize; i++)
     {
         edge[i] = PerlinNoise.Calculate(Chunk.chunkSize - 1, i, scale, seed, offset, Chunk.chunkSize);
     }
 }
    private void CalculateTile(int x, int y, Chunk chunk, float heightCell, Biome biome)
    {
        float moistureCell, temperatureCell;

        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(biome, heightCell, moistureCell, temperatureCell);

        chunk.Fields[x][y] = field.ID;
        chunk.tilemap.SetTile(new Vector3Int((int)(-x + chunk.transform.position.x + Chunk.chunkSizeHalf),
                                             (int)(-y + chunk.transform.position.y + Chunk.chunkSizeHalf), 0), field.TileRepresentation);
    }