frame rate independence
[carveJwlIkooP6JGAAIwe30JlM.git] / main.c
diff --git a/main.c b/main.c
index 81584dd5b0b97800e2ca20f9f6459428e776620f..0d4ee25781014e1026cd45c90721130aab2cbafb 100644 (file)
--- a/main.c
+++ b/main.c
@@ -50,13 +50,13 @@ void vg_preload(void)
       .persistent = 1
    });
 
-vg_info(" Copyright  .        . .       -----, ,----- ,---.   .---.  " );
-vg_info(" 2021-2022  |\\      /| |           /  |      |    | |    /| " );
-vg_info("            | \\    / | +--        /   +----- +---'  |   / | " );
-vg_info("            |  \\  /  | |         /    |      |   \\  |  /  | " );
-vg_info("            |   \\/   | |        /     |      |    \\ | /   | " );
+vg_info(" Copyright  .        . .       -----, ,----- ,---.   .---.  \n" );
+vg_info(" 2021-2022  |\\      /| |           /  |      |    | |    /| \n" );
+vg_info("            | \\    / | +--        /   +----- +---'  |   / | \n" );
+vg_info("            |  \\  /  | |         /    |      |   \\  |  /  | \n" );
+vg_info("            |   \\/   | |        /     |      |    \\ | /   | \n" );
 vg_info("            '        ' '--' [] '----- '----- '     ' '---'  " 
-        "SOFTWARE" );
+        "SOFTWARE\n" );
 
    highscores_init( 2000, 50 );
    vg_loader_highwater( NULL, highscores_save_at_exit, NULL );
@@ -106,11 +106,27 @@ void vg_update( int loaded )
    {
       draw_origin_axis();
       network_update();
-      player_update();
+      player_update_pre();
       world_update( player.phys.rb.co );
    }
 }
 
+static void vg_update_fixed( int loaded )
+{
+   if( loaded )
+   {
+      player_update_fixed();
+   }
+}
+
+static void vg_update_post( int loaded )
+{
+   if( loaded )
+   {
+      player_update_post();
+   }
+}
+
 static void vg_framebuffer_resize( int w, int h )
 {
    render_fb_resize();
@@ -120,23 +136,15 @@ static void vg_framebuffer_resize( int w, int h )
 
 static void render_main_game(void)
 {
-   /* TODO Breakup this & Gen */
-#if 0
-   float speed = freecam? 0.0f: v3_length( player.phys.rb.v );
-   v3f shake = { vg_randf()-0.5f, vg_randf()-0.5f, vg_randf()-0.5f };
-   v3_muls( shake, speed*0.01f, shake );
-#endif
-
    m4x4f world_4x4;
    m4x3_expand( player.camera_inverse, world_4x4 );
 
    gpipeline.fov = freecam? 60.0f: 125.0f; /* 120 */
-   m4x4_projection( vg_pv, gpipeline.fov, 
-         (float)vg_window_x / (float)vg_window_y, 
+   m4x4_projection( vg.pv, gpipeline.fov, 
+         (float)vg.window_x / (float)vg.window_y, 
          0.02f, 2100.0f );
 
-   m4x4_mul( vg_pv, world_4x4, vg_pv );
-
+   m4x4_mul( vg.pv, world_4x4, vg.pv );
    glEnable( GL_DEPTH_TEST );
    
    /* 
@@ -145,21 +153,21 @@ static void render_main_game(void)
 
    int draw_solid = player.is_dead | freecam;
    
-   render_world( vg_pv, player.camera );
+   render_world( vg.pv, player.camera );
    if( draw_solid )
       draw_player();
    render_water_texture( player.camera );
 
    glBindFramebuffer( GL_FRAMEBUFFER, 0 );
-   render_water_surface( vg_pv, player.camera );
+   render_water_surface( vg.pv, player.camera );
 
-   render_world_gates( vg_pv, player.phys.rb.co, player.camera );
+   render_world_gates( vg.pv, player.phys.rb.co, player.camera );
    
    /* Copy the RGB of what we have into the background buffer */
    glBindFramebuffer( GL_READ_FRAMEBUFFER, 0 );
    glBindFramebuffer( GL_DRAW_FRAMEBUFFER, gpipeline.fb_background );
-   glBlitFramebuffer( 0,0, vg_window_x, vg_window_y, 
-                      0,0, vg_window_x, vg_window_y,
+   glBlitFramebuffer( 0,0, vg.window_x, vg.window_y, 
+                      0,0, vg.window_x, vg.window_y,
                       GL_COLOR_BUFFER_BIT,
                       GL_LINEAR );
    
@@ -174,10 +182,10 @@ static void render_main_game(void)
    
    if( !draw_solid )
    {
-      m4x4_projection( vg_pv, gpipeline.fov, 
-            (float)vg_window_x / (float)vg_window_y, 
+      m4x4_projection( vg.pv, gpipeline.fov, 
+            (float)vg.window_x / (float)vg.window_y, 
             0.01f, 600.0f );
-      m4x4_mul( vg_pv, world_4x4, vg_pv );
+      m4x4_mul( vg.pv, world_4x4, vg.pv );
       draw_player();
    }
 
@@ -202,7 +210,7 @@ static void render_main_game(void)
 void vg_render(void)
 {
    glBindFramebuffer( GL_FRAMEBUFFER, 0 );
-   glViewport( 0,0, vg_window_x, vg_window_y );
+   glViewport( 0,0, vg.window_x, vg.window_y );
    glDisable( GL_DEPTH_TEST );
 
    glClearColor( 0.11f, 0.35f, 0.37f, 1.0f );
@@ -214,8 +222,8 @@ void vg_render(void)
    /* Other shite */
    glDisable(GL_BLEND);
    glDisable( GL_DEPTH_TEST );
-   vg_lines_drawall( (float *)vg_pv );
-   glViewport( 0,0, vg_window_x, vg_window_y );
+   vg_lines_drawall( (float *)vg.pv );
+   glViewport( 0,0, vg.window_x, vg.window_y );
 }
 
 void vg_ui(void)