]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_main.c
curl: longer URLs
[xonotic/darkplaces.git] / cl_main.c
index 6078183b617a5d98762dfbac84a650e801b3dd82..39f46ab2399d1ab501395088ce46f653a351da59 100644 (file)
--- a/cl_main.c
+++ b/cl_main.c
@@ -95,11 +95,14 @@ CL_ClearState
 
 =====================
 */
+void CL_VM_ShutDown (void);
 void CL_ClearState(void)
 {
        int i;
        entity_t *ent;
 
+       CL_VM_ShutDown();
+
 // wipe the entire cl structure
        Mem_EmptyPool(cls.levelmempool);
        memset (&cl, 0, sizeof(cl));
@@ -281,7 +284,6 @@ void CL_ExpandEntities(int num)
        }
 }
 
-void CL_VM_ShutDown (void);
 /*
 =====================
 CL_Disconnect
@@ -302,6 +304,8 @@ void CL_Disconnect(void)
 
        Con_DPrintf("CL_Disconnect\n");
 
+    Cvar_SetValueQuick(&csqc_progcrc, -1);
+       Cvar_SetValueQuick(&csqc_progsize, -1);
        CL_VM_ShutDown();
 // stop sounds (especially looping!)
        S_StopAllSounds ();
@@ -488,7 +492,7 @@ static void CL_UpdateRenderEntity_Lighting(entity_render_t *ent)
        vec3_t tempdiffusenormal;
 
        // fetch the lighting from the worldmodel data
-       VectorSet(ent->modellight_ambient, r_ambient.value * (2.0f / 128.0f), r_ambient.value * (2.0f / 128.0f), r_ambient.value * (2.0f / 128.0f));
+       VectorSet(ent->modellight_ambient, r_refdef.scene.ambient * (2.0f / 128.0f), r_refdef.scene.ambient * (2.0f / 128.0f), r_refdef.scene.ambient * (2.0f / 128.0f));
        VectorClear(ent->modellight_diffuse);
        VectorClear(tempdiffusenormal);
        if ((ent->flags & RENDER_LIGHT) && cl.worldmodel && cl.worldmodel->brush.LightPoint)
@@ -513,7 +517,7 @@ void CL_UpdateRenderEntity(entity_render_t *ent)
 {
        vec3_t org;
        vec_t scale;
-       model_t *model = ent->model;
+       dp_model_t *model = ent->model;
        // update the inverse matrix for the renderer
        Matrix4x4_Invert_Simple(&ent->inversematrix, &ent->matrix);
        // update the animation blend state
@@ -864,7 +868,7 @@ void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolat
        int j, k, l, frame;
        float origin[3], angles[3], delta[3], lerp, d;
        entity_t *t;
-       model_t *model;
+       dp_model_t *model;
        //entity_persistent_t *p = &e->persistent;
        //entity_render_t *r = &e->render;
        // skip inactive entities and world
@@ -877,7 +881,10 @@ void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolat
        e->render.flags = e->state_current.flags;
        e->render.effects = e->state_current.effects;
        VectorScale(e->state_current.colormod, (1.0f / 32.0f), e->render.colormod);
-       e->render.entitynumber = e - cl.entities;
+       if(e >= cl.entities && e < cl.entities + cl.num_entities)
+               e->render.entitynumber = e - cl.entities;
+       else
+               e->render.entitynumber = 0;
        if (e->state_current.flags & RENDER_COLORMAPPED)
                CL_SetEntityColormapColors(&e->render, e->state_current.colormap);
        else if (e->state_current.colormap > 0 && e->state_current.colormap <= cl.maxclients && cl.scores != NULL)
@@ -946,11 +953,7 @@ void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolat
                interpolate = false;
        if (e == cl.entities + cl.playerentity && cl.movement_predicted && (!cl.fixangle[1] || !cl.fixangle[0]))
        {
-               lerp = (cl.time - cl.movement_time[2]) / (cl.movement_time[0] - cl.movement_time[1]);
-               lerp = bound(0, lerp, 1);
-               if (!interpolate)
-                       lerp = 1;
-               VectorLerp(cl.movement_oldorigin, lerp, cl.movement_origin, origin);
+               VectorCopy(cl.movement_origin, origin);
                VectorSet(angles, 0, cl.viewangles[1], 0);
        }
        else if (interpolate && e->persistent.lerpdeltatime > 0 && (lerp = (cl.time - e->persistent.lerpstarttime) / e->persistent.lerpdeltatime) < 1)
@@ -1992,7 +1995,7 @@ void CL_Locs_Save_f(void)
        FS_StripExtension(cl.worldmodel->name, locfilename, sizeof(locfilename));
        strlcat(locfilename, ".loc", sizeof(locfilename));
 
-       outfile = FS_Open(locfilename, "w", false, false);
+       outfile = FS_OpenRealFile(locfilename, "w", false);
        if (!outfile)
                return;
        // if any boxes are used then this is a proquake-format loc file, which
@@ -2216,7 +2219,7 @@ void CL_Init (void)
        r_refdef.scene.maxentities = MAX_EDICTS + 256 + 512;
        r_refdef.scene.entities = (entity_render_t **)Mem_Alloc(cls.permanentmempool, sizeof(entity_render_t *) * r_refdef.scene.maxentities);
 
-       r_refdef.scene.maxtempentities = 512;
+       r_refdef.scene.maxtempentities = 4096; // FIXME: make this grow
        r_refdef.scene.tempentities = (entity_render_t *)Mem_Alloc(cls.permanentmempool, sizeof(entity_render_t) * r_refdef.scene.maxtempentities);
 
        CL_InitInput ();