summaryrefslogtreecommitdiff
path: root/src/mg_biome.cpp
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2015-04-16 04:12:26 -0400
committerkwolekr <kwolekr@minetest.net>2015-04-16 16:27:05 -0400
commit479f38973e13680d6a39d9c2a7f29fd330b67d41 (patch)
treec6719cf37bfbc44f98cc33b9b2693542b8fdd8cc /src/mg_biome.cpp
parent0c634a97197d50f2ca58825f1b215d0407397ac6 (diff)
downloadminetest-479f38973e13680d6a39d9c2a7f29fd330b67d41.tar.gz
minetest-479f38973e13680d6a39d9c2a7f29fd330b67d41.tar.bz2
minetest-479f38973e13680d6a39d9c2a7f29fd330b67d41.zip
Schematics: Refactor NodeResolver and add NodeResolveMethod
NodeResolver name lists now belong to the NodeResolver object instead of the associated NodeDefManager. In addition to minimizing unnecessary abstraction and overhead, this move permits NodeResolvers to look up nodes that they had previously set pending for resolution. So far, this functionality has been used in the case of schematics for serialization/deserialization.
Diffstat (limited to 'src/mg_biome.cpp')
-rw-r--r--src/mg_biome.cpp29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/mg_biome.cpp b/src/mg_biome.cpp
index 75334544a..c2040f542 100644
--- a/src/mg_biome.cpp
+++ b/src/mg_biome.cpp
@@ -46,14 +46,13 @@ BiomeManager::BiomeManager(IGameDef *gamedef) :
b->heat_point = 0.0;
b->humidity_point = 0.0;
- NodeResolveInfo *nri = new NodeResolveInfo(b);
- nri->nodenames.push_back("air");
- nri->nodenames.push_back("air");
- nri->nodenames.push_back("mapgen_stone");
- nri->nodenames.push_back("mapgen_water_source");
- nri->nodenames.push_back("mapgen_water_source");
- nri->nodenames.push_back("air");
- m_ndef->pendNodeResolve(nri);
+ b->m_nodenames.push_back("air");
+ b->m_nodenames.push_back("air");
+ b->m_nodenames.push_back("mapgen_stone");
+ b->m_nodenames.push_back("mapgen_water_source");
+ b->m_nodenames.push_back("mapgen_water_source");
+ b->m_nodenames.push_back("air");
+ m_ndef->pendNodeResolve(b, NODE_RESOLVE_DEFERRED);
add(b);
}
@@ -117,13 +116,13 @@ void BiomeManager::clear()
///////////////////////////////////////////////////////////////////////////////
-void Biome::resolveNodeNames(NodeResolveInfo *nri)
+void Biome::resolveNodeNames()
{
- m_ndef->getIdFromResolveInfo(nri, "mapgen_dirt_with_grass", CONTENT_AIR, c_top);
- m_ndef->getIdFromResolveInfo(nri, "mapgen_dirt", CONTENT_AIR, c_filler);
- m_ndef->getIdFromResolveInfo(nri, "mapgen_stone", CONTENT_AIR, c_stone);
- m_ndef->getIdFromResolveInfo(nri, "mapgen_water_source", CONTENT_AIR, c_water_top);
- m_ndef->getIdFromResolveInfo(nri, "mapgen_water_source", CONTENT_AIR, c_water);
- m_ndef->getIdFromResolveInfo(nri, "air", CONTENT_IGNORE, c_dust);
+ getIdFromNrBacklog(&c_top, "mapgen_dirt_with_grass", CONTENT_AIR);
+ getIdFromNrBacklog(&c_filler, "mapgen_dirt", CONTENT_AIR);
+ getIdFromNrBacklog(&c_stone, "mapgen_stone", CONTENT_AIR);
+ getIdFromNrBacklog(&c_water_top, "mapgen_water_source", CONTENT_AIR);
+ getIdFromNrBacklog(&c_water, "mapgen_water_source", CONTENT_AIR);
+ getIdFromNrBacklog(&c_dust, "air", CONTENT_IGNORE);
}