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