+
+ /*
+ // monster interpolation
+ ent->persistent.steplerptime = 0;
+ VectorCopy(ent->state_current.origin, ent->persistent.stepoldorigin);
+ VectorCopy(ent->state_current.angles, ent->persistent.stepoldangles);
+ VectorCopy(ent->state_current.origin, ent->persistent.steporigin);
+ VectorCopy(ent->state_current.angles, ent->persistent.stepangles);
+ */
+ }
+ /*
+ else if ((ent->state_current.flags & ent->state_previous.flags) & ENTFLAG_STEP)
+ {
+ if (ent->state_current.origin[0] != ent->persistent.steporigin[0]
+ || ent->state_current.origin[1] != ent->persistent.steporigin[1]
+ || ent->state_current.origin[2] != ent->persistent.steporigin[2]
+ || ent->state_current.angles[0] != ent->persistent.stepangles[0]
+ || ent->state_current.angles[1] != ent->persistent.stepangles[1]
+ || ent->state_current.angles[2] != ent->persistent.stepangles[2])
+ {
+ // update lerp positions
+ ent->clientpersistent.steplerptime = sv.time;
+ VectorCopy(ent->steporigin, ent->stepoldorigin);
+ VectorCopy(ent->stepangles, ent->stepoldangles);
+ VectorCopy(ent->v.origin, ent->steporigin);
+ VectorCopy(ent->v.angles, ent->stepangles);
+ }
+ lerp = (cl.time - ent->persistent.steplerptime) * 10.0;
+ if (lerp < 1)
+ {
+ // origin
+ VectorSubtract(ent->persistent.steporigin, ent->persistent.stepoldorigin, delta);
+ VectorMA(ent->persistent.stepoldorigin, lerp, delta, neworg);
+
+ // angles
+ VectorSubtract(ent->persistent.stepangles, ent->persistent.stepoldangles, delta);
+ // choose shortest rotate (to avoid 'spin around' situations)
+ if (delta[0] < -180) delta[0] += 360;else if (delta[0] >= 180) delta[0] -= 360;
+ if (delta[1] < -180) delta[1] += 360;else if (delta[1] >= 180) delta[1] -= 360;
+ if (delta[2] < -180) delta[2] += 360;else if (delta[2] >= 180) delta[2] -= 360;
+ VectorMA(ent->stepoldangles, lerp, delta, ent->render.angles);
+ }
+ else
+ {
+ VectorCopy(ent->persistent.steporigin, neworg);
+ VectorCopy(ent->persistent.stepangles, ent->render.angles);
+ }