Exemple #1
0
        public Map GenerateMap(Vector2 offset)
        {
            Debug.Log(string.Format("Generating map with offset {0}:{1}, seed: {2}", offset.x, offset.y, seed));
            var perlin = new Perlin();

            perlin.OctaveCount = octaves;
            perlin.Frequency   = frequency;
            perlin.Lacunarity  = lacunarity;
            perlin.Persistence = persistence;
            perlin.Seed        = seed;

            var heightMapBuilder = new Noise2D(ChunkSize, ChunkSize, perlin);
            var halfShift        = new Vector2(0.5f / noiseScale.x, 0.5f / noiseScale.y);

            heightMapBuilder.GeneratePlanar(
                (offset.x + noiseShift.x) / noiseScale.x - halfShift.x,
                (offset.x + noiseShift.x) / noiseScale.x + halfShift.x,
                (-offset.y + noiseShift.y) / noiseScale.y - halfShift.y,
                (-offset.y + noiseShift.y) / noiseScale.y + halfShift.y
                );

            // prepare texture
            var colorMap = heightMapBuilder.GetTexturePixels(terrainColors);

            Debug.Log("Texture created");
            // preare height map
            var heightMap = new HeightMap(
                data: heightMapBuilder.GetNormalizedData(),
                heightMultiplier: meshHeightMultiplier,
                heightCurve: new AnimationCurve(meshHeightCurve.keys)
                );


            return(new Map(heightMap, colorMap));
        }