X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.c;h=5b69d566664d31bcbfb8dc84cc5854031b475d9a;hb=524c05104673b95ef0841d6ee90bcd24f9b829dc;hp=7f384f63780f276d71178e17cb8d001a638e2f7f;hpb=46f4e9ee87dc67402166e4c6b05efbe922cd7574;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index 7f384f6..5b69d56 100644 --- a/skaterift.c +++ b/skaterift.c @@ -59,6 +59,33 @@ static struct player_avatar localplayer_avatar; int main( int argc, char *argv[] ){ +#if 0 + u8 buf[ 512 ]; + bitpack_ctx ctx = { + .buffer = buf, + .buffer_len = 512, + .bytes = 0, + .mode = k_bitpack_compress + }; + + v4f q = { 0.388, -0.565, 0.515, 0.515 }; + vg_info( "q: %f %f %f %f\n", q[0], q[1], q[2], q[3] ); + + /* compress */ + bitpack_qquat( &ctx, q ); + + vg_info( "compressed bytes: %u\n", ctx.bytes ); + + /* decompress */ + ctx.bytes = 0; + ctx.mode = k_bitpack_decompress; + + bitpack_qquat( &ctx, q ); + vg_info( "q: %f %f %f %f\n", q[0], q[1], q[2], q[3] ); + + return 0; +#endif + vg_mem.use_libc_malloc = 0; vg_set_mem_quota( 160*1024*1024 ); vg_enter( argc, argv, "Voyager Game Engine" ); @@ -84,6 +111,7 @@ vg_info(" ' ' '--' [] '----- '----- ' ' '---' " steam_init(); vg_loader_step( NULL, steam_end ); + vg_loader_step( remote_players_init, NULL ); vg_loader_step( network_init, network_end ); } @@ -201,6 +229,13 @@ 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*NETWORK_MAX_PLAYERS ); + player_model_load( &localplayer.fallback_model, "models/ch_none.mdl" ); player__bind(); @@ -276,7 +311,7 @@ static void vg_load(void){ skaterift_restore_state(); vg_loader_step( NULL, skaterift_autosave_synchronous ); - board_processview_thread(NULL); + //board_processview_thread(NULL); vg_async_call( async_call_ready, NULL, 0 ); } @@ -301,6 +336,7 @@ static void vg_pre_update(void){ skaterift_change_client_world_preupdate(); draw_origin_axis(); + skateshop_autostart_loading(); network_update(); /* time rate */ @@ -316,6 +352,7 @@ static void vg_pre_update(void){ player__pre_update(); world_entity_focus_preupdate(); skaterift_replay_pre_update(); + remote_sfx_pre_update(); world_update( world_current_instance(), localplayer.rb.co ); audio_ambient_sprites_update( world_current_instance(), localplayer.rb.co ); @@ -447,6 +484,7 @@ static void render_player_transparent(void){ /* Draw player to window buffer and blend background ontop */ player__render( &small_cam ); + render_remote_players_tags( localplayer.viewable_world, &skaterift.cam ); } static void render_scene(void){ @@ -475,12 +513,14 @@ static void render_scene(void){ GL_COLOR_ATTACHMENT1 } ); view_world = &world_static.instances[respawn_chooser.world_id]; render_world_override( view_world ); + render_world_routes( view_world, &skaterift.cam, 1 ); } else{ render_world( view_world, &skaterift.cam, 0 ); 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 ); } } @@ -538,6 +578,7 @@ static void render_main_game(void){ player__animate(); skaterift_record_frame( &skaterift.replay, 0 ); } + animate_remote_players(); player__pre_render(); skaterift_composite_maincamera(); @@ -545,7 +586,7 @@ static void render_main_game(void){ /* --------------------------------------------------------------------- */ world_instance *view_world = localplayer.viewable_world; - if( view_world != NULL ){ + if( (view_world != NULL) && (skaterift.activity != k_skaterift_respawning) ){ render_world_cubemaps( view_world ); ent_gate *gate = view_world->rendering_gate; @@ -636,7 +677,7 @@ static void vg_gui(void){ skaterift_replay_imgui(); workshop_form_gui(); render_view_framebuffer_ui(); - remote_player_network_imgui(); + remote_player_network_imgui( vg.pv ); }