better lighting
This commit is contained in:
parent
805a2713a3
commit
6ed4e17065
75 changed files with 6417 additions and 3667 deletions
|
|
@ -260,7 +260,7 @@ pxl8_script* pxl8_script_create(bool repl_mode) {
|
|||
lua_getglobal(script->L, "require");
|
||||
lua_pushstring(script->L, "ffi");
|
||||
if (lua_pcall(script->L, 1, 1, 0) != 0) {
|
||||
pxl8_script_set_error(script, lua_tostring(script->L, -1));
|
||||
pxl8_error("FFI require failed: %s", lua_tostring(script->L, -1));
|
||||
pxl8_script_destroy(script);
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -268,7 +268,7 @@ pxl8_script* pxl8_script_create(bool repl_mode) {
|
|||
lua_getfield(script->L, -1, "cdef");
|
||||
lua_pushstring(script->L, pxl8_ffi_cdefs);
|
||||
if (lua_pcall(script->L, 1, 0, 0) != 0) {
|
||||
pxl8_script_set_error(script, lua_tostring(script->L, -1));
|
||||
pxl8_error("FFI cdef failed: %s", lua_tostring(script->L, -1));
|
||||
pxl8_script_destroy(script);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,11 @@ static const char* pxl8_ffi_cdefs =
|
|||
"f32 pxl8_get_fps(const pxl8* sys);\n"
|
||||
"\n"
|
||||
"u8 pxl8_gfx_find_color(pxl8_gfx* gfx, u32 color);\n"
|
||||
"u8* pxl8_gfx_get_framebuffer_indexed(pxl8_gfx* gfx);\n"
|
||||
"i32 pxl8_gfx_get_height(pxl8_gfx* ctx);\n"
|
||||
"u32* pxl8_gfx_get_light_accum(pxl8_gfx* gfx);\n"
|
||||
"const u32* pxl8_gfx_palette_colors(pxl8_gfx* gfx);\n"
|
||||
"u16* pxl8_gfx_get_zbuffer(pxl8_gfx* gfx);\n"
|
||||
"typedef struct pxl8_palette pxl8_palette;\n"
|
||||
"pxl8_palette* pxl8_gfx_palette(pxl8_gfx* gfx);\n"
|
||||
"u32 pxl8_palette_color(const pxl8_palette* pal, u8 idx);\n"
|
||||
|
|
@ -59,7 +63,7 @@ static const char* pxl8_ffi_cdefs =
|
|||
"void pxl8_gfx_clear_palette_cycles(pxl8_gfx* ctx);\n"
|
||||
"void pxl8_gfx_update(pxl8_gfx* ctx, f32 dt);\n"
|
||||
"i32 pxl8_gfx_load_palette(pxl8_gfx* ctx, const char* filepath);\n"
|
||||
"i32 pxl8_gfx_load_sprite(pxl8_gfx* ctx, const char* filepath, u32* sprite_id);\n"
|
||||
"i32 pxl8_gfx_load_sprite(pxl8_gfx* ctx, const char* filepath);\n"
|
||||
"i32 pxl8_gfx_create_texture(pxl8_gfx* ctx, const u8* pixels, u32 width, u32 height);\n"
|
||||
"bool pxl8_gfx_push_target(pxl8_gfx* ctx);\n"
|
||||
"void pxl8_gfx_pop_target(pxl8_gfx* ctx);\n"
|
||||
|
|
@ -336,22 +340,6 @@ static const char* pxl8_ffi_cdefs =
|
|||
"pxl8_mat4 pxl8_mat4_scale(float x, float y, float z);\n"
|
||||
"pxl8_mat4 pxl8_mat4_translate(float x, float y, float z);\n"
|
||||
"\n"
|
||||
"typedef enum pxl8_procgen_type {\n"
|
||||
" PXL8_PROCGEN_ROOMS = 0,\n"
|
||||
" PXL8_PROCGEN_TERRAIN = 1\n"
|
||||
"} pxl8_procgen_type;\n"
|
||||
"\n"
|
||||
"typedef struct pxl8_procgen_params {\n"
|
||||
" pxl8_procgen_type type;\n"
|
||||
" int width;\n"
|
||||
" int height;\n"
|
||||
" int depth;\n"
|
||||
" unsigned int seed;\n"
|
||||
" int min_room_size;\n"
|
||||
" int max_room_size;\n"
|
||||
" int num_rooms;\n"
|
||||
"} pxl8_procgen_params;\n"
|
||||
"\n"
|
||||
"typedef enum pxl8_graph_op {\n"
|
||||
" PXL8_OP_CONST = 0,\n"
|
||||
" PXL8_OP_INPUT_AGE,\n"
|
||||
|
|
@ -424,33 +412,58 @@ static const char* pxl8_ffi_cdefs =
|
|||
"void pxl8_graph_eval_texture(const pxl8_graph* graph, u8* buffer, i32 width, i32 height);\n"
|
||||
"\n"
|
||||
"typedef struct pxl8_bsp pxl8_bsp;\n"
|
||||
"typedef struct pxl8_vxl_chunk pxl8_vxl_chunk;\n"
|
||||
"\n"
|
||||
"u32 pxl8_bsp_face_count(const pxl8_bsp* bsp);\n"
|
||||
"pxl8_vec3 pxl8_bsp_face_normal(const pxl8_bsp* bsp, u32 face_id);\n"
|
||||
"void pxl8_bsp_face_set_material(pxl8_bsp* bsp, u32 face_id, u16 material_id);\n"
|
||||
"void pxl8_bsp_set_material(pxl8_bsp* bsp, u16 material_id, const pxl8_gfx_material* material);\n"
|
||||
"void pxl8_bsp_set_wireframe(pxl8_bsp* bsp, bool wireframe);\n"
|
||||
"\n"
|
||||
"typedef enum { PXL8_CHUNK_VXL = 0, PXL8_CHUNK_BSP = 1 } pxl8_chunk_type;\n"
|
||||
"typedef enum { PXL8_WORLD_CHUNK_VXL = 0, PXL8_WORLD_CHUNK_BSP = 1 } pxl8_world_chunk_type;\n"
|
||||
"\n"
|
||||
"typedef struct pxl8_chunk {\n"
|
||||
" pxl8_chunk_type type;\n"
|
||||
"typedef struct pxl8_world_chunk {\n"
|
||||
" pxl8_world_chunk_type type;\n"
|
||||
" u32 id;\n"
|
||||
" u32 version;\n"
|
||||
" i32 cx, cy, cz;\n"
|
||||
" union {\n"
|
||||
" void* voxel;\n"
|
||||
" pxl8_bsp* bsp;\n"
|
||||
" pxl8_vxl_chunk* voxels;\n"
|
||||
" };\n"
|
||||
"} pxl8_chunk;\n"
|
||||
"} pxl8_world_chunk;\n"
|
||||
"\n"
|
||||
"typedef struct pxl8_world pxl8_world;\n"
|
||||
"\n"
|
||||
"typedef struct pxl8_ray {\n"
|
||||
" pxl8_vec3 normal;\n"
|
||||
" pxl8_vec3 point;\n"
|
||||
" float fraction;\n"
|
||||
" bool hit;\n"
|
||||
"} pxl8_ray;\n"
|
||||
"\n"
|
||||
"pxl8_world* pxl8_get_world(pxl8* sys);\n"
|
||||
"pxl8_chunk* pxl8_world_active_chunk(pxl8_world* world);\n"
|
||||
"bool pxl8_world_check_collision(const pxl8_world* world, pxl8_vec3 pos, float radius);\n"
|
||||
"pxl8_world_chunk* pxl8_world_active_chunk(pxl8_world* world);\n"
|
||||
"bool pxl8_world_point_solid(const pxl8_world* world, float x, float y, float z);\n"
|
||||
"pxl8_ray pxl8_world_ray(const pxl8_world* world, pxl8_vec3 from, pxl8_vec3 to);\n"
|
||||
"pxl8_ray pxl8_world_sweep(const pxl8_world* world, pxl8_vec3 from, pxl8_vec3 to, float radius);\n"
|
||||
"void pxl8_world_render(pxl8_world* world, pxl8_gfx* gfx, pxl8_vec3 camera_pos);\n"
|
||||
"pxl8_vec3 pxl8_world_resolve_collision(const pxl8_world* world, pxl8_vec3 from, pxl8_vec3 to, float radius);\n"
|
||||
"void pxl8_world_set_bsp_material(pxl8_world* world, u16 material_id, const pxl8_gfx_material* material);\n"
|
||||
"void pxl8_world_set_wireframe(pxl8_world* world, bool enabled);\n"
|
||||
"i32 pxl8_world_get_render_distance(const pxl8_world* world);\n"
|
||||
"void pxl8_world_set_render_distance(pxl8_world* world, i32 distance);\n"
|
||||
"i32 pxl8_world_get_sim_distance(const pxl8_world* world);\n"
|
||||
"void pxl8_world_set_sim_distance(pxl8_world* world, i32 distance);\n"
|
||||
"\n"
|
||||
"typedef struct pxl8_sim_entity {\n"
|
||||
" pxl8_vec3 pos;\n"
|
||||
" pxl8_vec3 vel;\n"
|
||||
" f32 yaw;\n"
|
||||
" f32 pitch;\n"
|
||||
" u32 flags;\n"
|
||||
" u16 kind;\n"
|
||||
" u16 _pad;\n"
|
||||
"} pxl8_sim_entity;\n"
|
||||
"\n"
|
||||
"void pxl8_world_init_local_player(pxl8_world* world, f32 x, f32 y, f32 z);\n"
|
||||
"pxl8_sim_entity* pxl8_world_local_player(pxl8_world* world);\n"
|
||||
"\n"
|
||||
"typedef struct { i32 cursor_x; i32 cursor_y; bool cursor_down; bool cursor_clicked; u32 hot_id; u32 active_id; } pxl8_gui_state;\n"
|
||||
"pxl8_gui_state* pxl8_gui_state_create(void);\n"
|
||||
|
|
@ -461,6 +474,8 @@ static const char* pxl8_ffi_cdefs =
|
|||
"void pxl8_gui_cursor_down(pxl8_gui_state* state);\n"
|
||||
"void pxl8_gui_cursor_up(pxl8_gui_state* state);\n"
|
||||
"bool pxl8_gui_button(pxl8_gui_state* state, pxl8_gfx* gfx, u32 id, i32 x, i32 y, i32 w, i32 h, const char* label);\n"
|
||||
"bool pxl8_gui_slider(pxl8_gui_state* state, pxl8_gfx* gfx, u32 id, i32 x, i32 y, i32 w, i32 h, float* value, float min_val, float max_val);\n"
|
||||
"bool pxl8_gui_slider_int(pxl8_gui_state* state, pxl8_gfx* gfx, u32 id, i32 x, i32 y, i32 w, i32 h, i32* value, i32 min_val, i32 max_val);\n"
|
||||
"void pxl8_gui_window(pxl8_gfx* gfx, i32 x, i32 y, i32 w, i32 h, const char* title);\n"
|
||||
"void pxl8_gui_label(pxl8_gfx* gfx, i32 x, i32 y, const char* text, u8 color);\n"
|
||||
"bool pxl8_gui_is_hovering(const pxl8_gui_state* state);\n"
|
||||
|
|
@ -524,7 +539,7 @@ static const char* pxl8_ffi_cdefs =
|
|||
"\n"
|
||||
"typedef struct pxl8_net pxl8_net;\n"
|
||||
"typedef struct pxl8_net_config { const char* address; u16 port; } pxl8_net_config;\n"
|
||||
"typedef enum pxl8_cmd_type { PXL8_CMD_NONE = 0, PXL8_CMD_SPAWN_ENTITY } pxl8_cmd_type;\n"
|
||||
"typedef enum pxl8_cmd_type { PXL8_CMD_NONE = 0, PXL8_CMD_SPAWN_ENTITY, PXL8_CMD_EXIT_CHUNK, PXL8_CMD_ENTER_CHUNK } pxl8_cmd_type;\n"
|
||||
"\n"
|
||||
"typedef struct pxl8_command_msg {\n"
|
||||
" u16 cmd_type;\n"
|
||||
|
|
@ -571,11 +586,17 @@ static const char* pxl8_ffi_cdefs =
|
|||
"f32 pxl8_net_lerp_alpha(const pxl8_net* net);\n"
|
||||
"bool pxl8_net_needs_correction(const pxl8_net* net);\n"
|
||||
"u64 pxl8_net_player_id(const pxl8_net* net);\n"
|
||||
"u8 pxl8_net_chunk_type(const pxl8_net* net);\n"
|
||||
"u32 pxl8_net_chunk_id(const pxl8_net* net);\n"
|
||||
"bool pxl8_net_poll(pxl8_net* net);\n"
|
||||
"u8* pxl8_net_predicted_state(pxl8_net* net);\n"
|
||||
"void pxl8_net_predicted_tick_set(pxl8_net* net, u64 tick);\n"
|
||||
"i32 pxl8_net_send_command(pxl8_net* net, const pxl8_command_msg* cmd);\n"
|
||||
"i32 pxl8_net_send_input(pxl8_net* net, const pxl8_input_msg* input);\n"
|
||||
"i32 pxl8_net_send_chunk_settings(pxl8_net* net, i32 render_distance, i32 sim_distance);\n"
|
||||
"i32 pxl8_net_spawn(pxl8_net* net, f32 x, f32 y, f32 z, f32 yaw, f32 pitch);\n"
|
||||
"i32 pxl8_net_exit_chunk(pxl8_net* net, f32 x, f32 y, f32 z);\n"
|
||||
"i32 pxl8_net_enter_chunk(pxl8_net* net, u32 chunk_id);\n"
|
||||
"const pxl8_snapshot_header* pxl8_net_snapshot(const pxl8_net* net);\n"
|
||||
"u64 pxl8_net_tick(const pxl8_net* net);\n"
|
||||
"void pxl8_net_update(pxl8_net* net, f32 dt);\n"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue