#pragma once #include "pxl8_bsp.h" #include "pxl8_gfx.h" #include "pxl8_math.h" #include "pxl8_procgen.h" #include "pxl8_types.h" typedef struct pxl8_world pxl8_world; typedef bool (*pxl8_texture_rule)(const pxl8_vec3* normal, const pxl8_bsp_face* face, const pxl8_bsp* bsp); typedef struct pxl8_world_texture { char name[16]; u32 texture_id; pxl8_texture_rule rule; } pxl8_world_texture; #ifdef __cplusplus extern "C" { #endif pxl8_world* pxl8_world_create(void); void pxl8_world_destroy(pxl8_world* world); pxl8_result pxl8_world_generate(pxl8_world* world, pxl8_gfx* gfx, const pxl8_procgen_params* params); pxl8_result pxl8_world_apply_textures(pxl8_world* world, const pxl8_world_texture* textures, u32 count); bool pxl8_world_is_loaded(const pxl8_world* world); pxl8_result pxl8_world_load(pxl8_world* world, const char* path); void pxl8_world_render(pxl8_world* world, pxl8_gfx* gfx, pxl8_vec3 camera_pos); void pxl8_world_unload(pxl8_world* world); #ifdef __cplusplus } #endif