]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
patch from Spike which implements colormap support on csqc entities
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 17 Jun 2007 07:22:10 +0000 (07:22 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 17 Jun 2007 07:22:10 +0000 (07:22 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7440 d7cf8633-e32d-0410-b094-e92efae38249

csprogs.c

index 6a8b57cd07de9795e7452335fa0388ec4ab45616..fea2b60d7acf6a19845292cacc3d41fe7649fecc 100644 (file)
--- a/csprogs.c
+++ b/csprogs.c
@@ -177,6 +177,28 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed)
                if(renderflags & RF_ADDITIVE)           e->render.effects |= EF_ADDITIVE;
        }
 
+       if ((e->render.colormap > 0 && e->render.colormap <= cl.maxclients) || e->render.colormap >= 1024)
+       {
+               int cb;
+               unsigned char *cbcolor;
+               int palcol;
+               if (e->render.colormap >= 1024)
+                       palcol = (unsigned char)(e->render.colormap-1024);
+               else
+                       palcol = cl.scores[e->render.colormap-1].colors;
+
+               cb = (palcol & 0xF) << 4;cb += (cb >= 128 && cb < 224) ? 4 : 12;
+               cbcolor = (unsigned char *) (&palette_complete[cb]);
+               e->render.colormap_pantscolor[0] = cbcolor[0] * (1.0f / 255.0f);
+               e->render.colormap_pantscolor[1] = cbcolor[1] * (1.0f / 255.0f);
+               e->render.colormap_pantscolor[2] = cbcolor[2] * (1.0f / 255.0f);
+               cb = (palcol & 0xF0);cb += (cb >= 128 && cb < 224) ? 4 : 12;
+               cbcolor = (unsigned char *) (&palette_complete[cb]);
+               e->render.colormap_shirtcolor[0] = cbcolor[0] * (1.0f / 255.0f);
+               e->render.colormap_shirtcolor[1] = cbcolor[1] * (1.0f / 255.0f);
+               e->render.colormap_shirtcolor[2] = cbcolor[2] * (1.0f / 255.0f);
+       }
+
        // either fullbright or lit
        if (!(e->render.effects & EF_FULLBRIGHT) && !r_fullbright.integer)
                e->render.flags |= RENDER_LIGHT;