summaryrefslogtreecommitdiff
path: root/terrain.cpp
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2011-05-07 16:06:08 +0200
committerJon Bergli Heier <snakebite@jvnv.net>2011-05-07 16:06:08 +0200
commitf0eb6a7b101afba52f33c5286e15a862ee68c64e (patch)
tree7de0b92e167b25d5ffe0e4843f213e5ad108df4a /terrain.cpp
parent6d5df2a42e09f4561f976c6f994471c1d5dba7ce (diff)
Replace static heightmap with perlin noise using libnoise and noiseutils.
Diffstat (limited to 'terrain.cpp')
-rw-r--r--terrain.cpp32
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;
+}