From b67f37f27ea7d89b2098fa9fcc2533fa1091e695 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Wed, 17 Dec 2014 03:20:17 -0500 Subject: Redefine NodeResolver interface and replace with callback mechanism --- src/mg_decoration.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'src/mg_decoration.cpp') diff --git a/src/mg_decoration.cpp b/src/mg_decoration.cpp index 761b231ed..50e8fb05a 100644 --- a/src/mg_decoration.cpp +++ b/src/mg_decoration.cpp @@ -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); -} - - /////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3