]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_main.c
Mem_AllocPool flags and parent parameters added, now there can be multiple temporary...
[xonotic/darkplaces.git] / sv_main.c
index 259eff80c6bb260f70b0cff85817c8b97eeb92a6..736cee1fdd6e9be7245a5e8b3d0eb082ad128ddd 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -26,6 +26,12 @@ static cvar_t sv_cullentities_trace = {0, "sv_cullentities_trace", "0"}; // tend
 static cvar_t sv_cullentities_stats = {0, "sv_cullentities_stats", "0"};
 static cvar_t sv_entpatch = {0, "sv_entpatch", "1"};
 
+cvar_t sv_gameplayfix_grenadebouncedownslopes = {0, "sv_gameplayfix_grenadebouncedownslopes", "1"};
+cvar_t sv_gameplayfix_noairborncorpse = {0, "sv_gameplayfix_noairborncorpse", "1"};
+cvar_t sv_gameplayfix_stepdown = {0, "sv_gameplayfix_stepdown", "1"};
+cvar_t sv_gameplayfix_stepwhilejumping = {0, "sv_gameplayfix_stepwhilejumping", "1"};
+cvar_t sv_gameplayfix_swiminbmodels = {0, "sv_gameplayfix_swiminbmodels", "1"};
+
 server_t sv;
 server_static_t svs;
 
@@ -64,6 +70,11 @@ void SV_Init (void)
        Cvar_RegisterVariable (&sv_cullentities_trace);
        Cvar_RegisterVariable (&sv_cullentities_stats);
        Cvar_RegisterVariable (&sv_entpatch);
+       Cvar_RegisterVariable (&sv_gameplayfix_grenadebouncedownslopes);
+       Cvar_RegisterVariable (&sv_gameplayfix_noairborncorpse);
+       Cvar_RegisterVariable (&sv_gameplayfix_stepdown);
+       Cvar_RegisterVariable (&sv_gameplayfix_stepwhilejumping);
+       Cvar_RegisterVariable (&sv_gameplayfix_swiminbmodels);
 
        SV_Phys_Init();
        SV_World_Init();
@@ -71,7 +82,7 @@ void SV_Init (void)
        for (i = 0;i < MAX_MODELS;i++)
                sprintf (localmodels[i], "*%i", i);
 
-       sv_edicts_mempool = Mem_AllocPool("server edicts");
+       sv_edicts_mempool = Mem_AllocPool("server edicts", 0, NULL);
 }
 
 static void SV_SaveEntFile_f(void)
@@ -959,9 +970,9 @@ void SV_MarkWriteEntityStateToClient(entity_state_t *s)
                        lightmins[0] = min(entmins[0], s->origin[0] - s->specialvisibilityradius);
                        lightmins[1] = min(entmins[1], s->origin[1] - s->specialvisibilityradius);
                        lightmins[2] = min(entmins[2], s->origin[2] - s->specialvisibilityradius);
-                       lightmaxs[0] = min(entmaxs[0], s->origin[0] + s->specialvisibilityradius);
-                       lightmaxs[1] = min(entmaxs[1], s->origin[1] + s->specialvisibilityradius);
-                       lightmaxs[2] = min(entmaxs[2], s->origin[2] + s->specialvisibilityradius);
+                       lightmaxs[0] = max(entmaxs[0], s->origin[0] + s->specialvisibilityradius);
+                       lightmaxs[1] = max(entmaxs[1], s->origin[1] + s->specialvisibilityradius);
+                       lightmaxs[2] = max(entmaxs[2], s->origin[2] + s->specialvisibilityradius);
                        sv_writeentitiestoclient_totalentities++;
                        // if not touching a visible leaf
                        if (sv_cullentities_pvs.integer && sv_writeentitiestoclient_pvsbytes && sv.worldmodel && sv.worldmodel->brush.BoxTouchingPVS && !sv.worldmodel->brush.BoxTouchingPVS(sv.worldmodel, sv_writeentitiestoclient_pvs, lightmins, lightmaxs))
@@ -1090,7 +1101,7 @@ void SV_WriteEntitiesToClient(client_t *client, edict_t *clent, sizebuf_t *msg)
        MSG_WriteLong(msg, d->currentcommit->framenum);
        if (developer_networkentities.integer >= 1)
        {
-               Con_Printf("send svc_entities ref:%i num:%i (database: ref:%i commits:", d->referenceframenum, d->currentcommit->framenum, d->referenceframenum);
+               Con_Printf("send svc_entities num:%i ref:%i (database: ref:%i commits:", d->currentcommit->framenum, d->referenceframenum, d->referenceframenum);
                for (i = 0;i < MAX_ENTITY_HISTORY;i++)
                        if (d->commit[i].numentities)
                                Con_Printf(" %i", d->commit[i].framenum);
@@ -1123,11 +1134,11 @@ void SV_WriteEntitiesToClient(client_t *client, edict_t *clent, sizebuf_t *msg)
                        if (s->exteriormodelforclient && s->exteriormodelforclient == sv_writeentitiestoclient_clentnum)
                        {
                                s->flags |= RENDER_EXTERIORMODEL;
-                               EntityState_Write(s, &buf, e);
+                               EntityState_WriteUpdate(s, &buf, e);
                                s->flags &= ~RENDER_EXTERIORMODEL;
                        }
                        else
-                               EntityState_Write(s, &buf, e);
+                               EntityState_WriteUpdate(s, &buf, e);
                }
                else
                {