X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=skaterift.c;h=81b80913e1b9c4f6fbcbf5e23a457161c2d9617f;hb=eb28dee29482c7ffe8bc0203d302e3ee6dbfd943;hp=14c64101a275512615d77b740463fa6c64c969cf;hpb=22f62f001f21d1b91fefd9fc495c122d9ddf205a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index 14c6410..81b8091 100644 --- a/skaterift.c +++ b/skaterift.c @@ -39,6 +39,7 @@ #include "vehicle.h" #include "pointcloud.h" #include "save.h" +#include "player_remote.h" /* unity build * ----------------- */ @@ -53,6 +54,7 @@ #include "save.c" #include "respawn.c" #include "network.c" +#include "player_remote.c" static struct player_avatar localplayer_avatar; @@ -199,6 +201,12 @@ static void vg_load(void){ player_avatar_load( &localplayer_avatar, "models/ch_none.mdl" ); player__use_avatar( &localplayer_avatar ); + + /* FIXME FIXME FIXME FIXME FIXME */ + u32 mtx_size = sizeof(m4x3f)*localplayer_avatar.sk.bone_count; + localplayer.final_mtx = vg_linear_alloc( vg_mem.rtmemory, mtx_size ); + netplayers.final_mtx = vg_linear_alloc( vg_mem.rtmemory, mtx_size*32 ); + player_model_load( &localplayer.fallback_model, "models/ch_none.mdl" ); player__bind(); @@ -447,6 +455,41 @@ static void render_player_transparent(void){ player__render( &small_cam ); } +static void animate_remote_players(void){ + for( u32 i=0; iactive ) continue; + + animate_remote_player( i ); +#if 0 + if( player->subsystem > k_player_subsystem_max ) continue; + + struct player_subsystem_interface *sys = + player_subsystems[player->subsystem]; + + struct player_avatar *av = localplayer.playeravatar; + + player_pose pose; + sys->pose( &player->animdata, &pose ); + apply_full_skeleton_pose( &av->sk, &pose, + &netplayers.final_mtx[ av->sk.bone_count*i ] ); +#endif + } +} + +static void render_remote_players( world_instance *world, camera *cam ){ + for( u32 i=0; iactive ) continue; + + struct player_avatar *av = localplayer.playeravatar; + + struct player_model *model = &localplayer.fallback_model; + render_playermodel( cam, world, 0, model, &av->sk, + &netplayers.final_mtx[ av->sk.bone_count*i ] ); + } +} + static void render_scene(void){ /* Draw world */ glEnable( GL_DEPTH_TEST ); @@ -479,6 +522,7 @@ static void render_scene(void){ render_water_texture( view_world, &skaterift.cam, 0 ); render_fb_bind( gpipeline.fb_main, 1 ); render_water_surface( view_world, &skaterift.cam ); + render_remote_players( view_world, &skaterift.cam ); } } @@ -536,6 +580,7 @@ static void render_main_game(void){ player__animate(); skaterift_record_frame( &skaterift.replay, 0 ); } + animate_remote_players(); player__pre_render(); skaterift_composite_maincamera(); @@ -634,6 +679,7 @@ static void vg_gui(void){ skaterift_replay_imgui(); workshop_form_gui(); render_view_framebuffer_ui(); + remote_player_network_imgui( vg.pv ); }