mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Redefine NodeResolver interface and replace with callback mechanism
This commit is contained in:
parent
3ea5ed4ffe
commit
b67f37f27e
16 changed files with 278 additions and 364 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue