rigidbody math corrections & ragdoll tweaks for stability
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index 00fb7d5656a4f31e9d0a6df390ecfaa2573a855d..a1a6157ff3137388e60d07258ec39c3b038b163f 100644 (file)
@@ -13,6 +13,7 @@
 
 #define SR_NETWORKED
 #define VG_AUDIO_FORCE_COMPRESSED
+#define SDL_MAIN_HANDLED
 
 #ifndef VG_RELEASE
  #define VG_DEVWINDOW
@@ -47,7 +48,6 @@
 #include "entity.c"
 #include "workshop.c"
 #include "addon.c"
-#include "highscores.c"
 #include "save.c"
 #include "world_map.c"
 #include "network.c"
@@ -57,6 +57,7 @@
 #include "particle.c"
 #include "player_effects.c"
 #include "freecam.c"
+#include "testing.c"
 
 static int k_tools_mode = 0;
 
@@ -164,6 +165,7 @@ static void skaterift_restore_state(void){
 
 static addon_reg *skaterift_mount_world_unloadable( const char *path, u32 ext ){
    addon_reg *reg = addon_mount_local_addon( path, k_addon_type_world, ".mdl" );
+   if( !reg ) vg_fatal_error( "world not found\n" );
    reg->flags |= (ADDON_REG_HIDDEN | ext);
    return reg;
 }
@@ -176,6 +178,7 @@ static void skaterift_load_world_content(void){
    skaterift_mount_world_unloadable( "maps/mp_mtzero", 
          ADDON_REG_MTZERO|ADDON_REG_PREMIUM );
    skaterift_mount_world_unloadable( "maps/dev_tutorial", 0 );
+   skaterift_mount_world_unloadable( "maps/dev_flatworld", 0 );
 
    world_static.load_state = k_world_loader_load;
 
@@ -193,6 +196,7 @@ static void skaterift_load_player_content(void){
    replay_clear( &skaterift.replay );
 
    particle_alloc( &particles_grind, 300 );
+   particle_alloc( &particles_env, 200 );
 
    player_load_animation_reference( "models/ch_none.mdl" );
    player_model_load( &localplayer.fallback_model, "models/ch_none.mdl" );
@@ -226,6 +230,8 @@ static void vg_load(void){
    vg_loader_step( addon_system_init, NULL );
    vg_loader_step( workshop_init, NULL );
    vg_loader_step( skateshop_init, NULL );
+   vg_loader_step( ent_tornado_init, NULL );
+   vg_loader_step( testing_init, NULL );
   
    vg_loader_step( skaterift_load_player_content, NULL );
 
@@ -321,6 +327,7 @@ static void vg_fixed_update(void){
    world_routes_fixedupdate( world_current_instance() );
    player__update();
    vehicle_update_fixed();
+   testing_update();
 }
 
 static void vg_post_update(void){
@@ -499,6 +506,11 @@ static void render_scene(void){
    //particle_system_debug( &particles_grind );
    particle_system_prerender( &particles_grind );
    particle_system_render( &particles_grind, &skaterift.cam );
+   
+   ent_tornado_pre_update();
+   particle_system_update( &particles_env, vg.time_delta );
+   particle_system_prerender( &particles_env );
+   particle_system_render( &particles_env, &skaterift.cam );
 
    /* 
     * render transition 
@@ -585,7 +597,9 @@ static void render_main_game(void){
    }
    else{
       player__animate();
-      skaterift_record_frame( &skaterift.replay, 0 );
+      skaterift_record_frame( &skaterift.replay, 
+                              localplayer.deferred_frame_record );
+      localplayer.deferred_frame_record = 0;
    }
    animate_remote_players();
    player__pre_render();
@@ -668,6 +682,9 @@ static void vg_render(void){
 static void vg_gui(void){
    if( skaterift.op == k_async_op_clientloading ) return;
 
+   vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id;
+   render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio );
+
    menu_update();
    if( skaterift.activity == k_skaterift_menu ){
       glClear( GL_DEPTH_BUFFER_BIT );