add docs
This commit is contained in:
@@ -9,24 +9,40 @@
|
|||||||
class Content;
|
class Content;
|
||||||
|
|
||||||
struct BlocksLayer {
|
struct BlocksLayer {
|
||||||
|
/// @brief Layer block
|
||||||
std::string block;
|
std::string block;
|
||||||
|
|
||||||
|
/// @brief Layer height. -1 is resizeable layer
|
||||||
int height;
|
int height;
|
||||||
|
|
||||||
|
/// @brief Layer can present under the sea level (default: true) else will
|
||||||
|
/// extend the next layer
|
||||||
bool below_sea_level;
|
bool below_sea_level;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
/// @brief Layer block index
|
||||||
blockid_t id;
|
blockid_t id;
|
||||||
} rt;
|
} rt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// @brief Set of blocks layers with additional info
|
||||||
struct BlocksLayers {
|
struct BlocksLayers {
|
||||||
std::vector<BlocksLayer> layers;
|
std::vector<BlocksLayer> layers;
|
||||||
|
|
||||||
|
/// @brief Total height of all layers after the resizeable one
|
||||||
uint lastLayersHeight;
|
uint lastLayersHeight;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// @brief Generator behaviour and settings interface
|
||||||
class GeneratorScript {
|
class GeneratorScript {
|
||||||
public:
|
public:
|
||||||
virtual ~GeneratorScript() = default;
|
virtual ~GeneratorScript() = default;
|
||||||
|
|
||||||
|
/// @brief Generates a heightmap with values in range 0..1
|
||||||
|
/// @param offset position of the heightmap top left corner in the world
|
||||||
|
/// @param size size of the heightmap
|
||||||
|
/// @param seed world seed
|
||||||
|
/// @return generated heightmap of given size (can't be nullptr)
|
||||||
virtual std::shared_ptr<Heightmap> generateHeightmap(
|
virtual std::shared_ptr<Heightmap> generateHeightmap(
|
||||||
const glm::ivec2& offset, const glm::ivec2& size, uint64_t seed) = 0;
|
const glm::ivec2& offset, const glm::ivec2& size, uint64_t seed) = 0;
|
||||||
|
|
||||||
@@ -35,9 +51,12 @@ public:
|
|||||||
|
|
||||||
virtual uint getSeaLevel() const = 0;
|
virtual uint getSeaLevel() const = 0;
|
||||||
|
|
||||||
|
/// @brief Build the runtime cache
|
||||||
|
/// @param content built content
|
||||||
virtual void prepare(const Content* content) = 0;
|
virtual void prepare(const Content* content) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// @brief Generator information
|
||||||
struct GeneratorDef {
|
struct GeneratorDef {
|
||||||
std::string name;
|
std::string name;
|
||||||
std::unique_ptr<GeneratorScript> script;
|
std::unique_ptr<GeneratorScript> script;
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ WorldGenerator::WorldGenerator(const GeneratorDef& def, const Content* content)
|
|||||||
|
|
||||||
static inline void generate_pole(
|
static inline void generate_pole(
|
||||||
const BlocksLayers& layers,
|
const BlocksLayers& layers,
|
||||||
int height,
|
int top,
|
||||||
int bottom,
|
int bottom,
|
||||||
int seaLevel,
|
int seaLevel,
|
||||||
voxel* voxels,
|
voxel* voxels,
|
||||||
int x,
|
int x,
|
||||||
int z
|
int z
|
||||||
) {
|
) {
|
||||||
uint y = height;
|
uint y = top;
|
||||||
uint layerExtension = 0;
|
uint layerExtension = 0;
|
||||||
for (const auto& layer : layers.layers) {
|
for (const auto& layer : layers.layers) {
|
||||||
// skip layer if can't be generated under sea level
|
// skip layer if can't be generated under sea level
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ struct voxel;
|
|||||||
class Content;
|
class Content;
|
||||||
struct GeneratorDef;
|
struct GeneratorDef;
|
||||||
|
|
||||||
|
/// @brief High-level world generation controller
|
||||||
class WorldGenerator {
|
class WorldGenerator {
|
||||||
const GeneratorDef& def;
|
const GeneratorDef& def;
|
||||||
const Content* content;
|
const Content* content;
|
||||||
@@ -18,6 +19,11 @@ public:
|
|||||||
);
|
);
|
||||||
virtual ~WorldGenerator() = default;
|
virtual ~WorldGenerator() = default;
|
||||||
|
|
||||||
|
/// @brief Generate complete chunk voxels
|
||||||
|
/// @param voxels destinatiopn chunk voxels buffer
|
||||||
|
/// @param x chunk position X divided by CHUNK_W
|
||||||
|
/// @param z chunk position Y divided by CHUNK_D
|
||||||
|
/// @param seed world seed
|
||||||
virtual void generate(voxel* voxels, int x, int z, uint64_t seed);
|
virtual void generate(voxel* voxels, int x, int z, uint64_t seed);
|
||||||
|
|
||||||
inline static std::string DEFAULT = "core:default";
|
inline static std::string DEFAULT = "core:default";
|
||||||
|
|||||||
Reference in New Issue
Block a user