projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
reverse skate into glider
[carveJwlIkooP6JGAAIwe30JlM.git]
/
player_glide.c
diff --git
a/player_glide.c
b/player_glide.c
index 1b21191f85999785deed8d3d28ec6d88dde2d0f9..2bcb88c2d3d2a1dc033a2708ab7cf19162e30deb 100644
(file)
--- a/
player_glide.c
+++ b/
player_glide.c
@@
-364,12
+364,21
@@
static void player_glide_bind(void){
mdl_close( mdl );
}
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 );
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 );
v3_copy( localplayer.rb.v, player_glide.rb.v );
v3_copy( localplayer.rb.w, player_glide.rb.w );
rb_update_matrices( &player_glide.rb );