]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/mapgen.cpp
Fix on_rightclick() being called directly after placing node
[dragonfireclient.git] / src / mapgen.cpp
index f5046459e92a10b123b06061681b0f92e166c349..8a77000fae9010de1cb1c6905d0b93eae3942acf 100644 (file)
@@ -161,6 +161,26 @@ s16 Mapgen::findGroundLevel(v2s16 p2d, s16 ymin, s16 ymax)
 }
 
 
+// Returns -MAX_MAP_GENERATION_LIMIT if not found or if ground is found first
+s16 Mapgen::findLiquidSurface(v2s16 p2d, s16 ymin, s16 ymax)
+{
+       v3s16 em = vm->m_area.getExtent();
+       u32 i = vm->m_area.index(p2d.X, ymax, p2d.Y);
+       s16 y;
+
+       for (y = ymax; y >= ymin; y--) {
+               MapNode &n = vm->m_data[i];
+               if (ndef->get(n).walkable)
+                       return -MAX_MAP_GENERATION_LIMIT;
+               else if (ndef->get(n).isLiquid())
+                       break;
+
+               vm->m_area.add_y(em, i, -1);
+       }
+       return (y >= ymin) ? y : -MAX_MAP_GENERATION_LIMIT;
+}
+
+
 void Mapgen::updateHeightmap(v3s16 nmin, v3s16 nmax)
 {
        if (!heightmap)