public TileChunk TileChunkColumnGen(TileChunk chunk, int x, int y) { int stoneHeight = Mathf.FloorToInt(stoneBaseHeight); stoneHeight += GetNoise(x, 0, stoneMountainFrequency, Mathf.FloorToInt(stoneMountainHeight)); int dirtHeight = Mathf.FloorToInt(dirtBaseHeight); dirtHeight += GetNoise(x, 0, dirtMountainFrequency, Mathf.FloorToInt(dirtMountainHeight)); dirtHeight += GetNoise(x, y, dirtNoise, Mathf.FloorToInt(dirtNoiseHeight)); stoneHeight += GetNoise(x, 0, stoneBaseNoise, Mathf.FloorToInt(stoneBaseNoiseHeight)); for (int yi = chunk.pos.y; yi < chunk.pos.y + TileChunk.ChunkSizeY; yi++) { if (yi <= stoneHeight) { chunk.SetTile(x - chunk.pos.x, yi - chunk.pos.y, new TileStone()); } else if (yi <= dirtHeight) { chunk.SetTile(x - chunk.pos.x, yi - chunk.pos.y, new TileDirt()); } else { chunk.SetTile(x - chunk.pos.x, yi - chunk.pos.y, new TileAir()); } } return(chunk); }
public void SetTile(int x, int y, Tile tile) { TileChunk chunk = GetChunk(x, y); if (chunk != null) { chunk.SetTile(x - chunk.pos.x, y - chunk.pos.y, tile); chunk.ChunkUpdate = true; UpdateIfEqual(x - chunk.pos.x, 0, new TileWorldPos(x - 1, y)); UpdateIfEqual(x - chunk.pos.x, TileChunk.ChunkSizeX - 1, new TileWorldPos(x + 1, y)); UpdateIfEqual(y - chunk.pos.y, 0, new TileWorldPos(x, y - 1)); UpdateIfEqual(y - chunk.pos.y, TileChunk.ChunkSizeY - 1, new TileWorldPos(x, y + 1)); } }