mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Add initial Decoration support, many misc. improvements & modifications
This commit is contained in:
parent
eccd1fdbed
commit
0a8519a26f
14 changed files with 658 additions and 86 deletions
|
@ -52,7 +52,7 @@ NoiseParams nparams_v7_def_terrain_persist =
|
|||
NoiseParams nparams_v7_def_height_select =
|
||||
{0.5, 0.5, v3f(250.0, 250.0, 250.0), 4213, 5, 0.69};
|
||||
NoiseParams nparams_v7_def_ridge =
|
||||
{0.5, 1.0, v3f(100.0, 100.0, 100.0), 6467, 4, 0.75};
|
||||
{0, 1.0, v3f(100.0, 100.0, 100.0), 6467, 4, 0.75};
|
||||
/*
|
||||
NoiseParams nparams_v6_def_beach =
|
||||
{0.0, 1.0, v3f(250.0, 250.0, 250.0), 59420, 3, 0.50};
|
||||
|
@ -121,15 +121,19 @@ int MapgenV7::getGroundLevelAtPoint(v2s16 p) {
|
|||
Biome *b = bmgr->getBiome(heat, humidity, groundlevel);
|
||||
|
||||
s16 y = groundlevel;
|
||||
if (y > water_level) {
|
||||
int iters = 1024; // don't even bother iterating more than 1024 times..
|
||||
while (iters--) {
|
||||
float ridgenoise = NoisePerlin3D(noise_ridge->np, p.X, y, p.Y, seed);
|
||||
if (ridgenoise * (float)(y * y) < 15.0)
|
||||
break;
|
||||
y--;
|
||||
}
|
||||
int iters = 1024; // don't even bother iterating more than 64 times..
|
||||
while (iters--) {
|
||||
if (y <= water_level)
|
||||
break;
|
||||
|
||||
float ridgenoise = NoisePerlin3D(noise_ridge->np, p.X, y, p.Y, seed);
|
||||
if (ridgenoise * (float)(y * y) < 15.0)
|
||||
break;
|
||||
|
||||
y--;
|
||||
}
|
||||
if (iters == 0)
|
||||
printf("iters exhausted at %d %d\n", p.X, p.Y);
|
||||
|
||||
return y + b->top_depth;
|
||||
}
|
||||
|
@ -182,15 +186,24 @@ void MapgenV7::makeChunk(BlockMakeData *data) {
|
|||
|
||||
generateTerrain();
|
||||
carveRidges();
|
||||
|
||||
if (flags & MG_CAVES)
|
||||
generateCaves(stone_surface_max_y);
|
||||
|
||||
generateCaves(stone_surface_max_y);
|
||||
addTopNodes();
|
||||
|
||||
updateHeightmap(node_min, node_max);
|
||||
|
||||
if (flags & MG_DUNGEONS) {
|
||||
DungeonGen dgen(ndef, data->seed, water_level);
|
||||
dgen.generate(vm, blockseed, full_node_min, full_node_max);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i != emerge->decorations.size(); i++) {
|
||||
Decoration *deco = emerge->decorations[i];
|
||||
deco->placeDeco(this, blockseed + i, node_min, node_max);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i != emerge->ores.size(); i++) {
|
||||
Ore *ore = emerge->ores[i];
|
||||
ore->placeOre(this, blockseed + i, node_min, node_max);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue