]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - csprogs.c
make COM_StringLengthNoColors and COM_StringDecolorize get an additional length param...
[xonotic/darkplaces.git] / csprogs.c
index e072a038091b9d396f6461e1743b7d5dc8851ac9..5a241863c8710636429f47a018ad38118e9887f6 100644 (file)
--- 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;
 }