From 10a8c85c1f270905b086a6dff11c4ba12652c4c8 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Mon, 23 Jun 2025 22:21:47 +0200 Subject: [PATCH] Polyobjs can't use the sidedef light list --- src/rendering/hwrenderer/doom_levelmesh.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/rendering/hwrenderer/doom_levelmesh.cpp b/src/rendering/hwrenderer/doom_levelmesh.cpp index b0bcb222e..ee3cbf5fd 100644 --- a/src/rendering/hwrenderer/doom_levelmesh.cpp +++ b/src/rendering/hwrenderer/doom_levelmesh.cpp @@ -1272,16 +1272,21 @@ void DoomLevelMesh::CreateSide(FLevelLocals& doomMap, unsigned int sideIndex) HWMeshHelper result; HWWallDispatcher disp(&doomMap, &result, getRealLightmode(&doomMap, true)); - sideBlock.Lights = CreateLightList(side->lighthead, side->sector->PortalGroup); - if (side->Flags & WALLF_POLYOBJ) { + bool lightlistCreated = false; for (seg_t* polyseg : sideBlock.PolySegs) { // Is there really not a better way of finding the subsector a polyseg resides in? subsector_t* sub = level.PointInRenderSubsector((polyseg->v1->fPos() + polyseg->v2->fPos()) * 0.5); if (sub) { + if (!lightlistCreated) + { + sideBlock.Lights = CreateLightList(sub->section->lighthead, sub->sector->PortalGroup); + lightlistCreated = true; + } + sector_t* front = sub->sector; sector_t* back = polyseg->backsector; @@ -1293,6 +1298,8 @@ void DoomLevelMesh::CreateSide(FLevelLocals& doomMap, unsigned int sideIndex) } else { + sideBlock.Lights = CreateLightList(side->lighthead, side->sector->PortalGroup); + subsector_t* sub = seg->Subsector; sector_t* front = side->sector; sector_t* back = (side->linedef->frontsector == front) ? side->linedef->backsector : side->linedef->frontsector;