X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.c;h=8ed749ceb324087ed31b773be3fd4d6e49636715;hb=63fe317d7db724162561da52aa382c82ac3c29be;hp=1fec3c720aa42a9032d327387fa76a8f5fb753d3;hpb=4fa9aa9a1e09940e91cc30e171e3de0606515ef3;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index 1fec3c7..8ed749c 100644 --- a/skaterift.c +++ b/skaterift.c @@ -37,7 +37,6 @@ #include "network.h" #include "menu.h" #include "vehicle.h" -#include "pointcloud.h" #include "save.h" #include "player_remote.h" @@ -109,8 +108,7 @@ static void load_playermodels(void){ } static void async_skaterift_player_start( void *payload, u32 size ){ - localplayer.viewable_world = world_current_instance(); - localplayer_cmd_respawn( 1, (const char *[]){ "start" } ); + world_switch_instance(0); } static void async_call_ready( void *payload, u32 size ){ @@ -153,6 +151,8 @@ static void skaterift_restore_state(void){ addon_cache_create_viewer( k_addon_type_player, player_reg_id ); kvsav.cur = orig; + +#if 0 if( vg_msg_seekframe( &kvsav, "world" ) ){ addon_alias q; @@ -180,6 +180,7 @@ static void skaterift_restore_state(void){ if( v3_length2(pos) > 1.0f ) player__setpos( pos ); } +#endif } static void vg_load(void){ @@ -188,11 +189,12 @@ static void vg_load(void){ return; } - vg_console_reg_cmd( "changeworld", skaterift_change_world_command, NULL ); + vg_console_reg_cmd( "load_world", skaterift_load_world_command, NULL ); + vg_console_reg_cmd( "switch_active_instance", + skaterift_switch_instance_cmd, NULL ); vg_loader_step( render_init, NULL ); vg_loader_step( menu_init, NULL ); - vg_loader_step( pointcloud_init, NULL ); vg_loader_step( world_init, NULL ); vg_loader_step( vehicle_init, NULL ); vg_loader_step( font3d_init, NULL ); @@ -231,6 +233,11 @@ static void vg_load(void){ * ------------------------------------- */ + /* hub world */ + addon_reg *hub = + addon_mount_local_addon( "maps/dev_hub", k_addon_type_world, ".mdl" ); + hub->metadata_len = 0; + /* understate diy. */ addon_reg *spawn = addon_mount_local_addon( "maps/mp_spawn", k_addon_type_world, @@ -261,20 +268,16 @@ static void vg_load(void){ /* load home/permanent world manually */ world_static.load_state = k_world_loader_load; + struct world_load_args args = { .purpose = k_world_purpose_hub, - .reg = spawn + .reg = hub }; skaterift_world_load_thread( &args ); vg_async_call( async_skaterift_player_start, NULL, 0 ); vg_async_stall(); - - global_skateshop.selected_world_id=1; - global_skateshop.pointcloud_world_id=1; - skateshop_world_preview_loader_thread( mtzero ); /* HACK */ - vg_console_load_autos(); menu_link(); @@ -306,7 +309,6 @@ static void skaterift_change_client_world_preupdate(void); * ---------------------------------------------------------------------------*/ static void vg_pre_update(void){ - srinput.enabled = 1; skaterift_preupdate_inputs(); if( k_tools_mode ) return; @@ -330,6 +332,7 @@ static void vg_pre_update(void){ vg_slewf( &skaterift.time_rate, target, vg.time_frame_delta * (1.0f/0.3f) ); vg.time_rate = vg_smoothstepf( skaterift.time_rate ); + /* TODO: how can we compress this? */ player__pre_update(); world_entity_focus_preupdate(); skaterift_replay_pre_update(); @@ -490,12 +493,15 @@ static void render_scene(void){ if( skaterift.activity == k_skaterift_respawning ){ glDrawBuffers( 1, (GLenum[]){ GL_COLOR_ATTACHMENT0 } ); glClearColor( 0.624f, 0.659f, 0.769f, 0.0f ); + glClearColor( 0.824f, 0.0f, 0.1f, 0.0f ); glClear( GL_COLOR_BUFFER_BIT ); glDrawBuffers( 2, (GLenum[]){ GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 } ); +#if 0 view_world = &world_static.instances[respawn_chooser.world_id]; render_world_override( view_world ); render_world_routes( view_world, &skaterift.cam, 1 ); +#endif } else{ render_world( view_world, &skaterift.cam, 0 ); @@ -503,7 +509,9 @@ static void render_scene(void){ render_fb_bind( gpipeline.fb_main, 1 ); render_water_surface( view_world, &skaterift.cam ); render_remote_players( view_world, &skaterift.cam ); + ent_miniworld_render( view_world ); } + } static void render_scene_gate_subview(void){ @@ -570,14 +578,6 @@ static void render_main_game(void){ world_instance *view_world = localplayer.viewable_world; if( (view_world != NULL) && (skaterift.activity != k_skaterift_respawning) ){ render_world_cubemaps( view_world ); - - ent_gate *gate = view_world->rendering_gate; - if( gate ){ - if( gate->flags & k_ent_gate_nonlocal ){ - world_instance *dest = &world_static.instances[ gate->target ]; - render_world_cubemaps( dest ); - } - } } /* variable res target */ @@ -602,20 +602,7 @@ static void render_main_game(void){ /* composite */ present_view_with_post_processing(); - /* --------------------------------------------------------------------- */ - - /* capture the current resume frame at the very last point */ - if( button_down( k_srbind_reset ) ){ - if( skaterift.activity == k_skaterift_default ){ - skaterift.activity = k_skaterift_replay; - skaterift_record_frame( &skaterift.replay, 1 ); - if( skaterift.replay.head ){ - skaterift.replay.cursor = skaterift.replay.head->time; - skaterift.replay.cursor_frame = skaterift.replay.head; - } - skaterift.replay_control = k_replay_control_scrub; - } - } + skaterift_replay_post_render(); } static void vg_render(void){ @@ -670,10 +657,15 @@ static void vg_gui(void){ remote_player_network_imgui( vg.pv ); - remote_players_imgui_world( world_current_instance(), vg.pv, INFINITY ); if( skaterift.activity == k_skaterift_respawning ){ + remote_players_imgui_world( world_current_instance(), vg.pv, + 2000.0f, 0 ); remote_players_imgui_lobby(); } + else { + remote_players_chat_imgui(); /* TODO: conditional */ + remote_players_imgui_world( world_current_instance(), vg.pv, 100.0f, 1 ); + } }