r4230 - trunk/data/qcsrc/client

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Aug 29 04:27:51 EDT 2008


Author: div0
Date: 2008-08-29 04:27:36 -0400 (Fri, 29 Aug 2008)
New Revision: 4230

Modified:
   trunk/data/qcsrc/client/csqc_builtins.qc
   trunk/data/qcsrc/client/laser.qc
Log:
fix laser interpolation


Modified: trunk/data/qcsrc/client/csqc_builtins.qc
===================================================================
--- trunk/data/qcsrc/client/csqc_builtins.qc	2008-08-29 07:55:39 UTC (rev 4229)
+++ trunk/data/qcsrc/client/csqc_builtins.qc	2008-08-29 08:27:36 UTC (rev 4230)
@@ -39,7 +39,7 @@
 void (string s, ...)							localcmd = #46;
 entity (entity e)							nextent = #47;
 
-vector (vector v)							vectoangles = #51;
+vector (vector v, ...)							vectoangles = #51;
 
 void (string var, string val)						cvar_set = #72;
 

Modified: trunk/data/qcsrc/client/laser.qc
===================================================================
--- trunk/data/qcsrc/client/laser.qc	2008-08-29 07:55:39 UTC (rev 4229)
+++ trunk/data/qcsrc/client/laser.qc	2008-08-29 08:27:36 UTC (rev 4230)
@@ -1,18 +1,23 @@
 // FIXME make this generic code, to be used for other entities too?
 .vector iorigin1, iorigin2;
 .vector ivelocity1, ivelocity2;
-.vector iangles1, iangles2;
+.vector iforward1, iforward2;
+.vector iright1, iright2;
 .float itime1, itime2;
 void InterpolateOrigin_Note()
 {
 	float dt;
 
+	makevectors(self.angles);
+
 	self.iorigin1 = self.iorigin2;
-	self.iangles1 = self.iangles2;
+	self.iforward1 = self.iforward2;
+	self.iright1 = self.iright2;
 	self.ivelocity1 = self.ivelocity2;
 
 	self.iorigin2 = self.origin;
-	self.iangles2 = self.angles;
+	self.iforward2 = v_forward;
+	self.iright2 = v_right;
 	self.ivelocity2 = self.velocity;
 
 	dt = time - self.itime1;
@@ -20,12 +25,14 @@
 	if(vlen(self.iorigin2 - self.iorigin1) > 1000)
 	{
 		self.iorigin1 = self.iorigin2;
-		self.iangles1 = self.iangles2;
+		self.iforward1 = self.iforward2;
+		self.iright1 = self.iright2;
 		self.ivelocity1 = self.ivelocity2;
 	}
 	else if(vlen(self.ivelocity2 - self.ivelocity1) > 1000)
 	{
-		self.iangles1 = self.iangles2;
+		self.iforward1 = self.iforward2;
+		self.iright1 = self.iright2;
 		self.ivelocity1 = self.ivelocity2;
 	}
 
@@ -42,19 +49,24 @@
 }
 void InterpolateOrigin_Do()
 {
+	vector forward, right;
 	if(self.itime1 && self.itime2 && self.itime1 != self.itime2)
 	{
 		float f;
 		f = bound(0, (time - self.itime1) / (self.itime2 - self.itime1), 1);
 		self.origin = (1 - f) * self.iorigin1 + f * self.iorigin2;
-		self.angles = (1 - f) * self.iangles1 + f * self.iangles2;
+		forward = (1 - f) * self.iforward1 + f * self.iforward2;
+		right = (1 - f) * self.iright1 + f * self.iright2;
+		self.angles = vectoangles(forward, right);
+		self.angles_x = -self.angles_x;
 		self.velocity = (1 - f) * self.ivelocity1 + f * self.ivelocity2;
 	}
 }
 void InterpolateOrigin_Undo()
 {
 	self.origin = self.iorigin2;
-	self.angles = self.iangles2;
+	self.angles = vectoangles(self.iforward2, self.iright2);
+	self.angles_x = -self.angles_x;
 	self.velocity = self.ivelocity2;
 }
 




More information about the nexuiz-commits mailing list