[nexuiz-commits] r7437 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Aug 14 06:57:20 EDT 2009


Author: div0
Date: 2009-08-14 06:57:19 -0400 (Fri, 14 Aug 2009)
New Revision: 7437

Modified:
   trunk/data/qcsrc/server/cl_physics.qc
Log:
don't cause roundoff errors if we don't really NEED to clip the velocity to keyboard axes


Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc	2009-08-14 10:27:25 UTC (rev 7436)
+++ trunk/data/qcsrc/server/cl_physics.qc	2009-08-14 10:57:19 UTC (rev 7437)
@@ -509,38 +509,41 @@
 		// TODO implement this for engine cl_movement code too (basically, clipping to the four axes)
 		wishvel_x = fabs(self.movement_x);
 		wishvel_y = fabs(self.movement_y);
-		wishvel_z = 0;
-		wishspeed = vlen(wishvel);
-		if(wishvel_x >= 2 * wishvel_y)
+		if(wishvel_x != 0 && wishvel_y != 0 && wishvel_x != wishvel_y)
 		{
-			// pure X motion
-			if(self.movement_x > 0)
-				self.movement_x = wishspeed;
+			wishvel_z = 0;
+			wishspeed = vlen(wishvel);
+			if(wishvel_x >= 2 * wishvel_y)
+			{
+				// pure X motion
+				if(self.movement_x > 0)
+					self.movement_x = wishspeed;
+				else
+					self.movement_x = -wishspeed;
+				self.movement_y = 0;
+			}
+			else if(wishvel_y >= 2 * wishvel_x)
+			{
+				// pure Y motion
+				self.movement_x = 0;
+				if(self.movement_y > 0)
+					self.movement_y = wishspeed;
+				else
+					self.movement_y = -wishspeed;
+			}
 			else
-				self.movement_x = -wishspeed;
-			self.movement_y = 0;
+			{
+				// diagonal
+				if(self.movement_x > 0)
+					self.movement_x = 0.70710678118654752440 * wishspeed;
+				else
+					self.movement_x = -0.70710678118654752440 * wishspeed;
+				if(self.movement_y > 0)
+					self.movement_y = 0.70710678118654752440 * wishspeed;
+				else
+					self.movement_y = -0.70710678118654752440 * wishspeed;
+			}
 		}
-		else if(wishvel_y >= 2 * wishvel_x)
-		{
-			// pure Y motion
-			self.movement_x = 0;
-			if(self.movement_y > 0)
-				self.movement_y = wishspeed;
-			else
-				self.movement_y = -wishspeed;
-		}
-		else
-		{
-			// diagonal
-			if(self.movement_x > 0)
-				self.movement_x = 0.70710678118654752440 * wishspeed;
-			else
-				self.movement_x = -0.70710678118654752440 * wishspeed;
-			if(self.movement_y > 0)
-				self.movement_y = 0.70710678118654752440 * wishspeed;
-			else
-				self.movement_y = -0.70710678118654752440 * wishspeed;
-		}
 	}
 
 	buttons = self.BUTTON_ATCK + 2 * self.BUTTON_JUMP + 4 * self.BUTTON_ATCK2 + 8 * self.BUTTON_ZOOM + 16 * self.BUTTON_CROUCH + 32 * self.BUTTON_HOOK + 64 * self.BUTTON_USE + 128 * (self.movement_x < 0) + 256 * (self.movement_x > 0) + 512 * (self.movement_y < 0) + 1024 * (self.movement_y > 0);



More information about the nexuiz-commits mailing list