void Raise() {
Random raiseRand = new Random( random.Next() );
FilteredNoise raiseNoise1 = new FilteredNoise( new PerlinNoise( raiseRand, genParams.TerrainDetailOctaves ),
new PerlinNoise( raiseRand, genParams.TerrainDetailOctaves ) );
FilteredNoise raiseNoise2 = new FilteredNoise( new PerlinNoise( raiseRand, genParams.TerrainDetailOctaves ),
new PerlinNoise( raiseRand, genParams.TerrainDetailOctaves ) );
PerlinNoise raiseNoise3 = new PerlinNoise( raiseRand, genParams.TerrainFeatureOctaves );
const double scale = 1.3;
for( int x = 0; x < genParams.MapWidth; x++ ) {
for( int y = 0; y < genParams.MapLength; y++ ) {
double d2 = raiseNoise1.GetNoise( x*scale, y*scale )/6 - 4;
double d3 = raiseNoise2.GetNoise( x*scale, y*scale )/5 + 10 - 4;
double d4 = raiseNoise3.GetNoise( x, y )/8;
if( d4 > 0 )
d3 = d2;
double elevation = Math.Max( d2, d3 )/2;
if( elevation < 0 )
elevation *= 0.8;
heightmap[(x + y*genParams.MapWidth)] = (int)elevation;
}
}
}