stuff
[carveJwlIkooP6JGAAIwe30JlM.git] / player.h
index 61a1391261e758f913c77fe5b46bb8b0f45ebaab..1edbc6ba08981fce86b63c8904294429ac6e95e8 100644 (file)
--- a/player.h
+++ b/player.h
@@ -97,6 +97,7 @@ VG_STATIC struct gplayer
                         *input_js2v,
                         *input_jump,
                         *input_push,
+                        *input_walk,
                         *input_walkh,
                         *input_walkv,
                         *input_switch_mode,
@@ -226,7 +227,8 @@ VG_STATIC void player_init(void)                                            /* 1
    player.input_js2h = vg_create_named_input( "grab-h", k_input_type_axis );
    player.input_js2v = vg_create_named_input( "grab-v", k_input_type_axis );
    player.input_jump = vg_create_named_input( "jump", k_input_type_button );
-   player.input_push = vg_create_named_input( "push", k_input_type_axis_norm );
+   player.input_push = vg_create_named_input( "push", k_input_type_button );
+   player.input_walk = vg_create_named_input( "walk", k_input_type_button );
 
    player.input_walkh = vg_create_named_input( "walk-h", 
                                                k_input_type_axis );
@@ -256,8 +258,11 @@ VG_STATIC void player_init(void)                                            /* 1
       "bind jump space",
       "bind jump gp-a",
 
-      "bind  push gp-lt",
-      "bind +push w",
+      "bind push gp-b",
+      "bind push w",
+
+      "bind walk shift",
+      "bind walk gp-ls",
       
       "bind  walk-h  gp-ls-h",
       "bind  walk-v -gp-ls-v",
@@ -374,6 +379,37 @@ VG_STATIC void player_mouseview(void)
       return;
 
    v2_muladds( player.angles, vg.mouse_delta, 0.0025f, player.angles );
+
+   if( vg.gamepad_use_trackpad_look )
+   {
+      static v2f last_input;
+      static v2f vel;
+      static v2f vel_smooth;
+
+      v2f input = { player.input_js2h->axis.value,
+                    player.input_js2v->axis.value };
+
+      if( (v2_length2(last_input) > 0.001f) && (v2_length2(input) > 0.001f) )
+      {
+         v2_sub( input, last_input, vel );
+         v2_muls( vel, 1.0f/vg.time_delta, vel );
+      }
+      else
+      {
+         v2_zero( vel );
+      }
+
+      v2_lerp( vel_smooth, vel, vg.time_delta*8.0f, vel_smooth );
+      
+      v2_muladds( player.angles, vel_smooth, vg.time_delta, player.angles );
+      v2_copy( input, last_input );
+   }
+   else
+   {
+      player.angles[0] += player.input_js2h->axis.value * vg.time_delta * 4.0f;
+      player.angles[1] += player.input_js2v->axis.value * vg.time_delta * 4.0f;
+   }
+
    player.angles[1] = vg_clampf( player.angles[1], -VG_PIf*0.5f, VG_PIf*0.5f );
 }