framebuffer formalitites
[carveJwlIkooP6JGAAIwe30JlM.git] / player.h
index 0edbbdd44493b66ca2f29808c65edf1dcc68b90f..c98f10c83654c9744c2e51802cdc2b7223dfd8e1 100644 (file)
--- a/player.h
+++ b/player.h
@@ -11,6 +11,7 @@
 
 #define PLAYER_REWIND_FRAMES 60*4
 
+#include "conf.h"
 #include "audio.h"
 #include "common.h"
 #include "world.h"
@@ -44,7 +45,6 @@ VG_STATIC float
    k_walk_accel            = 150.0f,
    k_walk_friction         = 8.0f;
 
-VG_STATIC int cl_playermdl_id = 0;
 VG_STATIC int freecam = 0;
 VG_STATIC int walk_grid_iterations = 1;
 VG_STATIC float fc_speed = 10.0f;
@@ -90,8 +90,14 @@ VG_STATIC struct gplayer
    int rewind_sound_wait;
 
    v3f land_target;
-   v3f land_target_log[22];
-   u32 land_target_colours[22];
+
+   struct land_log
+   {
+      v3f positions[50];
+      u32 colour;
+      int count;
+   } 
+   land_log[22];
    int land_log_count;
 
    v3f handl_target, handr_target,
@@ -287,20 +293,12 @@ VG_STATIC void player_init(void)                                            /* 1
    };
 
    for( int i=0; i<vg_list_size(default_cfg); i++ )
-      execute_console_input(default_cfg[i]);
+      vg_execute_console_input(default_cfg[i]);
 
    rb_init( &player.phys.rb );
    rb_init( &player.collide_front );
    rb_init( &player.collide_back  );
 
-   vg_convar_push( (struct vg_convar){
-      .name = "cl_playermdl_id",
-      .data = &cl_playermdl_id,
-      .data_type = k_convar_dtype_i32,
-      .opt_i32 = { .min=0, .max=2, .clamp=1 },
-      .persistent = 1
-   });
-
    vg_convar_push( (struct vg_convar){
       .name = "gwalk_speed",
       .data = &k_walkspeed,
@@ -560,8 +558,14 @@ VG_STATIC void player_update_fixed(void)                                 /* 2 */
 VG_STATIC void player_update_post(void)
 {
    for( int i=0; i<player.land_log_count; i++ )
-      vg_line_cross( player.land_target_log[i], 
-            player.land_target_colours[i], 0.25f);
+   {
+      struct land_log *log = &player.land_log[i];
+      
+      for( int j=0; j<log->count - 1; j ++ )
+         vg_line( log->positions[j], log->positions[j+1], log->colour );
+
+      vg_line_cross( log->positions[log->count-1], log->colour, 0.25f );
+   }
 
    if( player.is_dead )
    {
@@ -583,8 +587,8 @@ VG_STATIC void player_update_post(void)
 
 
    /* CAMERA POSITIONING: LAYER 0 */
-   v2_copy( player.angles, camera_angles );
-   v3_copy( player.camera_pos, camera_pos );
+   v2_copy( player.angles, main_camera.angles );
+   v3_copy( player.camera_pos, main_camera.pos );
 
    if( player.rewinding )
    {
@@ -675,8 +679,6 @@ VG_STATIC void player_update_post(void)
                   player.rewind_sound_wait = 0;
                }
             }
-
-
          }
          
          int i0 = floorf( player.rewind_time ),
@@ -695,17 +697,19 @@ VG_STATIC void player_update_post(void)
          float blend = (4.0f-player.rewind_time) * 0.25f,
                c     = vg_clampf( blend, 0.0f, 1.0f );
 
-         camera_angles[0] = vg_alerpf(override_angles[0], player.angles[0], c);
-         camera_angles[1] = vg_lerpf (override_angles[1], player.angles[1], c);
-         v3_lerp( override_pos, player.camera_pos, c, camera_pos );
+         main_camera.angles[0] = 
+            vg_alerpf(override_angles[0], player.angles[0], c);
+         main_camera.angles[1] = 
+            vg_lerpf (override_angles[1], player.angles[1], c);
+         v3_lerp( override_pos, player.camera_pos, c, main_camera.pos );
       }
    }
 
-   camera_update();
+   camera_update_transform( &main_camera );
    player_audio();
 }
 
-VG_STATIC void draw_player( m4x3f cam )
+VG_STATIC void draw_player( camera *cam )
 {
    if( player.is_dead )
       player_model_copy_ragdoll();
@@ -713,8 +717,8 @@ VG_STATIC void draw_player( m4x3f cam )
    shader_viewchar_use();
    vg_tex2d_bind( &tex_characters, 0 );
    shader_viewchar_uTexMain( 0 );
-   shader_viewchar_uCamera( cam[3] );
-   shader_viewchar_uPv( vg.pv );
+   shader_viewchar_uCamera( cam->transform[3] );
+   shader_viewchar_uPv( cam->mtx.pv );
    shader_link_standard_ub( _shader_viewchar.id, 2 );
    glUniformMatrix4x3fv( _uniform_viewchar_uTransforms, 
                          player.mdl.sk.bone_count,