]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_main.c
Dot crosshair is now a tad bigger (and centred properly)
[xonotic/darkplaces.git] / sv_main.c
index 54194b68376187dda51a91c79e9dff731a9d5884..3a72466d6b6f21c22a3793e31e0cdf10e1ce03ed 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -72,6 +72,7 @@ void SV_Init (void)
        Cvar_RegisterVariable (&sv_edgefriction);
        Cvar_RegisterVariable (&sv_stopspeed);
        Cvar_RegisterVariable (&sv_maxspeed);
+       Cvar_RegisterVariable (&sv_maxairspeed);
        Cvar_RegisterVariable (&sv_accelerate);
        Cvar_RegisterVariable (&sv_idealpitchscale);
        Cvar_RegisterVariable (&sv_aim);
@@ -110,7 +111,7 @@ static void SV_SaveEntFile_f(void)
                return;
        }
        FS_StripExtension(sv.worldmodel->name, basename, sizeof(basename));
-       FS_WriteFile(va("%s.ent", basename), sv.worldmodel->brush.entities, strlen(sv.worldmodel->brush.entities));
+       FS_WriteFile(va("%s.ent", basename), sv.worldmodel->brush.entities, (fs_offset_t)strlen(sv.worldmodel->brush.entities));
 }
 
 
@@ -483,7 +484,8 @@ void SV_PrepareEntitiesForSending(void)
        for (e = 1, ent = PRVM_NEXT_EDICT(prog->edicts);e < prog->num_edicts;e++, ent = PRVM_NEXT_EDICT(ent))
        {
                sendentitiesindex[e] = NULL;
-               if (ent->priv.server->free)
+               // the 2 billion unit check is actually to detect NAN origins (we really don't want to send those)
+               if (ent->priv.server->free || VectorLength2(ent->fields.server->origin) > 2000000000.0*2000000000.0)
                        continue;
 
                cs = defaultstate;
@@ -1678,6 +1680,8 @@ void SV_SpawnServer (const char *server)
 
        memset (&sv, 0, sizeof(sv));
 
+       sv.active = true;
+
        strlcpy (sv.name, server, sizeof (sv.name));
 
        sv.protocol = Protocol_EnumForName(sv_protocolname.string);
@@ -1803,12 +1807,15 @@ void SV_SpawnServer (const char *server)
        // LordHavoc: clear world angles (to fix e3m3.bsp)
        VectorClear(prog->edicts->fields.server->angles);
 
-       sv.active = true;
-
 // all setup is completed, any further precache statements are errors
        sv.state = ss_active;
        prog->allowworldwrites = false;
 
+       // we need to reset the spawned flag on all connected clients here so that
+       // their thinks don't run during startup (before PutClientInServer)
+       for (i = 0, host_client = svs.clients;i < svs.maxclients;i++, host_client++)
+               host_client->spawned = false;
+
 // run two frames to allow everything to settle
        for (i = 0;i < 2;i++)
        {