mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Cache liquid alternative IDs (#8053)
This commit is contained in:
parent
42fcfb75e8
commit
82e4137893
6 changed files with 38 additions and 16 deletions
12
src/map.cpp
12
src/map.cpp
|
@ -568,7 +568,7 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> &modified_blocks,
|
|||
switch (liquid_type) {
|
||||
case LIQUID_SOURCE:
|
||||
liquid_level = LIQUID_LEVEL_SOURCE;
|
||||
liquid_kind = m_nodedef->getId(cf.liquid_alternative_flowing);
|
||||
liquid_kind = cf.liquid_alternative_flowing_id;
|
||||
break;
|
||||
case LIQUID_FLOWING:
|
||||
liquid_level = (n0.param2 & LIQUID_LEVEL_MASK);
|
||||
|
@ -641,8 +641,8 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> &modified_blocks,
|
|||
case LIQUID_SOURCE:
|
||||
// if this node is not (yet) of a liquid type, choose the first liquid type we encounter
|
||||
if (liquid_kind == CONTENT_AIR)
|
||||
liquid_kind = m_nodedef->getId(cfnb.liquid_alternative_flowing);
|
||||
if (m_nodedef->getId(cfnb.liquid_alternative_flowing) != liquid_kind) {
|
||||
liquid_kind = cfnb.liquid_alternative_flowing_id;
|
||||
if (cfnb.liquid_alternative_flowing_id != liquid_kind) {
|
||||
neutrals[num_neutrals++] = nb;
|
||||
} else {
|
||||
// Do not count bottom source, it will screw things up
|
||||
|
@ -653,8 +653,8 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> &modified_blocks,
|
|||
case LIQUID_FLOWING:
|
||||
// if this node is not (yet) of a liquid type, choose the first liquid type we encounter
|
||||
if (liquid_kind == CONTENT_AIR)
|
||||
liquid_kind = m_nodedef->getId(cfnb.liquid_alternative_flowing);
|
||||
if (m_nodedef->getId(cfnb.liquid_alternative_flowing) != liquid_kind) {
|
||||
liquid_kind = cfnb.liquid_alternative_flowing_id;
|
||||
if (cfnb.liquid_alternative_flowing_id != liquid_kind) {
|
||||
neutrals[num_neutrals++] = nb;
|
||||
} else {
|
||||
flows[num_flows++] = nb;
|
||||
|
@ -680,7 +680,7 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> &modified_blocks,
|
|||
// liquid_kind will be set to either the flowing alternative of the node (if it's a liquid)
|
||||
// or the flowing alternative of the first of the surrounding sources (if it's air), so
|
||||
// it's perfectly safe to use liquid_kind here to determine the new node content.
|
||||
new_node_content = m_nodedef->getId(m_nodedef->get(liquid_kind).liquid_alternative_source);
|
||||
new_node_content = m_nodedef->get(liquid_kind).liquid_alternative_source_id;
|
||||
} else if (num_sources >= 1 && sources[0].t != NEIGHBOR_LOWER) {
|
||||
// liquid_kind is set properly, see above
|
||||
max_node_level = new_node_level = LIQUID_LEVEL_MAX;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue