summaryrefslogtreecommitdiff
path: root/src/map.cpp
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2011-08-02 20:51:14 +0200
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2011-08-05 08:45:15 +0200
commit59c58f230e68b528dd1f425f5211b681481c7cea (patch)
treea7b58ef3837f6b8480a4dff563db2756050da652 /src/map.cpp
parentf79069f5b3995a8b8f13771afc3f853a0ec97dcb (diff)
downloadminetest-59c58f230e68b528dd1f425f5211b681481c7cea.tar.gz
minetest-59c58f230e68b528dd1f425f5211b681481c7cea.tar.bz2
minetest-59c58f230e68b528dd1f425f5211b681481c7cea.zip
Some obvious errors in the new fluid flow management
Diffstat (limited to 'src/map.cpp')
-rw-r--r--src/map.cpp7
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);