diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index e26b0c9fa..791c56609 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -131,9 +131,15 @@ Mapgen::Mapgen(int mapgenid, MapgenParams *params, EmergeParams *emerge) : */ seed = (s32)params->seed; + m_emerge = emerge; ndef = emerge->ndef; } +Mapgen::~Mapgen() +{ + delete m_emerge; // this is our responsibility +} + MapgenType Mapgen::getMapgenType(const std::string &mgname) { @@ -566,7 +572,6 @@ void Mapgen::spreadLight(const v3s16 &nmin, const v3s16 &nmax) MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerge) : Mapgen(mapgenid, params, emerge) { - this->m_emerge = emerge; this->m_bmgr = emerge->biomemgr; //// Here, 'stride' refers to the number of elements needed to skip to index @@ -620,8 +625,6 @@ MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerg MapgenBasic::~MapgenBasic() { delete []heightmap; - - delete m_emerge; // destroying EmergeParams is our responsibility } diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index b61608039..b1d1a1bf0 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -163,6 +163,9 @@ public: int id = -1; MMVManip *vm = nullptr; + // Note that this contains various things the mapgens *can* use, so biomegen + // might be NULL while m_emerge->biomegen is not. + EmergeParams *m_emerge = nullptr; const NodeDefManager *ndef = nullptr; u32 blockseed; @@ -175,7 +178,7 @@ public: Mapgen() = default; Mapgen(int mapgenid, MapgenParams *params, EmergeParams *emerge); - virtual ~Mapgen() = default; + virtual ~Mapgen(); DISABLE_CLASS_COPY(Mapgen); virtual MapgenType getType() const { return MAPGEN_INVALID; } @@ -289,7 +292,6 @@ public: virtual void generateDungeons(s16 max_stone_y); protected: - EmergeParams *m_emerge; BiomeManager *m_bmgr; Noise *noise_filler_depth; diff --git a/src/mapgen/mapgen_singlenode.cpp b/src/mapgen/mapgen_singlenode.cpp index 3a4199035..1a6cba6b0 100644 --- a/src/mapgen/mapgen_singlenode.cpp +++ b/src/mapgen/mapgen_singlenode.cpp @@ -32,8 +32,6 @@ with this program; if not, write to the Free Software Foundation, Inc., MapgenSinglenode::MapgenSinglenode(MapgenParams *params, EmergeParams *emerge) : Mapgen(MAPGEN_SINGLENODE, params, emerge) { - const NodeDefManager *ndef = emerge->ndef; - c_node = ndef->getId("mapgen_singlenode"); if (c_node == CONTENT_IGNORE) c_node = CONTENT_AIR; diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp index a418acace..4db8b25ef 100644 --- a/src/mapgen/mapgen_v6.cpp +++ b/src/mapgen/mapgen_v6.cpp @@ -57,7 +57,6 @@ FlagDesc flagdesc_mapgen_v6[] = { MapgenV6::MapgenV6(MapgenV6Params *params, EmergeParams *emerge) : Mapgen(MAPGEN_V6, params, emerge) { - m_emerge = emerge; ystride = csize.X; heightmap = new s16[csize.X * csize.Z]; @@ -160,8 +159,6 @@ MapgenV6::~MapgenV6() delete noise_humidity; delete[] heightmap; - - delete m_emerge; // our responsibility }