X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=skaterift.c;h=c3dec8c87d9a749cbb6a0b68173794abb8fd9694;hb=8c376ed2e4021a18b0a6c6e800109d67ad09d198;hp=df5c1479f8fd01ea8729570474f71d2c7834567b;hpb=f99902f513b0ad606437bf32de47405dd4ea5f98;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index df5c147..c3dec8c 100644 --- a/skaterift.c +++ b/skaterift.c @@ -12,7 +12,7 @@ */ #define SR_NETWORKED -#define VG_DEVWINDOW +//#define VG_DEVWINDOW #include "common.h" #include "conf.h" #include "steam.h" @@ -22,16 +22,10 @@ #include "font.h" #include "player.h" -static player_instance localplayer; VG_STATIC struct player_avatar localplayer_avatar; VG_STATIC glmesh localplayer_meshes[3]; vg_tex2d localplayer_texture = { .path = "textures/ch_gradient.qoi" }; -player_instance *tmp_localplayer(void) -{ - return &localplayer; -} - #include "network.h" #include "menu.h" #include "vehicle.h" @@ -59,71 +53,14 @@ VG_STATIC void highscores_save_at_exit(void) VG_STATIC void vg_launch_opt(void) { - -} - -VG_STATIC int __kill( int argc, const char *argv[] ) -{ -#if 0 - player_use_device( &localplayer, &player_device_dead, &localplayer_dead ); -#endif - return 0; -} - -VG_STATIC int __respawn( int argc, const char *argv[] ) -{ - ent_spawn *rp = NULL, *r; - world_instance *world = get_active_world(); - - if( argc == 1 ){ - for( u32 i=0; ient_spawn); i++ ){ - r = mdl_arritm( &world->ent_spawn, i ); - if( !strcmp( mdl_pstr(&world->meta, r->pstr_name),argv[0] ) ){ - rp = r; - break; - } - } - - if( !rp ) - vg_warn( "No spawn named '%s'\n", argv[0] ); - } - - if( !rp ){ - float min_dist = INFINITY; - - for( u32 i=0; ient_spawn); i++ ){ - r = mdl_arritm( &world->ent_spawn, i ); - float d = v3_dist2( r->transform.co, localplayer.rb.co ); - - if( d < min_dist ){ - min_dist = d; - rp = r; - } - } - } - - if( !rp ){ - vg_error( "No spawn found\n" ); - - if( !mdl_arrcount(&world->ent_spawn) ) - return 0; - - rp = mdl_arritm( &world->ent_spawn, 0 ); - } - - player__spawn( &localplayer, rp ); - return 1; } VG_STATIC void vg_preload(void) { g_conf_init(); - vg_console_reg_cmd( "respawn", __respawn, NULL ); - vg_console_reg_cmd( "ded", __kill, NULL ); - vg_info(" Copyright . . . -----, ,----- ,---. .---. \n" ); -vg_info(" 2021-2022 |\\ /| | / | | | | /| \n" ); +vg_info(" 2021-2023 |\\ /| | / | | | | /| \n" ); vg_info(" | \\ / | +-- / +----- +---' | / | \n" ); vg_info(" | \\ / | | / | | \\ | / | \n" ); vg_info(" | \\/ | | / | | \\ | / | \n" ); @@ -229,8 +166,11 @@ VG_STATIC void vg_load(void) /* '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 0 + world_load( 0, "maps/mp_spawn.mdl" ); +#endif + + world_load( 0, "maps/mp_mtzero.mdl" ); #if 0 world_load( &world_global.worlds[1], "maps/mp_gridmap.mdl" ); @@ -244,7 +184,8 @@ VG_STATIC void vg_load(void) VG_STATIC void vg_start(void) { - __respawn( 1, (const char *[]){ "start" } ); + localplayer.viewable_world = get_active_world(); + localplayer_cmd_respawn( 1, (const char *[]){ "start" } ); } VG_STATIC void draw_origin_axis(void) @@ -306,82 +247,19 @@ VG_STATIC void vg_update_post(void) { if( vg.is_loaded ){ player__post_update( &localplayer ); - - float inr3 = 0.57735027, - inr2 = 0.70710678118; - - v3f sample_directions[] = { - { -1.0f, 0.0f, 0.0f }, - { 1.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 1.0f }, - { 0.0f, 0.0f, -1.0f }, - { 0.0f, 1.0f, 0.0f }, - { 0.0f, -1.0f, 0.0f }, - { -inr3, inr3, inr3 }, - { inr3, inr3, inr3 }, - { -inr3, inr3, -inr3 }, - { inr3, inr3, -inr3 }, - { -inr2, 0.0f, inr2 }, - { inr2, 0.0f, inr2 }, - { -inr2, 0.0f, -inr2 }, - { inr2, 0.0f, -inr2 }, - }; - - static int si = 0; - static float distances[16]; - - ray_hit ray; - ray.dist = 5.0f; - - v3f rc, rd, ro; - v3_copy( sample_directions[ si ], rd ); - v3_add( localplayer.rb.co, (v3f){0.0f,1.5f,0.0f}, ro ); - v3_copy( ro, rc ); - - float dist = 200.0f; - - for( int i=0; i<10; i++ ){ - if( ray_world( get_active_world(), rc, rd, &ray ) ){ - dist = (float)i*5.0f + ray.dist; - break; - } - else{ - v3_muladds( rc, rd, ray.dist, rc ); - } - } - - distances[si] = dist; - - for( int i=0; i<14; i++ ){ - if( distances[i] != 200.0f ){ - u32 colours[] = { VG__RED, VG__BLUE, VG__GREEN, - VG__CYAN, VG__YELOW, VG__PINK, - VG__WHITE }; + float dist; + int sample_index; + world_audio_sample_distances( localplayer.rb.co, &sample_index, &dist ); - u32 colour = colours[i%7]; - - v3f p1; - v3_muladds( ro, sample_directions[i], distances[i], p1 ); - vg_line( ro, p1, colour ); - vg_line_pt3( p1, 0.1f, colour ); - } - } - - si ++; - if( si >= 14 ) - si = 0; - - /* FIXME: TEMP */ audio_lock(); - vg_dsp.echo_distances[si] = dist; + vg_dsp.echo_distances[sample_index] = dist; v3f ears = { 1.0f,0.0f,0.0f }; m3x3_mulv( main_camera.transform, ears, ears ); v3_copy( ears, vg_audio.external_listener_ears ); v3_copy( main_camera.transform[3], vg_audio.external_listener_pos ); - /* TODO: this is transformed back and fourth twice. */ if( localplayer.gate_waiting ){ m4x3_mulv( localplayer.gate_waiting->transport, vg_audio.external_listener_pos, @@ -432,7 +310,8 @@ 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; @@ -496,13 +375,16 @@ VG_STATIC void render_scene(void) render_water_texture( view_world, &main_camera, 0 ); render_fb_bind( gpipeline.fb_main, 1 ); render_water_surface( view_world, &main_camera ); +} + +VG_STATIC void render_scene_gate_subview(void) +{ + render_fb_bind( gpipeline.fb_main, 1 ); + world_instance *view_world = localplayer.viewable_world; int depth = 1; if( localplayer.gate_waiting ) depth = 0; render_world_gates( view_world, &main_camera, depth ); - - if( !cl_menu ) - render_player_transparent(); } VG_STATIC void render_main_game(void) @@ -558,12 +440,14 @@ VG_STATIC void render_main_game(void) render_scene(); if( cl_menu ) { - glClear( GL_DEPTH_BUFFER_BIT ); + //glClear( GL_DEPTH_BUFFER_BIT ); menu_render_bg(); glEnable( GL_DEPTH_TEST ); - render_player_transparent(); } + render_player_transparent(); + render_scene_gate_subview(); + present_view_with_post_processing(); if( cl_menu )