From 9ba4ee478a0ead97729c0a002a3afe3a5ec43e66 Mon Sep 17 00:00:00 2001 From: danij Date: Thu, 10 May 2012 19:24:53 +0100 Subject: [PATCH] Map Renderer|Fixed: HOM in temple4.wad near {x:6864, y:10528} --- doomsday/engine/portable/src/rend_main.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/doomsday/engine/portable/src/rend_main.c b/doomsday/engine/portable/src/rend_main.c index eef92f4478..d9dce46fab 100644 --- a/doomsday/engine/portable/src/rend_main.c +++ b/doomsday/engine/portable/src/rend_main.c @@ -2275,8 +2275,6 @@ static boolean Rend_RenderHEdgeTwosided(HEdge* hedge, BspLeaf* bspLeaf) line->L_frontsector == line->L_backsector) return false; - /// @fixme Most of these cases are now irrelevant and can be removed. - if(!solidSeg) // We'll have to determine whether we can... { if(backSec == frontSec) @@ -2289,9 +2287,25 @@ static boolean Rend_RenderHEdgeTwosided(HEdge* hedge, BspLeaf* bspLeaf) (bfloor->visHeight >= fceil->visHeight && (frontSide->SW_bottommaterial || frontSide->SW_middlematerial))) { - // A closed gap. - solidSeg = true; + // A closed gap? + if(FEQUAL(fceil->visHeight, bfloor->visHeight)) + { + solidSeg = (bceil->visHeight <= bfloor->visHeight) || + !(Surface_IsSkyMasked(&fceil->surface) && + Surface_IsSkyMasked(&bceil->surface)); + } + else if(FEQUAL(ffloor->visHeight, bceil->visHeight)) + { + solidSeg = (bfloor->visHeight >= bceil->visHeight) || + !(Surface_IsSkyMasked(&ffloor->surface) && + Surface_IsSkyMasked(&bfloor->surface)); + } + else + { + solidSeg = true; + } } + /// @todo Is this still necessary? else if(bceil->visHeight <= bfloor->visHeight || (!(bceil->visHeight - bfloor->visHeight > 0) && bfloor->visHeight > ffloor->visHeight && bceil->visHeight < fceil->visHeight && (frontSide->SW_topmaterial /*&& !(frontSide->flags & SDF_MIDTEXUPPER)*/) &&