- std::string mg_name;
- s16 chunksize;
- u64 seed;
- s16 water_level;
- u32 flags;
-
- NoiseParams np_biome_heat;
- NoiseParams np_biome_humidity;
-
- MapgenSpecificParams *sparams;
-
- MapgenParams() :
- mg_name(DEFAULT_MAPGEN),
- chunksize(5),
- seed(0),
- water_level(1),
- flags(MG_TREES | MG_CAVES | MG_LIGHT),
- np_biome_heat(NoiseParams(50, 50, v3f(500.0, 500.0, 500.0), 5349, 3, 0.5, 2.0)),
- np_biome_humidity(NoiseParams(50, 50, v3f(500.0, 500.0, 500.0), 842, 3, 0.5, 2.0)),
- sparams(NULL)
- {}
-
- void load(const Settings &settings);
- void save(Settings &settings) const;
+ MapgenParams() = default;
+ virtual ~MapgenParams();
+
+ MapgenType mgtype = MAPGEN_DEFAULT;
+ s16 chunksize = 5;
+ u64 seed = 0;
+ s16 water_level = 1;
+ s16 mapgen_limit = MAX_MAP_GENERATION_LIMIT;
+ u32 flags = MG_CAVES | MG_LIGHT | MG_DECORATIONS;
+
+ BiomeParams *bparams = nullptr;
+
+ s16 mapgen_edge_min = -MAX_MAP_GENERATION_LIMIT;
+ s16 mapgen_edge_max = MAX_MAP_GENERATION_LIMIT;
+
+ virtual void readParams(const Settings *settings);
+ virtual void writeParams(Settings *settings) const;
+
+ bool saoPosOverLimit(const v3f &p);
+ s32 getSpawnRangeMax();
+
+private:
+ void calcMapgenEdges();
+
+ float m_sao_limit_min = -MAX_MAP_GENERATION_LIMIT * BS;
+ float m_sao_limit_max = MAX_MAP_GENERATION_LIMIT * BS;
+ bool m_mapgen_edges_calculated = false;