mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
The new mapgen, noise functions, et al.
This commit is contained in:
parent
736b386554
commit
11afcbff69
23 changed files with 1892 additions and 1037 deletions
120
src/mapgen.h
120
src/mapgen.h
|
@ -22,12 +22,121 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#include "irrlichttypes_extrabloated.h"
|
||||
#include "util/container.h" // UniqueQueue
|
||||
#include "gamedef.h"
|
||||
#include "mapnode.h"
|
||||
#include "noise.h"
|
||||
|
||||
struct BlockMakeData;
|
||||
class BiomeDefManager;
|
||||
class Biome;
|
||||
|
||||
//struct BlockMakeData;
|
||||
class MapBlock;
|
||||
class ManualMapVoxelManipulator;
|
||||
class INodeDefManager;
|
||||
|
||||
struct BlockMakeData {
|
||||
bool no_op;
|
||||
ManualMapVoxelManipulator *vmanip;
|
||||
u64 seed;
|
||||
v3s16 blockpos_min;
|
||||
v3s16 blockpos_max;
|
||||
v3s16 blockpos_requested;
|
||||
UniqueQueue<v3s16> transforming_liquid;
|
||||
INodeDefManager *nodedef;
|
||||
|
||||
BlockMakeData();
|
||||
~BlockMakeData();
|
||||
};
|
||||
|
||||
class Mapgen {
|
||||
public:
|
||||
BlockMakeData *data;
|
||||
ManualMapVoxelManipulator *vmanip;
|
||||
INodeDefManager *ndef;
|
||||
BiomeDefManager *biomedef;
|
||||
|
||||
int ystride;
|
||||
int zstride;
|
||||
|
||||
v3s16 csize;
|
||||
int seed;
|
||||
int water_level;
|
||||
|
||||
Noise *noise_terrain;
|
||||
Noise *noise_bgroup;
|
||||
Noise *noise_heat;
|
||||
Noise *noise_humidity;
|
||||
|
||||
v3s16 node_min;
|
||||
v3s16 node_max;
|
||||
|
||||
float *map_terrain;
|
||||
float *map_bgroup;
|
||||
float *map_heat;
|
||||
float *map_humidity;
|
||||
|
||||
bool generating;
|
||||
int id;
|
||||
|
||||
NoiseParams *np_terrain;
|
||||
NoiseParams *np_bgroup;
|
||||
NoiseParams *np_heat;
|
||||
NoiseParams *np_humidity;
|
||||
|
||||
//should these be broken off into a "commonly used nodes" class?
|
||||
MapNode n_air;
|
||||
MapNode n_water;
|
||||
MapNode n_lava;
|
||||
|
||||
Mapgen(BiomeDefManager *biomedef, int mapgenid=0, u64 seed=0);
|
||||
Mapgen(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,
|
||||
NoiseParams *np_terrain, NoiseParams *np_bgroup,
|
||||
NoiseParams *np_heat, NoiseParams *np_humidity);
|
||||
~Mapgen();
|
||||
|
||||
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);
|
||||
};
|
||||
|
||||
class EmergeManager {
|
||||
public:
|
||||
//settings
|
||||
u64 seed;
|
||||
int water_level;
|
||||
NoiseParams *np_terrain;
|
||||
NoiseParams *np_bgroup;
|
||||
NoiseParams *np_heat;
|
||||
NoiseParams *np_humidity;
|
||||
|
||||
//biome manager
|
||||
BiomeDefManager *biomedef;
|
||||
|
||||
//mapgen objects here
|
||||
|
||||
EmergeManager(IGameDef *gamedef);
|
||||
~EmergeManager();
|
||||
void addBlockToQueue();
|
||||
|
||||
|
||||
|
||||
//mapgen helper methods
|
||||
Biome *getBiomeAtPoint(v3s16 p);
|
||||
int getGroundLevelAtPoint(v2s16 p);
|
||||
bool isBlockUnderground(v3s16 blockpos);
|
||||
u32 getBlockSeed(v3s16 p);
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
namespace mapgen
|
||||
{
|
||||
// Finds precise ground level at any position
|
||||
|
@ -41,10 +150,9 @@ namespace mapgen
|
|||
|
||||
// Main map generation routine
|
||||
void make_block(BlockMakeData *data);
|
||||
|
||||
/*
|
||||
These are used by FarMesh
|
||||
*/
|
||||
|
||||
|
||||
//These are used by FarMesh
|
||||
bool get_have_beach(u64 seed, v2s16 p2d);
|
||||
double tree_amount_2d(u64 seed, v2s16 p);
|
||||
|
||||
|
@ -64,6 +172,6 @@ namespace mapgen
|
|||
};
|
||||
|
||||
}; // namespace mapgen
|
||||
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue