}
vg_console_reg_cmd( "respawn", localplayer_cmd_respawn, NULL );
+ VG_VAR_F32( k_cam_damp );
+ VG_VAR_F32( k_cam_spring );
+ VG_VAR_F32( k_cam_punch );
}
PLAYER_API
player->subsystem = k_player_subsystem_walk;
player->immobile = 0;
player->gate_waiting = NULL;
+ player->rewind_length = 0;
+ player->rewind_accum = 0.0f;
+ player->rewind_gate = NULL;
+ player->rewinding = 0;
+ world_static.last_use = 0.0;
global_skateshop_exit();
cam_velocity_constant,
cam_velocity_coefficient_smooth,
cam_velocity_constant_smooth,
- cam_velocity_influence_smooth,
- cam_land_punch,
- cam_land_punch_v;
+ cam_velocity_influence_smooth;
+
+ v3f cam_land_punch, cam_land_punch_v;
ent_gate *gate_waiting;
#include "input.h"
#include "menu.h"
-VG_STATIC float
- k_cam_spring = 20.0f,
- k_cam_damp = 6.7f;
-
VG_STATIC void player_vector_angles( v3f angles, v3f v, float C, float k )
{
float yaw = atan2f( v[0], -v[2] ),
v3_lerp( tpv_pos, fpv_pos, player->camera_type_blend, player->cam.pos );
v3_copy( player->angles, player->cam.angles );
- float Fd = -player->cam_land_punch_v * k_cam_damp,
- Fs = -player->cam_land_punch * k_cam_spring;
- player->cam_land_punch += player->cam_land_punch_v * vg.time_frame_delta;
- player->cam_land_punch_v += ( Fd + Fs ) * vg.time_frame_delta;
- player->cam.angles[1] += player->cam_land_punch;
+ 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 );
+ v3_muladds( player->cam_land_punch, player->cam_land_punch_v,
+ vg.time_frame_delta, player->cam_land_punch );
+ v3_add( Fd, Fs, F );
+ v3_muladds( player->cam_land_punch_v, F, vg.time_frame_delta,
+ player->cam_land_punch_v );
+ v3_add( player->cam_land_punch, player->cam.pos, player->cam.pos );
/* override camera */
player->cam.angles[0] =
static v3f TEMP_TPV_EXTRA; /* TODO: what? */
+VG_STATIC float
+ k_cam_spring = 20.0f,
+ k_cam_damp = 6.7f,
+ k_cam_punch = -1.0f;
+
VG_STATIC void player_look( player_instance *player, v3f angles );
VG_STATIC void player__cam_iterate( player_instance *player );
VG_STATIC void player_vector_angles( v3f angles, v3f v, float C, float k );
v3_copy( player->rb.co, s->state.prev_pos );
s->state.activity_prev = s->state.activity;
+ v3f normal_total;
+ v3_zero( normal_total );
struct board_collider
{
float slap = 0.0f;
if( s->state.activity <= k_skate_activity_air_to_grind ){
-
float min_dist = 0.6f;
for( int i=0; i<2; i++ ){
v3f wpos, closest;
wheels[1].pos[1] = s->state.slap;
-
-
-
const int k_wheel_count = 2;
s->substep = k_rb_delta;
v3f impulse;
v3_muls( ct->n, lambda, impulse );
+ v3_muladds( normal_total, impulse, inv_mass, normal_total );
v3_muladds( player->rb.v, impulse, inv_mass, player->rb.v );
v3_cross( delta, impulse, impulse );
m3x3_mulv( iIw, impulse, impulse );
* --------------------------------------------------------------------------
*/
+ f32 nforce = v3_length(normal_total);
+ if( nforce > 4.0f ){
+ if( nforce > 17.6f ){
+ v3_muladds( player->rb.v, normal_total, -1.0f, player->rb.v );
+ player__dead_transition(player);
+ player__skate_kill_audio(player);
+ return;
+ }
+
+ f32 amt = k_cam_punch;
+ if( player->camera_mode == k_cam_firstperson ){
+ amt *= 0.25f;
+ }
+
+ v3_muladds( player->cam_land_punch_v, normal_total, amt,
+ player->cam_land_punch_v );
+ }
+
s->surface = k_surface_prop_concrete;
for( int i=0; i<manifold_len; i++ ){
"void main()\n"
"{\n"
" float w = ((a_norm.w)-0.5)*2.0 + fract(uInfo.z) - 0.0;\n"
-" float c = -cos(w*0.2);\n"
-" float s = -sin(w*0.2);\n"
+" float c = -cos(w*0.6);\n"
+" float s = -sin(w*0.6);\n"
" float r = 0.2;\n"
"\n"
" float w1 = clamp( w*4.0 - a_co.y*10.0, -1.0, 1.0 ) * (3.14159265*0.5);\n"
void main()
{
float w = ((a_norm.w)-0.5)*2.0 + fract(uInfo.z) - 0.0;
- float c = -cos(w*0.2);
- float s = -sin(w*0.2);
+ float c = -cos(w*0.6);
+ float s = -sin(w*0.6);
float r = 0.2;
float w1 = clamp( w*4.0 - a_co.y*10.0, -1.0, 1.0 ) * (3.14159265*0.5);