Record a demo: play e1m1 and go through exit teleporter. Intermission is up. Let it sit a few seconds, and make note of what the view looks like then type "stop".
Play back your demo. Notice that at intermission, the camera is not looking where it should! If you used protocol 15, playing it back in WinQuake or GLQuake will be correct, therefore it the interpretation of read messages.
Now for me, this is fixing it:
BEFORE: FitzQuake 0.85 example
Code: Select all
case svc_setangle:
for (i=0 ; i<3 ; i++)
cl.viewangles[i] = MSG_ReadAngle ();
Code: Select all
case svc_setangle:
for (i=0 ; i<3 ; i++)
cl.viewangles[i] = MSG_ReadAngle ();
// Baker addition ...
if (cls.demoplayback)
{
VectorCopy (cl.viewangles, cl.mviewangles[0]);
VectorCopy (cl.mviewangles[0], cl.mviewangles[1]);
VectorCopy (cl.mviewangles[0], cl.lerpangles);
cl.mviewangles[0][0] = cl.mviewangles[1][0] = cl.lerpangles[0] = -cl.lerpangles[0];
}
It looks like angles from svc_setangle have a negative pitch (maybe all angle messages from the server do?)