summaryrefslogtreecommitdiff
path: root/src/mapgen.h
diff options
context:
space:
mode:
authorkwolekr <mirrorisim@gmail.com>2012-12-22 00:34:35 -0500
committerPerttu Ahola <celeron55@gmail.com>2013-01-21 21:41:37 +0200
commitd5029958b9017ad89775bc4f68c4de3db603e618 (patch)
tree757d6e545217c3b0da34d66d00f1e5a99aeb22a2 /src/mapgen.h
parentbddd5f2b98a56fc735d5687ecd0b43767aec8066 (diff)
downloadminetest-d5029958b9017ad89775bc4f68c4de3db603e618.tar.gz
minetest-d5029958b9017ad89775bc4f68c4de3db603e618.tar.bz2
minetest-d5029958b9017ad89775bc4f68c4de3db603e618.zip
Readded and optimized mapgen V6
Diffstat (limited to 'src/mapgen.h')
-rw-r--r--src/mapgen.h101
1 files changed, 92 insertions, 9 deletions
diff --git a/src/mapgen.h b/src/mapgen.h
index d6e932ca0..76ae73c52 100644
--- a/src/mapgen.h
+++ b/src/mapgen.h
@@ -32,8 +32,17 @@ class Biome;
//struct BlockMakeData;
class MapBlock;
class ManualMapVoxelManipulator;
+class VoxelManipulator;
class INodeDefManager;
+
+enum BiomeType
+{
+ BT_NORMAL,
+ BT_DESERT
+};
+
+
struct BlockMakeData {
bool no_op;
ManualMapVoxelManipulator *vmanip;
@@ -48,8 +57,82 @@ struct BlockMakeData {
~BlockMakeData();
};
+
class Mapgen {
public:
+
+ int seed;
+ int water_level;
+
+ bool generating;
+ int id;
+
+
+ //virtual Mapgen(BiomeDefManager *biomedef, int mapgenid=0, u64 seed=0);
+ //virtual ~Mapgen();
+ virtual void makeChunk(BlockMakeData *data) {};
+
+ //Legacy functions for Farmesh (pending removal)
+ static bool get_have_beach(u64 seed, v2s16 p2d);
+ static double tree_amount_2d(u64 seed, v2s16 p);
+ static s16 find_ground_level_from_noise(u64 seed, v2s16 p2d, s16 precision);
+};
+
+
+class MapgenV6 : public Mapgen {
+public:
+ //ManualMapVoxelManipulator &vmanip;
+
+ int ystride;
+ v3s16 csize;
+
+ v3s16 node_min;
+ v3s16 node_max;
+
+ Noise *noise_terrain_base;
+ Noise *noise_terrain_higher;
+ Noise *noise_steepness;
+ Noise *noise_height_select;
+ Noise *noise_trees;
+ Noise *noise_mud;
+ Noise *noise_beach;
+ Noise *noise_biome;
+ Noise *noise_cave;
+
+ float *map_terrain_base;
+ float *map_terrain_higher;
+ float *map_steepness;
+ float *map_height_select;
+ float *map_trees;
+ float *map_mud;
+ float *map_beach;
+ float *map_biome;
+ float *map_cave;
+
+ bool use_smooth_biome_trans;
+
+ MapgenV6(int mapgenid=0, u64 seed=0);
+ ~MapgenV6();
+
+ void makeChunk(BlockMakeData *data);
+
+
+ static s16 find_ground_level(VoxelManipulator &vmanip, v2s16 p2d, INodeDefManager *ndef);
+ static s16 find_stone_level(VoxelManipulator &vmanip, v2s16 p2d, INodeDefManager *ndef);
+ void make_tree(ManualMapVoxelManipulator &vmanip, v3s16 p0, bool is_apple_tree, INodeDefManager *ndef);
+ double tree_amount_2d(u64 seed, v2s16 p);
+ bool block_is_underground(u64 seed, v3s16 blockpos);
+ double base_rock_level_2d(u64 seed, v2s16 p);
+ s16 find_ground_level_from_noise(u64 seed, v2s16 p2d, s16 precision);
+ double get_mud_add_amount(u64 seed, v2s16 p);
+ bool get_have_beach(u64 seed, v2s16 p2d);
+ BiomeType get_biome(u64 seed, v2s16 p2d);
+ u32 get_blockseed(u64 seed, v3s16 p);
+};
+
+
+class MapgenV7 : public Mapgen {
+public:
BlockMakeData *data;
ManualMapVoxelManipulator *vmanip;
INodeDefManager *ndef;
@@ -59,8 +142,8 @@ public:
int zstride;
v3s16 csize;
- int seed;
- int water_level;
+ //int seed;
+ //int water_level;
Noise *noise_terrain;
Noise *noise_bgroup;
@@ -88,23 +171,23 @@ public:
MapNode n_water;
MapNode n_lava;
- Mapgen(BiomeDefManager *biomedef, int mapgenid=0, u64 seed=0);
- Mapgen(BiomeDefManager *biomedef, int mapgenid, u64 seed,
+ MapgenV7(BiomeDefManager *biomedef, int mapgenid=0, u64 seed=0);
+ MapgenV7(BiomeDefManager *biomedef, int mapgenid, u64 seed,
NoiseParams *np_terrain, NoiseParams *np_bgroup,
NoiseParams *np_heat, NoiseParams *np_humidity);
- void initMapgen(BiomeDefManager *biomedef, int mapgenid, u64 seed,
+ void init(BiomeDefManager *biomedef, int mapgenid, u64 seed,
NoiseParams *np_terrain, NoiseParams *np_bgroup,
NoiseParams *np_heat, NoiseParams *np_humidity);
- ~Mapgen();
+ ~MapgenV7();
void makeChunk(BlockMakeData *data);
void updateLiquid(v3s16 node_min, v3s16 node_max);
void updateLighting(v3s16 node_min, v3s16 node_max);
//Legacy functions for Farmesh (pending removal)
- static bool get_have_beach(u64 seed, v2s16 p2d);
- static double tree_amount_2d(u64 seed, v2s16 p);
- static s16 find_ground_level_from_noise(u64 seed, v2s16 p2d, s16 precision);
+// static bool get_have_beach(u64 seed, v2s16 p2d);
+// static double tree_amount_2d(u64 seed, v2s16 p);
+// static s16 find_ground_level_from_noise(u64 seed, v2s16 p2d, s16 precision);
};
class EmergeManager {