X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_glide.c;h=2bcb88c2d3d2a1dc033a2708ab7cf19162e30deb;hb=8e54abfae338fc4c5ad2c95310e137f77f8a0e66;hp=1b21191f85999785deed8d3d28ec6d88dde2d0f9;hpb=1be7cfcdb57c61c322462ab6c6c3e9894235732f;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_glide.c b/player_glide.c index 1b21191..2bcb88c 100644 --- a/player_glide.c +++ b/player_glide.c @@ -364,12 +364,21 @@ static void player_glide_bind(void){ mdl_close( mdl ); } -static void player_glide_transition(void){ +static void player_glide_transition( bool reverse ){ localplayer.subsystem = k_player_subsystem_glide; localplayer.have_glider = 0; v3_copy( localplayer.rb.co, player_glide.rb.co ); - v4_copy( localplayer.rb.q, player_glide.rb.q ); + + if( reverse ){ + v4f qyaw; + q_axis_angle( qyaw, (v3f){0,1,0}, VG_TAUf*0.5f ); + q_mul( qyaw, localplayer.rb.q, player_glide.rb.q ); + q_normalize( player_glide.rb.q ); + } + else + v4_copy( localplayer.rb.q, player_glide.rb.q ); + v3_copy( localplayer.rb.v, player_glide.rb.v ); v3_copy( localplayer.rb.w, player_glide.rb.w ); rb_update_matrices( &player_glide.rb );