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