From 2062c80e21b657fed8e68aa48523fa12ad5ef095 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 9 Apr 2020 23:40:12 +0200 Subject: Allow ObjDefManager instances to be cloned --- src/mapgen/mg_ore.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/mapgen/mg_ore.h') diff --git a/src/mapgen/mg_ore.h b/src/mapgen/mg_ore.h index d89360c3c..213bdc964 100644 --- a/src/mapgen/mg_ore.h +++ b/src/mapgen/mg_ore.h @@ -74,12 +74,17 @@ public: size_t placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) = 0; + +protected: + void cloneTo(Ore *def) const; }; class OreScatter : public Ore { public: static const bool NEEDS_NOISE = false; + ObjDef *clone() const; + virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap); }; @@ -88,6 +93,8 @@ class OreSheet : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + u16 column_height_min; u16 column_height_max; float column_midpoint_factor; @@ -100,6 +107,8 @@ class OrePuff : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + NoiseParams np_puff_top; NoiseParams np_puff_bottom; Noise *noise_puff_top = nullptr; @@ -116,6 +125,8 @@ class OreBlob : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap); }; @@ -124,6 +135,8 @@ class OreVein : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + float random_factor; Noise *noise2 = nullptr; int sizey_prev = 0; @@ -139,6 +152,8 @@ class OreStratum : public Ore { public: static const bool NEEDS_NOISE = false; + ObjDef *clone() const; + NoiseParams np_stratum_thickness; Noise *noise_stratum_thickness = nullptr; u16 stratum_thickness; @@ -155,6 +170,8 @@ public: OreManager(IGameDef *gamedef); virtual ~OreManager() = default; + OreManager *clone() const; + const char *getObjectTitle() const { return "ore"; @@ -183,4 +200,7 @@ public: void clear(); size_t placeAllOres(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); + +private: + OreManager() {}; }; -- cgit v1.2.3