/*
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
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"
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 {
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;
};
class DecorationManager : public ObjDefManager {
public:
DecorationManager(IGameDef *gamedef);
- virtual ~DecorationManager() {}
+ virtual ~DecorationManager() = default;
const char *getObjectTitle() const
{
}
}
- 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