LuaVoxelManip: Add option to allocate blank data
[oweals/minetest.git] / src / mg_decoration.cpp
index 14368c091dcacdf273e17b10845e3101dac1afcc..50e8fb05a65f31eec9a71f203445e84d55d33040 100644 (file)
@@ -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);
@@ -155,7 +158,7 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
                        if (mg->biomemap) {
                                std::set<u8>::iterator iter;
 
-                               if (biomes.size()) {
+                               if (!biomes.empty()) {
                                        iter = biomes.find(mg->biomemap[mapindex]);
                                        if (iter == biomes.end())
                                                continue;
@@ -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);
-}
-
-
 ///////////////////////////////////////////////////////////////////////////////