X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.c;h=f4fc3c1ad7fac68f96b8b79bf00a3a4441b60127;hb=8f98fa2ae18576b006d7a2bd2d5dc216333ebf63;hp=dd040152a60962e00f1561201b2f8503338d4687;hpb=fd9119a30ccb8def877a4187348dd071b08227c0;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index dd04015..f4fc3c1 100644 --- a/skaterift.c +++ b/skaterift.c @@ -45,6 +45,7 @@ #include "ent_miniworld.h" #include "ent_skateshop.h" #include "ent_npc.h" +#include "ent_camera.h" #include "world_map.h" #include "gui.h" #include "workshop.h" @@ -309,9 +310,19 @@ void vg_pre_update(void) /* time rate */ f32 target = 1; - if( skaterift.activity & (k_skaterift_replay|k_skaterift_menu) ) - { + if( skaterift.activity & k_skaterift_replay ) target = 0; + + v3f listen_co; + v3_copy( localplayer.rb.co, listen_co ); + + if( skaterift.activity & k_skaterift_menu ) + { + if( menu.bg_cam ) + { + v3_copy( menu.bg_cam->transform.co, listen_co ); + } + else target = 0; } vg_slewf( &skaterift.time_rate, target, vg.time_frame_delta * (1.0f/0.3f) ); @@ -331,7 +342,7 @@ void vg_pre_update(void) skateshop_world_preupdate( world_current_instance() ); world_update( world_current_instance(), localplayer.rb.co ); - audio_ambient_sprites_update( world_current_instance(), localplayer.rb.co ); + audio_ambient_sprites_update( world_current_instance(), listen_co ); world_map_pre_update(); } @@ -424,7 +435,7 @@ static void present_view_with_post_processing(void){ shader_blitblur_uGlitchStrength( glitch_strength ); v2f override; - if( (skaterift.activity == k_skaterift_menu) && !menu_viewing_map() ) + if( (skaterift.activity == k_skaterift_menu) && menu.bg_blur ) v2_muls( (v2f){ 0.04f, 0.001f }, 1.0f-skaterift.time_rate, override ); else v2_zero( override ); @@ -443,7 +454,15 @@ static void present_view_with_post_processing(void){ render_fsquad(); } -static void render_player_transparent(void){ +static void render_player_transparent(void) +{ + if( (skaterift.activity == k_skaterift_menu) && + (menu.page == k_menu_page_main) && + (menu.main_index == k_menu_main_guide) ) + { + return; + } + static vg_camera small_cam; /* DOES NOT NEED TO BE STATIC BUT MINGW SAIS OTHERWISE */ @@ -461,7 +480,15 @@ static void render_player_transparent(void){ player__render( &small_cam ); } -static world_instance *get_view_world(void){ +static world_instance *get_view_world(void) +{ + if( (skaterift.activity & k_skaterift_menu) && + (menu.page == k_menu_page_main) && + (menu.main_index == k_menu_main_guide) ) + { + return &world_static.instances[0]; + } + world_instance *view_world = world_current_instance(); if( localplayer.gate_waiting && (localplayer.gate_waiting->flags & k_ent_gate_nonlocal) ){ @@ -589,6 +616,11 @@ static void skaterift_composite_maincamera(void) skaterift.cam.nearz = 0.1f; skaterift.cam.farz = 2100.0f; + if( (skaterift.activity == k_skaterift_menu) && menu.bg_cam ) + { + ent_camera_unpack( menu.bg_cam, &skaterift.cam ); + } + if( menu_viewing_map() ) { vg_camera_copy( &world_map.cam, &skaterift.cam ); @@ -613,8 +645,10 @@ static void skaterift_composite_maincamera(void) vg_camera_finalize( &skaterift.cam ); } -static void render_main_game(void){ - if( skaterift.activity == k_skaterift_replay ){ +static void render_main_game(void) +{ + if( skaterift.activity == k_skaterift_replay ) + { player__animate_from_replay( &player_replay.local ); } else{ @@ -629,13 +663,13 @@ static void render_main_game(void){ skaterift_composite_maincamera(); /* --------------------------------------------------------------------- */ - if( menu_viewing_map() ) + if( !menu_viewing_map() ) { world_instance *world = world_current_instance(); render_world_cubemaps( world ); ent_gate *nlg = world->rendering_gate; - if( nlg && nlg->flags & k_ent_gate_nonlocal ) + if( nlg && (nlg->flags & k_ent_gate_nonlocal) ) render_world_cubemaps( &world_static.instances[nlg->target] ); } @@ -704,21 +738,22 @@ void vg_render(void) gui_render_icons(); } -void vg_gui(void) +void vg_gui( ui_context *ctx ) { if( skaterift.op == k_async_op_clientloading ) return; - gui_draw(); + gui_draw( ctx ); - if( k_tools_mode ){ + if( k_tools_mode ) + { ui_rect null; ui_rect screen = { 0, 0, vg.window_x, vg.window_y }; ui_rect panel = { 0, 0, 1000, 700 }; ui_rect_center( screen, panel ); - vg_ui.wants_mouse = 1; + ui_capture_mouse( ctx, 1 ); - ui_fill( panel, ui_colour( k_ui_bg+1 ) ); - ui_outline( panel, 1, ui_colour( k_ui_bg+7 ), 0 ); + ui_fill( ctx, panel, ui_colour( ctx, k_ui_bg+1 ) ); + ui_outline( ctx, panel, 1, ui_colour( ctx, k_ui_bg+7 ), 0 ); ui_rect_pad( panel, (ui_px[2]){ 8, 8 } ); @@ -726,30 +761,32 @@ void vg_gui(void) } if( k_light_editor ) - imgui_world_light_edit( world_current_instance() ); - + imgui_world_light_edit( ctx, world_current_instance() ); + vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id; render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio ); - menu_gui(); - player__im_gui(); + menu_gui( ctx ); + player__im_gui( ctx ); world_instance *world = world_current_instance(); - world_routes_imgui( world ); - skaterift_replay_imgui(); - workshop_form_gui(); - render_view_framebuffer_ui(); - remote_player_network_imgui( vg.pv ); + world_routes_imgui( ctx, world ); + skaterift_replay_imgui( ctx ); + workshop_form_gui( ctx ); + render_view_framebuffer_ui( ctx ); + remote_player_network_imgui( ctx, vg.pv ); if( menu_viewing_map() ) { - remote_players_imgui_world( world_current_instance(), vg.pv, 2000.0f, 0 ); - remote_players_imgui_lobby(); + remote_players_imgui_world( ctx, world_current_instance(), + vg.pv, 2000.0f, 0 ); + remote_players_imgui_lobby( ctx ); } else { - remote_players_chat_imgui(); /* TODO: conditional */ - remote_players_imgui_world( world_current_instance(), vg.pv, 100.0f, 1 ); + remote_players_chat_imgui( ctx ); /* TODO: conditional */ + remote_players_imgui_world( ctx, world_current_instance(), + vg.pv, 100.0f, 1 ); } } @@ -808,3 +845,4 @@ void vg_gui(void) #include "ent_npc.c" #include "model.c" #include "control_overlay.c" +#include "ent_camera.c"