summaryrefslogtreecommitdiff
path: root/terrain.cpp
diff options
context:
space:
mode:
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;
+}