X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=workshop.c;h=c074e156f3e090fee656d7b9d5774a01565d0ad7;hb=e311bbe2fa903a7e2a922f202f389b799193195d;hp=ffe776c5c5cde7263879145f85870d5f4feda5d3;hpb=22f62f001f21d1b91fefd9fc495c122d9ddf205a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/workshop.c b/workshop.c index ffe776c..c074e15 100644 --- a/workshop.c +++ b/workshop.c @@ -7,6 +7,7 @@ #include "vg/vg.h" #include "vg/vg_tex.h" #include "vg/vg_msg.h" +#include "vg/vg_binstr.h" #include "ent_skateshop.h" #include "vg/vg_steam_auth.h" @@ -314,10 +315,8 @@ static void _workshop_form_submit_thread( void *data ) * Create the metadata file * -----------------------------------------------------------------------*/ u8 descriptor_buf[ 512 ]; - vg_msg descriptor = {0}; - descriptor.buf = descriptor_buf; - descriptor.max = sizeof(descriptor_buf); - + vg_msg descriptor; + vg_msg_init( &descriptor, descriptor_buf, sizeof(descriptor_buf) ); vg_linear_clear( vg_mem.scratch ); /* short description */ @@ -329,10 +328,10 @@ static void _workshop_form_submit_thread( void *data ) vg_msg_end_frame( &descriptor ); //vg_msg_wkvstr( &descriptor, "location", "USA" ); - 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'; + char *short_descriptor_str = + vg_linear_alloc( vg_mem.scratch, vg_align8(descriptor.cur.co*2+1)); + vg_bin_str( descriptor_buf, short_descriptor_str, descriptor.cur.co ); + short_descriptor_str[descriptor.cur.co*2] = '\0'; vg_info( "binstr: %s\n", short_descriptor_str ); vg_dir dir; @@ -377,7 +376,7 @@ static void _workshop_form_submit_thread( void *data ) workshop_form.op = k_workshop_op_none; return; } - fwrite( descriptor_buf, descriptor.cur, 1, fp ); + fwrite( descriptor_buf, descriptor.cur.co, 1, fp ); fclose( fp ); /* Save the preview @@ -678,19 +677,15 @@ 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 = {0}; - root.buf = metadata_buf; - root.len = len/2; - root.max = len/2; + vg_msg msg; + vg_msg_init( &msg, metadata_buf, len/2 ); - vg_msg workshop = root; - if( vg_msg_seekframe( &workshop, "workshop", k_vg_msg_first )){ - u32 type = vg_msg_seekkvu32( &workshop, "type", k_vg_msg_first ); + if( vg_msg_seekframe( &msg, "workshop" )){ + u32 type = vg_msg_getkvu32( &msg, "type", 0 ); workshop_form.submission.type = type; workshop_form.submission.submission_type_selection = type; - const char *kv_folder = vg_msg_seekkvstr( &workshop, "folder", - k_vg_msg_first ); + const char *kv_folder = vg_msg_getkvstr( &msg, "folder" ); if( kv_folder ){ vg_strncpy( kv_folder, workshop_form.addon_folder, sizeof(workshop_form.addon_folder), @@ -862,7 +857,7 @@ static void workshop_render_world_preview(void){ glEnable( GL_DEPTH_TEST ); glDisable( GL_BLEND ); - render_world( localplayer.viewable_world, &skaterift.cam, 1 ); + render_world( world_current_instance(), &skaterift.cam, 0, 0, 1, 1 ); glBindFramebuffer( GL_FRAMEBUFFER, 0 ); glViewport( 0,0, vg.window_x, vg.window_y ); @@ -878,7 +873,7 @@ static void workshop_render_player_preview(void){ glEnable( GL_DEPTH_TEST ); glDisable( GL_BLEND ); - struct skeleton *sk = &localplayer.playeravatar->sk; + struct skeleton *sk = &localplayer.skeleton; player_pose res; res.type = k_player_pose_type_ik; @@ -894,11 +889,13 @@ static void workshop_render_player_preview(void){ v3_copy( res.root_co, transform[3] ); /* TODO: Function. */ - skeleton_apply_pose( sk, res.keyframes, k_anim_apply_defer_ik ); - skeleton_apply_ik_pass( sk ); - skeleton_apply_pose( sk, res.keyframes, k_anim_apply_deffered_only ); - skeleton_apply_inverses( sk ); - skeleton_apply_transform( sk, transform ); + skeleton_apply_pose( sk, res.keyframes, k_anim_apply_defer_ik, + localplayer.final_mtx ); + skeleton_apply_ik_pass( sk, localplayer.final_mtx ); + skeleton_apply_pose( sk, res.keyframes, k_anim_apply_deffered_only, + localplayer.final_mtx ); + skeleton_apply_inverses( sk, localplayer.final_mtx ); + skeleton_apply_transform( sk, transform, localplayer.final_mtx ); camera cam; v3_copy( (v3f){ 0.0f, 201.7f, 1.2f }, cam.pos ); @@ -913,8 +910,8 @@ static void workshop_render_player_preview(void){ camera_update_projection( &cam ); camera_finalize( &cam ); - world_instance *world = localplayer.viewable_world; - render_playermodel( &cam, world, 0, &workshop_form.player_model, sk ); + render_playermodel( &cam, world_current_instance(), 0, + &workshop_form.player_model, sk, localplayer.final_mtx ); glBindFramebuffer( GL_FRAMEBUFFER, 0 ); glViewport( 0,0, vg.window_x, vg.window_y ); @@ -955,7 +952,7 @@ static void workshop_render_board_preview(void){ float dist = v3_length( basevector ); v3f baseangles; - player_vector_angles( baseangles, basevector, 1.0f, 0.0f ); + v3_angles( basevector, baseangles ); v2_add( workshop_form.view_angles, baseangles, cam.angles ); cam.angles[2] = 0.0f; @@ -1003,7 +1000,7 @@ static void workshop_render_board_preview(void){ glBufferSubData( GL_UNIFORM_BUFFER, 0, sizeof(struct ub_world_lighting), &world->ub_lighting ); - render_world( world, &cam, 1 ); + render_world( world, &cam, 0, 0, 1, 1 ); struct player_board_pose pose = {0}; render_board( &cam, world, board, mmdl, &pose, k_board_shader_entity ); render_board( &cam, world, board, mmdl1, &pose, k_board_shader_entity );