diff --git a/polymer/eduke32/build/include/build.h b/polymer/eduke32/build/include/build.h index de37e9cde..f7e0ae5f7 100644 --- a/polymer/eduke32/build/include/build.h +++ b/polymer/eduke32/build/include/build.h @@ -148,7 +148,8 @@ typedef struct BPACK // bit 7: 1 = Real centered centering, 0 = foot center "C" // bit 8: 1 = Blocking sprite (use with hitscan / cliptype 1) "H" // bit 9: 1 = Transluscence reversing, 0 = normal "T" -// bits 10-14: reserved +// bits 10-13: reserved +// bit 14: 1 = invisible but casts shadow // bit 15: 1 = Invisible sprite, 0 = not invisible //44 bytes diff --git a/polymer/eduke32/build/src/polymer.c b/polymer/eduke32/build/src/polymer.c index 9c53767d5..d5e03bdde 100644 --- a/polymer/eduke32/build/src/polymer.c +++ b/polymer/eduke32/build/src/polymer.c @@ -952,8 +952,6 @@ void polymer_drawsprite(int32_t snum) spriteplane.material.diffusemodulation[3] *= (1.0f - spriteext[tspr->owner].alpha); - if (tspr->cstat & 16384) spriteplane.material.diffusemodulation[3] = 0.0f; - if (((tspr->cstat>>4) & 3) == 0) xratio = (float)(tspr->xrepeat) * 0.20f; // 32 / 160 else @@ -2994,6 +2992,8 @@ static inline void polymer_scansprites(int16_t sectnum, spritetype* localtsprit (spr->xrepeat > 0) && (spr->yrepeat > 0) && (*localspritesortcnt < MAXSPRITESONSCREEN)) { + if ((spr->cstat & 16384) && (!depth || mirrors[depth-1].plane)) + continue; copybufbyte(spr,&localtsprite[*localspritesortcnt],sizeof(spritetype)); localtsprite[(*localspritesortcnt)++].owner = i; } @@ -3704,7 +3704,6 @@ static void polymer_getbuildmaterial(_prmaterial* material, int16_t tile } } - // PR_BIT_SPECULAR_MAP if (hicfindsubst(tilenum, SPECULARPAL, 0)) {