Skip to content

Commit 29b413b

Browse files
committed
Biomes: Make biome heat and humidity noise parameters user-configurable
1 parent 7490368 commit 29b413b

File tree

6 files changed

+18
-19
lines changed

6 files changed

+18
-19
lines changed

src/emerge.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,8 @@ void EmergeManager::loadParamsFromSettings(Settings *settings) {
363363
settings->getS16NoEx("water_level", params.water_level);
364364
settings->getS16NoEx("chunksize", params.chunksize);
365365
settings->getFlagStrNoEx("mg_flags", params.flags, flagdesc_mapgen);
366+
settings->getNoiseParams("mg_biome_np_heat", params.np_biome_heat);
367+
settings->getNoiseParams("mg_biome_np_humidity", params.np_biome_humidity);
366368

367369
delete params.sparams;
368370
params.sparams = createMapgenParams(params.mg_name);
@@ -377,6 +379,8 @@ void EmergeManager::saveParamsToSettings(Settings *settings) {
377379
settings->setS16("water_level", params.water_level);
378380
settings->setS16("chunksize", params.chunksize);
379381
settings->setFlagStr("mg_flags", params.flags, flagdesc_mapgen, (u32)-1);
382+
settings->setNoiseParams("mg_biome_np_heat", params.np_biome_heat);
383+
settings->setNoiseParams("mg_biome_np_humidity", params.np_biome_humidity);
380384

381385
if (params.sparams)
382386
params.sparams->writeParams(settings);

src/mapgen.h

+6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2020
#ifndef MAPGEN_HEADER
2121
#define MAPGEN_HEADER
2222

23+
#include "noise.h"
2324
#include "nodedef.h"
2425
#include "mapnode.h"
2526
#include "util/string.h"
@@ -107,6 +108,9 @@ struct MapgenParams {
107108
s16 water_level;
108109
u32 flags;
109110

111+
NoiseParams np_biome_heat;
112+
NoiseParams np_biome_humidity;
113+
110114
MapgenSpecificParams *sparams;
111115

112116
MapgenParams()
@@ -117,6 +121,8 @@ struct MapgenParams {
117121
chunksize = 5;
118122
flags = MG_TREES | MG_CAVES | MG_LIGHT;
119123
sparams = NULL;
124+
np_biome_heat = NoiseParams(50, 50, v3f(500.0, 500.0, 500.0), 5349, 3, 0.70, 2.0);
125+
np_biome_humidity = NoiseParams(50, 50, v3f(500.0, 500.0, 500.0), 842, 3, 0.55, 2.0);
120126
}
121127
};
122128

src/mapgen_v5.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ MapgenV5::MapgenV5(int mapgenid, MapgenParams *params, EmergeManager *emerge)
7777
noise_wetness = new Noise(&sp->np_wetness, seed, csize.X, csize.Y + 2, csize.Z);
7878

7979
// Biome noise
80-
noise_heat = new Noise(bmgr->np_heat, seed, csize.X, csize.Z);
81-
noise_humidity = new Noise(bmgr->np_humidity, seed, csize.X, csize.Z);
80+
noise_heat = new Noise(&params->np_biome_heat, seed, csize.X, csize.Z);
81+
noise_humidity = new Noise(&params->np_biome_humidity, seed, csize.X, csize.Z);
8282

8383
//// Resolve nodes to be used
8484
INodeDefManager *ndef = emerge->ndef;

src/mapgen_v7.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ MapgenV7::MapgenV7(int mapgenid, MapgenParams *params, EmergeManager *emerge)
8181
noise_ridge = new Noise(&sp->np_ridge, seed, csize.X, csize.Y, csize.Z);
8282

8383
//// Biome noise
84-
noise_heat = new Noise(bmgr->np_heat, seed, csize.X, csize.Z);
85-
noise_humidity = new Noise(bmgr->np_humidity, seed, csize.X, csize.Z);
84+
noise_heat = new Noise(&params->np_biome_heat, seed, csize.X, csize.Z);
85+
noise_humidity = new Noise(&params->np_biome_humidity, seed, csize.X, csize.Z);
8686

8787
//// Resolve nodes to be used
8888
INodeDefManager *ndef = emerge->ndef;
@@ -305,8 +305,8 @@ void MapgenV7::calculateNoise() {
305305

306306

307307
Biome *MapgenV7::getBiomeAtPoint(v3s16 p) {
308-
float heat = NoisePerlin2D(bmgr->np_heat, p.X, p.Z, seed);
309-
float humidity = NoisePerlin2D(bmgr->np_humidity, p.X, p.Z, seed);
308+
float heat = NoisePerlin2D(noise_heat->np, p.X, p.Z, seed);
309+
float humidity = NoisePerlin2D(noise_humidity->np, p.X, p.Z, seed);
310310
s16 groundlevel = baseTerrainLevelAtPoint(p.X, p.Z);
311311

312312
return bmgr->getBiome(heat, humidity, groundlevel);

src/mg_biome.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2929

3030
const char *BiomeManager::ELEMENT_TITLE = "biome";
3131

32-
NoiseParams nparams_biome_def_heat(50, 50, v3f(500.0, 500.0, 500.0), 5349, 3, 0.70, 2.0);
33-
NoiseParams nparams_biome_def_humidity(50, 50, v3f(500.0, 500.0, 500.0), 842, 3, 0.55, 2.0);
34-
3532

3633
///////////////////////////////////////////////////////////////////////////////
3734

3835
BiomeManager::BiomeManager(IGameDef *gamedef)
3936
{
4037
m_resolver = gamedef->getNodeDefManager()->getResolver();
41-
np_heat = &nparams_biome_def_heat;
42-
np_humidity = &nparams_biome_def_humidity;
4338

4439
// Create default biome to be used in case none exist
4540
Biome *b = new Biome;

src/mg_biome.h

+2-8
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2121
#define MG_BIOME_HEADER
2222

2323
#include "mapgen.h"
24-
#include "noise.h"
24+
25+
struct NoiseParams;
2526

2627
enum BiomeType
2728
{
@@ -32,10 +33,6 @@ enum BiomeType
3233
BIOME_TYPE_FLAT
3334
};
3435

35-
extern NoiseParams nparams_biome_def_heat;
36-
extern NoiseParams nparams_biome_def_humidity;
37-
38-
3936
class Biome : public GenElement {
4037
public:
4138
u32 flags;
@@ -61,9 +58,6 @@ class BiomeManager : public GenElementManager {
6158
static const char *ELEMENT_TITLE;
6259
static const size_t ELEMENT_LIMIT = 0x100;
6360

64-
NoiseParams *np_heat;
65-
NoiseParams *np_humidity;
66-
6761
BiomeManager(IGameDef *gamedef);
6862
~BiomeManager();
6963

0 commit comments

Comments
 (0)