LuaVoxelManip: Add option to allocate blank data
[oweals/minetest.git] / src / mg_decoration.cpp
index 20b9fbda68510dbe03ff055c82466b0fc4871049..50e8fb05a65f31eec9a71f203445e84d55d33040 100644 (file)
@@ -38,6 +38,12 @@ FlagDesc flagdesc_deco[] = {
 ///////////////////////////////////////////////////////////////////////////////
 
 
+DecorationManager::DecorationManager(IGameDef *gamedef) :
+       GenElementManager(gamedef)
+{
+}
+
+
 size_t DecorationManager::placeAllDecos(Mapgen *mg, u32 seed, v3s16 nmin, v3s16 nmax)
 {
        size_t nplaced = 0;
@@ -55,6 +61,16 @@ size_t DecorationManager::placeAllDecos(Mapgen *mg, u32 seed, v3s16 nmin, v3s16
 }
 
 
+void DecorationManager::clear()
+{
+       for (size_t i = 0; i < m_elements.size(); i++) {
+               Decoration *deco = (Decoration *)m_elements[i];
+               delete deco;
+       }
+       m_elements.clear();
+}
+
+
 ///////////////////////////////////////////////////////////////////////////////
 
 
@@ -72,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);
@@ -136,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;
@@ -210,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