Make sure all neighbors of changed fluids are activated
This should fix the remaining cases of fluid not advancing or not retreating.master
parent
774faf4e85
commit
56e9f97294
14
src/map.cpp
14
src/map.cpp
|
@ -1743,6 +1743,7 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
|
||||||
*/
|
*/
|
||||||
switch (content_features(n0.getContent()).liquid_type) {
|
switch (content_features(n0.getContent()).liquid_type) {
|
||||||
case LIQUID_SOURCE:
|
case LIQUID_SOURCE:
|
||||||
|
case LIQUID_FLOWING:
|
||||||
// make sure source flows into all neighboring nodes
|
// make sure source flows into all neighboring nodes
|
||||||
for (u16 i = 0; i < num_flows; i++)
|
for (u16 i = 0; i < num_flows; i++)
|
||||||
if (flows[i].t != NEIGHBOR_UPPER)
|
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++)
|
for (u16 i = 0; i < num_flows; i++)
|
||||||
m_transforming_liquid.push_back(flows[i].p);
|
m_transforming_liquid.push_back(flows[i].p);
|
||||||
break;
|
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;
|
//dstream<<"Map::transformLiquids(): loopcount="<<loopcount<<std::endl;
|
||||||
|
|
Loading…
Reference in New Issue