summaryrefslogtreecommitdiff
path: root/src/mapgen.cpp
diff options
context:
space:
mode:
authorparamat <paramat@users.noreply.github.com>2017-06-14 02:00:51 +0100
committerparamat <mat.gregory@virginmedia.com>2017-07-11 01:14:24 +0100
commit8299e4b67eff48e0f6e101afea2fae8f0e65c421 (patch)
treefed891f09468aca2b53c8ced933fb88de2a823c6 /src/mapgen.cpp
parentef285b2815962a7a01791059ed984cb12fdba4dd (diff)
downloadminetest-8299e4b67eff48e0f6e101afea2fae8f0e65c421.tar.gz
minetest-8299e4b67eff48e0f6e101afea2fae8f0e65c421.tar.bz2
minetest-8299e4b67eff48e0f6e101afea2fae8f0e65c421.zip
Biomes/decorations/ores: Make relative to 'water_level' setting
Add 'biome_zero_level' argument to 'generateBiomes()', 'deco_zero_level' argument to 'placeAllDecos()' and 'ore_zero_level' to 'placeAllOres()' to allow mapgens to vertically shift the registered biomes, decorations and ores per-mapchunk. Will also allow many realm possibilities in future mapgens.
Diffstat (limited to 'src/mapgen.cpp')
-rw-r--r--src/mapgen.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mapgen.cpp b/src/mapgen.cpp
index b095d34c8..7a03a4606 100644
--- a/src/mapgen.cpp
+++ b/src/mapgen.cpp
@@ -621,7 +621,7 @@ MapgenBasic::~MapgenBasic()
}
-MgStoneType MapgenBasic::generateBiomes()
+MgStoneType MapgenBasic::generateBiomes(s16 biome_zero_level)
{
// can't generate biomes without a biome generator!
assert(biomegen);
@@ -673,7 +673,10 @@ MgStoneType MapgenBasic::generateBiomes()
(air_above || !biome);
if (is_stone_surface || is_water_surface) {
- biome = biomegen->getBiomeAtIndex(index, y);
+ // Limit to +-MAX MAP GENERATION LIMIT to work with biome y_min / y_max.
+ s32 relative_y = rangelim(y - biome_zero_level,
+ -MAX_MAP_GENERATION_LIMIT, MAX_MAP_GENERATION_LIMIT);
+ biome = biomegen->getBiomeAtIndex(index, relative_y);
if (biomemap[index] == BIOME_NONE && is_stone_surface)
biomemap[index] = biome->index;