X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.c;h=acb0a2e7af66df6ada950ee5a0df795c011eaf7b;hb=e8a65239f85784e2e596d2622c2baddda9fb5fae;hp=957498ab846e48548116da849c1b380108f46548;hpb=be8ea6efdbfd9c0fdad97401ed7d92041d8c8778;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index 957498a..acb0a2e 100644 --- a/skaterift.c +++ b/skaterift.c @@ -11,6 +11,8 @@ * ============================================================================= */ +#if 1 + #define SR_NETWORKED #define VG_DEVWINDOW #include "common.h" @@ -22,22 +24,17 @@ #include "font.h" #include "player.h" +#include "entity.c" +#include "workshop.c" + VG_STATIC struct player_avatar localplayer_avatar; -VG_STATIC glmesh localplayer_meshes[3]; -vg_tex2d localplayer_texture = { .path = "textures/ch_gradient.qoi" }; +VG_STATIC struct player_model localplayer_models[3]; +VG_STATIC int skaterift_status = 0; #include "network.h" #include "menu.h" #include "vehicle.h" -#define DEV_AARON -#ifdef DEV_AARON -static rb_object aaron={ - .type=k_rb_shape_box, - .rb.bbx = {{ -2.0f, -1.0f, -1.0f }, { 2.0f, 1.0f, 1.0f }} -}; -#endif - int main( int argc, char *argv[] ) { vg_mem.use_libc_malloc = 0; @@ -76,62 +73,36 @@ vg_info(" ' ' '--' [] '----- '----- ' ' '---' " steam_init(); vg_loader_step( NULL, steam_end ); vg_loader_step( network_init, network_end ); - -#ifdef DEV_AARON - q_identity( aaron.rb.q ); - v3_zero( aaron.rb.w ); - v3_zero( aaron.rb.co ); - v3_zero( aaron.rb.v ); - rb_init_object( &aaron ); -#endif } VG_STATIC void load_playermodels(void) { - vg_linear_clear( vg_mem.scratch ); - - /* - * load in other player models. This may need to be more sophisticated in - * the futre if we have more of these guys - */ - mdl_context ctx_default, - ctx_outlaw, - ctx_jordan; - - mdl_open( &ctx_default, "models/ch_new.mdl", vg_mem.scratch ); - mdl_load_metadata_block( &ctx_default, vg_mem.scratch ); - mdl_load_mesh_block( &ctx_default, vg_mem.scratch ); - mdl_close( &ctx_default ); - - mdl_open( &ctx_outlaw, "models/ch_outlaw.mdl", vg_mem.scratch ); - mdl_load_metadata_block( &ctx_outlaw, vg_mem.scratch ); - mdl_load_mesh_block( &ctx_outlaw, vg_mem.scratch ); - mdl_close( &ctx_outlaw ); - - mdl_open( &ctx_jordan, "models/ch_jordan.mdl", vg_mem.scratch ); - mdl_load_metadata_block( &ctx_jordan, vg_mem.scratch ); - mdl_load_mesh_block( &ctx_jordan, vg_mem.scratch ); - mdl_close( &ctx_jordan ); + player_model_load( &localplayer_models[0], "models/ch_new.mdl" ); + player_model_load( &localplayer_models[1], "models/ch_outlaw.mdl" ); + player_model_load( &localplayer_models[2], "models/ch_jordan.mdl" ); - vg_acquire_thread_sync(); - { - mdl_unpack_glmesh( &ctx_default, &localplayer_meshes[0] ); - mdl_unpack_glmesh( &ctx_outlaw, &localplayer_meshes[1] ); - mdl_unpack_glmesh( &ctx_jordan, &localplayer_meshes[2] ); - } - vg_release_thread_sync(); + /* load default board */ +#if 0 + player_board_load( &localplayer_boards[0], + "models/boards/skaterift_fish.mdl" ); +#endif /* FIXME: hack */ shader_model_character_view_register(); - vg_acquire_thread_sync(); - { - vg_tex2d_init( (vg_tex2d *[]){ &localplayer_texture }, 1 ); - } - vg_release_thread_sync(); + shader_model_board_view_register(); + shader_model_entity_register(); } void temp_update_playermodel(void){ - player__use_mesh( &localplayer, &localplayer_meshes[cl_playermdl_id] ); + player__use_model( &localplayer, &localplayer_models[cl_playermdl_id] ); +} + +VG_STATIC void async_skaterift_complete( void *payload, u32 size ) +{ + skaterift_status = 1; + + localplayer.viewable_world = get_active_world(); + localplayer_cmd_respawn( 1, (const char *[]){ "start" } ); } VG_STATIC void vg_load(void) @@ -146,6 +117,8 @@ VG_STATIC void vg_load(void) vg_loader_step( player_init, NULL ); vg_loader_step( player_ragdoll_init, NULL ); + vg_loader_step( workshop_init, NULL ); + vg_loader_step( skateshop_init, NULL ); /* ----------------- */ vg_loader_step( load_playermodels, NULL ); @@ -154,8 +127,8 @@ VG_STATIC void vg_load(void) player__create( &localplayer ); player_avatar_load( &localplayer_avatar, "models/ch_new.mdl" ); player__use_avatar( &localplayer, &localplayer_avatar ); - player__use_mesh( &localplayer, &localplayer_meshes[cl_playermdl_id] ); - player__use_texture( &localplayer, &localplayer_texture ); + player__use_model( &localplayer, &localplayer_models[cl_playermdl_id] ); + //localplayer.board = &localplayer_boards[0]; player__bind( &localplayer ); /* --------------------- */ @@ -164,10 +137,13 @@ VG_STATIC void vg_load(void) vg_loader_step( audio_init, audio_free ); /* 'systems' are completely loaded now */ - /* load home world */ - //world_load( &world_global.worlds[0], "maps/mp_gridmap.mdl" ); - world_load( &world_global.worlds[0], "maps/mp_mtzero.mdl" ); + +#if 1 + world_load( 0, "maps/mp_spawn.mdl" ); +#else + world_load( 0, "maps/mp_mtzero.mdl" ); +#endif #if 0 world_load( &world_global.worlds[1], "maps/mp_gridmap.mdl" ); @@ -177,12 +153,8 @@ VG_STATIC void vg_load(void) #endif vg_console_load_autos(); -} -VG_STATIC void vg_start(void) -{ - localplayer.viewable_world = get_active_world(); - localplayer_cmd_respawn( 1, (const char *[]){ "start" } ); + vg_async_call( async_skaterift_complete, NULL, 0 ); } VG_STATIC void draw_origin_axis(void) @@ -196,53 +168,34 @@ VG_STATIC void vg_update(void) { steam_update(); - if( vg.is_loaded ){ + skaterift_preupdate_inputs(); + + if( skaterift_status == 1 ){ draw_origin_axis(); network_update(); player__pre_update( &localplayer ); + global_skateshop_preupdate(); world_update( get_active_world(), localplayer.rb.co ); audio_ambient_sprites_update( get_active_world(), localplayer.rb.co ); + //gui_helper_action( localplayer.input_use, "\x7f Hello \x1f""A \x1e\x84" ); } } VG_STATIC void vg_update_fixed(void) { - if( vg.is_loaded ){ + if( skaterift_status == 1 ){ world_routes_fixedupdate( get_active_world() ); player__update( &localplayer ); vehicle_update_fixed(); - -#ifdef DEV_AARON - world_instance *world = get_active_world(); - rb_solver_reset(); - rb_ct *buf = rb_global_buffer(); - - int l = rb_box__scene( aaron.rb.to_world, aaron.rb.bbx, - NULL, &world->rb_geo.inf.scene, buf ); - for( int j=0; jrb_geo.rb; - } - rb_contact_count += l; - rb_presolve_contacts( rb_contact_buffer, rb_contact_count ); - - for( int j=0; j<8; j++ ){ - rb_solve_contacts( rb_contact_buffer, rb_contact_count ); - } - - rb_iter( &aaron.rb ); - rb_update_transform( &aaron.rb ); -#endif - } } VG_STATIC void vg_update_post(void) { - if( vg.is_loaded ){ + if( skaterift_status == 1 ){ player__post_update( &localplayer ); float dist; @@ -267,21 +220,8 @@ VG_STATIC void vg_update_post(void) audio_unlock(); menu_update(); + vg.time_rate = 1.0f-menu.factive; vehicle_update_post(); - -#ifdef DEV_AARON - SDL_Scancode sc = SDL_GetScancodeFromKey( SDLK_q ); - if( vg_input.sdl_keys[sc] ){ - m4x3_mulv( main_camera.transform, (v3f){0.0f,0.0f,-3.0f}, - aaron.rb.co ); - - v3_zero( aaron.rb.v ); - v3_zero( aaron.rb.w ); - rb_update_transform( &aaron.rb ); - } - - rb_object_debug( &aaron, VG__PINK ); -#endif } } @@ -307,11 +247,12 @@ VG_STATIC void present_view_with_post_processing(void) shader_blitblur_use(); shader_blitblur_uTexMain( 0 ); shader_blitblur_uTexMotion( 1 ); - shader_blitblur_uBlurStrength(cl_blur_strength / (vg.frame_delta*60.0f)); + shader_blitblur_uBlurStrength( cl_blur_strength / + (vg.time_frame_delta*60.0) ); shader_blitblur_uInverseRatio( inverse ); v2f menu_blurring; - v2_muls( (v2f){ 0.04f, 0.001f }, menu_opacity, menu_blurring ); + v2_muls( (v2f){ 0.04f, 0.001f }, menu.factive, menu_blurring ); shader_blitblur_uOverrideDir( menu_blurring ); render_fb_bind_texture( gpipeline.fb_main, 0, 0 ); @@ -385,34 +326,11 @@ VG_STATIC void render_scene_gate_subview(void) VG_STATIC void render_main_game(void) { -#if 0 - static float fov = 60.0f; - float fov_target = vg_lerpf( 90.0f, 110.0f, cl_fov ); - - if( player.controller == k_player_controller_skate ) - fov_target = vg_lerpf( 97.0f, 135.0f, cl_fov ); - - if( cl_menu ) - fov_target = menu_fov_target; - fov = vg_lerpf( fov, fov_target, vg.frame_delta * 2.0f ); - fov = freecam? 60.0f: fov; - - main_camera.fov = fov; -#endif - player__pre_render( &localplayer ); + main_camera.fov = localplayer.cam.fov; + v3_copy( localplayer.cam.pos, main_camera.pos ); + v3_copy( localplayer.cam.angles, main_camera.angles ); - v3_lerp( localplayer.cam.pos, menu_camera_pos, menu_opacity, - main_camera.pos ); - main_camera.angles[0] = - vg_alerpf( localplayer.cam.angles[0], menu_camera_angles[0], - menu_opacity ); - main_camera.angles[1] = - vg_lerpf ( localplayer.cam.angles[1], menu_camera_angles[1], - menu_opacity ); - - main_camera.fov = vg_lerpf( localplayer.cam.fov, menu_smooth_fov, - menu_opacity ); main_camera.nearz = 0.1f; main_camera.farz = 2100.0f; @@ -435,29 +353,32 @@ VG_STATIC void render_main_game(void) render_scene(); - if( cl_menu ) { - //glClear( GL_DEPTH_BUFFER_BIT ); - menu_render_bg(); - glEnable( GL_DEPTH_TEST ); - } + glEnable( GL_DEPTH_TEST ); render_player_transparent(); render_scene_gate_subview(); present_view_with_post_processing(); - if( cl_menu ) - menu_render_fg( &main_camera ); - + if( menu.active ){ + glClear( GL_DEPTH_BUFFER_BIT ); + menu_render(); + } /* =========== End Frame =========== */ } VG_STATIC void vg_render(void) { + if( skaterift_status == 0 ){ + _vg_loader_render(); + return; + } + glBindFramebuffer( GL_FRAMEBUFFER, 0 ); glViewport( 0,0, vg.window_x, vg.window_y ); glDisable( GL_DEPTH_TEST ); + glDisable( GL_BLEND ); glClearColor( 1.0f, 0.0f, 0.0f, 0.0f ); glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ); @@ -471,15 +392,26 @@ VG_STATIC void vg_render(void) glDisable(GL_DEPTH_TEST); vg_lines_drawall(); glViewport( 0,0, vg.window_x, vg.window_y ); + gui_draw(); } -VG_STATIC void vg_ui(void) +VG_STATIC void vg_gui(void) { + if( skaterift_status == 0 ){ + return; + } + #if 0 player__im_gui( &localplayer ); #endif world_instance *world = get_active_world(); - menu_crap_ui(); - + + workshop_form_gui(); render_view_framebuffer_ui(); } + +#else + +#include "skaterift_imgui_dev.c" + +#endif