* =============================================================================
*/
-#define SR_NETWORKED
-#define VG_AUDIO_FORCE_COMPRESSED
-#define SDL_MAIN_HANDLED
-
-#ifndef VG_RELEASE
- #define VG_DEVWINDOW
-#endif
+#define SR_ALLOW_REWIND_HUB
/*
* system headers
#include "steam.h"
#include "render.h"
#include "audio.h"
+#include "vg/vg_opt.h"
#include "world.h"
#include "player_effects.c"
#include "freecam.c"
#include "testing.c"
+#include "trail.h"
+#include "trail.c"
static int k_tools_mode = 0;
return 0;
}
-static void vg_launch_opt(void){
+void vg_launch_opt(void)
+{
const char *arg;
if( vg_long_opt( "noauth" ) ){
network_client.auth_mode = eServerModeNoAuthentication;
}
}
-static void vg_preload(void){
+void vg_preload(void)
+{
vg_info(" Copyright . . . -----, ,----- ,---. .---. \n" );
vg_info(" 2021-2023 |\\ /| | / | | | | /| \n" );
vg_info(" | \\ / | +-- / +----- +---' | / | \n" );
vg_msg kvsav;
vg_msg_init( &kvsav, sav.buf, sizeof(sav.buf) );
- skaterift.achievements |= vg_msg_getkvu32( &kvsav, "ach", 0 );
+
+ u32 ach;
+ vg_msg_getkvintg( &kvsav, "ach", k_vg_msg_u32, &ach );
+ skaterift.achievements |= ach;
u32 board_reg_id = 0,
player_reg_id = 0;
player_board_load( &localplayer.fallback_board, "models/board_none.mdl" );
}
-static void vg_load(void){
+void vg_load(void)
+{
if( k_tools_mode ){
vg_async_call( async_call_ready, NULL, 0 );
return;
}
+ vg_audio.always_keep_compressed = 1;
+
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( skateshop_init, NULL );
vg_loader_step( ent_tornado_init, NULL );
vg_loader_step( testing_init, NULL );
+ vg_loader_step( trail_init, NULL );
+ vg_loader_step( particle_init, NULL );
vg_loader_step( skaterift_load_player_content, NULL );
* UPDATE LOOP
* ---------------------------------------------------------------------------*/
-static void vg_pre_update(void){
+void vg_pre_update(void)
+{
skaterift_preupdate_inputs();
if( k_tools_mode ) return;
world_map_pre_update();
}
-static void vg_fixed_update(void){
+void vg_fixed_update(void)
+{
if( k_tools_mode ) return;
if( skaterift.op == k_async_op_clientloading ) return;
testing_update();
}
-static void vg_post_update(void){
+void vg_post_update(void)
+{
if( k_tools_mode ) return;
if( skaterift.op == k_async_op_clientloading ) return;
* RENDERING
* ---------------------------------------------------------------------------*/
-static void vg_framebuffer_resize( int w, int h ){
+void vg_framebuffer_resize( int w, int h ){
render_fb_resize();
}
particle_system_prerender( &particles_env );
particle_system_render( &particles_env, &skaterift.cam );
+ player_glide_render_effects( &skaterift.cam );
+
/*
* render transition
*/
skaterift_replay_post_render();
}
-static void vg_render(void){
+void vg_render(void)
+{
if( k_tools_mode ){
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
glViewport( 0,0, vg.window_x, vg.window_y );
}
if( skaterift.op == k_async_op_clientloading ){
- _vg_loader_render();
+ vg_loader_render();
return;
}
gui_draw();
}
-static void vg_gui(void){
+void vg_gui(void)
+{
if( skaterift.op == k_async_op_clientloading ) return;
+ if( k_tools_mode ){
+ ui_rect null;
+ ui_rect screen = { 0, 0, vg.window_x, vg.window_y };
+ ui_rect panel = { 0, 0, 1000, 700 };
+ ui_rect_center( screen, panel );
+ vg_ui.wants_mouse = 1;
+
+ ui_fill( panel, ui_colour( k_ui_bg+1 ) );
+ ui_outline( panel, 1, ui_colour( k_ui_bg+7 ), 0 );
+
+ ui_rect_pad( panel, (ui_px[2]){ 8, 8 } );
+
+ return;
+ }
+
+ if( k_light_editor )
+ imgui_world_light_edit( world_current_instance() );
+
vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id;
render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio );