]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - csprogs.c
CSQC: propagate automatic RENDER_EXTERIORMODEL inherited from local player ent
[xonotic/darkplaces.git] / csprogs.c
index 5816a3c6f0b7a687d9854220fca0c258465bbe66..726768b6e6c2daa527985d31733b0f3cf38634ca 100644 (file)
--- a/csprogs.c
+++ b/csprogs.c
@@ -373,8 +373,27 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed, int edictnum)
                if(renderflags & RF_ADDITIVE) entrender->flags |= RENDER_ADDITIVE;
        }
 
-       if(edictnum == CL_VM_GetViewEntity())
-               entrender->flags |= RENDER_EXTERIORMODEL;
+       // walk attachments to find RENDER_EXTERIORMODEL status
+       {
+               prvm_edict_t *ent = ed;
+               prvm_edict_t *v = PRVM_EDICT_NUM(CL_VM_GetViewEntity());
+               int attachloop = 0;
+               for(;;)
+               {
+                       if(attachloop >= 256)
+                               break;
+                       if(ent == v)
+                       {
+                               entrender->flags |= RENDER_EXTERIORMODEL;
+                               break;
+                       }
+                       if (PRVM_clientedictedict(ent, tag_entity))
+                               ent = PRVM_EDICT_NUM(PRVM_clientedictedict(ent, tag_entity));
+                       else
+                               break;
+                       attachloop++;
+               }
+       }
 
        c = (int)PRVM_clientedictfloat(ed, colormap);
        if (c <= 0)