Expand Up
@@ -42,7 +42,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
FlagDesc flagdesc_mapgen_v5[] = {
{" blobs" , MGV5_BLOBS},
{NULL , 0 }
};
Expand Down
Expand Up
@@ -73,8 +72,6 @@ MapgenV5::MapgenV5(int mapgenid, MapgenParams *params, EmergeManager *emerge)
noise_cave1 = new Noise (&sp->np_cave1 , seed, csize.X , csize.Y + 2 , csize.Z );
noise_cave2 = new Noise (&sp->np_cave2 , seed, csize.X , csize.Y + 2 , csize.Z );
noise_ground = new Noise (&sp->np_ground , seed, csize.X , csize.Y + 2 , csize.Z );
noise_crumble = new Noise (&sp->np_crumble , seed, csize.X , csize.Y + 2 , csize.Z );
noise_wetness = new Noise (&sp->np_wetness , seed, csize.X , csize.Y + 2 , csize.Z );
// Biome noise
noise_heat = new Noise (¶ms->np_biome_heat , seed, csize.X , csize.Z );
Expand Down
Expand Up
@@ -117,8 +114,6 @@ MapgenV5::~MapgenV5()
delete noise_cave1;
delete noise_cave2;
delete noise_ground;
delete noise_crumble;
delete noise_wetness;
delete noise_heat;
delete noise_humidity;
Expand All
@@ -130,26 +125,19 @@ MapgenV5::~MapgenV5()
MapgenV5Params::MapgenV5Params ()
{
spflags = MGV5_BLOBS ;
spflags = 0 ;
np_filler_depth = NoiseParams (0 , 1 , v3f (150 , 150 , 150 ), 261 , 4 , 0.7 , 2.0 );
np_factor = NoiseParams (0 , 1 , v3f (250 , 250 , 250 ), 920381 , 3 , 0.45 , 2.0 );
np_height = NoiseParams (0 , 10 , v3f (250 , 250 , 250 ), 84174 , 4 , 0.5 , 2.0 );
np_cave1 = NoiseParams (0 , 12 , v3f (50 , 50 , 50 ), 52534 , 4 , 0.5 , 2.0 );
np_cave2 = NoiseParams (0 , 12 , v3f (50 , 50 , 50 ), 10325 , 4 , 0.5 , 2.0 );
np_ground = NoiseParams (0 , 40 , v3f (80 , 80 , 80 ), 983240 , 4 , 0.55 , 2.0 , NOISE_FLAG_EASED);
np_crumble = NoiseParams (0 , 1 , v3f (20 , 20 , 20 ), 34413 , 3 , 1.3 , 2.0 , NOISE_FLAG_EASED);
np_wetness = NoiseParams (0 , 1 , v3f (40 , 40 , 40 ), 32474 , 4 , 1.1 , 2.0 );
}
// Scaling the output of the noise function affects the overdrive of the
// contour function, which affects the shape of the output considerably.
// Two original MT 0.3 parameters for non-eased noise:
// #define CAVE_NOISE_SCALE 12.0
// #define CAVE_NOISE_THRESHOLD (1.5/CAVE_NOISE_SCALE)
// #define CAVE_NOISE_THRESHOLD (1.5/CAVE_NOISE_SCALE) = 0.125
void MapgenV5Params::readParams (Settings *settings)
Expand All
@@ -162,8 +150,6 @@ void MapgenV5Params::readParams(Settings *settings)
settings->getNoiseParams (" mgv5_np_cave1" , np_cave1);
settings->getNoiseParams (" mgv5_np_cave2" , np_cave2);
settings->getNoiseParams (" mgv5_np_ground" , np_ground);
settings->getNoiseParams (" mgv5_np_crumble" , np_crumble);
settings->getNoiseParams (" mgv5_np_wetness" , np_wetness);
}
Expand All
@@ -177,8 +163,6 @@ void MapgenV5Params::writeParams(Settings *settings)
settings->setNoiseParams (" mgv5_np_cave1" , np_cave1);
settings->setNoiseParams (" mgv5_np_cave2" , np_cave2);
settings->setNoiseParams (" mgv5_np_ground" , np_ground);
settings->setNoiseParams (" mgv5_np_crumble" , np_crumble);
settings->setNoiseParams (" mgv5_np_wetness" , np_wetness);
}
Expand All
@@ -195,9 +179,6 @@ int MapgenV5::getGroundLevelAtPoint(v2s16 p)
s16 search_top = water_level + 15 ;
s16 search_base = water_level;
// Use these 2 lines instead for a slower search returning highest ground level:
// s16 search_top = h + f * noise_ground->np->octaves * noise_ground->np->scale;
// s16 search_base = h - f * noise_ground->np->octaves * noise_ground->np->scale;
s16 level = -31000 ;
for (s16 y = search_top; y >= search_base; y--) {
Expand Down
Expand Up
@@ -258,7 +239,7 @@ void MapgenV5::makeChunk(BlockMakeData *data)
// Generate caves
if ((flags & MG_CAVES) && (stone_surface_max_y >= node_min.Y ))
generateCaves ();
generateCaves (stone_surface_max_y );
// Generate dungeons and desert temples
if ((flags & MG_DUNGEONS) && (stone_surface_max_y >= node_min.Y )) {
Expand All
@@ -269,11 +250,6 @@ void MapgenV5::makeChunk(BlockMakeData *data)
// Generate the registered decorations
m_emerge->decomgr ->placeAllDecos (this , blockseed, node_min, node_max);
// Generate underground dirt, sand, gravel and lava blobs
if (spflags & MGV5_BLOBS) {
generateBlobs ();
}
// Generate the registered ores
m_emerge->oremgr ->placeAllOres (this , blockseed, node_min, node_max);
Expand Down
Expand Up
@@ -311,11 +287,6 @@ void MapgenV5::calculateNoise()
noise_cave2->perlinMap3D (x, y, z);
}
if (spflags & MGV5_BLOBS) {
noise_crumble->perlinMap3D (x, y, z);
noise_wetness->perlinMap3D (x, y, z);
}
if (node_max.Y >= water_level) {
noise_filler_depth->perlinMap2D (x, z);
noise_heat->perlinMap2D (x, z);
Expand All
@@ -326,8 +297,6 @@ void MapgenV5::calculateNoise()
}
// Two original MT 0.3 functions:
// bool is_cave(u32 index) {
// double d1 = contour(noise_cave1->result[index]);
// double d2 = contour(noise_cave2->result[index]);
Expand Down
Expand Up
@@ -363,7 +332,7 @@ int MapgenV5::generateBaseTerrain()
f = 0.01 ;
else if (f >= 1.0 )
f *= 1.6 ;
float h = water_level + noise_height->result [index2d];
float h = noise_height->result [index2d];
if (noise_ground->result [index ] * f < y - h) {
if (y <= water_level)
Expand Down
Expand Up
@@ -470,7 +439,7 @@ void MapgenV5::generateBiomes()
}
void MapgenV5::generateCaves ()
void MapgenV5::generateCaves (int max_stone_y )
{
u32 index = 0 ;
u32 index2d = 0 ;
Expand All
@@ -496,36 +465,15 @@ void MapgenV5::generateCaves()
}
index2d = index2d + ystride;
}
}
void MapgenV5::generateBlobs ()
{
u32 index = 0 ;
for (s16 z=node_min.Z ; z<=node_max.Z ; z++) {
for (s16 y=node_min.Y - 1 ; y<=node_max.Y + 1 ; y++) {
u32 i = vm->m_area .index (node_min.X , y, z);
for (s16 x=node_min.X ; x<=node_max.X ; x++, i++, index ++) {
content_t c = vm->m_data [i].getContent ();
if (c != c_stone)
continue ;
if (node_max.Y > -256 )
return ;
if (noise_crumble->result [index ] > 1.3 ) {
if (noise_wetness->result [index ] > 0.0 )
vm->m_data [i] = MapNode (c_dirt);
else
vm->m_data [i] = MapNode (c_sand);
} else if (noise_crumble->result [index ] > 0.7 ) {
if (noise_wetness->result [index ] < -0.6 )
vm->m_data [i] = MapNode (c_gravel);
} else if (noise_crumble->result [index ] < -3.5 +
MYMIN (0.1 *
sqrt ((float )MYMAX (0 , -y)), 1.5 )) {
vm->m_data [i] = MapNode (c_lava_source);
}
}
}
PseudoRandom ps (blockseed + 21343 );
u32 bruises_count = (ps.range (1 , 5 ) == 1 ) ? ps.range (1 , 2 ) : 0 ;
for (u32 i = 0 ; i < bruises_count; i++) {
CaveV5 cave (this , &ps);
cave.makeCave (node_min, node_max, max_stone_y);
}
}
Expand Down