if (host_client->netconnection)
{
- // free the client (the body stays around)
+ // tell the client to be gone
if (!crash)
{
// LordHavoc: no opportunity for resending, so use unreliable 3 times
NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, false);
NetConn_SendUnreliableMessage(host_client->netconnection, &buf, sv.protocol, 10000, false);
}
- // break the net connection
- NetConn_Close(host_client->netconnection);
- host_client->netconnection = NULL;
}
// call qc ClientDisconnect function
prog->globals.server->self = saveSelf;
}
+ if (host_client->netconnection)
+ {
+ // break the net connection
+ NetConn_Close(host_client->netconnection);
+ host_client->netconnection = NULL;
+ }
+
// if a download is active, close it
if (host_client->download_file)
{
SV_VM_Begin();
World_End(&sv.world);
if(prog->loaded)
- if(prog->funcoffsets.SV_Shutdown)
+ if(PRVM_serverfunction(SV_Shutdown))
{
- func_t s = prog->funcoffsets.SV_Shutdown;
- prog->funcoffsets.SV_Shutdown = 0; // prevent it from getting called again
+ func_t s = PRVM_serverfunction(SV_Shutdown);
+ PRVM_serverfunction(SV_Shutdown) = 0; // prevent it from getting called again
PRVM_ExecuteProgram(s,"SV_Shutdown() required");
}
for (i = 0, host_client = svs.clients;i < svs.maxclients;i++, host_client++)
double advancetime, aborttime = 0;
float offset;
+ if (cls.state == ca_dedicated)
+ Collision_Cache_NewFrame();
+
// run the world state
// don't allow simulation to run too fast or too slow or logic glitches can occur
if (sv.paused == 1 && realtime > sv.pausedstart && sv.pausedstart > 0) {
prog->globals.generic[OFS_PARM0] = realtime - sv.pausedstart;
- PRVM_ExecuteProgram(prog->funcoffsets.SV_PausedTic, "QC function SV_PausedTic is missing");
+ PRVM_ExecuteProgram(PRVM_serverfunction(SV_PausedTic), "QC function SV_PausedTic is missing");
}
// end the server VM frame
if (cls.state != ca_dedicated && (cl_timer > 0 || cls.timedemo || ((vid_activewindow ? cl_maxfps : cl_maxidlefps).value < 1)))
{
R_TimeReport("---");
+ Collision_Cache_NewFrame();
+ R_TimeReport("collisioncache");
// decide the simulation time
if (cls.capturevideo.active)
{