]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/mg_decoration.h
core.get_objects_inside_radius: Omit removed objects (#6318)
[dragonfireclient.git] / src / mg_decoration.h
index be0ba44d779646a5abf2450475f38a818f9c7b29..fd6e89e798bb94d43204ef139454f6c4b07ed479 100644 (file)
@@ -1,6 +1,7 @@
 /*
 Minetest
-Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
+Copyright (C) 2014-2016 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
+Copyright (C) 2015-2017 paramat
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
@@ -17,10 +18,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef MG_DECORATION_HEADER
-#define MG_DECORATION_HEADER
+#pragma once
 
-#include "util/cpp11_container.h"
+#include <unordered_set>
 #include "objdef.h"
 #include "noise.h"
 #include "nodedef.h"
@@ -63,32 +63,31 @@ struct CutoffData {
 
 class Decoration : public ObjDef, public NodeResolver {
 public:
-       Decoration();
-       virtual ~Decoration();
+       Decoration() = default;
+       virtual ~Decoration() = default;
 
        virtual void resolveNodeNames();
 
        bool canPlaceDecoration(MMVManip *vm, v3s16 p);
-       size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
+       size_t placeDeco(Mapgen *mg, u32 blockseed,
+               v3s16 nmin, v3s16 nmax, s16 deco_zero_level);
        //size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
 
        virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p) = 0;
        virtual int getHeight() = 0;
 
-       u32 flags;
-       int mapseed;
+       u32 flags = 0;
+       int mapseed = 0;
        std::vector<content_t> c_place_on;
-       s16 sidelen;
+       s16 sidelen = 1;
        s16 y_min;
        s16 y_max;
-       float fill_ratio;
+       float fill_ratio = 0.0f;
        NoiseParams np;
        std::vector<content_t> c_spawnby;
        s16 nspawnby;
 
-       UNORDERED_SET<u8> biomes;
-       //std::list<CutoffData> cutoffs;
-       //Mutex cutoff_mutex;
+       std::unordered_set<u8> biomes;
 };
 
 class DecoSimple : public Decoration {
@@ -100,17 +99,18 @@ class DecoSimple : public Decoration {
        std::vector<content_t> c_decos;
        s16 deco_height;
        s16 deco_height_max;
+       u8 deco_param2;
 };
 
 class DecoSchematic : public Decoration {
 public:
-       DecoSchematic();
+       DecoSchematic() = default;
 
        virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p);
        virtual int getHeight();
 
        Rotation rotation;
-       Schematic *schematic;
+       Schematic *schematic = nullptr;
 };
 
 
@@ -124,7 +124,7 @@ class DecoLSystem : public Decoration {
 class DecorationManager : public ObjDefManager {
 public:
        DecorationManager(IGameDef *gamedef);
-       virtual ~DecorationManager() {}
+       virtual ~DecorationManager() = default;
 
        const char *getObjectTitle() const
        {
@@ -145,7 +145,6 @@ class DecorationManager : public ObjDefManager {
                }
        }
 
-       size_t placeAllDecos(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
+       size_t placeAllDecos(Mapgen *mg, u32 blockseed,
+               v3s16 nmin, v3s16 nmax, s16 deco_zero_level = 0);
 };
-
-#endif