From 89869addee43f275947a8d35aa74f368d50c0dbe Mon Sep 17 00:00:00 2001 From: divverent Date: Sun, 2 May 2010 14:04:40 +0000 Subject: [PATCH] Base animation on cl.frametime From: MirceaKitsune git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@10128 d7cf8633-e32d-0410-b094-e92efae38249 --- darkplaces.txt | 4 ++-- view.c | 20 +++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/darkplaces.txt b/darkplaces.txt index 33227c18..8d539fbd 100644 --- a/darkplaces.txt +++ b/darkplaces.txt @@ -401,10 +401,10 @@ cl_bobmodel_side 0.05 gun bobbin cl_bobmodel_speed 7 gun bobbing speed cl_bobmodel_up 0.02 gun bobbing upward movement amount cl_leanmodel_side 1 enables gun leaning sideways -cl_leanmodel_side_speed 0.025 gun leaning sideways speed +cl_leanmodel_side_speed 5 gun leaning sideways speed cl_leanmodel_side_limit 7.5 gun leaning sideways limit cl_leanmodel_up 1 enables gun leaning upward -cl_leanmodel_up_speed 0.015 gun leaning upward speed +cl_leanmodel_up_speed 2.5 gun leaning upward speed cl_leanmodel_up_limit 5 gun leaning upward limit cl_bobup 0.5 view bobbing adjustment that makes the up or down swing of the bob last longer cl_capturevideo 0 enables saving of video to a .avi file using uncompressed I420 colorspace and PCM audio, note that scr_screenshot_gammaboost affects the brightness of the output) diff --git a/view.c b/view.c index 3d95d422..2c965fca 100644 --- a/view.c +++ b/view.c @@ -46,10 +46,10 @@ cvar_t cl_bobmodel_up = {CVAR_SAVE, "cl_bobmodel_up", "0.06", "gun bobbing upwar cvar_t cl_bobmodel_speed = {CVAR_SAVE, "cl_bobmodel_speed", "7", "gun bobbing speed"}; cvar_t cl_leanmodel_side = {CVAR_SAVE, "cl_leanmodel_side", "1", "enables gun leaning sideways"}; -cvar_t cl_leanmodel_side_speed = {CVAR_SAVE, "cl_leanmodel_side_speed", "0.025", "gun leaning sideways speed"}; +cvar_t cl_leanmodel_side_speed = {CVAR_SAVE, "cl_leanmodel_side_speed", "5", "gun leaning sideways speed"}; cvar_t cl_leanmodel_side_limit = {CVAR_SAVE, "cl_leanmodel_side_limit", "7.5", "gun leaning sideways limit"}; cvar_t cl_leanmodel_up = {CVAR_SAVE, "cl_leanmodel_up", "1", "enables gun leaning upward"}; -cvar_t cl_leanmodel_up_speed = {CVAR_SAVE, "cl_leanmodel_up_speed", "0.015", "gun leaning upward speed"}; +cvar_t cl_leanmodel_up_speed = {CVAR_SAVE, "cl_leanmodel_up_speed", "2.5", "gun leaning upward speed"}; cvar_t cl_leanmodel_up_limit = {CVAR_SAVE, "cl_leanmodel_up_limit", "5", "gun leaning upward limit"}; cvar_t cl_viewmodel_scale = {0, "cl_viewmodel_scale", "1", "changes size of gun model, lower values prevent poking into walls but cause strange artifacts on lighting and especially r_stereo/vid_stereobuffer options where the size of the gun becomes visible"}; @@ -547,7 +547,7 @@ void V_CalcRefdef (void) bob = bob*0.3 + bob*0.7*cycle; vieworg[2] += bound(-7, bob, 4); } - + VectorCopy(vieworg, gunorg); if (cl_bob.value && cl_bobmodel.value) @@ -596,6 +596,12 @@ void V_CalcRefdef (void) // TODO 1 (done): Fix bug where model does a 360* turn when YAW jumps around the 0 - 360 rotation border // TODO 2 (done): Implement limits (weapon model must not lean past a certain limit) // TODO 3 (done): Cvar everything once the first TODOs are ready + + float speed; // limit to safe values, or bad things happen at low framerates + if(cl.realframetime < 0.1) + speed = cl.realframetime; + else + speed = 0.1; if(cl_leanmodel_up.value) { @@ -610,14 +616,14 @@ void V_CalcRefdef (void) if(cl.viewangles[PITCH] - viewmodel_push_x > cl_leanmodel_up_limit.value) viewmodel_push_x = cl.viewangles[PITCH] - cl_leanmodel_up_limit.value; else - viewmodel_push_x += (cl.viewangles[PITCH] - viewmodel_push_x) * cl_leanmodel_up_speed.value; + viewmodel_push_x += (cl.viewangles[PITCH] - viewmodel_push_x) * cl_leanmodel_up_speed.value * speed; } if(viewmodel_push_x > cl.viewangles[PITCH]) { if(viewmodel_push_x - cl.viewangles[PITCH] > cl_leanmodel_up_limit.value) viewmodel_push_x = cl.viewangles[PITCH] + cl_leanmodel_up_limit.value; else - viewmodel_push_x -= (viewmodel_push_x - cl.viewangles[PITCH]) * cl_leanmodel_up_speed.value; + viewmodel_push_x -= (viewmodel_push_x - cl.viewangles[PITCH]) * cl_leanmodel_up_speed.value * speed; } } else @@ -636,14 +642,14 @@ void V_CalcRefdef (void) if(cl.viewangles[YAW] - viewmodel_push_y > cl_leanmodel_side_limit.value) viewmodel_push_y = cl.viewangles[YAW] - cl_leanmodel_side_limit.value; else - viewmodel_push_y += (cl.viewangles[YAW] - viewmodel_push_y) * cl_leanmodel_side_speed.value; + viewmodel_push_y += (cl.viewangles[YAW] - viewmodel_push_y) * cl_leanmodel_side_speed.value * speed; } if(viewmodel_push_y > cl.viewangles[YAW]) { if(viewmodel_push_y - cl.viewangles[YAW] > cl_leanmodel_side_limit.value) viewmodel_push_y = cl.viewangles[YAW] + cl_leanmodel_side_limit.value; else - viewmodel_push_y -= (viewmodel_push_y - cl.viewangles[YAW]) * cl_leanmodel_side_speed.value; + viewmodel_push_y -= (viewmodel_push_y - cl.viewangles[YAW]) * cl_leanmodel_side_speed.value * speed; } } else -- 2.39.2