From cb1d2f9fbec8a274aaf7a80c5fb552b928148b1e Mon Sep 17 00:00:00 2001 From: hgn Date: Sun, 11 Jun 2023 17:53:26 +0100 Subject: [PATCH] upgrade to vg_msgv2 --- addon.c | 18 ++++---- boards_src/skaterift_fract/addon.inf | Bin 73 -> 73 bytes boards_src/skaterift_licco/addon.inf | Bin 71 -> 71 bytes boards_src/skaterift_long/addon.inf | Bin 75 -> 75 bytes boards_src/skaterift_shark/addon.inf | Bin 71 -> 71 bytes boards_src/skaterift_spiral/addon.inf | Bin 71 -> 71 bytes boards_src/skaterift_striped/addon.inf | Bin 73 -> 73 bytes build.c | 58 ++++++++++--------------- common.h | 6 --- conf.h | 26 ++--------- ent_skateshop.c | 39 ++++++++++------- player.c | 5 +++ player.h | 4 ++ player_common.c | 14 +++--- render.h | 28 +++++++----- save.h | 6 +++ skaterift.c | 46 ++++++++++++-------- skaterift.h | 8 ++++ workshop.c | 43 +++++++++--------- world.h | 4 +- 20 files changed, 158 insertions(+), 147 deletions(-) create mode 100644 save.h diff --git a/addon.c b/addon.c index 504904f..fde9f9d 100644 --- a/addon.c +++ b/addon.c @@ -157,14 +157,14 @@ VG_STATIC addon_reg *addon_mount_workshop_folder( PublishedFileId_t workshop_id, } enum workshop_file_type type = k_workshop_file_type_none; - vg_msg root; - vg_msg_init( &root, reg->metadata, reg->metadata_len ); + vg_msg root = {0}; + root.buf = reg->metadata; + root.len = reg->metadata_len; + root.max = sizeof(reg->metadata); + vg_msg workshop = root; if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){ - vg_msg_cmd kv_type = vg_msg_seekkv( &workshop, "type", k_vg_msg_first ); - if( kv_type.code & k_vg_msg_code_integer ){ - type = kv_type.value._u32; - } + type = vg_msg_seekkvu32( &workshop, "type", k_vg_msg_first ); } if( type == k_workshop_file_type_none ){ @@ -209,8 +209,10 @@ VG_STATIC addon_reg *addon_mount_local_addon( const char *folder, if( reg->metadata_len == 0 ){ /* create our own content commands */ - vg_msg msg; - vg_msg_init( &msg, reg->metadata, sizeof(reg->metadata) ); + vg_msg msg = {0}; + msg.buf = reg->metadata; + msg.len = 0; + msg.max = sizeof(reg->metadata); u32 content_count = 0; diff --git a/boards_src/skaterift_fract/addon.inf b/boards_src/skaterift_fract/addon.inf index 745e9720f2e57c374968035cde7ad284f5f79a68..3c85c6491f9e6cddb621508075285c7f0d2082a0 100644 GIT binary patch delta 9 QcmebDoS@CvG*L$u01gQPs{jB1 delta 9 QcmebDoS@CFpPFpPvj6}9 delta 9 QcmebFo}kOFpPFpPFpPFpPreg_ptr = get_addon_from_index( k_workshop_file_type_board, - cache_ptr->reg_index ); + addon_reg *reg = get_addon_from_index( k_workshop_file_type_board, + cache_ptr->reg_index ); + cache_ptr->reg_ptr = reg; vg_str folder; vg_strnull( &folder, path_buf, 4096 ); - if( !addon_get_content_folder( cache_ptr->reg_ptr, &folder ) ) + if( !addon_get_content_folder( reg, &folder ) ) goto file_is_broken; @@ -159,9 +160,11 @@ VG_STATIC void workshop_visibile_load_loop(void) vg_str content_path = folder; - vg_msg root; - vg_msg_init( &root, cache_ptr->reg_ptr->metadata, - cache_ptr->reg_ptr->metadata_len ); + + vg_msg root = {0}; + root.buf = reg->metadata; + root.len = reg->metadata_len; + root.max = sizeof(reg->metadata); const char *kv_content = vg_msg_seekkvstr( &root, "content", 0 ); if( kv_content ){ @@ -459,21 +462,21 @@ VG_STATIC void global_skateshop_preupdate(void) gui_helper_action( button_display_string( k_srbind_maccept ), "pick" ); if( button_down( k_srbind_mleft ) ){ - if( cl_playermdl_id > 0 ){ - cl_playermdl_id --; + if( k_playermdl_id > 0 ){ + k_playermdl_id --; } else{ - cl_playermdl_id = 2; /* HACK */ + k_playermdl_id = 2; /* HACK */ } temp_update_playermodel(); /* HACK */ } if( button_down( k_srbind_mright ) ){ - if( cl_playermdl_id+1 < 3 ){ - cl_playermdl_id ++; + if( k_playermdl_id+1 < 3 ){ + k_playermdl_id ++; } else{ - cl_playermdl_id = 0; /* HACK */ + k_playermdl_id = 0; /* HACK */ } temp_update_playermodel(); /* HACK */ /*lol*/ @@ -686,8 +689,10 @@ fade_out:; global_skateshop.render.item_title = ""; global_skateshop.render.item_desc = ""; addon_reg *reg = cache_ptr->reg_ptr; - vg_msg root; - vg_msg_init( &root, reg->metadata, reg->metadata_len ); + vg_msg root = {0}; + root.buf = reg->metadata; + root.len = reg->metadata_len; + root.max = sizeof(reg->metadata); vg_msg workshop = root; if( vg_msg_seekframe( &workshop, "workshop", 0 ) ){ @@ -749,8 +754,10 @@ VG_STATIC void skateshop_render_worldshop(void) addon_reg *reg = get_addon_from_index( k_workshop_file_type_world, global_skateshop.selected_world_id ); - vg_msg root; - vg_msg_init( &root, reg->metadata, reg->metadata_len ); + vg_msg root = {0}; + root.buf = reg->metadata; + root.len = reg->metadata_len; + root.max = sizeof(reg->metadata); vg_msg workshop = root; if( vg_msg_seekframe( &workshop, "workshop", 0 ) ){ global_skateshop.render.world_title = vg_msg_seekkvstr( &workshop, diff --git a/player.c b/player.c index e000c51..12d30e9 100644 --- a/player.c +++ b/player.c @@ -40,6 +40,11 @@ VG_STATIC void player_init(void) VG_VAR_F32( k_cam_punch ); VG_VAR_F32( k_cam_shake_strength ); VG_VAR_F32( k_cam_shake_trackspeed ); + + vg_console_reg_var( "cinema", &k_cinema, k_var_dtype_f32, 0 ); + vg_console_reg_var( "cinema_fixed", &k_cinema_fixed, k_var_dtype_i32, 0 ); + vg_console_reg_var( "invert_y", &k_invert_y, + k_var_dtype_i32, VG_VAR_PERSISTENT ); } PLAYER_API diff --git a/player.h b/player.h index 3039bd7..1881705 100644 --- a/player.h +++ b/player.h @@ -13,6 +13,10 @@ #define PLAYER_REWIND_FRAMES 60*4 #define RESET_MAX_TIME 45.0 +static i32 k_cinema_fixed = 0; +static f32 k_cinema = 0.0f; +static i32 k_invert_y = 0; + struct player_instance { /* transform definition */ diff --git a/player_common.c b/player_common.c index b551875..169cbf4 100644 --- a/player_common.c +++ b/player_common.c @@ -119,8 +119,8 @@ VG_STATIC void player__cam_iterate( player_instance *player ) vg.time_frame_delta * 8.0f, player->tpv_offset_smooth ); /* fov -- simple blend */ - float fov_skate = vg_lerpf( 97.0f, 135.0f, cl_fov ), - fov_walk = vg_lerpf( 90.0f, 110.0f, cl_fov ); + float fov_skate = vg_lerpf( 97.0f, 135.0f, k_fov ), + fov_walk = vg_lerpf( 90.0f, 110.0f, k_fov ); player->cam.fov = vg_lerpf( fov_walk, fov_skate, player->camera_type_blend ); @@ -241,9 +241,9 @@ VG_STATIC void player__cam_iterate( player_instance *player ) player->cam_override_strength ); - if( cl_cinema >= 0.0001f ){ + if( k_cinema >= 0.0001f ){ ent_camera *cam = NULL; - f32 min_dist = cl_cinema; + f32 min_dist = k_cinema; world_instance *world = player->viewable_world; for( u32 i=0; ient_camera); i++ ){ @@ -261,7 +261,7 @@ VG_STATIC void player__cam_iterate( player_instance *player ) player->cam.fov = cam->fov; v3_copy( cam->transform.co, player->cam.pos ); v3f v0; - if( cl_cinema_fixed ) + if( k_cinema_fixed ) mdl_transform_vector( &cam->transform, (v3f){0.0f,-1.0f,0.0f}, v0 ); else v3_sub( player->rb.co, cam->transform.co, v0 ); m3x3_mulv( player->invbasis, v0, v0 ); @@ -283,7 +283,7 @@ VG_STATIC void player_look( player_instance *player, v3f angles ) v2f mouse_input; v2_copy( vg.mouse_delta, mouse_input ); - if( cl_invert_y ) mouse_input[1] *= -1.0f; + if( k_invert_y ) mouse_input[1] *= -1.0f; v2_muladds( angles, mouse_input, 0.0025f * sensitivity, angles ); v2f jlook; @@ -291,7 +291,7 @@ VG_STATIC void player_look( player_instance *player, v3f angles ) angles[0] += jlook[0] * vg.time_delta * 4.0f * sensitivity; float input_y = jlook[1] * vg.time_delta * 4.0f; - if( cl_invert_y ) input_y *= -1.0f; + if( k_invert_y ) input_y *= -1.0f; angles[1] += input_y * sensitivity; angles[1] = vg_clampf( angles[1], -VG_PIf*0.5f, VG_PIf*0.5f ); diff --git a/render.h b/render.h index 6b956de..751ca1b 100644 --- a/render.h +++ b/render.h @@ -16,6 +16,11 @@ #ifndef RENDER_H #define RENDER_H +static f32 k_render_scale = 1.0f; +static i32 k_blur_effect = 1; +static f32 k_blur_strength = 0.3f; +static f32 k_fov = 0.86f; + typedef struct framebuffer framebuffer; /* @@ -29,11 +34,8 @@ VG_STATIC struct pipeline{ *fb_water_beneath, *fb_workshop_preview; int ready; - - float view_render_scale, - water_render_scale; } -gpipeline = { .view_render_scale = 1.0f }; +gpipeline; struct framebuffer{ const char *display_name; @@ -231,8 +233,8 @@ VG_STATIC void render_fb_bind( framebuffer *fb, int use_scaling ) render_fb_get_current_res( fb, &x, &y ); if( use_scaling ){ - x = gpipeline.view_render_scale*(float)x; - y = gpipeline.view_render_scale*(float)y; + x = k_render_scale*(float)x; + y = k_render_scale*(float)y; x = VG_MAX( 16, x ); y = VG_MAX( 16, y ); @@ -501,8 +503,7 @@ VG_STATIC void render_fb_allocate( struct framebuffer *fb ) */ VG_STATIC void render_fb_resize(void) { - if( !gpipeline.ready ) - return; + if( !gpipeline.ready ) return; for( int i=0; imetadata, sizeof(spawn->metadata) ); - vg_msg_frame( &msg, "workshop" ); - vg_msg_wkvstr( &msg, "title", "Understate DIY" ); - vg_msg_end_frame( &msg ); - vg_msg_wkvstr( &msg, "location", "USA" ); - spawn->metadata_len = msg.cur; + { + vg_msg msg = {0}; + msg.buf = spawn->metadata; + msg.max = sizeof(spawn->metadata); + vg_msg_frame( &msg, "workshop" ); + vg_msg_wkvstr( &msg, "title", "Understate DIY" ); + vg_msg_end_frame( &msg ); + vg_msg_wkvstr( &msg, "location", "USA" ); + spawn->metadata_len = msg.cur; + } /* mtzero island */ addon_reg *mtzero = addon_mount_local_addon( "maps/mp_mtzero", k_workshop_file_type_world, ".mdl" ); - vg_msg_init( &msg, mtzero->metadata, sizeof(mtzero->metadata) ); - vg_msg_frame( &msg, "workshop" ); - vg_msg_wkvstr( &msg, "title", "Mt.Zero Island" ); - vg_msg_end_frame( &msg ); - vg_msg_wkvstr( &msg, "location", "Australia" ); - mtzero->metadata_len = msg.cur; + { + vg_msg msg = {0}; + msg.buf = mtzero->metadata; + msg.max = sizeof(mtzero->metadata); + vg_msg_frame( &msg, "workshop" ); + vg_msg_wkvstr( &msg, "title", "Mt.Zero Island" ); + vg_msg_end_frame( &msg ); + vg_msg_wkvstr( &msg, "location", "Australia" ); + mtzero->metadata_len = msg.cur; + } + global_skateshop.selected_world_id=1; global_skateshop.pointcloud_world_id=1; skateshop_preview_loader_thread( mtzero ); /* HACK */ @@ -287,11 +295,11 @@ VG_STATIC void present_view_with_post_processing(void) v2f inverse; render_fb_inverse_ratio( gpipeline.fb_main, inverse ); - if( cl_blur ){ + if( k_blur_effect ){ shader_blitblur_use(); shader_blitblur_uTexMain( 0 ); shader_blitblur_uTexMotion( 1 ); - shader_blitblur_uBlurStrength( cl_blur_strength / + shader_blitblur_uBlurStrength( k_blur_strength / (vg.time_frame_delta*60.0) ); shader_blitblur_uInverseRatio( inverse ); diff --git a/skaterift.h b/skaterift.h index a139476..011985e 100644 --- a/skaterift.h +++ b/skaterift.h @@ -1,6 +1,14 @@ #ifndef SKATERIFT_H #define SKATERIFT_H +#define SKATERIFT_APPID 2103940 + +#define VG_TIMESTEP_FIXED (1.0/60.0) +#define VG_3D +#define VG_GAME +#define VG_MSG_V1_SUPPORT +#include "vg/vg.h" + #include "common.h" #include "world.h" #include "addon.h" diff --git a/workshop.c b/workshop.c index 8c24e03..1967e75 100644 --- a/workshop.c +++ b/workshop.c @@ -321,23 +321,26 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) * Create the metadata file * -----------------------------------------------------------------------*/ u8 descriptor_buf[ 512 ]; - vg_msg descriptor; - vg_msg_init( &descriptor, descriptor_buf, 512 ); + vg_msg descriptor = {0}; + descriptor.buf = descriptor_buf; + descriptor.max = sizeof(descriptor_buf); + + vg_linear_clear( vg_mem.scratch ); + + /* short description */ vg_msg_frame( &descriptor, "workshop" ); vg_msg_wkvstr( &descriptor, "title", workshop_form.submission.title ); //vg_msg_wkvstr( &descriptor, "author", "unknown" ); - vg_msg_wkvuint( &descriptor, "type", - u32 value=workshop_form.submission.type); + vg_msg_wkvu32( &descriptor, "type", workshop_form.submission.type ); vg_msg_wkvstr( &descriptor, "folder", workshop_form.addon_folder ); vg_msg_end_frame( &descriptor ); //vg_msg_wkvstr( &descriptor, "location", "USA" ); - // - vg_linear_clear( vg_mem.scratch ); - char *descriptor_str = vg_linear_alloc( vg_mem.scratch, - vg_align8(descriptor.cur*2+1) ); - vg_bin_str( descriptor_buf, descriptor_str, descriptor.cur ); - descriptor_str[descriptor.cur*2] = '\0'; - vg_info( "binstr: %s\n", descriptor_str ); + + char *short_descriptor_str = vg_linear_alloc( vg_mem.scratch, + vg_align8(descriptor.cur*2+1)); + vg_bin_str( descriptor_buf, short_descriptor_str, descriptor.cur ); + short_descriptor_str[descriptor.cur*2] = '\0'; + vg_info( "binstr: %s\n", short_descriptor_str ); vg_dir dir; if( !vg_dir_open( &dir, folder.buffer ) ){ @@ -402,7 +405,7 @@ VG_STATIC void _workshop_form_submit_thread( void *data ) stbi_flip_vertically_on_write(1); stbi_write_jpg( preview.buffer, w,h, 3, workshop_form.img_buffer, 90 ); - vg_async_call( workshop_form_async_submit_begin, descriptor_str, 0 ); + vg_async_call( workshop_form_async_submit_begin, short_descriptor_str, 0 ); } /* @@ -696,18 +699,16 @@ VG_STATIC void workshop_op_download_and_view_submission( int result_index ) u32 len = strlen(metadata_str); vg_info( "Metadata: %s\n", metadata_str ); vg_str_bin( metadata_str, metadata_buf, len ); - vg_msg root; - vg_msg_init( &root, metadata_buf, len/2 ); + vg_msg root = {0}; + root.buf = metadata_buf; + root.len = len/2; + root.max = len/2; vg_msg workshop = root; if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){ - vg_msg_cmd kv_type = vg_msg_seekkv( &workshop, "type", - k_vg_msg_first ); - if( kv_type.code & k_vg_msg_code_integer ){ - u32 u = kv_type.value._u32; - workshop_form.submission.type = u; - workshop_form.submission.submission_type_selection.value = u; - } + u32 type = vg_msg_seekkvu32( &workshop, "type", k_vg_msg_first ); + workshop_form.submission.type = type; + workshop_form.submission.submission_type_selection.value = type; const char *kv_folder = vg_msg_seekkvstr( &workshop, "folder", k_vg_msg_first ); diff --git a/world.h b/world.h index a3f69a5..ddb82e1 100644 --- a/world.h +++ b/world.h @@ -34,8 +34,8 @@ typedef struct world_instance world_instance; /* console variables */ -static float k_day_length = 30.0f; /* minutes */ -static int k_debug_light_indices = 0, +static f32 k_day_length = 30.0f; /* minutes */ +static i32 k_debug_light_indices = 0, k_debug_light_complexity= 0, k_light_preview = 0; -- 2.25.1