[nexuiz-commits] r7787 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Sep 14 10:57:53 EDT 2009
Author: div0
Date: 2009-09-14 10:57:53 -0400 (Mon, 14 Sep 2009)
New Revision: 7787
Modified:
trunk/data/qcsrc/server/cl_physics.qc
Log:
sideways friction: make negative values never decrease velocity
Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc 2009-09-14 12:54:35 UTC (rev 7786)
+++ trunk/data/qcsrc/server/cl_physics.qc 2009-09-14 14:57:53 UTC (rev 7787)
@@ -417,7 +417,10 @@
float vel_z;
vector vel_perpend;
float addspeed;
+ float savespeed;
+ savespeed = self.velocity * self.velocity;
+
vel_straight = self.velocity * wishdir;
vel_z = self.velocity_z;
vel_perpend = self.velocity - vel_straight * wishdir - vel_z * '0 0 1';
@@ -428,7 +431,18 @@
if(wishspeed > 0)
vel_straight = vel_straight + min(wishspeed, accel * frametime * wishspeed) * (1 - accelqw);
- vel_perpend = vel_perpend * (1 - frametime * wishspeed * sidefric);
+ if(sidefric < 0 && (vel_perpend*vel_perpend))
+ {
+ float f, fmin;
+ f = (1 + frametime * wishspeed * sidefric);
+ fmin = (savespeed - vel_straight*vel_straight) / (vel_perpend*vel_perpend);
+ if(fmin <= 0)
+ vel_perpend = vel_perpend * f;
+ else
+ vel_perpend = vel_perpend * min(1, max(fmin, f));
+ }
+ else
+ vel_perpend = vel_perpend * (1 - frametime * wishspeed * sidefric);
self.velocity = vel_straight * wishdir + vel_z * '0 0 1' + vel_perpend;
}
More information about the nexuiz-commits
mailing list