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
|
@ -65,10 +65,7 @@ void DecorationManager::clear()
|
|||
{
|
||||
for (size_t i = 0; i < m_elements.size(); i++) {
|
||||
Decoration *deco = (Decoration *)m_elements[i];
|
||||
if (!deco)
|
||||
continue;
|
||||
|
||||
deco->dropResolverEntries(m_resolver);
|
||||
delete deco;
|
||||
}
|
||||
m_elements.clear();
|
||||
}
|
||||
|
@ -91,6 +88,12 @@ Decoration::~Decoration()
|
|||
}
|
||||
|
||||
|
||||
void Decoration::resolveNodeNames(NodeResolveInfo *nri)
|
||||
{
|
||||
m_ndef->getIdsFromResolveInfo(nri, c_place_on);
|
||||
}
|
||||
|
||||
|
||||
size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
|
||||
{
|
||||
PseudoRandom ps(blockseed + 53);
|
||||
|
@ -229,6 +232,14 @@ void Decoration::placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
|
|||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
void DecoSimple::resolveNodeNames(NodeResolveInfo *nri)
|
||||
{
|
||||
Decoration::resolveNodeNames(nri);
|
||||
m_ndef->getIdsFromResolveInfo(nri, c_decos);
|
||||
m_ndef->getIdsFromResolveInfo(nri, c_spawnby);
|
||||
}
|
||||
|
||||
|
||||
bool DecoSimple::canPlaceDecoration(ManualMapVoxelManipulator *vm, v3s16 p)
|
||||
{
|
||||
// Don't bother if there aren't any decorations to place
|
||||
|
@ -310,13 +321,6 @@ int DecoSimple::getHeight()
|
|||
}
|
||||
|
||||
|
||||
void DecoSimple::dropResolverEntries(NodeResolver *resolver)
|
||||
{
|
||||
resolver->cancelNodeList(&c_decos);
|
||||
resolver->cancelNodeList(&c_spawnby);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue