[nexuiz-commits] r7142 - trunk/data/qcsrc/client

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Jul 4 11:19:55 EDT 2009


Author: div0
Date: 2009-07-04 11:19:55 -0400 (Sat, 04 Jul 2009)
New Revision: 7142

Modified:
   trunk/data/qcsrc/client/casings.qc
   trunk/data/qcsrc/client/gibs.qc
   trunk/data/qcsrc/client/movetypes.qc
   trunk/data/qcsrc/client/movetypes.qh
   trunk/data/qcsrc/client/projectile.qc
Log:
slight csqc physics speedup, should not help much with gibs though


Modified: trunk/data/qcsrc/client/casings.qc
===================================================================
--- trunk/data/qcsrc/client/casings.qc	2009-07-03 09:58:48 UTC (rev 7141)
+++ trunk/data/qcsrc/client/casings.qc	2009-07-04 15:19:55 UTC (rev 7142)
@@ -17,7 +17,7 @@
 		self.flags &~= FL_ONGROUND;
 	}
 
-	Movetype_Physics(FALSE);
+	Movetype_Physics_NoMatchServer();
 
 	self.renderflags = 0;
 	self.alpha = bound(0, self.cnt - time, 1);

Modified: trunk/data/qcsrc/client/gibs.qc
===================================================================
--- trunk/data/qcsrc/client/gibs.qc	2009-07-03 09:58:48 UTC (rev 7141)
+++ trunk/data/qcsrc/client/gibs.qc	2009-07-04 15:19:55 UTC (rev 7142)
@@ -58,7 +58,7 @@
 	vector oldorg;
 	oldorg = self.origin;
 
-	Movetype_Physics(FALSE);
+	Movetype_Physics_NoMatchServer();
 	if(wasfreed(self))
 		return;
 

Modified: trunk/data/qcsrc/client/movetypes.qc
===================================================================
--- trunk/data/qcsrc/client/movetypes.qc	2009-07-03 09:58:48 UTC (rev 7141)
+++ trunk/data/qcsrc/client/movetypes.qc	2009-07-04 15:19:55 UTC (rev 7142)
@@ -321,75 +321,92 @@
 	_Movetype_CheckWaterTransition();
 }
 
