Пример #1
0
        // External
        public Chunk GenerateChunk(Vector2DI inChunkPos)
        {
            Chunk.Data newChunkData = _chunkDataGenerator.Generate(inChunkPos);

            Chunk newChunk = new Chunk(newChunkData, _world);

            return(newChunk);
        }
Пример #2
0
 // 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));
 }
Пример #3
0
        // 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);
        }
Пример #4
0
            // 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);
            }
Пример #5
0
                // 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);
                }
Пример #6
0
 // External
 public static Chunk GetChunk(Vector2DI inChunkPos) => _worldChunks[inChunkPos];
Пример #7
0
 // External
 public Output Generate(Vector2DI inChunkPos)
 {
     return(new Output {
         heightMap = Noise.Generate(_chunkSize, _noiseParameters[0], inChunkPos)
     });
 }
Пример #8
0
 // Constructor
 public Data(Vector2DI inPos)
 {
     position = inPos;
 }
Пример #9
0
 // Constructor
 public Tile(Vector2DI inLocalPosition, Vector2DI inChunkPosition, Terrain inTerrain)
 {
     localPosition = inLocalPosition;
     _terrain      = inTerrain;
     chunkPosition = inChunkPosition;
 }