Ensure air neighbors to liquids that can flow are enqueued for transformation
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 16 Aug 2011 05:24:01 +0000 (07:24 +0200)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 16 Aug 2011 15:42:14 +0000 (17:42 +0200)
src/map.cpp

index 6092538fe947a195143b39dccfeb2b200a5ccf42..fa88e846f2bc03b4c4327aa98935389841839f14 100644 (file)
@@ -1629,9 +1629,15 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
                                case LIQUID_NONE:
                                        if (nb.n.getContent() == CONTENT_AIR) {
                                                airs[num_airs++] = nb;
+                                               // if the current node is a water source the neighbor
+                                               // should be enqueded for transformation regardless of whether the
+                                               // current node changes or not.
+                                               if (nb.t != NEIGHBOR_UPPER && liquid_type != LIQUID_NONE)
+                                                       m_transforming_liquid.push_back(npos);
                                                // if the current node happens to be a flowing node, it will start to flow down here.
-                                               if (nb.t == NEIGHBOR_LOWER)
+                                               if (nb.t == NEIGHBOR_LOWER) {
                                                        flowing_down = true;
+                                               }
                                        } else {
                                                neutrals[num_neutrals++] = nb;
                                        }