extern cvar_t cl_noplayershadow;
qboolean CSQC_AddRenderEdict(prvm_edict_t *ed)
{
- int i, renderflags;
+ int renderflags;
float scale;
prvm_eval_t *val;
entity_t *e;
e->render.colormap = (int)ed->fields.client->colormap;
e->render.frame = (int)ed->fields.client->frame;
e->render.skinnum = (int)ed->fields.client->skin;
- e->render.effects |= e->render.model->flags2 & (EF_FULLBRIGHT | EF_ADDITIVE);
+ e->render.effects |= e->render.model->effects;
scale = 1;
renderflags = 0;
if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.renderflags)) && val->_float) renderflags = (int)val->_float;
if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.alpha)) && val->_float) e->render.alpha = val->_float;
if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.scale)) && val->_float) e->render.scale = scale = val->_float;
if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.colormod)) && VectorLength2(val->vector)) VectorCopy(val->vector, e->render.colormod);
- if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.effects)) && val->_float) e->render.effects = (int)val->_float;
+ if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.effects)) && val->_float) e->render.effects |= (int)val->_float;
if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.tag_entity)) && val->edict)
{
int tagentity;
// make the other useful stuff
CL_UpdateRenderEntity(&e->render);
- i = 0;
- if((val = PRVM_EDICTFIELDVALUE(ed, prog->fieldoffsets.renderflags)) && val->_float)
+ if(renderflags)
{
- i = (int)val->_float;
- if(i & RF_VIEWMODEL) e->render.flags |= RENDER_VIEWMODEL;
- if(i & RF_EXTERNALMODEL)e->render.flags |= RENDER_EXTERIORMODEL;
- if(i & RF_DEPTHHACK) e->render.effects |= EF_NODEPTHTEST;
- if(i & RF_ADDITIVE) e->render.effects |= EF_ADDITIVE;
+ if(renderflags & RF_VIEWMODEL) e->render.flags |= RENDER_VIEWMODEL;
+ if(renderflags & RF_EXTERNALMODEL)e->render.flags |= RENDER_EXTERIORMODEL;
+ if(renderflags & RF_DEPTHHACK) e->render.effects |= EF_NODEPTHTEST;
+ if(renderflags & RF_ADDITIVE) e->render.effects |= EF_ADDITIVE;
}
// either fullbright or lit
&& !(e->render.flags & RENDER_VIEWMODEL)
&& (!(e->render.flags & RENDER_EXTERIORMODEL) || (!cl.intermission && cls.protocol != PROTOCOL_NEHAHRAMOVIE && !cl_noplayershadow.integer)))
e->render.flags |= RENDER_SHADOW;
+ if (e->render.flags & RENDER_VIEWMODEL)
+ e->render.flags |= RENDER_NOSELFSHADOW;
return true;
}