コード例 #1
0
    public void GenerateTerrain()
    {
        float[,] noiseMap =
            NoiseGen.GenerateNoiseMap(width, height, seed, scale, octaves, persistance, lacunarity, offset);

        FoliageGen.removeAllFoliage();

        TerrainRendering terrainRendering = FindObjectOfType <TerrainRendering>();


        List <ChunkData> chunks   = NoiseGen.ChunkNoiseMap(noiseMap);
        List <MeshData>  meshData = new List <MeshData>();

        foreach (ChunkData chunkData in chunks)
        {
            meshData.Add(MeshGen.GenerateTerrainMesh(chunkData.heightMap, meshHeightMultiplier, meshHeightCurve, chunkData.chunkCoords, regions));
        }

        if (useShader)
        {
            terrainRendering.DrawMesh(meshData, meshScale, shaderMaterial);
        }
        else
        {
            terrainRendering.DrawMesh(meshData, meshScale, null);
        }


        UpdateShaderData();
    }
コード例 #2
0
    // MAP GENERATION
    MapData GenerateMapData(Vector2 center)
    {
        // Get noise map
        float[,] noiseMap = NoiseGen.GenerateNoiseMap(mapChunkSize, mapChunkSize, seed, noiseScale, octaves, persistance, lacunarity, center + offset, normalizeMode);

        //Assign Terrain based on height
        Color[] colorMap = new Color[mapChunkSize * mapChunkSize];
        for (int x = 0; x < mapChunkSize; x++)
        {
            for (int y = 0; y < mapChunkSize; y++)
            {
                float currentHeight = noiseMap[x, y];
                for (int i = 0; i < regions.Length; i++)
                {
                    if (currentHeight >= regions[i].height)
                    {
                        colorMap[y * mapChunkSize + x] = regions[i].color;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }

        return(new MapData(noiseMap, colorMap));
    }
コード例 #3
0
ファイル: MapGen.cs プロジェクト: DoughyDoe/LandGenerator
    MapData GenerateMapData(Vector2 center)
    {
        float[,] noiseMap = NoiseGen.GenerateNoiseMap(mapChunkSize + 2, mapChunkSize + 2, seed, noiseScale, octaves, persistance, lacunarity, center + offset, normalizeMode);//mapchunksize + 2 cause border


        Color[] colorMap = new Color[mapChunkSize * mapChunkSize];
        for (int y = 0; y < mapChunkSize; y++)
        {
            for (int x = 0; x < mapChunkSize; x++)
            {
                if (useFalloff)
                {
                    noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - falloffMap[x, y]);
                }
                float currentHeight = noiseMap[x, y];
                for (int i = 0; i < regions.Length; i++)
                {
                    if (currentHeight >= regions[i].height)
                    {
                        colorMap[y * mapChunkSize + x] = regions[i].color;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        return(new MapData(noiseMap, colorMap));
    }
コード例 #4
0
    MapData GenerateMapData(Vector2 center)
    {
        float[,] noiseMap = NoiseGen.GenerateNoiseMap(mapChunkSize, mapChunkSize, seed, noiseScale, octaves, persistance, lacunarity, center + offset);


        Color[] colorMap = new Color[mapChunkSize * mapChunkSize];
        for (int y = 0; y < mapChunkSize; y++)
        {
            for (int x = 0; x < mapChunkSize; x++)
            {
                float currentHeight = noiseMap[x, y];
                for (int i = 0; i < regions.Length; i++)
                {
                    if (currentHeight <= regions[i].height)
                    {
                        colorMap[y * mapChunkSize + x] = regions[i].color;
                        break;
                    }
                }
            }
        }
        return(new MapData(noiseMap, colorMap));
    }