diff options
author | kwolekr <kwolekr@minetest.net> | 2014-12-17 03:20:17 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2014-12-27 02:12:21 -0500 |
commit | b67f37f27ea7d89b2098fa9fcc2533fa1091e695 (patch) | |
tree | b97d7c98fc29677dfc57fa8f8af4332ff9d0c87c /src/mg_biome.cpp | |
parent | 3ea5ed4ffe600fa11a3deb3de58d5bd5bbb65ee1 (diff) | |
download | minetest-b67f37f27ea7d89b2098fa9fcc2533fa1091e695.tar.gz minetest-b67f37f27ea7d89b2098fa9fcc2533fa1091e695.tar.bz2 minetest-b67f37f27ea7d89b2098fa9fcc2533fa1091e695.zip |
Redefine NodeResolver interface and replace with callback mechanism
Diffstat (limited to 'src/mg_biome.cpp')
-rw-r--r-- | src/mg_biome.cpp | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/src/mg_biome.cpp b/src/mg_biome.cpp index a3a6d5128..763bef1bc 100644 --- a/src/mg_biome.cpp +++ b/src/mg_biome.cpp @@ -48,12 +48,14 @@ BiomeManager::BiomeManager(IGameDef *gamedef) : b->heat_point = 0.0; b->humidity_point = 0.0; - m_resolver->addNode("air", "", CONTENT_AIR, &b->c_top); - m_resolver->addNode("air", "", CONTENT_AIR, &b->c_filler); - m_resolver->addNode("mapgen_stone", "", CONTENT_AIR, &b->c_stone); - m_resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_water); - m_resolver->addNode("air", "", CONTENT_AIR, &b->c_dust); - m_resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_dust_water); + 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("air"); + nri->nodenames.push_back("mapgen_water_source"); + m_ndef->pendNodeResolve(nri); add(b); } @@ -102,18 +104,26 @@ Biome *BiomeManager::getBiome(float heat, float humidity, s16 y) void BiomeManager::clear() { + for (size_t i = 1; i < m_elements.size(); i++) { Biome *b = (Biome *)m_elements[i]; - if (!b) - continue; - - m_resolver->cancelNode(&b->c_top); - m_resolver->cancelNode(&b->c_filler); - m_resolver->cancelNode(&b->c_stone); - m_resolver->cancelNode(&b->c_water); - m_resolver->cancelNode(&b->c_dust); - m_resolver->cancelNode(&b->c_dust_water); + delete b; } + m_elements.resize(1); } + +/////////////////////////////////////////////////////////////////////////////// + + +void Biome::resolveNodeNames(NodeResolveInfo *nri) +{ + 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); + m_ndef->getIdFromResolveInfo(nri, "air", CONTENT_IGNORE, c_dust); + m_ndef->getIdFromResolveInfo(nri, "mapgen_water_source", CONTENT_IGNORE, c_dust_water); +} + |