diff options
author | Jon Bergli Heier <snakebite@jvnv.net> | 2011-05-07 16:06:08 +0200 |
---|---|---|
committer | Jon Bergli Heier <snakebite@jvnv.net> | 2011-05-07 16:06:08 +0200 |
commit | f0eb6a7b101afba52f33c5286e15a862ee68c64e (patch) | |
tree | 7de0b92e167b25d5ffe0e4843f213e5ad108df4a /terrain.cpp | |
parent | 6d5df2a42e09f4561f976c6f994471c1d5dba7ce (diff) |
Replace static heightmap with perlin noise using libnoise and noiseutils.
Diffstat (limited to 'terrain.cpp')
-rw-r--r-- | terrain.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/terrain.cpp b/terrain.cpp new file mode 100644 index 0000000..a44d0d3 --- /dev/null +++ b/terrain.cpp @@ -0,0 +1,32 @@ +#include "terrain.h" + +#include <noise/noise.h> +#include "noiseutils/noiseutils.h" + +#include <iostream> + +using namespace noise; + +float *Terrain::generate_heights(int x, int y, int width, int height) { + module::Perlin mod; + mod.SetSeed(0); + + utils::NoiseMap heightmap; + utils::NoiseMapBuilderPlane heightmap_builder; + + heightmap_builder.SetSourceModule(mod); + heightmap_builder.SetDestNoiseMap(heightmap); + + heightmap_builder.SetDestSize(width, height); + heightmap_builder.SetBounds(x / 100, (x+width) / 100, y / 100, (y+height) / 100); + heightmap_builder.Build(); + + float *heights = new float[width*height]; + for(int i = 0; i < width; i++) { + for(int j = 0; j < height; j++) { + heights[i*height + j] = 10*(1+heightmap.GetValue(i, j)); + } + } + + return heights; +} |