-void Movetype_Physics(float matchserver) // SV_Physics_Entity
+void _Movetype_Physics_Frame(float movedt)
 {
+	self.move_didgravity = FALSE;
+	switch(self.move_movetype)
+	{
+		case MOVETYPE_PUSH:
+		case MOVETYPE_FAKEPUSH:
+			error("SV_Physics_Pusher not implemented");
+			break;
+		case MOVETYPE_NONE:
+			break;
+		case MOVETYPE_FOLLOW:
+			error("SV_Physics_Follow not implemented");
+			break;
+		case MOVETYPE_NOCLIP:
+			_Movetype_CheckWater();
+			self.move_origin = self.move_origin + ticrate * self.move_velocity;
+			self.move_angles = self.move_angles + ticrate * self.move_avelocity;
+			_Movetype_LinkEdict(FALSE);
+			break;
+		case MOVETYPE_STEP:
+			error("SV_Physics_Step not implemented");
+			break;
+		case MOVETYPE_WALK:
+			error("SV_Physics_Walk not implemented");
+			break;
+		case MOVETYPE_TOSS:
+		case MOVETYPE_BOUNCE:
+		case MOVETYPE_BOUNCEMISSILE:
+		case MOVETYPE_FLYMISSILE:
+		case MOVETYPE_FLY:
+			_Movetype_Physics_Toss(movedt);
+			break;
+	}
+}
+
+void Movetype_Physics_NoMatchServer() // optimized
+{
 	float n, i, dt, movedt;
 
-	dt = time - self.move_time;
+	movedt = time - self.move_time;
+	self.move_time = time;
 
+	//self.move_didgravity = ((self.move_movetype == MOVETYPE_BOUNCE || self.move_movetype == MOVETYPE_TOSS) && !(self.move_flags & FL_ONGROUND));
+	// we use the field as set by the last run of this
+
+	_Movetype_Physics_Frame(movedt);
+	if(wasfreed(self))
+		return;
+
+	self.avelocity = self.move_avelocity;
+	self.velocity = self.move_velocity;
+	self.angles = self.move_angles;
+	setorigin(self, self.move_origin);
+}
+
+void Movetype_Physics_MatchServer() // SV_Physics_Entity
+{
+	float n, i, dt, movedt;
+
 	if(ticrate <= 0)
-		matchserver = 0;
-
-	if(matchserver)
 	{
-		movedt = ticrate;
-		n = max(0, floor(dt / ticrate));
-		dt -= n * ticrate;
-		self.move_time += n * ticrate;
+		Movetype_Physics_NoMatchServer();
+		return;
 	}
-	else
-	{
-		movedt = dt;
-		dt = 0;
-		n = 1;
-		self.move_time = time;
-	}
 
+	dt = time - self.move_time;
+
+	movedt = ticrate;
+	n = max(0, floor(dt / ticrate));
+	dt -= n * ticrate;
+	self.move_time += n * ticrate;
+
 	//self.move_didgravity = ((self.move_movetype == MOVETYPE_BOUNCE || self.move_movetype == MOVETYPE_TOSS) && !(self.move_flags & FL_ONGROUND));
 	// we use the field as set by the last run of this
 
 	for(i = 0; i < n; ++i)
 	{
-		self.move_didgravity = FALSE;
-		switch(self.move_movetype)
-		{
-			case MOVETYPE_PUSH:
-			case MOVETYPE_FAKEPUSH:
-				error("SV_Physics_Pusher not implemented");
-				break;
-			case MOVETYPE_NONE:
-				break;
-			case MOVETYPE_FOLLOW:
-				error("SV_Physics_Follow not implemented");
-				break;
-			case MOVETYPE_NOCLIP:
-				_Movetype_CheckWater();
-				self.move_origin = self.move_origin + ticrate * self.move_velocity;
-				self.move_angles = self.move_angles + ticrate * self.move_avelocity;
-				_Movetype_LinkEdict(FALSE);
-				break;
-			case MOVETYPE_STEP:
-				error("SV_Physics_Step not implemented");
-				break;
-			case MOVETYPE_WALK:
-				error("SV_Physics_Walk not implemented");
-				break;
-			case MOVETYPE_TOSS:
-			case MOVETYPE_BOUNCE:
-			case MOVETYPE_BOUNCEMISSILE:
-			case MOVETYPE_FLYMISSILE:
-			case MOVETYPE_FLY:
-				_Movetype_Physics_Toss(movedt);
-				break;
-		}
+		_Movetype_Physics_Frame(movedt);
+		if(wasfreed(self))
+			return;
 	}
 
-	if(wasfreed(self))
-		return;
-
 	self.avelocity = self.move_avelocity;
 
-	if(dt > 0 && self.move_movetype != MOVETYPE_NONE)
+	if(dt > 0 && self.move_movetype != MOVETYPE_NONE && !(self.move_flags & FL_ONGROUND))
 	{
 		// now continue the move from move_time to time
 		self.velocity = self.move_velocity;

Modified: trunk/data/qcsrc/client/movetypes.qh
===================================================================
--- trunk/data/qcsrc/client/movetypes.qh	2009-07-03 09:58:48 UTC (rev 7141)
+++ trunk/data/qcsrc/client/movetypes.qh	2009-07-04 15:19:55 UTC (rev 7142)
@@ -10,7 +10,8 @@
 .float move_bounce_stopspeed;
 .float move_nomonsters; // -1 for MOVE_NORMAL, otherwise a MOVE_ constant
 
-void Movetype_Physics(float matchserver);
+void Movetype_Physics_MatchServer();
+void Movetype_Physics_NoMatchServer();
 
 float	MOVETYPE_NONE				= 0;
 float	MOVETYPE_ANGLENOCLIP			= 1;

Modified: trunk/data/qcsrc/client/projectile.qc
===================================================================
--- trunk/data/qcsrc/client/projectile.qc	2009-07-03 09:58:48 UTC (rev 7141)
+++ trunk/data/qcsrc/client/projectile.qc	2009-07-04 15:19:55 UTC (rev 7142)
@@ -89,7 +89,7 @@
 	if(self.count & 0x80)
 	{
 		//self.move_flags &~= FL_ONGROUND;
-		Movetype_Physics(TRUE);
+		Movetype_Physics_MatchServer();
 		if(!(self.move_flags & FL_ONGROUND))
 			self.angles = vectoangles(self.velocity);
 	}



More information about the nexuiz-commits mailing list