If you’re going to post a snippet of code, please use the code tag, not the quote tag. Here’s what happens:
#include "g_local.h"
void G_StoreClientPosition( gentity_t* ent ) {
int top, currentTime;
if (!( ent->inuse &&
(ent->client->sess.sessionTeam == TEAM_AXIS || ent->client->sess.sessionTeam == TEAM_ALLIES) &&
ent->r.linked &&
(ent->health > 0) &&
!(ent->client->ps.pm_flags & PMF_LIMBO) &&
(ent->client->ps.pm_type == PM_NORMAL)
)) {
return;
}
top = ent->client->topMarker;
// new frame, mark the old marker's time as the end of the last frame
if( ent->client->clientMarkers[top].time < level.time) {
ent->client->clientMarkers[top].time = level.previousTime;
top = ent->client->topMarker = ent->client->topMarker == MAX_CLIENT_MARKERS - 1 ? 0 : ent->client->topMarker + 1;
}
currentTime = level.previousTime + trap_Milliseconds() - level.frameTime;
if(currentTime > level.time) {
// owwie, we just went into the next frame... let's push them back
currentTime = level.time;
}
VectorCopy( ent->r.mins, ent->client->clientMarkers[top].mins );
VectorCopy( ent->r.maxs, ent->client->clientMarkers[top].maxs );
VectorCopy( ent->r.currentOrigin, ent->client->clientMarkers[top].origin );
ent->client->clientMarkers[top].servertime = level.time;
ent->client->clientMarkers[top].time = currentTime;
}
static void G_AdjustSingleClientPosition( gentity_t* ent, int time ) {
int i, j;
if( time > level.time) {
time = level.time;
} // no lerping forward....
i = j = ent->client->topMarker;
do {
if(ent->client->clientMarkers[i].time <= time) {
break;
}
j = i;
i = (i > 0) ? i - 1 : MAX_CLIENT_MARKERS - 1;
} while(i != ent->client->topMarker);
if(i == j) { // oops, no valid stored markers
return;
}
VectorCopy(ent->r.currentOrigin, ent->client->backupMarker.origin);
VectorCopy(ent->r.mins, ent->client->backupMarker.mins);
VectorCopy(ent->r.maxs, ent->client->backupMarker.maxs);
if(i != ent->client->topMarker) {
float frac = ((float)(ent->client->clientMarkers[j].time - time)) / (ent->client->clientMarkers[j].time - ent->client->clientMarkers[i].time);
LerpPosition(ent->client->clientMarkers[j].origin, ent->client->clientMarkers[i].origin, frac, ent->r.currentOrigin);
LerpPosition(ent->client->clientMarkers[j].mins, ent->client->clientMarkers[i].mins, frac, ent->r.mins);
LerpPosition(ent->client->clientMarkers[j].maxs, ent->client->clientMarkers[i].maxs, frac, ent->r.maxs);
} else {
VectorCopy( ent->client->clientMarkers[j].origin, ent->r.currentOrigin );
VectorCopy( ent->client->clientMarkers[j].mins, ent->r.mins );
VectorCopy( ent->client->clientMarkers[j].maxs, ent->r.maxs );
}
trap_LinkEntity( ent );
}
No indentation makes me cry. :blah: