예제 #1
0
    public float AddNoise(TopographyTypeStats stats, int x, int z)
    {
        FastNoise noise = new FastNoise();

        noise.SetFrequency(stats.frequency);
        noise.SetFractalOctaves(stats.fractalOctaves);
        noise.SetFractalGain(stats.fractalGain);
        noise.SetNoiseType(stats.noiseType);
        noise.SetFractalType(stats.fractalType);

        return(noise.GetNoise01(x, z) * stats.amplitude);
    }
예제 #2
0
    public TopographyTypeStats GetTerrainTypeStats(TopographyTypes type)
    {
        switch (type)
        {
        case TopographyTypes.Mountains:

            TopographyTypeStats mountains = new TopographyTypeStats
            {
                topographyType = TopographyTypes.Mountains,
                levelCount     = 10,
                levelHeight    = 5,

                minHeightOfTType = TerrainSettings.minMountainHeight,
                maxHeightOfTType = TerrainSettings.maxMountainHeight,

                amplitude      = 5,
                frequency      = 0.003f,
                fractalOctaves = 3,
                fractalGain    = 0.4f,
                noiseType      = NoiseType.CubicFractal,
                fractalType    = FractalType.RigidMulti,
            };
            return(mountains);

        case TopographyTypes.Hills:

            TopographyTypeStats hills = new TopographyTypeStats
            {
                topographyType = TopographyTypes.Hills,
                levelCount     = 5,
                levelHeight    = 2,

                minHeightOfTType = TerrainSettings.minHillHeight,
                maxHeightOfTType = TerrainSettings.maxHillHeight,
                amplitude        = 3,
                frequency        = 0.006f,
                fractalOctaves   = 3,
                fractalGain      = 0.2f,
                noiseType        = NoiseType.Cubic,
                fractalType      = FractalType.FBM,
            };
            return(hills);

        case TopographyTypes.Flat:

            TopographyTypeStats flat = new TopographyTypeStats
            {
                topographyType = TopographyTypes.Flat,
                levelCount     = 1,
                levelHeight    = 1,

                minHeightOfTType = TerrainSettings.minFlatHeight,
                maxHeightOfTType = TerrainSettings.maxFlatHeight,
                amplitude        = 1,
                frequency        = 0.01f,
                fractalOctaves   = 2,
                fractalGain      = 0.2f,
                noiseType        = NoiseType.CubicFractal,
                fractalType      = FractalType.FBM,
            };
            return(flat);

        case TopographyTypes.Valleys:

            TopographyTypeStats valleys = new TopographyTypeStats
            {
                topographyType = TopographyTypes.Valleys,
                levelCount     = 4,
                levelHeight    = 2,

                minHeightOfTType = TerrainSettings.minValleyHeight,
                maxHeightOfTType = TerrainSettings.maxValleyHeight,
                amplitude        = 2,
                frequency        = 0.003f,
                fractalOctaves   = 2,
                fractalGain      = 0.2f,
                noiseType        = NoiseType.CubicFractal,
                fractalType      = FractalType.FBM,
            };
            return(valleys);

        case TopographyTypes.Oceanic:

            TopographyTypeStats oceans = new TopographyTypeStats
            {
                topographyType = TopographyTypes.Oceanic,
                levelCount     = 8,
                levelHeight    = 5,

                minHeightOfTType = TerrainSettings.minOceanHeight,
                maxHeightOfTType = TerrainSettings.maxOceanHeight,
                amplitude        = 5,
                frequency        = 0.001f,
                fractalOctaves   = 2,
                fractalGain      = 0.1f,
                noiseType        = NoiseType.CubicFractal,
                fractalType      = FractalType.RigidMulti,
            };
            return(oceans);

        default:
            TopographyTypeStats defaultFlat = new TopographyTypeStats
            {
                topographyType = TopographyTypes.Flat,
                levelCount     = 1,
                levelHeight    = 1,

                minHeightOfTType = TerrainSettings.minFlatHeight,
                maxHeightOfTType = TerrainSettings.maxFlatHeight,
                amplitude        = 1,
                frequency        = 0.0001f,
                fractalOctaves   = 3,
                fractalGain      = 0.2f,
                noiseType        = NoiseType.SimplexFractal,
                fractalType      = FractalType.FBM,
            };
            return(defaultFlat);
        }
    }