NET_SendUnreliableMessage (cls.netcon, &cls.message);
SZ_Clear (&cls.message);
NET_Close (cls.netcon);
+ cls.state = ca_disconnected; // prevent this code from executing again during Host_ShutdownServer
// if running a local server, shut it down
if (sv.active)
Host_ShutdownServer(false);
*/
void CL_EstablishConnection (char *host)
{
+ sizebuf_t buf;
+ qbyte data[128];
+
+ buf.maxsize = 128;
+ buf.cursize = 0;
+ buf.data = data;
+
if (cls.state == ca_dedicated)
return;
cls.demonum = -1; // not in the demo loop now
cls.state = ca_connected;
cls.signon = 0; // need all the signon messages before playing
+
+ CL_ClearState ();
}
/*
glowcolor = ent->state_current.glowcolor;
if (glowsize)
{
- byte *tempcolor = (byte *)&d_8to24table[glowcolor];
+ qbyte *tempcolor = (qbyte *)&d_8to24table[glowcolor];
dlightcolor[0] += glowsize * tempcolor[0] * (1.0f / 255.0f);
dlightcolor[1] += glowsize * tempcolor[1] * (1.0f / 255.0f);
dlightcolor[2] += glowsize * tempcolor[2] * (1.0f / 255.0f);
}
}
-void CL_LerpPlayerEye(float frac)
+void CL_LerpPlayer(float frac)
{
+ int i;
+ float d;
+
if (cl.entitydatabase.numframes)
{
cl.viewentorigin[0] = cl.viewentoriginold[0] + frac * (cl.viewentoriginnew[0] - cl.viewentoriginold[0]);
}
else
VectorCopy (cl_entities[cl.viewentity].render.origin, cl.viewentorigin);
-}
-static void CL_LerpPlayerVelocity (float frac)
-{
- int i;
- float d;
+ cl.viewzoom = cl.viewzoomold + frac * (cl.viewzoomnew - cl.viewzoomold);
for (i = 0;i < 3;i++)
cl.velocity[i] = cl.mvelocity[1][i] + frac * (cl.mvelocity[0][i] - cl.mvelocity[1][i]);
CL_MoveParticles();
CL_UpdateTEnts();
- CL_LerpPlayerEye(frac);
- CL_LerpPlayerVelocity(frac);
+ CL_LerpPlayer(frac);
}
// get basic movement from keyboard
CL_BaseMove (&cmd);
+ IN_PreMove(); // OS independent code
+
// allow mice or other external controllers to add to the move
IN_Move (&cmd);
+ IN_PostMove(); // OS independent code
+
// send the unreliable message
CL_SendMove (&cmd);
}
+ else
+ {
+ // LordHavoc: fix for NAT routing of netquake:
+ // bounce back a clc_nop message to the newly allocated server port,
+ // to establish a routing connection for incoming frames,
+ // the server waits for this before sending anything
+ if (realtime > cl.sendnoptime)
+ {
+ Con_DPrintf("sending clc_nop to get server's attention\n");
+ cl.sendnoptime = realtime + 3;
+ MSG_WriteByte(&cls.message, clc_nop);
+ }
+ }
if (cls.demoplayback)
{