#include "emerge.h"
#include "dungeongen.h"
#include "cavegen.h"
-#include "treegen.h"
#include "mg_biome.h"
#include "mg_ore.h"
#include "mg_decoration.h"
///////////////////////////////////////////////////////////////////////////////////////
-MapgenFlat::MapgenFlat(int mapgenid, MapgenParams *params, EmergeManager *emerge)
+MapgenFlat::MapgenFlat(int mapgenid, MapgenFlatParams *params, EmergeManager *emerge)
: MapgenBasic(mapgenid, params, emerge)
{
- MapgenFlatParams *sp = (MapgenFlatParams *)params->sparams;
-
- this->spflags = sp->spflags;
- this->ground_level = sp->ground_level;
- this->large_cave_depth = sp->large_cave_depth;
- this->cave_width = sp->cave_width;
- this->lake_threshold = sp->lake_threshold;
- this->lake_steepness = sp->lake_steepness;
- this->hill_threshold = sp->hill_threshold;
- this->hill_steepness = sp->hill_steepness;
-
- //// 2D noise
- noise_terrain = new Noise(&sp->np_terrain, seed, csize.X, csize.Z);
- noise_filler_depth = new Noise(&sp->np_filler_depth, seed, csize.X, csize.Z);
-
- MapgenBasic::np_cave1 = sp->np_cave1;
- MapgenBasic::np_cave2 = sp->np_cave2;
+ this->spflags = params->spflags;
+ this->ground_level = params->ground_level;
+ this->large_cave_depth = params->large_cave_depth;
+ this->cave_width = params->cave_width;
+ this->lake_threshold = params->lake_threshold;
+ this->lake_steepness = params->lake_steepness;
+ this->hill_threshold = params->hill_threshold;
+ this->hill_steepness = params->hill_steepness;
+
+ // 2D noise
+ noise_filler_depth = new Noise(¶ms->np_filler_depth, seed, csize.X, csize.Z);
+
+ if ((spflags & MGFLAT_LAKES) || (spflags & MGFLAT_HILLS))
+ noise_terrain = new Noise(¶ms->np_terrain, seed, csize.X, csize.Z);
+ // 3D noise
+ MapgenBasic::np_cave1 = params->np_cave1;
+ MapgenBasic::np_cave2 = params->np_cave2;
}
MapgenFlat::~MapgenFlat()
{
- delete noise_terrain;
delete noise_filler_depth;
+
+ if ((spflags & MGFLAT_LAKES) || (spflags & MGFLAT_HILLS))
+ delete noise_terrain;
}
spflags = 0;
ground_level = 8;
large_cave_depth = -33;
- cave_width = 0.2;
+ cave_width = 0.09;
lake_threshold = -0.45;
lake_steepness = 48.0;
hill_threshold = 0.45;
int MapgenFlat::getSpawnLevelAtPoint(v2s16 p)
{
s16 level_at_point = ground_level;
- float n_terrain = NoisePerlin2D(&noise_terrain->np, p.X, p.Y, seed);
+ float n_terrain = 0.0f;
+ if ((spflags & MGFLAT_LAKES) || (spflags & MGFLAT_HILLS))
+ n_terrain = NoisePerlin2D(&noise_terrain->np, p.X, p.Y, seed);
if ((spflags & MGFLAT_LAKES) && n_terrain < lake_threshold) {
level_at_point = ground_level -