1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add minetest.clear_registered_biomes() api

This commit is contained in:
kwolekr 2014-12-06 18:08:08 -05:00
parent f3abaec83b
commit 60feb4ad25
6 changed files with 51 additions and 19 deletions

View file

@ -35,11 +35,9 @@ NoiseParams nparams_biome_def_humidity(50, 50, v3f(500.0, 500.0, 500.0), 842, 3,
///////////////////////////////////////////////////////////////////////////////
BiomeManager::BiomeManager(IGameDef *gamedef)
{
NodeResolver *resolver = gamedef->getNodeDefManager()->getResolver();
m_resolver = gamedef->getNodeDefManager()->getResolver();
np_heat = &nparams_biome_def_heat;
np_humidity = &nparams_biome_def_humidity;
@ -56,12 +54,12 @@ BiomeManager::BiomeManager(IGameDef *gamedef)
b->heat_point = 0.0;
b->humidity_point = 0.0;
resolver->addNode("air", "", CONTENT_AIR, &b->c_top);
resolver->addNode("air", "", CONTENT_AIR, &b->c_filler);
resolver->addNode("mapgen_stone", "", CONTENT_AIR, &b->c_stone);
resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_water);
resolver->addNode("air", "", CONTENT_AIR, &b->c_dust);
resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_dust_water);
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);
add(b);
}
@ -110,7 +108,24 @@ Biome *BiomeManager::getBiome(float heat, float humidity, s16 y)
biome_closest = b;
}
}
return biome_closest ? biome_closest : (Biome *)m_elements[0];
}
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);
}
m_elements.resize(1);
}