#pragma once #include "pxl8_entity.h" #include "pxl8_gfx.h" #include "pxl8_math.h" #include "pxl8_net.h" #include "pxl8_sim.h" #include "pxl8_types.h" #include "pxl8_world_chunk.h" #include "pxl8_world_chunk_cache.h" #ifdef __cplusplus extern "C" { #endif typedef struct pxl8_world pxl8_world; pxl8_world* pxl8_world_create(void); void pxl8_world_destroy(pxl8_world* world); pxl8_world_chunk_cache* pxl8_world_get_chunk_cache(pxl8_world* world); pxl8_world_chunk* pxl8_world_active_chunk(pxl8_world* world); void pxl8_world_set_active_chunk(pxl8_world* world, pxl8_world_chunk* chunk); pxl8_entity_pool* pxl8_world_entities(pxl8_world* world); pxl8_entity pxl8_world_spawn(pxl8_world* world); bool pxl8_world_point_solid(const pxl8_world* world, f32 x, f32 y, f32 z); pxl8_ray pxl8_world_ray(const pxl8_world* world, pxl8_vec3 from, pxl8_vec3 to); pxl8_ray pxl8_world_sweep(const pxl8_world* world, pxl8_vec3 from, pxl8_vec3 to, f32 radius); void pxl8_world_update(pxl8_world* world, f32 dt); void pxl8_world_render(pxl8_world* world, pxl8_gfx* gfx, pxl8_vec3 camera_pos); void pxl8_world_sync(pxl8_world* world, pxl8_net* net); void pxl8_world_set_bsp_material(pxl8_world* world, u16 material_id, const pxl8_gfx_material* material); void pxl8_world_set_sim_config(pxl8_world* world, const pxl8_sim_config* config); void pxl8_world_init_local_player(pxl8_world* world, f32 x, f32 y, f32 z); void pxl8_world_set_look(pxl8_world* world, f32 yaw, f32 pitch); pxl8_sim_entity* pxl8_world_local_player(pxl8_world* world); pxl8_sim_world pxl8_world_sim_world(const pxl8_world* world, pxl8_vec3 pos); void pxl8_world_predict(pxl8_world* world, pxl8_net* net, const pxl8_input_msg* input, f32 dt); void pxl8_world_reconcile(pxl8_world* world, pxl8_net* net, f32 dt); #ifdef PXL8_ASYNC_THREADS void pxl8_world_start_sim_thread(pxl8_world* world, pxl8_net* net); void pxl8_world_stop_sim_thread(pxl8_world* world); void pxl8_world_pause_sim(pxl8_world* world, bool paused); void pxl8_world_push_input(pxl8_world* world, const pxl8_input_msg* input); const pxl8_sim_entity* pxl8_world_get_render_state(const pxl8_world* world); f32 pxl8_world_get_interp_alpha(const pxl8_world* world); #endif #ifdef __cplusplus } #endif