Remove expensive copy of ContentFeatures

This commit is contained in:
gregorycu 2016-03-31 01:07:47 +11:00 committed by kwolekr
parent e082c7766a
commit f9a90383e1

@ -1614,7 +1614,7 @@ s32 Map::transforming_liquid_size() {
return m_transforming_liquid.size(); return m_transforming_liquid.size();
} }
void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks) void Map::transformLiquids(std::map<v3s16, MapBlock*> &modified_blocks)
{ {
INodeDefManager *nodemgr = m_gamedef->ndef(); INodeDefManager *nodemgr = m_gamedef->ndef();
@ -1632,7 +1632,7 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks)
std::deque<v3s16> must_reflow; std::deque<v3s16> must_reflow;
// List of MapBlocks that will require a lighting update (due to lava) // List of MapBlocks that will require a lighting update (due to lava)
std::map<v3s16, MapBlock*> lighting_modified_blocks; std::map<v3s16, MapBlock *> lighting_modified_blocks;
u32 liquid_loop_max = g_settings->getS32("liquid_loop_max"); u32 liquid_loop_max = g_settings->getS32("liquid_loop_max");
u32 loop_max = liquid_loop_max; u32 loop_max = liquid_loop_max;
@ -1675,7 +1675,7 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks)
s8 liquid_level = -1; s8 liquid_level = -1;
content_t liquid_kind = CONTENT_IGNORE; content_t liquid_kind = CONTENT_IGNORE;
content_t floodable_node = CONTENT_AIR; content_t floodable_node = CONTENT_AIR;
ContentFeatures cf = nodemgr->get(n0); const ContentFeatures &cf = nodemgr->get(n0);
LiquidType liquid_type = cf.liquid_type; LiquidType liquid_type = cf.liquid_type;
switch (liquid_type) { switch (liquid_type) {
case LIQUID_SOURCE: case LIQUID_SOURCE:
@ -1721,7 +1721,7 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks)
} }
v3s16 npos = p0 + dirs[i]; v3s16 npos = p0 + dirs[i];
NodeNeighbor nb(getNodeNoEx(npos), nt, npos); NodeNeighbor nb(getNodeNoEx(npos), nt, npos);
ContentFeatures cfnb = nodemgr->get(nb.n); const ContentFeatures &cfnb = nodemgr->get(nb.n);
switch (nodemgr->get(nb.n.getContent()).liquid_type) { switch (nodemgr->get(nb.n.getContent()).liquid_type) {
case LIQUID_NONE: case LIQUID_NONE:
if (cfnb.floodable) { if (cfnb.floodable) {