VG_VAR_F32( k_cam_damp );
VG_VAR_F32( k_cam_spring );
VG_VAR_F32( k_cam_punch );
+ VG_VAR_F32( k_cam_shake_strength );
+ VG_VAR_F32( k_cam_shake_trackspeed );
}
PLAYER_API
v3f cam_override_angles;
float cam_override_fov;
float cam_override_strength;
+ f32 cam_trackshake;
float cam_velocity_influence,
cam_velocity_coefficient,
#include "conf.h"
#include "input.h"
#include "menu.h"
+#include "vg/vg_perlin.h"
VG_STATIC void player_vector_angles( v3f angles, v3f v, float C, float k )
{
v3_lerp( tpv_pos, fpv_pos, player->camera_type_blend, player->cam.pos );
v3_copy( player->angles, player->cam.angles );
+ /* Camera shake */
+ f32 speed = v3_length(player->rb.v),
+ strength = k_cam_shake_strength * speed;
+ player->cam_trackshake += speed*k_cam_shake_trackspeed*vg.time_frame_delta;
+
+ v2f rnd = {perlin1d( player->cam_trackshake, 1.0f, 4, 20 ),
+ perlin1d( player->cam_trackshake, 1.0f, 4, 63 ) };
+ v2_muladds( player->cam.angles, rnd, strength, player->cam.angles );
+
v3f Fd, Fs, F;
v3_muls( player->cam_land_punch_v, -k_cam_damp, Fd );
v3_muls( player->cam_land_punch, -k_cam_spring, Fs );
VG_STATIC float
k_cam_spring = 20.0f,
k_cam_damp = 6.7f,
- k_cam_punch = -1.0f;
+ k_cam_punch = -1.0f,
+ k_cam_shake_strength = 1.0f,
+ k_cam_shake_trackspeed = 1.0f;
VG_STATIC void player_look( player_instance *player, v3f angles );
VG_STATIC void player__cam_iterate( player_instance *player );