struct NoiseParams;
class Mapgen;
-class ManualMapVoxelManipulator;
+class MMVManip;
class PseudoRandom;
class Schematic;
#define DECO_PLACE_CENTER_X 0x01
#define DECO_PLACE_CENTER_Y 0x02
#define DECO_PLACE_CENTER_Z 0x04
+#define DECO_USE_NOISE 0x08
-extern FlagDesc flagdesc_deco_schematic[];
+extern FlagDesc flagdesc_deco[];
#if 0
};
#endif
-class Decoration : public GenElement {
+class Decoration : public GenElement, public NodeResolver {
public:
INodeDefManager *ndef;
+ u32 flags;
int mapseed;
std::vector<content_t> c_place_on;
s16 sidelen;
+ s16 y_min;
+ s16 y_max;
float fill_ratio;
- NoiseParams *np;
+ NoiseParams np;
std::set<u8> biomes;
//std::list<CutoffData> cutoffs;
Decoration();
virtual ~Decoration();
+ virtual void resolveNodeNames(NodeResolveInfo *nri);
+
size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
- size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
+ //size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
- virtual size_t generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) = 0;
+ virtual size_t generate(MMVManip *vm, PseudoRandom *pr, s16 max_y, v3s16 p) = 0;
virtual int getHeight() = 0;
};
s16 deco_height_max;
s16 nspawnby;
- ~DecoSimple() {}
+ virtual void resolveNodeNames(NodeResolveInfo *nri);
- bool canPlaceDecoration(ManualMapVoxelManipulator *vm, v3s16 p);
- virtual size_t generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p);
+ bool canPlaceDecoration(MMVManip *vm, v3s16 p);
+ virtual size_t generate(MMVManip *vm, PseudoRandom *pr, s16 max_y, v3s16 p);
virtual int getHeight();
};
class DecoSchematic : public Decoration {
public:
- u32 flags;
Rotation rotation;
Schematic *schematic;
std::string filename;
- ~DecoSchematic() {}
-
- virtual size_t generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p);
+ virtual size_t generate(MMVManip *vm, PseudoRandom *pr, s16 max_y, v3s16 p);
virtual int getHeight();
};
static const char *ELEMENT_TITLE;
static const size_t ELEMENT_LIMIT = 0x10000;
- DecorationManager(IGameDef *gamedef) {}
+ DecorationManager(IGameDef *gamedef);
~DecorationManager() {}
Decoration *create(int type)
}
}
- size_t placeAllDecos(Mapgen *mg, u32 seed, v3s16 nmin, v3s16 nmax);
+ void clear();
+
+ size_t placeAllDecos(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
};
#endif