From 70d900264e558b601d9d07d6e1313eae220e8a31 Mon Sep 17 00:00:00 2001 From: NepDisk <16447892+NepDisk@users.noreply.github.com> Date: Sat, 24 Aug 2024 15:25:46 -0400 Subject: [PATCH] Revert Merge branch sprite-brightmaps into master This reverts commit ce47997a1000689bd153d095a8c262ef5dd6b672. --- src/lua_infolib.c | 64 ++++++++--------------------------------- src/lua_libs.h | 1 - src/r_picformats.c | 17 ++--------- src/r_picformats.h | 2 -- src/r_things.c | 71 ++++++++++++---------------------------------- src/r_things.h | 1 - 6 files changed, 33 insertions(+), 123 deletions(-) diff --git a/src/lua_infolib.c b/src/lua_infolib.c index 25241f66f..555bf3196 100644 --- a/src/lua_infolib.c +++ b/src/lua_infolib.c @@ -268,20 +268,6 @@ static UINT8 GetPivotFrame(lua_State *L, int idx) return frame; } -static int PushCast(lua_State *L, const char *meta) -{ - // bypass LUA_PushUserdata - void **userdata = lua_newuserdata(L, sizeof(void *)); - - *userdata = lua_touserdata(L, 1); - - luaL_getmetatable(L, meta); - lua_setmetatable(L, -2); - - // stack is left with the userdata on top, as if getting it had originally succeeded. - return 1; -} - // spriteinfo[] static int lib_getSpriteInfo(lua_State *L) { @@ -470,15 +456,23 @@ static int lib_spriteinfolen(lua_State *L) // spriteinfo_t static int spriteinfo_get(lua_State *L) { + spriteinfo_t *sprinfo = *((spriteinfo_t **)luaL_checkudata(L, 1, META_SPRITEINFO)); const char *field = luaL_checkstring(L, 2); - luaL_checkudata(L, 1, META_SPRITEINFO); + I_Assert(sprinfo != NULL); // push spriteframepivot_t userdata if (fastcmp(field, "pivot")) - return PushCast(L, META_PIVOTLIST); - else if (fastcmp(field, "brightmap")) - return PushCast(L, META_SPRITEBRIGHTLIST); + { + // bypass LUA_PushUserdata + void **userdata = lua_newuserdata(L, sizeof(void *)); + *userdata = sprinfo; + luaL_getmetatable(L, META_PIVOTLIST); + lua_setmetatable(L, -2); + + // stack is left with the userdata on top, as if getting it had originally succeeded. + return 1; + } else return luaL_error(L, LUA_QL("spriteinfo_t") " has no field named " LUA_QS, field); @@ -648,29 +642,6 @@ static int framepivot_num(lua_State *L) return 1; } -static int brightlist_get(lua_State *L) -{ - const spriteinfo_t *sprinfo = *((spriteinfo_t **)luaL_checkudata(L, 1, META_SPRITEBRIGHTLIST)); - const UINT8 frame = GetPivotFrame(L, 2); - - lua_pushstring(L, sprinfo->bright[frame]); - - return 1; -} - -static int brightlist_set(lua_State *L) -{ - spriteinfo_t *sprinfo = *((spriteinfo_t **)luaL_checkudata(L, 1, META_SPRITEBRIGHTLIST)); - - const UINT8 frame = GetPivotFrame(L, 2); - const char *val = luaL_checkstring(L, 3); - - Z_Free(sprinfo->bright[frame]); - sprinfo->bright[frame] = Z_StrDup(val); - - return 0; -} - //////////////// // STATE INFO // //////////////// @@ -2125,17 +2096,6 @@ int LUA_InfoLib(lua_State *L) lua_setfield(L, -2, "__len"); lua_pop(L, 1); - luaL_newmetatable(L, META_SPRITEBRIGHTLIST); - lua_pushcfunction(L, brightlist_get); - lua_setfield(L, -2, "__index"); - - lua_pushcfunction(L, brightlist_set); - lua_setfield(L, -2, "__newindex"); - - lua_pushcfunction(L, pivotlist_num); - lua_setfield(L, -2, "__len"); - lua_pop(L, 1); - luaL_newmetatable(L, META_PRECIPPROPS); lua_pushcfunction(L, precipprops_get); lua_setfield(L, -2, "__index"); diff --git a/src/lua_libs.h b/src/lua_libs.h index 6a28e85fa..0cc818739 100644 --- a/src/lua_libs.h +++ b/src/lua_libs.h @@ -28,7 +28,6 @@ extern lua_State *gL; #define META_SPRITEINFO "SPRITEINFO_T*" #define META_PIVOTLIST "SPRITEFRAMEPIVOT_T[]" #define META_FRAMEPIVOT "SPRITEFRAMEPIVOT_T*" -#define META_SPRITEBRIGHTLIST "SPRITEBRIGHTMAP_T[]" #define META_PRECIPPROPS "PRECIPPROPS_T*" #define META_TAGLIST "TAGLIST" diff --git a/src/r_picformats.c b/src/r_picformats.c index f8e3d3ca5..1f39ae42c 100644 --- a/src/r_picformats.c +++ b/src/r_picformats.c @@ -1474,10 +1474,9 @@ static void R_ParseSpriteInfoFrame(struct ParseSpriteInfoState *parser, boolean size_t sprinfoTokenLength; char *frameChar = NULL; UINT8 frameFrame = 0xFF; - INT16 frameXPivot = INT16_MIN; - INT16 frameYPivot = INT16_MIN; + INT16 frameXPivot = 0; + INT16 frameYPivot = 0; rotaxis_t frameRotAxis = 0; - char *bright = NULL; if (all) { @@ -1542,11 +1541,6 @@ static void R_ParseSpriteInfoFrame(struct ParseSpriteInfoState *parser, boolean else if ((stricmp(sprinfoToken, "Z")==0) || (stricmp(sprinfoToken, "ZAXIS")==0) || (stricmp(sprinfoToken, "YAW")==0)) frameRotAxis = ROTAXIS_Z; } - else if (stricmp(sprinfoToken, "BRIGHTMAP")==0) - { - Z_Free(bright); - bright = M_GetToken(NULL); - } Z_Free(sprinfoToken); sprinfoToken = M_GetToken(NULL); @@ -1563,13 +1557,8 @@ static void R_ParseSpriteInfoFrame(struct ParseSpriteInfoState *parser, boolean parser->info->pivot[frameFrame].x = frameXPivot; parser->info->pivot[frameFrame].y = frameYPivot; parser->info->pivot[frameFrame].rotaxis = frameRotAxis; - Z_Free(parser->info->bright[frameFrame]); - parser->info->bright[frameFrame] = bright; - if (frameXPivot != INT16_MIN || frameYPivot != INT16_MIN) - { - set_bit_array(parser->info->available, frameFrame); - } + set_bit_array(parser->info->available, frameFrame); if (parser->spr2) { diff --git a/src/r_picformats.h b/src/r_picformats.h index 9e6913b7b..700424814 100644 --- a/src/r_picformats.h +++ b/src/r_picformats.h @@ -103,8 +103,6 @@ typedef struct spriteframepivot_t pivot[64 + 1]; #define SPRINFO_DEFAULT_PIVOT (64) UINT8 available[BIT_ARRAY_SIZE(64 + 1)]; // 1 extra for default_pivot - - char *bright[64 + 1]; // brightmap lump name } spriteinfo_t; // Portable Network Graphics diff --git a/src/r_things.c b/src/r_things.c index d296a30a8..02b16f44d 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -849,13 +849,12 @@ UINT8 *R_GetSpriteTranslation(vissprite_t *vis) // static void R_DrawVisSprite(vissprite_t *vis) { - column_t *column, *bmcol = NULL; + column_t *column; void (*localcolfunc)(column_t *, column_t *, INT32); INT32 texturecolumn; INT32 pwidth; fixed_t frac; patch_t *patch = vis->patch; - patch_t *bmpatch = vis->bright; fixed_t this_scale = vis->thingscale; INT32 x1, x2; INT64 overflow_test; @@ -876,13 +875,6 @@ static void R_DrawVisSprite(vissprite_t *vis) if ((UINT64)overflow_test&0xFFFFFFFF80000000ULL) return; // ditto } - // Prevent an out of bounds error - if (bmpatch && (bmpatch->width != patch->width || - bmpatch->height != patch->height)) - { - return; - } - R_SetColumnFunc(BASEDRAWFUNC, false); // hack: this isn't resetting properly somewhere. dc_colormap = vis->colormap; dc_fullbright = colormaps; @@ -1017,10 +1009,7 @@ static void R_DrawVisSprite(vissprite_t *vis) column = (column_t *)((UINT8 *)patch->columns + (patch->columnofs[texturecolumn])); - if (bmpatch) - bmcol = (column_t *)((UINT8 *)bmpatch->columns + (bmpatch->columnofs[texturecolumn])); - - localcolfunc (column, bmcol, baseclip); + localcolfunc (column, NULL, baseclip); } } else if (vis->cut & SC_SHEAR) @@ -1032,18 +1021,17 @@ static void R_DrawVisSprite(vissprite_t *vis) // Vertically sheared sprite for (dc_x = vis->x1; dc_x <= vis->x2; dc_x++, frac += vis->xiscale, dc_texturemid -= vis->shear.tan) { - texturecolumn = frac>>FRACBITS; - #ifdef RANGECHECK + texturecolumn = frac>>FRACBITS; if (texturecolumn < 0 || texturecolumn >= pwidth) I_Error("R_DrawSpriteRange: bad texturecolumn at %d from end", vis->x2 - dc_x); -#endif column = (column_t *)((UINT8 *)patch->columns + (patch->columnofs[texturecolumn])); - if (bmpatch) - bmcol = (column_t *)((UINT8 *)bmpatch->columns + (bmpatch->columnofs[texturecolumn])); +#else + column = (column_t *)((UINT8 *)patch->columns + (patch->columnofs[frac>>FRACBITS])); +#endif sprtopscreen = (centeryfrac - FixedMul(dc_texturemid, spryscale)); - localcolfunc (column, bmcol, baseclip); + localcolfunc (column, NULL, baseclip); } } else @@ -1055,18 +1043,15 @@ static void R_DrawVisSprite(vissprite_t *vis) // Non-paper drawing loop for (dc_x = vis->x1; dc_x <= vis->x2; dc_x++, frac += vis->xiscale, sprtopscreen += vis->shear.tan) { - texturecolumn = frac>>FRACBITS; - #ifdef RANGECHECK + texturecolumn = frac>>FRACBITS; if (texturecolumn < 0 || texturecolumn >= pwidth) I_Error("R_DrawSpriteRange: bad texturecolumn at %d from end", vis->x2 - dc_x); -#endif column = (column_t *)((UINT8 *)patch->columns + (patch->columnofs[texturecolumn])); - - if (bmpatch) - bmcol = (column_t *)((UINT8 *)bmpatch->columns + (bmpatch->columnofs[texturecolumn])); - - localcolfunc (column, bmcol, baseclip); +#else + column = (column_t *)((UINT8 *)patch->columns + (patch->columnofs[frac>>FRACBITS])); +#endif + localcolfunc (column, NULL, baseclip); } } @@ -1081,7 +1066,9 @@ static void R_DrawVisSprite(vissprite_t *vis) static void R_DrawPrecipitationVisSprite(vissprite_t *vis) { column_t *column; +#ifdef RANGECHECK INT32 texturecolumn; +#endif fixed_t frac; patch_t *patch; fixed_t this_scale = vis->thingscale; @@ -1128,15 +1115,16 @@ static void R_DrawPrecipitationVisSprite(vissprite_t *vis) for (dc_x = vis->x1; dc_x <= vis->x2; dc_x++, frac += vis->xiscale) { +#ifdef RANGECHECK texturecolumn = frac>>FRACBITS; -#ifdef RANGECHECK if (texturecolumn < 0 || texturecolumn >= patch->width) I_Error("R_DrawPrecipitationSpriteRange: bad texturecolumn"); -#endif column = (column_t *)((UINT8 *)patch->columns + (patch->columnofs[texturecolumn])); - +#else + column = (column_t *)((UINT8 *)patch->columns + (patch->columnofs[frac>>FRACBITS])); +#endif R_DrawMaskedColumn(column, NULL, -1); } @@ -1223,25 +1211,6 @@ static void R_SplitSprite(vissprite_t *sprite) } } -static patch_t *R_CacheSpriteBrightMap(const spriteinfo_t *sprinfo, UINT8 frame) -{ - const char *name = sprinfo->bright[frame]; - - if (name == NULL) - { - name = sprinfo->bright[SPRINFO_DEFAULT_PIVOT]; - } - - const lumpnum_t num = W_CheckNumForLongName(name); - - if (num == LUMPERROR) - { - return NULL; - } - - return W_CachePatchNum(num, PU_SPRITE); -} - // // R_GetShadowZ(thing, shadowslope) // Get the first visible floor below the object for shadows @@ -1418,7 +1387,6 @@ static void R_ProjectDropShadow( shadow = R_NewVisSprite(); shadow->patch = patch; - shadow->bright = NULL; shadow->heightsec = vis->heightsec; shadow->mobjflags = 0; @@ -2323,7 +2291,6 @@ static void R_ProjectSprite(mobj_t *thing) vis->cut |= SC_SPLAT; // I like ya cut g vis->patch = patch; - vis->bright = R_CacheSpriteBrightMap(sprinfo, frame); if (thing->subsector->sector->numlights && !(shadowdraw || splat)) R_SplitSprite(vis); @@ -2513,8 +2480,6 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing) //Fab: lumppat is the lump number of the patch to use, this is different // than lumpid for sprites-in-pwad : the graphics are patched vis->patch = W_CachePatchNum(sprframe->lumppat[0], PU_SPRITE); - vis->bright = R_CacheSpriteBrightMap(&spriteinfo[thing->sprite], - thing->frame & FF_FRAMEMASK); vis->transmap = R_GetBlendTable(blendmode, trans); diff --git a/src/r_things.h b/src/r_things.h index 7b77c0901..789e7aab8 100644 --- a/src/r_things.h +++ b/src/r_things.h @@ -188,7 +188,6 @@ typedef struct vissprite_s fixed_t texturemid; patch_t *patch; - patch_t *bright; lighttable_t *colormap; // for color translation and shadow draw // maxbright frames as well