Make sure all neighbors of changed fluids are activated
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 16 Aug 2011 16:05:28 +0000 (18:05 +0200)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 16 Aug 2011 16:05:28 +0000 (18:05 +0200)
This should fix the remaining cases of fluid not advancing or not
retreating.

src/map.cpp

index 17bca82db4410fd490a12d20c000aaa54a2b51ba..3aff00c949f7a921cc7f3f0841f5330b0f6f50d0 100644 (file)
@@ -1743,6 +1743,7 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
                 */
                switch (content_features(n0.getContent()).liquid_type) {
                        case LIQUID_SOURCE:
+                       case LIQUID_FLOWING:
                                // make sure source flows into all neighboring nodes
                                for (u16 i = 0; i < num_flows; i++)
                                        if (flows[i].t != NEIGHBOR_UPPER)
@@ -1756,19 +1757,6 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
                                for (u16 i = 0; i < num_flows; i++)
                                        m_transforming_liquid.push_back(flows[i].p);
                                break;
-                       case LIQUID_FLOWING:
-                               for (u16 i = 0; i < num_flows; i++) {
-                                       u8 flow_level = (flows[i].n.param2 & LIQUID_LEVEL_MASK);
-                                       // liquid_level is still the ORIGINAL level of this node.
-                                       if (flows[i].t != NEIGHBOR_UPPER && ((flow_level < liquid_level || flow_level < new_node_level) ||
-                                               flow_down_enabled))
-                                               m_transforming_liquid.push_back(flows[i].p);
-                               }
-                               for (u16 i = 0; i < num_airs; i++) {
-                                       if (airs[i].t != NEIGHBOR_UPPER && (airs[i].t == NEIGHBOR_LOWER || new_node_level > 0))
-                                               m_transforming_liquid.push_back(airs[i].p);
-                               }
-                               break;
                }
        }
        //dstream<<"Map::transformLiquids(): loopcount="<<loopcount<<std::endl;