[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