X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=cl_main.c;h=7e8d834bd573d177b02fc86211ee79396a3d9e9a;hb=6148e497eca98a1816ff1bd9d890c06c04fd2b16;hp=d0a1010af7b442e4669790b5b41009b45704a11a;hpb=46cfccb1fef9095b35d4f6c37876a178361e3174;p=xonotic%2Fdarkplaces.git diff --git a/cl_main.c b/cl_main.c index d0a1010a..7e8d834b 100644 --- a/cl_main.c +++ b/cl_main.c @@ -89,21 +89,20 @@ cvar_t cl_locs_show = {0, "locs_show", "0", "shows defined locations for editing client_static_t cls; client_state_t cl; -#define MAX_PARTICLES 32768 // default max # of particles at one time -#define MAX_DECALS 32768 // default max # of decals at one time -#define ABSOLUTE_MIN_PARTICLES 512 // no fewer than this no matter what's on the command line - /* ===================== 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)); @@ -134,19 +133,10 @@ void CL_ClearState(void) cl.max_dlights = MAX_DLIGHTS; cl.max_lightstyle = MAX_LIGHTSTYLES; cl.max_brushmodel_entities = MAX_EDICTS; - cl.max_particles = MAX_PARTICLES; - cl.max_decals = MAX_DECALS; + cl.max_particles = 8192; // grows dynamically + cl.max_decals = 2048; // grows dynamically cl.max_showlmps = 0; -// COMMANDLINEOPTION: Client: -particles changes maximum number of particles at once, default 32768 - i = COM_CheckParm ("-particles"); - if (i && i < com_argc - 1) - { - cl.max_particles = (int)(atoi(com_argv[i+1])); - if (cl.max_particles < ABSOLUTE_MIN_PARTICLES) - cl.max_particles = ABSOLUTE_MIN_PARTICLES; - } - cl.num_dlights = 0; cl.num_effects = 0; cl.num_beams = 0; @@ -294,7 +284,6 @@ void CL_ExpandEntities(int num) } } -void CL_VM_ShutDown (void); /* ===================== CL_Disconnect @@ -315,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 (); @@ -501,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) @@ -526,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 @@ -877,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 @@ -959,11 +950,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) @@ -1766,6 +1753,7 @@ void CL_UpdateWorld(void) r_refdef.scene.numentities = 0; r_refdef.scene.numlights = 0; r_refdef.view.matrix = identitymatrix; + r_refdef.view.quality = 1; cl.num_brushmodel_entities = 0; @@ -1801,10 +1789,7 @@ void CL_UpdateWorld(void) CL_RelinkLightFlashes(); CSQC_RelinkAllEntities(ENTMASK_ENGINE | ENTMASK_ENGINEVIEWMODELS); - // move decals, particles, and any other effects - CL_MoveDecals(); - CL_MoveParticles(); - R_MoveExplosions(); + // decals, particles, and explosions will be updated during rneder } r_refdef.scene.time = cl.time; @@ -1869,6 +1854,7 @@ static void CL_TimeRefresh_f (void) for (i = 0;i < 128;i++) { Matrix4x4_CreateFromQuakeEntity(&r_refdef.view.matrix, r_refdef.view.origin[0], r_refdef.view.origin[1], r_refdef.view.origin[2], 0, i / 128.0 * 360.0, 0, 1); + r_refdef.view.quality = 1; CL_UpdateScreen(); } timedelta = Sys_DoubleTime() - timestart; @@ -2230,7 +2216,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 ();