#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;
}
}
-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 );
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
*/
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;