r6110 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Mar 12 01:21:35 EDT 2009


Author: lordhavoc
Date: 2009-03-12 01:21:34 -0400 (Thu, 12 Mar 2009)
New Revision: 6110

Modified:
   trunk/data/qcsrc/server/cl_weaponsystem.qc
   trunk/data/qcsrc/server/w_campingrifle.qc
Log:
fix bugs with camping rifle introduced by my anim changes


Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc	2009-03-12 04:34:03 UTC (rev 6109)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc	2009-03-12 05:21:34 UTC (rev 6110)
@@ -20,6 +20,7 @@
 float WFRAME_FIRE2 = 1;
 float WFRAME_IDLE = 2;
 float WFRAME_RELOAD = 3;
+.float wframe;
 
 void(float fr, float t, void() func) weapon_thinkf;
 
@@ -329,6 +330,7 @@
 			self.model = "";
 
 		// reset animstate now
+		self.wframe = WFRAME_IDLE;
 		setanim(self, self.anim_idle, TRUE, FALSE, TRUE);
 
 		if(cvar("g_shootfromcenter") || cvar("g_shootfromeye"))
@@ -757,6 +759,7 @@
 void weapon_thinkf(float fr, float t, void() func)
 {
 	vector a;
+	vector of, or, ou;
 	float restartanim;
 
 	if (fr == WFRAME_FIRE1 || fr == WFRAME_FIRE2)
@@ -764,48 +767,48 @@
 	else
 		restartanim = FALSE;
 
+	of = v_forward;
+	or = v_right;
+	ou = v_up;
+
 	if (self.weaponentity)
 	{
+		self.weaponentity.wframe = fr;
 		if (qcweaponanimation)
 		{
-			self.weaponentity.frame = fr;
 			if (fr != WFRAME_IDLE)
 			{
-				vector of, or, ou;
-				of = v_forward;
-				or = v_right;
-				ou = v_up;
-				self.weaponentity.frame = fr;
 				self.weapon_morph0time = time;
 				self.weapon_morph0angles = self.weaponentity.angles;
 				self.weapon_morph0origin = self.weaponentity.origin;
-		
+
 				self.weapon_morph1angles = '0 0 0';
 				self.weapon_morph1time = time + t;
 				makevectors(self.weapon_morph1angles_x * '-1 0 0' + self.weapon_morph1angles_y * '0 1 0' + self.weapon_morph1angles_z * '0 0 1');
 				self.weapon_morph1origin = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
-		
+
 				self.weapon_morph2angles = '0 0 0';
 				self.weapon_morph2time = time + t;
 				makevectors(self.weapon_morph2angles_x * '-1 0 0' + self.weapon_morph2angles_y * '0 1 0' + self.weapon_morph2angles_z * '0 0 1');
 				self.weapon_morph2origin = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
-		
+
 				self.weapon_morph3angles = '0 0 0';
 				self.weapon_morph3time = time + t;
 				makevectors(self.weapon_morph3angles_x * '-1 0 0' + self.weapon_morph3angles_y * '0 1 0' + self.weapon_morph3angles_z * '0 0 1');
 				self.weapon_morph3origin = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
-		
+
 				self.weapon_morph4angles = '0 0 0';
-				self.weapon_morph4time = time + t + 1;
+				self.weapon_morph4time = time + t;
 				makevectors(self.weapon_morph4angles_x * '-1 0 0' + self.weapon_morph4angles_y * '0 1 0' + self.weapon_morph4angles_z * '0 0 1');
 				self.weapon_morph4origin = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
-		
+
 				if (fr == WFRAME_FIRE1)
 				{
 					self.weapon_morph1angles = '5 0 0';
 					self.weapon_morph1time = time + t * 0.1;
 					makevectors(self.weapon_morph1angles_x * '-1 0 0' + self.weapon_morph1angles_y * '0 1 0' + self.weapon_morph1angles_z * '0 0 1');
 					self.weapon_morph1origin = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
+					self.weapon_morph4time = time + t + 1; // delay idle effect
 				}
 				else if (fr == WFRAME_FIRE2)
 				{
@@ -813,6 +816,7 @@
 					self.weapon_morph1time = time + t * 0.1;
 					makevectors(self.weapon_morph1angles_x * '-1 0 0' + self.weapon_morph1angles_y * '0 1 0' + self.weapon_morph1angles_z * '0 0 1');
 					self.weapon_morph1origin = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
+					self.weapon_morph4time = time + t + 1; // delay idle effect
 				}
 				else if (fr == WFRAME_RELOAD)
 				{
@@ -830,18 +834,7 @@
 					self.weapon_morph3angles = '-10 40 0';
 					makevectors(self.weapon_morph3angles_x * '-1 0 0' + self.weapon_morph3angles_y * '0 1 0' + self.weapon_morph3angles_z * '0 0 1');
 					self.weapon_morph3origin = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust;
-
-					self.weapon_morph4time = time + t;
 				}
-
-				v_forward = of;
-				v_right = or;
-				v_up = ou;
-
-				if(reset)
-				{
-					BITXOR_ASSIGN(self.weaponentity.effects, EF_TELEPORT_BIT);
-				}
 			}
 		}
 		else
@@ -855,14 +848,18 @@
 			else if (fr == WFRAME_RELOAD)
 				a = self.weaponentity.anim_reload;
 			setanim(self.weaponentity, a, restartanim == FALSE, restartanim, restartanim);
+		}
 
-			if(reset)
-			{
-				BITXOR_ASSIGN(self.weaponentity.effects, EF_TELEPORT_BIT);
-			}
+		if(reset)
+		{
+			BITXOR_ASSIGN(self.weaponentity.effects, EF_TELEPORT_BIT);
 		}
 	}
 
+	v_forward = of;
+	v_right = or;
+	v_up = ou;
+
 	if(self.weapon_think == w_ready && func != w_ready && self.weaponentity.state == WS_RAISE)
 	{
 		backtrace("Tried to override initial weapon think function - should this really happen?");

Modified: trunk/data/qcsrc/server/w_campingrifle.qc
===================================================================
--- trunk/data/qcsrc/server/w_campingrifle.qc	2009-03-12 04:34:03 UTC (rev 6109)
+++ trunk/data/qcsrc/server/w_campingrifle.qc	2009-03-12 05:21:34 UTC (rev 6110)
@@ -22,7 +22,7 @@
 	
 	if (self.weaponentity)
 	{
-		if (self.weaponentity.frame == WFRAME_RELOAD)
+		if (self.weaponentity.wframe == WFRAME_RELOAD)
 			return;
 
 		// allow to switch away while reloading, but this will cause a new reload!




More information about the nexuiz-commits mailing list