X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_render.c;h=ce3fa5a6a527463c99aada84fc8ee1735fd0a6be;hb=67928190c66b05bd48b6b515278e930974d25cd2;hp=a03902297c30b9442332f53adfde92624c36d6bd;hpb=02e009ae6e20938675277e9ce2f467e17b170cc7;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_render.c b/player_render.c index a039022..ce3fa5a 100644 --- a/player_render.c +++ b/player_render.c @@ -293,6 +293,7 @@ VG_STATIC void player__pre_render( player_instance *player ) VG_STATIC void render_board( camera *cam, world_instance *world, struct player_board *board, m4x3f root, + struct board_pose *pose, enum board_shader shader ) { if( !board ) return; @@ -349,7 +350,20 @@ VG_STATIC void render_board( camera *cam, world_instance *world, if( board->board.indice_count ){ m4x3f mlocal; m3x3_identity( mlocal ); - v3_copy( board->board_position, mlocal[3] ); + + mdl_keyframe kf; + v3_zero( kf.co ); + q_identity( kf.q ); + v3_zero( kf.s ); + + v4f qroll; + q_axis_angle( qroll, (v3f){0.0f,0.0f,1.0f}, pose->lean * 0.6f ); + keyframe_rotate_around( &kf, (v3f){0.0f,0.11f,0.0f}, + (v3f){0.0f,0.0f,0.0f}, qroll ); + + v3_add( board->board_position, kf.co, mlocal[3] ); + q_m3x3( kf.q, mlocal ); + m4x3_mul( root, mlocal, mlocal ); if( shader == k_board_shader_entity ){ @@ -463,9 +477,11 @@ PLAYER_API void player__render( camera *cam, player_instance *player ) struct player_board *board = addon_cache_item_if_loaded( k_addon_type_board, player->board_view_slot ); + render_board( cam, world, board, player->playeravatar->sk.final_mtx[ - player->playeravatar->id_board], - k_board_shader_player ); + player->playeravatar->id_board], + &player->board_pose, + k_board_shader_player ); SDL_AtomicUnlock( &addon_system.sl_cache_using_resources ); }