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); }