From 02da74afdf15963182b30036511bcd2dcbc74b16 Mon Sep 17 00:00:00 2001 From: Rafael Barreto Date: Mon, 24 May 2010 12:44:08 +0000 Subject: [PATCH] fixing inappropriate conversion and limiting mouse filter updates to low frequency mouses (removing negative acceleration) git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@5030 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/physics.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/src/physics.cpp b/source/src/physics.cpp index dc3e5017..60f5b527 100644 --- a/source/src/physics.cpp +++ b/source/src/physics.cpp @@ -756,18 +756,22 @@ FVARP(mouseaccel, 0, 0, 1000); FVARP(mfilter, 0.0f, 0.0f, 3.0f); float fdx = 0, fdy = 0; +int mousemillis=0; -void mousemove(int dx, int dy) +void mousemove(int odx, int ody) { if(intermission) return; if(player1->isspectating() && player1->spectatemode==SM_FOLLOW1ST) return; + float dx = odx, dy = ody; + float cursens = sensitivity; - if (mfilter>0.0) { + if ( mfilter > 0.0 && totalmillis < curtime * 2 + mousemillis ) { float mousefilter=mfilter/curtime*14; - fdx = dx = ( fdx * mousefilter + dx )/( mousefilter + 1 ); - fdy = dy = ( fdy * mousefilter + dy )/( mousefilter + 1 ); + dx = fdx = ( fdx * mousefilter + dx )/( mousefilter + 1 ); + dy = fdy = ( fdy * mousefilter + dy )/( mousefilter + 1 ); } + mousemillis=totalmillis; if(mouseaccel && curtime && (dx || dy)) cursens += mouseaccel * sqrtf(dx*dx + dy*dy)/curtime; cursens /= 33.0f*sensitivityscale; camera1->yaw += dx*cursens;