ent->render.alpha = 1;
ent->render.flags = RENDER_SHADOW | RENDER_LIGHT;
Matrix4x4_CreateFromQuakeEntity(&ent->render.matrix, 0, 0, 0, 0, 0, 0, 1);
+ ent->render.allowdecals = true;
CL_UpdateRenderEntity(&ent->render);
// noclip is turned off at start
{
const matrix4x4_t *matrix;
matrix4x4_t blendmatrix, tempmatrix, matrix2;
- int j, k, l, frame;
- float origin[3], angles[3], lerp, d;
+ int frame;
+ float origin[3], angles[3], lerp;
entity_t *t;
- dp_model_t *model;
//entity_persistent_t *p = &e->persistent;
//entity_render_t *r = &e->render;
// skip inactive entities and world
e->render.flags |= t->render.flags & (RENDER_EXTERIORMODEL | RENDER_VIEWMODEL);
// 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))
+ if (e->state_current.tagentity && e->state_current.tagindex >= 1 && t->render.model)
{
- // blend the matrices
- memset(&blendmatrix, 0, sizeof(blendmatrix));
- for (j = 0;j < MAX_FRAMEBLENDS && t->render.frameblend[j].lerp > 0;j++)
+ if(!CL_BlendTagMatrix(&t->render, e->state_current.tagindex - 1, &blendmatrix)) // i.e. no error
{
- matrix4x4_t tagmatrix;
- Mod_Alias_GetTagMatrix(model, t->render.frameblend[j].subframe, 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 * tagmatrix.m[l][k];
+ // concat the tag matrices onto the entity matrix
+ Matrix4x4_Concat(&tempmatrix, &t->render.matrix, &blendmatrix);
+ // use the constructed tag matrix
+ matrix = &tempmatrix;
}
- // concat the tag matrices onto the entity matrix
- Matrix4x4_Concat(&tempmatrix, &t->render.matrix, &blendmatrix);
- // use the constructed tag matrix
- matrix = &tempmatrix;
}
}
else if (e->render.flags & RENDER_VIEWMODEL)
e->render.flags |= RENDER_DOUBLESIDED;
// make the other useful stuff
+ e->render.allowdecals = true;
CL_UpdateRenderEntity(&e->render);
}
}
}
+extern void R_DecalSystem_Reset(decalsystem_t *decalsystem);
+
/*
===============
CL_UpdateNetworkEntities
CL_UpdateNetworkEntityTrail(ent);
}
else
+ {
+ R_DecalSystem_Reset(&ent->render.decalsystem);
cl.entities_active[i] = false;
+ }
}
}
}
ent->render.flags |= RENDER_LIGHT;
VectorSet(ent->render.colormod, 1, 1, 1);
VectorSet(ent->render.glowmod, 1, 1, 1);
+ ent->render.allowdecals = true;
CL_UpdateRenderEntity(&ent->render);
r_refdef.scene.worldentity = &ent->render;
r_refdef.scene.worldmodel = cl.worldmodel;
VectorSet(e->render.colormod, 1, 1, 1);
VectorSet(e->render.glowmod, 1, 1, 1);
R_LerpAnimation(&e->render);
+ e->render.allowdecals = true;
CL_UpdateRenderEntity(&e->render);
r_refdef.scene.entities[r_refdef.scene.numentities++] = &e->render;
}
Con_Printf("\"fog\" is \"%f %f %f %f %f %f %f %f %f\"\n", r_refdef.fog_density, r_refdef.fog_red, r_refdef.fog_green, r_refdef.fog_blue, r_refdef.fog_alpha, r_refdef.fog_start, r_refdef.fog_end, r_refdef.fog_height, r_refdef.fog_fadedepth);
return;
}
- r_refdef.fog_start = 0;
- r_refdef.fog_end = 16384;
- r_refdef.fog_alpha = 1;
+ FOG_clear(); // so missing values get good defaults
if(Cmd_Argc() > 1)
r_refdef.fog_density = atof(Cmd_Argv(1));
if(Cmd_Argc() > 2)