X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;ds=inline;f=csprogs.c;h=5a241863c8710636429f47a018ad38118e9887f6;hb=34095f2249f53ba2a4db8d084f9c76a3fc38d6ce;hp=e072a038091b9d396f6461e1743b7d5dc8851ac9;hpb=67ab9245fa2db46a04df8d9e88e6bd3e7aa84dd5;p=xonotic%2Fdarkplaces.git diff --git a/csprogs.c b/csprogs.c index e072a038..5a241863 100644 --- a/csprogs.c +++ b/csprogs.c @@ -109,7 +109,7 @@ void CSQC_Think (prvm_edict_t *ed) 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; @@ -128,14 +128,14 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed) 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; @@ -184,14 +184,12 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed) // 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 @@ -203,6 +201,8 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed) && !(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; }