X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmapgen_fractal.h;h=d049724b41b79e98b50a1cb2cf93b29419036909;hb=a024042bf5ad487685e952da7b96ffa845cd7731;hp=f3c0230813d1d0a1c8ff18cd4430cc4fc0d3bb64;hpb=c3e179f256246b4b5a86cd908dfc567a7ec454ee;p=dragonfireclient.git diff --git a/src/mapgen_fractal.h b/src/mapgen_fractal.h index f3c023081..d049724b4 100644 --- a/src/mapgen_fractal.h +++ b/src/mapgen_fractal.h @@ -3,6 +3,9 @@ Minetest Copyright (C) 2010-2015 kwolekr, Ryan Kwolek Copyright (C) 2010-2015 paramat, Matt Gregory +Fractal formulas from http://www.bugman123.com/Hypercomplex/index.html +by Paul Nylander, and from http://www.fractalforums.com, thank you. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or @@ -25,31 +28,23 @@ with this program; if not, write to the Free Software Foundation, Inc., #define MGFRACTAL_LARGE_CAVE_DEPTH -33 -/////////////////// Mapgen Fractal flags -#define MGFRACTAL_JULIA 0x01 - class BiomeManager; extern FlagDesc flagdesc_mapgen_fractal[]; - -struct MapgenFractalParams : public MapgenSpecificParams { +struct MapgenFractalParams : public MapgenParams +{ u32 spflags; - - u16 m_iterations; - v3f m_scale; - v3f m_offset; - float m_slice_w; - - u16 j_iterations; - v3f j_scale; - v3f j_offset; - float j_slice_w; + float cave_width; + u16 fractal; + u16 iterations; + v3f scale; + v3f offset; + float slice_w; float julia_x; float julia_y; float julia_z; float julia_w; - NoiseParams np_seabed; NoiseParams np_filler_depth; NoiseParams np_cave1; @@ -62,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; - u32 spflags; + 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(); - u16 m_iterations; - v3f m_scale; - v3f m_offset; - float m_slice_w; +private: + u16 formula; + bool julia; - u16 j_iterations; - v3f j_scale; - v3f j_offset; - float j_slice_w; + 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 getGroundLevelAtPoint(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