]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/interpolate.qc
Merge remote branch 'origin/master' into fruitiex/animations
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / interpolate.qc
index 5ee28b0fd22f8d9fa803f6db9d791166fbaf91c6..3d6a1033a130f86eb62fb420171ad3a851e55677 100644 (file)
@@ -6,15 +6,17 @@
 .float itime1, itime2;
 void InterpolateOrigin_Reset()
 {
-       self.iflags &~= (IFLAG_PREVALID | IFLAG_VALID);
+       self.iflags &~= IFLAG_INTERNALMASK;
        self.itime1 = self.itime2 = 0;
 }
 void InterpolateOrigin_Note()
 {
        float dt;
+       float f0;
 
        dt = time - self.itime2;
 
+       f0 = self.iflags;
        if(self.iflags & IFLAG_PREVALID)
                self.iflags |= IFLAG_VALID;
        else
@@ -30,8 +32,16 @@ void InterpolateOrigin_Note()
        if(self.iflags & IFLAG_ANGLES)
        {
                fixedmakevectors(self.angles);
-               self.iforward1 = self.iforward2;
-               self.iup1 = self.iup2;
+               if(f0 & IFLAG_VALID)
+               {
+                       self.iforward1 = self.iforward2;
+                       self.iup1 = self.iup2;
+               }
+               else
+               {
+                       self.iforward1 = v_forward;
+                       self.iup1 = v_up;
+               }
                self.iforward2 = v_forward;
                self.iup2 = v_up;
        }
@@ -69,7 +79,7 @@ void InterpolateOrigin_Do()
        if(self.itime1 && self.itime2 && self.itime1 != self.itime2)
        {
                float f;
-               f = bound(0, (time - self.itime1) / (self.itime2 - self.itime1), 1);
+               f = bound(0, (time - self.itime1) / (self.itime2 - self.itime1), 1 + autocvar_cl_lerpexcess);
                self.origin = (1 - f) * self.iorigin1 + f * self.iorigin2;
                if(self.iflags & IFLAG_ANGLES)
                {