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

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Mar 13 17:23:18 EDT 2009


Author: div0
Date: 2009-03-13 17:23:18 -0400 (Fri, 13 Mar 2009)
New Revision: 6141

Modified:
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/g_subs.qc
Log:
fight float inaccuracy in the animation system


Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2009-03-13 21:20:35 UTC (rev 6140)
+++ trunk/data/qcsrc/server/cl_client.qc	2009-03-13 21:23:18 UTC (rev 6141)
@@ -2186,7 +2186,8 @@
 		if (self.deadflag != DEAD_NO)
 		{
 			float button_pressed, force_respawn;
-			player_anim();
+			if(frametime)
+				player_anim();
 			button_pressed = (self.BUTTON_ATCK || self.BUTTON_JUMP || self.BUTTON_ATCK2 || self.BUTTON_HOOK || self.BUTTON_USE);
 			force_respawn = (g_lms || cvar("g_forced_respawn"));
 			if (self.deadflag == DEAD_DYING)
@@ -2305,11 +2306,13 @@
 
 		GrapplingHookFrame();
 
-		W_WeaponFrame();
+		if(frametime)
+			W_WeaponFrame();
 
 		player_powerups();
 		player_regen();
-		player_anim();
+		if(frametime)
+			player_anim();
 
 		if (g_minstagib)
 			minstagib_ammocheck();

Modified: trunk/data/qcsrc/server/g_subs.qc
===================================================================
--- trunk/data/qcsrc/server/g_subs.qc	2009-03-13 21:20:35 UTC (rev 6140)
+++ trunk/data/qcsrc/server/g_subs.qc	2009-03-13 21:23:18 UTC (rev 6141)
@@ -22,8 +22,8 @@
 	e.animstate_startframe = anim_x;
 	e.animstate_numframes = anim_y;
 	e.animstate_framerate = anim_z;
-	e.animstate_starttime = time;
-	e.animstate_endtime = time + e.animstate_numframes / e.animstate_framerate;
+	e.animstate_starttime = time - frametime * 0.1; // shift it a bit into the past to prevent float inaccuracy hiccups
+	e.animstate_endtime = e.animstate_starttime + e.animstate_numframes / e.animstate_framerate;
 	e.animstate_looping = looping;
 	e.animstate_override = override;
 	e.frame = e.animstate_startframe;
@@ -36,7 +36,7 @@
 		if (e.animstate_looping)
 		{
 			e.animstate_starttime = e.animstate_endtime;
-			e.animstate_endtime = e.animstate_endtime + e.animstate_numframes / e.animstate_framerate;
+			e.animstate_endtime = e.animstate_starttime + e.animstate_numframes / e.animstate_framerate;
 		}
 		e.animstate_override = FALSE;
 	}



More information about the nexuiz-commits mailing list