From: Giuseppe Bilotta Date: Tue, 2 Aug 2011 18:51:14 +0000 (+0200) Subject: Some obvious errors in the new fluid flow management X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=59c58f230e68b528dd1f425f5211b681481c7cea;p=zefram%2Fminetest%2Fminetest_engine.git Some obvious errors in the new fluid flow management --- diff --git a/src/map.cpp b/src/map.cpp index d51aa46c..dc445926 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1666,7 +1666,7 @@ void Map::transformLiquids(core::map & modified_blocks) /* decide on the type (and possibly level) of the current node */ - u8 new_node_content; + content_t new_node_content; s8 new_node_level = -1; if (num_sources >= 2 || liquid_type == LIQUID_SOURCE) { // liquid_kind will be set to either the flowing alternative of the node (if it's a liquid) @@ -1736,9 +1736,10 @@ void Map::transformLiquids(core::map & modified_blocks) n0.setContent(new_node_content); if (content_features(n0.getContent()).liquid_type == LIQUID_FLOWING) { // set level to last 3 bits, flowing down bit to 4th bit - n0.param2 = (flowing_down ? LIQUID_FLOW_DOWN_MASK : 0x00) | (new_node_level & LIQUID_LEVEL_MASK); + n0.param2 |= (flowing_down ? LIQUID_FLOW_DOWN_MASK : 0x00) | (new_node_level & LIQUID_LEVEL_MASK); } else { - n0.param2 = 0; + // set the liquid level and flow bit to 0 + n0.param2 &= ~(LIQUID_LEVEL_MASK | LIQUID_FLOW_DOWN_MASK); } setNode(p0, n0); v3s16 blockpos = getNodeBlockPos(p0);