/*
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
#ifndef MG_DECORATION_HEADER
#define MG_DECORATION_HEADER
-#include <set>
+#include "util/cpp11_container.h"
#include "objdef.h"
#include "noise.h"
#include "nodedef.h"
class Mapgen;
class MMVManip;
-class PseudoRandom;
+class PcgRandom;
class Schematic;
enum DecorationType {
virtual void resolveNodeNames();
+ bool canPlaceDecoration(MMVManip *vm, v3s16 p);
size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
//size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
- virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) = 0;
+ virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p) = 0;
virtual int getHeight() = 0;
u32 flags;
s16 y_max;
float fill_ratio;
NoiseParams np;
+ std::vector<content_t> c_spawnby;
+ s16 nspawnby;
- std::set<u8> biomes;
+ UNORDERED_SET<u8> biomes;
//std::list<CutoffData> cutoffs;
//Mutex cutoff_mutex;
};
class DecoSimple : public Decoration {
public:
- virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p);
- bool canPlaceDecoration(MMVManip *vm, v3s16 p);
- virtual int getHeight();
-
virtual void resolveNodeNames();
+ virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p);
+ virtual int getHeight();
std::vector<content_t> c_decos;
- std::vector<content_t> c_spawnby;
s16 deco_height;
s16 deco_height_max;
- s16 nspawnby;
+ u8 deco_param2;
};
class DecoSchematic : public Decoration {
public:
DecoSchematic();
- virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p);
+ virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p);
virtual int getHeight();
Rotation rotation;