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