Skip to content

Commit 2aad3be

Browse files
committedJan 3, 2018
Mgv7 floatlands: Add exponent parameter
Allows more control over shape of floatland mountain terrain. Terrain shape is unchanged.
1 parent f3b9d87 commit 2aad3be

File tree

2 files changed

+44
-37
lines changed

2 files changed

+44
-37
lines changed
 

Diff for: ‎src/mapgen/mapgen_v7.cpp

+42-37
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,18 @@ FlagDesc flagdesc_mapgen_v7[] = {
5454
MapgenV7::MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge)
5555
: MapgenBasic(mapgenid, params, emerge)
5656
{
57-
spflags = params->spflags;
58-
mount_zero_level = params->mount_zero_level;
59-
cave_width = params->cave_width;
60-
large_cave_depth = params->large_cave_depth;
61-
lava_depth = params->lava_depth;
62-
float_mount_density = params->float_mount_density;
63-
floatland_level = params->floatland_level;
64-
shadow_limit = params->shadow_limit;
65-
cavern_limit = params->cavern_limit;
66-
cavern_taper = params->cavern_taper;
67-
cavern_threshold = params->cavern_threshold;
57+
spflags = params->spflags;
58+
mount_zero_level = params->mount_zero_level;
59+
cave_width = params->cave_width;
60+
large_cave_depth = params->large_cave_depth;
61+
lava_depth = params->lava_depth;
62+
float_mount_density = params->float_mount_density;
63+
float_mount_exponent = params->float_mount_exponent;
64+
floatland_level = params->floatland_level;
65+
shadow_limit = params->shadow_limit;
66+
cavern_limit = params->cavern_limit;
67+
cavern_taper = params->cavern_taper;
68+
cavern_threshold = params->cavern_threshold;
6869

6970
// This is to avoid a divide-by-zero.
7071
// Parameter will be saved to map_meta.txt in limited form.
@@ -148,18 +149,19 @@ MapgenV7Params::MapgenV7Params():
148149

149150
void MapgenV7Params::readParams(const Settings *settings)
150151
{
151-
settings->getFlagStrNoEx("mgv7_spflags", spflags, flagdesc_mapgen_v7);
152-
settings->getS16NoEx("mgv7_mount_zero_level", mount_zero_level);
153-
settings->getFloatNoEx("mgv7_cave_width", cave_width);
154-
settings->getS16NoEx("mgv7_large_cave_depth", large_cave_depth);
155-
settings->getS16NoEx("mgv7_lava_depth", lava_depth);
156-
settings->getFloatNoEx("mgv7_float_mount_density", float_mount_density);
157-
settings->getFloatNoEx("mgv7_float_mount_height", float_mount_height);
158-
settings->getS16NoEx("mgv7_floatland_level", floatland_level);
159-
settings->getS16NoEx("mgv7_shadow_limit", shadow_limit);
160-
settings->getS16NoEx("mgv7_cavern_limit", cavern_limit);
161-
settings->getS16NoEx("mgv7_cavern_taper", cavern_taper);
162-
settings->getFloatNoEx("mgv7_cavern_threshold", cavern_threshold);
152+
settings->getFlagStrNoEx("mgv7_spflags", spflags, flagdesc_mapgen_v7);
153+
settings->getS16NoEx("mgv7_mount_zero_level", mount_zero_level);
154+
settings->getFloatNoEx("mgv7_cave_width", cave_width);
155+
settings->getS16NoEx("mgv7_large_cave_depth", large_cave_depth);
156+
settings->getS16NoEx("mgv7_lava_depth", lava_depth);
157+
settings->getFloatNoEx("mgv7_float_mount_density", float_mount_density);
158+
settings->getFloatNoEx("mgv7_float_mount_height", float_mount_height);
159+
settings->getFloatNoEx("mgv7_float_mount_exponent", float_mount_exponent);
160+
settings->getS16NoEx("mgv7_floatland_level", floatland_level);
161+
settings->getS16NoEx("mgv7_shadow_limit", shadow_limit);
162+
settings->getS16NoEx("mgv7_cavern_limit", cavern_limit);
163+
settings->getS16NoEx("mgv7_cavern_taper", cavern_taper);
164+
settings->getFloatNoEx("mgv7_cavern_threshold", cavern_threshold);
163165

164166
settings->getNoiseParams("mgv7_np_terrain_base", np_terrain_base);
165167
settings->getNoiseParams("mgv7_np_terrain_alt", np_terrain_alt);
@@ -180,18 +182,19 @@ void MapgenV7Params::readParams(const Settings *settings)
180182

181183
void MapgenV7Params::writeParams(Settings *settings) const
182184
{
183-
settings->setFlagStr("mgv7_spflags", spflags, flagdesc_mapgen_v7, U32_MAX);
184-
settings->setS16("mgv7_mount_zero_level", mount_zero_level);
185-
settings->setFloat("mgv7_cave_width", cave_width);
186-
settings->setS16("mgv7_large_cave_depth", large_cave_depth);
187-
settings->setS16("mgv7_lava_depth", lava_depth);
188-
settings->setFloat("mgv7_float_mount_density", float_mount_density);
189-
settings->setFloat("mgv7_float_mount_height", float_mount_height);
190-
settings->setS16("mgv7_floatland_level", floatland_level);
191-
settings->setS16("mgv7_shadow_limit", shadow_limit);
192-
settings->setS16("mgv7_cavern_limit", cavern_limit);
193-
settings->setS16("mgv7_cavern_taper", cavern_taper);
194-
settings->setFloat("mgv7_cavern_threshold", cavern_threshold);
185+
settings->setFlagStr("mgv7_spflags", spflags, flagdesc_mapgen_v7, U32_MAX);
186+
settings->setS16("mgv7_mount_zero_level", mount_zero_level);
187+
settings->setFloat("mgv7_cave_width", cave_width);
188+
settings->setS16("mgv7_large_cave_depth", large_cave_depth);
189+
settings->setS16("mgv7_lava_depth", lava_depth);
190+
settings->setFloat("mgv7_float_mount_density", float_mount_density);
191+
settings->setFloat("mgv7_float_mount_height", float_mount_height);
192+
settings->setFloat("mgv7_float_mount_exponent", float_mount_exponent);
193+
settings->setS16("mgv7_floatland_level", floatland_level);
194+
settings->setS16("mgv7_shadow_limit", shadow_limit);
195+
settings->setS16("mgv7_cavern_limit", cavern_limit);
196+
settings->setS16("mgv7_cavern_taper", cavern_taper);
197+
settings->setFloat("mgv7_cavern_threshold", cavern_threshold);
195198

196199
settings->setNoiseParams("mgv7_np_terrain_base", np_terrain_base);
197200
settings->setNoiseParams("mgv7_np_terrain_alt", np_terrain_alt);
@@ -416,8 +419,10 @@ bool MapgenV7::getFloatlandMountainFromMap(int idx_xyz, int idx_xz, s16 y)
416419
{
417420
// Make rim 2 nodes thick to match floatland base terrain
418421
float density_gradient = (y >= floatland_level) ?
419-
-pow((float)(y - floatland_level) / float_mount_height, 0.75f) :
420-
-pow((float)(floatland_level - 1 - y) / float_mount_height, 0.75f);
422+
-pow((float)(y - floatland_level) / float_mount_height,
423+
float_mount_exponent) :
424+
-pow((float)(floatland_level - 1 - y) / float_mount_height,
425+
float_mount_exponent);
421426

422427
float floatn = noise_mountain->result[idx_xyz] + float_mount_density;
423428

Diff for: ‎src/mapgen/mapgen_v7.h

+2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ struct MapgenV7Params : public MapgenParams {
4242
s16 lava_depth = -256;
4343
float float_mount_density = 0.6f;
4444
float float_mount_height = 128.0f;
45+
float float_mount_exponent = 0.75f;
4546
s16 floatland_level = 1280;
4647
s16 shadow_limit = 1024;
4748
s16 cavern_limit = -256;
@@ -95,6 +96,7 @@ class MapgenV7 : public MapgenBasic {
9596
s16 large_cave_depth;
9697
float float_mount_density;
9798
float float_mount_height;
99+
float float_mount_exponent;
98100
s16 floatland_level;
99101
s16 shadow_limit;
100102

0 commit comments

Comments
 (0)
Please sign in to comment.