Skip to content

Commit

Permalink
Decoration API: Fix missing low density decorations
Browse files Browse the repository at this point in the history
For a decoration count between 0 and 1 calculate a chance for 1
  • Loading branch information
paramat committed Nov 14, 2015
1 parent 987d6a8 commit fc89f46
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/mg_decoration.cpp
Expand Up @@ -117,7 +117,15 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
float nval = (flags & DECO_USE_NOISE) ?
NoisePerlin2D(&np, p2d_center.X, p2d_center.Y, mapseed) :
fill_ratio;
u32 deco_count = area * MYMAX(nval, 0.f);
u32 deco_count = 0;
float deco_count_f = (float)area * nval;
if (deco_count_f >= 1.f) {
deco_count = deco_count_f;
} else if (deco_count_f > 0.f) {
// For low density decorations calculate a chance for 1 decoration
if (ps.range(1000) <= deco_count_f * 1000.f)
deco_count = 1;
}

for (u32 i = 0; i < deco_count; i++) {
s16 x = ps.range(p2d_min.X, p2d_max.X);
Expand Down

0 comments on commit fc89f46

Please sign in to comment.