diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2011-08-02 20:51:14 +0200 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2011-08-05 08:45:15 +0200 |
commit | 59c58f230e68b528dd1f425f5211b681481c7cea (patch) | |
tree | a7b58ef3837f6b8480a4dff563db2756050da652 /src | |
parent | f79069f5b3995a8b8f13771afc3f853a0ec97dcb (diff) | |
download | minetest-59c58f230e68b528dd1f425f5211b681481c7cea.tar.gz minetest-59c58f230e68b528dd1f425f5211b681481c7cea.tar.bz2 minetest-59c58f230e68b528dd1f425f5211b681481c7cea.zip |
Some obvious errors in the new fluid flow management
Diffstat (limited to 'src')
-rw-r--r-- | src/map.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/map.cpp b/src/map.cpp index d51aa46c1..dc4459263 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1666,7 +1666,7 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & 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<v3s16, MapBlock*> & 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); |