#ifndef MAPGEN_HEADER
#define MAPGEN_HEADER
+#include "noise.h"
#include "nodedef.h"
#include "mapnode.h"
#include "util/string.h"
#define MG_LIGHT 0x10
class Settings;
-class ManualMapVoxelManipulator;
+class MMVManip;
class INodeDefManager;
extern FlagDesc flagdesc_mapgen[];
class Biome;
class EmergeManager;
class MapBlock;
-class ManualMapVoxelManipulator;
class VoxelManipulator;
struct BlockMakeData;
class VoxelArea;
s16 water_level;
u32 flags;
+ NoiseParams np_biome_heat;
+ NoiseParams np_biome_humidity;
+
MapgenSpecificParams *sparams;
MapgenParams()
chunksize = 5;
flags = MG_TREES | MG_CAVES | MG_LIGHT;
sparams = NULL;
+ 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);
}
};
u32 flags;
bool generating;
int id;
- ManualMapVoxelManipulator *vm;
+
+ MMVManip *vm;
INodeDefManager *ndef;
+ u32 blockseed;
s16 *heightmap;
u8 *biomemap;
v3s16 csize;
Mapgen(int mapgenid, MapgenParams *params, EmergeManager *emerge);
virtual ~Mapgen();
+ static u32 getBlockSeed(v3s16 p, int seed);
+ static u32 getBlockSeed2(v3s16 p, int seed);
s16 findGroundLevelFull(v2s16 p2d);
s16 findGroundLevel(v2s16 p2d, s16 ymin, s16 ymax);
void updateHeightmap(v3s16 nmin, v3s16 nmax);
void updateLiquid(UniqueQueue<v3s16> *trans_liquid, v3s16 nmin, v3s16 nmax);
- void setLighting(v3s16 nmin, v3s16 nmax, u8 light);
+
+ void setLighting(u8 light, v3s16 nmin, v3s16 nmax);
void lightSpread(VoxelArea &a, v3s16 p, u8 light);
+
void calcLighting(v3s16 nmin, v3s16 nmax);
+ void calcLighting(v3s16 nmin, v3s16 nmax,
+ v3s16 full_nmin, v3s16 full_nmax);
+
+ void propagateSunlight(v3s16 nmin, v3s16 nmax);
+ void spreadLight(v3s16 nmin, v3s16 nmax);
+
void calcLightingOld(v3s16 nmin, v3s16 nmax);
virtual void makeChunk(BlockMakeData *data) {}
static const char *ELEMENT_TITLE;
static const size_t ELEMENT_LIMIT = -1;
- GenElementManager() {}
+ GenElementManager(IGameDef *gamedef);
virtual ~GenElementManager();
virtual GenElement *create(int type) = 0;
virtual GenElement *getByName(const std::string &name);
protected:
+ INodeDefManager *m_ndef;
std::vector<GenElement *> m_elements;
};