]> git.lizzy.rs Git - minetest.git/blobdiff - src/mg_ore.cpp
MSVC: Generate debug information for release builds (#4674)
[minetest.git] / src / mg_ore.cpp
index 6b6e0d7a783c4973943b96648776ee30598d16fb..d840d745a1ae6136f6ef76aeb5e98b3fdfa3d4cd 100644 (file)
@@ -148,7 +148,7 @@ void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed,
 
                if (biomemap && !biomes.empty()) {
                        u32 index = sizex * (z0 - nmin.Z) + (x0 - nmin.X);
-                       std::set<u8>::iterator it = biomes.find(biomemap[index]);
+                       UNORDERED_SET<u8>::iterator it = biomes.find(biomemap[index]);
                        if (it == biomes.end())
                                continue;
                }
@@ -179,7 +179,12 @@ void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed,
        MapNode n_ore(c_ore, 0, ore_param2);
 
        u16 max_height = column_height_max;
-       int y_start = pr.range(nmin.Y + max_height, nmax.Y - max_height);
+       int y_start_min = nmin.Y + max_height;
+       int y_start_max = nmax.Y - max_height;
+
+       int y_start = y_start_min < y_start_max ?
+               pr.range(y_start_min, y_start_max) :
+               (y_start_min + y_start_max) / 2;
 
        if (!noise) {
                int sx = nmax.X - nmin.X + 1;
@@ -197,17 +202,17 @@ void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed,
                        continue;
 
                if (biomemap && !biomes.empty()) {
-                       std::set<u8>::iterator it = biomes.find(biomemap[index]);
+                       UNORDERED_SET<u8>::iterator it = biomes.find(biomemap[index]);
                        if (it == biomes.end())
                                continue;
                }
 
                u16 height = pr.range(column_height_min, column_height_max);
                int ymidpoint = y_start + noiseval;
-               int y0 = ymidpoint - height * (1 - column_midpoint_factor);
-               int y1 = y0 + height;
+               int y0 = MYMAX(nmin.Y, ymidpoint - height * (1 - column_midpoint_factor));
+               int y1 = MYMIN(nmax.Y, y0 + height - 1);
 
-               for (int y = y0; y < y1; y++) {
+               for (int y = y0; y <= y1; y++) {
                        u32 i = vm->m_area.index(x, y, z);
                        if (!vm->m_area.contains(i))
                                continue;
@@ -265,7 +270,7 @@ void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed,
                        continue;
 
                if (biomemap && !biomes.empty()) {
-                       std::set<u8>::iterator it = biomes.find(biomemap[index]);
+                       UNORDERED_SET<u8>::iterator it = biomes.find(biomemap[index]);
                        if (it == biomes.end())
                                continue;
                }
@@ -333,7 +338,7 @@ void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed,
 
                if (biomemap && !biomes.empty()) {
                        u32 bmapidx = sizex * (z0 - nmin.Z) + (x0 - nmin.X);
-                       std::set<u8>::iterator it = biomes.find(biomemap[bmapidx]);
+                       UNORDERED_SET<u8>::iterator it = biomes.find(biomemap[bmapidx]);
                        if (it == biomes.end())
                                continue;
                }
@@ -417,7 +422,7 @@ void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed,
 
                if (biomemap && !biomes.empty()) {
                        u32 bmapidx = sizex * (z - nmin.Z) + (x - nmin.X);
-                       std::set<u8>::iterator it = biomes.find(biomemap[bmapidx]);
+                       UNORDERED_SET<u8>::iterator it = biomes.find(biomemap[bmapidx]);
                        if (it == biomes.end())
                                continue;
                }