X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_physics.h;h=b3cd9d5832699d675a617c2e3e679212a3bf3f1a;hb=da929c58442de91be106438ebf2f2daabf7f2430;hp=7594f13a50efe078ec2dc439fe5e4b124d9b1bde;hpb=6c3d05ff1b6004786b33fe4276892c27d5ecd6af;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_physics.h b/player_physics.h index 7594f13..b3cd9d5 100644 --- a/player_physics.h +++ b/player_physics.h @@ -352,6 +352,17 @@ static void player_walk_physics(void) } phys->in_air = len==0?1:0; + + if( !phys->in_air ) + { + float const DOWNFORCE = -k_walk_downforce*VG_TIMESTEP_FIXED; + v3_muladds( phys->rb.v, (v3f){0.0f,-1.0f,0.0f}, DOWNFORCE, phys->rb.v ); + + if( vg_get_button("jump") ) + { + phys->rb.v[1] = 5.0f; + } + } v3_zero( phys->rb.w ); q_axis_angle( phys->rb.q, (v3f){0.0f,1.0f,0.0f}, -player.angles[0] ); @@ -374,7 +385,10 @@ static void player_walk_physics(void) new_vel = vg_minf( zvel + amt, speed ), diff = new_vel - vg_minf( zvel, speed ); - v3_muladds( phys->rb.v, forward_dir, diff, phys->rb.v ); + if( !phys->in_air ) + { + v3_muladds( phys->rb.v, forward_dir, diff, phys->rb.v ); + } /* TODO move */ float walk_norm = 30.0f/(float)player.mdl.anim_walk->length, @@ -387,9 +401,12 @@ static void player_walk_physics(void) { player.walk_timer = 0.0f; } - - phys->rb.v[0] *= 1.0f - (VG_TIMESTEP_FIXED * k_walk_friction); - phys->rb.v[2] *= 1.0f - (VG_TIMESTEP_FIXED * k_walk_friction); + + if( !phys->in_air ) + { + phys->rb.v[0] *= 1.0f - (VG_TIMESTEP_FIXED * k_walk_friction); + phys->rb.v[2] *= 1.0f - (VG_TIMESTEP_FIXED * k_walk_friction); + } } /*