+ else if ((ent->state_previous.effects & EF_TELEPORT_BIT) != (ent->state_current.effects & EF_TELEPORT_BIT))
+ {
+ // don't interpolate the move
+ ent->persistent.lerpdeltatime = 0;
+ ent->persistent.lerpstarttime = cl.mtime[1];
+ VectorCopy(ent->state_current.origin, ent->persistent.oldorigin);
+ VectorCopy(ent->state_current.angles, ent->persistent.oldangles);
+ VectorCopy(ent->state_current.origin, ent->persistent.neworigin);
+ VectorCopy(ent->state_current.angles, ent->persistent.newangles);
+ ent->persistent.trail_allowed = false;
+
+ if(ent->state_current.frame != ent->state_previous.frame)
+ {
+ // if we ALSO changed animation frame in the process (but ONLY then!)
+ // then let's reset the animation interpolation too
+ ent->render.framegroupblend[0].frame = ent->render.framegroupblend[1].frame = ent->state_current.frame;
+ ent->render.framegroupblend[0].start = ent->render.framegroupblend[1].start = cl.time;
+ ent->render.framegroupblend[0].lerp = 1;ent->render.framegroupblend[1].lerp = 0;
+ }
+
+ // note that this case must do everything the following case does too
+ }
+ else if (DotProduct(odelta, odelta) > 1000*1000
+ || (cl.fixangle[0] && !cl.fixangle[1])
+ || (ent->state_previous.tagindex != ent->state_current.tagindex)
+ || (ent->state_previous.tagentity != ent->state_current.tagentity))