X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmapgen_fractal.h;h=afbdb0cb1ceece52765dc8fd1125de1249ffe141;hb=8f7785771b9e02b1a1daf7a252550d78ea93053d;hp=8c21a8a4ed5f247a32abd6b7570c3338837a02a9;hpb=465bb6f5d13803819f329e4920bceb25a3887c6f;p=minetest.git diff --git a/src/mapgen_fractal.h b/src/mapgen_fractal.h index 8c21a8a4e..afbdb0cb1 100644 --- a/src/mapgen_fractal.h +++ b/src/mapgen_fractal.h @@ -1,7 +1,7 @@ /* Minetest -Copyright (C) 2010-2015 kwolekr, Ryan Kwolek -Copyright (C) 2010-2015 paramat, Matt Gregory +Copyright (C) 2015-2017 paramat +Copyright (C) 2015-2016 kwolekr, Ryan Kwolek Fractal formulas from http://www.bugman123.com/Hypercomplex/index.html by Paul Nylander, and from http://www.fractalforums.com, thank you. @@ -32,21 +32,19 @@ class BiomeManager; extern FlagDesc flagdesc_mapgen_fractal[]; - -struct MapgenFractalParams : public MapgenSpecificParams { - u32 spflags; - - u16 fractal; - u16 iterations; - v3f scale; - v3f offset; - float slice_w; - - float julia_x; - float julia_y; - float julia_z; - float julia_w; - +struct MapgenFractalParams : public MapgenParams +{ + u32 spflags = 0; + float cave_width = 0.09f; + u16 fractal = 1; + u16 iterations = 11; + v3f scale = v3f(4096.0, 1024.0, 4096.0); + v3f offset = v3f(1.79, 0.0, 0.0); + float slice_w = 0.0f; + float julia_x = 0.33f; + float julia_y = 0.33f; + float julia_z = 0.33f; + float julia_w = 0.33f; NoiseParams np_seabed; NoiseParams np_filler_depth; NoiseParams np_cave1; @@ -59,80 +57,33 @@ struct MapgenFractalParams : public MapgenSpecificParams { void writeParams(Settings *settings) const; }; -class MapgenFractal : public Mapgen { +class MapgenFractal : public MapgenBasic +{ public: - EmergeManager *m_emerge; - BiomeManager *bmgr; + MapgenFractal(int mapgenid, MapgenFractalParams *params, EmergeManager *emerge); + ~MapgenFractal(); - int ystride; - int zstride_1d; - u16 formula; - bool julia; + virtual MapgenType getType() const { return MAPGEN_FRACTAL; } - v3s16 node_min; - v3s16 node_max; - v3s16 full_node_min; - v3s16 full_node_max; + virtual void makeChunk(BlockMakeData *data); + int getSpawnLevelAtPoint(v2s16 p); + bool getFractalAtPoint(s16 x, s16 y, s16 z); + s16 generateTerrain(); - u32 spflags; +private: + u16 formula; + bool julia; u16 fractal; u16 iterations; v3f scale; v3f offset; float slice_w; - float julia_x; float julia_y; float julia_z; float julia_w; - Noise *noise_seabed; - Noise *noise_filler_depth; - Noise *noise_cave1; - Noise *noise_cave2; - - Noise *noise_heat; - Noise *noise_humidity; - Noise *noise_heat_blend; - Noise *noise_humidity_blend; - - content_t c_stone; - content_t c_water_source; - content_t c_lava_source; - content_t c_desert_stone; - content_t c_ice; - content_t c_sandstone; - - content_t c_cobble; - content_t c_stair_cobble; - content_t c_mossycobble; - content_t c_sandstonebrick; - content_t c_stair_sandstonebrick; - - MapgenFractal(int mapgenid, MapgenParams *params, EmergeManager *emerge); - ~MapgenFractal(); - - virtual void makeChunk(BlockMakeData *data); - int getSpawnLevelAtPoint(v2s16 p); - void calculateNoise(); - bool getFractalAtPoint(s16 x, s16 y, s16 z); - s16 generateTerrain(); - MgStoneType generateBiomes(float *heat_map, float *humidity_map); - void dustTopNodes(); - void generateCaves(s16 max_stone_y); -}; - -struct MapgenFactoryFractal : public MapgenFactory { - Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) - { - return new MapgenFractal(mgid, params, emerge); - }; - - MapgenSpecificParams *createMapgenParams() - { - return new MapgenFractalParams(); - }; }; #endif