From 467ec719d18d311777d592c27cb0b2bef5c1f409 Mon Sep 17 00:00:00 2001 From: Fabian Greffrath Date: Fri, 1 Mar 2024 14:24:00 +0100 Subject: [PATCH] render linedef texture instead of sky if flat is missing (#1543) Fixes #1540 --- src/r_data.c | 12 ++++++++---- src/r_defs.h | 2 ++ src/r_plane.c | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/r_data.c b/src/r_data.c index 0d82d235..56f369b7 100644 --- a/src/r_data.c +++ b/src/r_data.c @@ -1048,11 +1048,10 @@ void R_InitData(void) int R_FlatNumForName(const char *name) // killough -- const added { int i = (W_CheckNumForName)(name, ns_flats); - if (i == -1) + if (i == NO_TEXTURE) { - // [FG] render missing flats as SKY I_Printf(VB_WARNING, "R_FlatNumForName: %.8s not found", name); - return skyflatnum; + return i; } return i - firstflat; } @@ -1124,7 +1123,12 @@ void R_PrecacheLevel(void) memset(hitlist, 0, numflats); for (i = numsectors; --i >= 0; ) - hitlist[sectors[i].floorpic] = hitlist[sectors[i].ceilingpic] = 1; + { + if (sectors[i].floorpic > NO_TEXTURE) + hitlist[sectors[i].floorpic] = 1; + if (sectors[i].ceilingpic > NO_TEXTURE) + hitlist[sectors[i].ceilingpic] = 1; + } for (i = numflats; --i >= 0; ) if (hitlist[i]) diff --git a/src/r_defs.h b/src/r_defs.h index 9906c52f..86339cf5 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -41,6 +41,8 @@ struct mobj_s; #define MAXDRAWSEGS 256 +#define NO_TEXTURE (-1) + // // INTERNAL MAP TYPES // used by play and refresh diff --git a/src/r_plane.c b/src/r_plane.c index aabfacb7..37cd1fe6 100644 --- a/src/r_plane.c +++ b/src/r_plane.c @@ -304,6 +304,9 @@ visplane_t *R_FindPlane(fixed_t height, int picnum, int lightlevel, visplane_t *check; unsigned hash; // killough + if (picnum == NO_TEXTURE) + return NULL; + if (picnum == skyflatnum || picnum & PL_SKYFLAT) // killough 10/98 { lightlevel = 0; // killough 7/19/98: most skies map together