2025-10-07 10:32:48 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "pxl8_gfx.h"
|
|
|
|
|
#include "pxl8_math.h"
|
2025-11-09 06:30:17 -06:00
|
|
|
#include "pxl8_procgen.h"
|
2025-10-07 10:32:48 -05:00
|
|
|
#include "pxl8_types.h"
|
|
|
|
|
|
|
|
|
|
typedef struct pxl8_world pxl8_world;
|
|
|
|
|
|
2025-11-11 21:24:53 -06:00
|
|
|
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;
|
|
|
|
|
|
2025-10-07 10:32:48 -05:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
pxl8_world* pxl8_world_create(void);
|
|
|
|
|
void pxl8_world_destroy(pxl8_world* world);
|
|
|
|
|
|
2025-11-11 21:24:53 -06:00
|
|
|
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);
|
2025-11-09 06:30:17 -06:00
|
|
|
bool pxl8_world_is_loaded(const pxl8_world* world);
|
2025-10-07 10:32:48 -05:00
|
|
|
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
|