cvar_t cl_shownet = {0, "cl_shownet","0"};
cvar_t cl_nolerp = {0, "cl_nolerp", "0"};
-cvar_t cl_itembobheight = {0, "cl_itembobheight", "8"};
+cvar_t cl_itembobheight = {0, "cl_itembobheight", "0"}; // try 8
cvar_t cl_itembobspeed = {0, "cl_itembobspeed", "0.5"};
cvar_t lookspring = {CVAR_SAVE, "lookspring","0"};
cvar_t cl_explosions_lifetime = {CVAR_SAVE, "cl_explosions_lifetime", "0.5"};
cvar_t cl_stainmaps = {CVAR_SAVE, "cl_stainmaps", "1"};
-cvar_t cl_stainmapsclearonload = {CVAR_SAVE, "cl_stainmapsclearonload", "0"};
+cvar_t cl_stainmaps_clearonload = {CVAR_SAVE, "cl_stainmaps_clearonload", "1"};
cvar_t cl_beams_polygons = {CVAR_SAVE, "cl_beams_polygons", "1"};
cvar_t cl_beams_relative = {CVAR_SAVE, "cl_beams_relative", "1"};
// wipe the entire cl structure
memset (&cl, 0, sizeof(cl));
// reset the view zoom interpolation
- cl.viewzoomold = cl.viewzoomnew = 1;
+ cl.mviewzoom[0] = cl.mviewzoom[1] = 1;
SZ_Clear (&cls.message);
CL_Disconnect();
NetConn_ClientFrame();
NetConn_ServerFrame();
-
+
if (LHNETADDRESS_FromString(&cls.connect_address, host, 26000) && (cls.connect_mysocket = NetConn_ChooseClientSocketForAddress(&cls.connect_address)))
{
cls.connect_trying = true;
e->render.flags |= t->render.flags & RENDER_EXTERIORMODEL;
// if a valid tagindex is used, make it relative to that tag instead
// FIXME: use a model function to get tag info (need to handle skeletal)
- if (e->state_current.tagentity && e->state_current.tagindex >= 1 && (model = t->render.model) && e->state_current.tagindex <= t->render.model->alias.aliasnum_tags)
+ if (e->state_current.tagentity && e->state_current.tagindex >= 1 && (model = t->render.model))
{
// blend the matrices
memset(&blendmatrix, 0, sizeof(blendmatrix));
for (j = 0;j < 4 && t->render.frameblend[j].lerp > 0;j++)
{
- matrix = &t->render.model->alias.aliasdata_tags[t->render.frameblend[j].frame * t->render.model->alias.aliasnum_tags + (e->state_current.tagindex - 1)].matrix;
+ matrix4x4_t tagmatrix;
+ Mod_Alias_GetTagMatrix(model, t->render.frameblend[j].frame, e->state_current.tagindex - 1, &tagmatrix);
d = t->render.frameblend[j].lerp;
for (l = 0;l < 4;l++)
for (k = 0;k < 4;k++)
- blendmatrix.m[l][k] += d * matrix->m[l][k];
+ blendmatrix.m[l][k] += d * tagmatrix.m[l][k];
}
// concat the tag matrices onto the entity matrix
Matrix4x4_Concat(&tempmatrix, &t->render.matrix, &blendmatrix);
origin[2] += (cos(cl.time * cl_itembobspeed.value * (2.0 * M_PI)) + 1.0) * 0.5 * cl_itembobheight.value;
}
// transfer certain model flags to effects
- if (e->render.model->flags2 & EF_FULLBRIGHT)
- e->render.effects |= EF_FULLBRIGHT;
+ e->render.effects |= e->render.model->flags2 & (EF_FULLBRIGHT | EF_ADDITIVE);
if (cl_prydoncursor.integer && (e->render.effects & EF_SELECTABLE) && cl.cmd.cursor_entitynumber == e - cl_entities)
VectorScale(e->render.colormod, 2, e->render.colormod);
}
// start on the entity after the world
entitylinkframenumber++;
- for (i = 1, ent = cl_entities + 1;i < MAX_EDICTS;i++, ent++)
+ for (i = 1;i < MAX_EDICTS;i++)
{
if (cl_entities_active[i])
{
+ ent = cl_entities + i;
if (ent->state_current.active)
CL_LinkNetworkEntity(ent);
else
int i;
float d;
- cl.viewzoom = cl.viewzoomold + frac * (cl.viewzoomnew - cl.viewzoomold);
-
+ cl.viewzoom = cl.mviewzoom[1] + frac * (cl.mviewzoom[0] - cl.mviewzoom[1]);
for (i = 0;i < 3;i++)
+ {
+ cl.punchangle[i] = cl.mpunchangle[1][i] + frac * (cl.mpunchangle[0][i] - cl.mpunchangle[1][i]);
+ cl.punchvector[i] = cl.mpunchvector[1][i] + frac * (cl.mpunchvector[0][i] - cl.mpunchvector[1][i]);
cl.velocity[i] = cl.mvelocity[1][i] + frac * (cl.mvelocity[0][i] - cl.mvelocity[1][i]);
+ }
if (cls.demoplayback)
{
Con_Printf("%f seconds (%f fps)\n", timedelta, 128/timedelta);
}
+/*
+===========
+CL_Shutdown
+===========
+*/
+void CL_Shutdown (void)
+{
+ CL_CGVM_Shutdown();
+ CL_Particles_Shutdown();
+ CL_Parse_Shutdown();
+
+ SZ_Free (&cls.message);
+
+ Mem_FreePool (&cl_entities_mempool);
+ Mem_FreePool (&cl_refdef_mempool);
+}
+
/*
=================
CL_Init
Cvar_RegisterVariable(&cl_explosions_size_end);
Cvar_RegisterVariable(&cl_explosions_lifetime);
Cvar_RegisterVariable(&cl_stainmaps);
- Cvar_RegisterVariable(&cl_stainmapsclearonload);
+ Cvar_RegisterVariable(&cl_stainmaps_clearonload);
Cvar_RegisterVariable(&cl_beams_polygons);
Cvar_RegisterVariable(&cl_beams_relative);
Cvar_RegisterVariable(&cl_beams_lightatend);