X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_common.c;h=6ab378d6039d8317ea3cbdc774a7c9bb168f4155;hb=be5e25dee2c54c2a22ca3bbb5bbe0eb6149343be;hp=2551968e5f76cbea21af133dbca99d4de041ed54;hpb=5f6a4f9df6c8accc89f1920bfe9ace3cbac4c4b6;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_common.c b/player_common.c index 2551968..6ab378d 100644 --- a/player_common.c +++ b/player_common.c @@ -4,13 +4,15 @@ #include "menu.h" #include "vg/vg_perlin.h" -static float player_get_heading_yaw(void){ +float player_get_heading_yaw(void) +{ v3f xz; q_mulv( localplayer.rb.q, (v3f){ 0.0f,0.0f,1.0f }, xz ); return atan2f( xz[0], xz[2] ); } -static void player_camera_portal_correction(void){ +static void player_camera_portal_correction(void) +{ if( localplayer.gate_waiting ){ /* construct plane equation for reciever gate */ v4f plane; @@ -59,13 +61,14 @@ static void player_camera_portal_correction(void){ } } -static void player__cam_iterate(void){ +void player__cam_iterate(void) +{ struct player_cam_controller *cc = &localplayer.cam_control; if( localplayer.subsystem == k_player_subsystem_walk ){ v3_copy( (v3f){-0.1f,1.8f,0.0f}, cc->fpv_viewpoint ); v3_copy( (v3f){0.0f,0.0f,0.0f}, cc->fpv_offset ); - v3_copy( (v3f){0.0f,1.4f,0.0f}, cc->tpv_offset ); + v3_copy( (v3f){0.0f,1.8f,0.0f}, cc->tpv_offset ); } else if( localplayer.subsystem == k_player_subsystem_glide ){ v3_copy( (v3f){-0.15f,1.75f,0.0f}, cc->fpv_viewpoint ); @@ -221,6 +224,18 @@ static void player__cam_iterate(void){ v3_add( tpv_origin, tpv_offset, tpv_pos ); +#if 0 + if( localplayer.subsystem == k_player_subsystem_walk ) + { + v3f fwd, right; + v3_angles_vector( localplayer.angles, fwd ); + v3_cross( fwd, (v3f){0,1.001f,0}, right ); + right[1] = 0.0f; + v3_normalize( right ); + v3_muladds( tpv_pos, right, 0.5f, tpv_pos ); + } +#endif + /* * Blend cameras */ @@ -252,7 +267,8 @@ static void player__cam_iterate(void){ player_camera_portal_correction(); } -static void player_look( v3f angles, float speed ){ +void player_look( v3f angles, float speed ) +{ if( vg_ui.wants_mouse ) return; angles[2] = 0.0f;