// External public Chunk GenerateChunk(Vector2DI inChunkPos) { Chunk.Data newChunkData = _chunkDataGenerator.Generate(inChunkPos); Chunk newChunk = new Chunk(newChunkData, _world); return(newChunk); }
// External public Tile GetNearbyTile(Vector2DI inDirection) { if (_chunk == null) { _chunk = World.GetChunk(chunkPosition); } return(_chunk.data.GetTile(localPosition.x + inDirection.x, localPosition.y + inDirection.y)); }
// External public static float[,] Generate(uint inSize, Parameters inParameters, Vector2DI inOffset) { // TODO: Find a perlin noise lib and use it //uint scale = inParameters.scale; //uint octaves = inParameters.octaves; //float persistance = inParameters.persistance; //float lacunarity = inParameters.lacunarity; // //float amplitude = 1; // System.Random rng = new System.Random((int)inParameters.seed); //Vector2[] octaveOffsets = new Vector2[octaves]; //for (int i = 0; i < octaves; i++) //{ // float octaveOffsetX = rng.Next(-100000, 100000) + (inOffset.x * inSize); // float octaveOffsetY = rng.Next(-100000, 100000) - (inOffset.y * inSize); // octaveOffsets[i] = new Vector2(octaveOffsetX, octaveOffsetY); // // amplitude *= persistance; //} // ////inSize += 1; float[,] noiseMap = new float[inSize, inSize]; // float halfSize = inSize / 2f; // for (int y = 0; y < inSize; y++) { for (int x = 0; x < inSize; x++) { noiseMap[x, y] = rng.Next(0, 2); // amplitude = 1; // float frequency = 1; // float noiseHeight = 0; // // for (int i = 0; i < octaves; i++) // { // float sampleX = (x - halfSize + octaveOffsets[i].x) / scale * frequency; // float sampleY = (y - halfSize + octaveOffsets[i].y) / scale * frequency; // // float perlinValue = Mathf.PerlinNoise(sampleX, sampleY); // noiseHeight += perlinValue * amplitude; // // amplitude *= persistance; // frequency *= lacunarity; // } // // noiseMap[x, y] = noiseHeight * inParameters.rangeMultiplier; } } // return(noiseMap); }
// Exposed public Chunk.Data Generate(Vector2DI inChunkPos) { Chunk.Data newChunkData = new Chunk.Data(inChunkPos); NoiseGenerator.Output chunkNoiseData = _noiseGenerator.Generate(inChunkPos); TileMapGenerator.Output chunkTileMapData = _tileMapGenerator.Generate(inChunkPos, chunkNoiseData); newChunkData.SetTiles(chunkTileMapData.tiles); return(newChunkData); }
// External public Output Generate(Vector2DI inChunkPos, NoiseGenerator.Output inNoiseData) { Output newOutput = new Output(_chunkSize); for (int y = 0; y < _chunkSize; y++) { for (int x = 0; x < _chunkSize; x++) { newOutput.tiles[x, y] = new Tile(new Vector2DI(x, y), inChunkPos, new Terrain(TerrainGenerator.GetTerrainType(inNoiseData.heightMap[x, y]))); } } return(newOutput); }
// External public static Chunk GetChunk(Vector2DI inChunkPos) => _worldChunks[inChunkPos];
// External public Output Generate(Vector2DI inChunkPos) { return(new Output { heightMap = Noise.Generate(_chunkSize, _noiseParameters[0], inChunkPos) }); }
// Constructor public Data(Vector2DI inPos) { position = inPos; }
// Constructor public Tile(Vector2DI inLocalPosition, Vector2DI inChunkPosition, Terrain inTerrain) { localPosition = inLocalPosition; _terrain = inTerrain; chunkPosition = inChunkPosition; }