#ifndef WORLDGEN_H #define WORLDGEN_H #include #include #include "noise.h" #define CHUNK_SIZE 16 #define CHUNK_HEIGHT 256 enum BlockId { BLOCK_BEDROCK = 0, BLOCK_STONE = 1, BLOCK_DIRT = 2, BLOCK_GRASS = 3, BLOCK_WATER = 4, BLOCK_AIR = 5, BLOCK_OAK_LOG = 6, BLOCK_OAK_LEAVES = 7, BLOCK_BIRCH_LOG = 8, BLOCK_BIRCH_LEAVES = 9, BLOCK_COAL = 10 }; typedef struct { int chunk_x; int chunk_z; uint16_t heightmap[CHUNK_SIZE][CHUNK_SIZE]; uint16_t blocks[CHUNK_HEIGHT][CHUNK_SIZE][CHUNK_SIZE]; } chunk_data; typedef struct { simplex_noise noise; int sea_level; int world_seed; } worldgen_ctx; void worldgen_init(worldgen_ctx *ctx, int world_seed, int sea_level); void worldgen_generate_chunk(worldgen_ctx *ctx, int chunk_x, int chunk_z, chunk_data *out); #endif