void FDrawInfo::FloodLowerGap(seg_t * seg) { wallseg ws; sector_t ffake, bfake; sector_t * fakefsector = gl_FakeFlat(seg->frontsector, &ffake, true); sector_t * fakebsector = gl_FakeFlat(seg->backsector, &bfake, false); vertex_t * v1, * v2; // Although the plane can be sloped this code will only be called // when the edge itself is not. fixed_t backz = fakebsector->floorplane.ZatPoint(seg->v1); fixed_t frontz = fakefsector->floorplane.ZatPoint(seg->v1); if (fakebsector->GetTexture(sector_t::floor) == skyflatnum) return; if (fakebsector->GetPlaneTexZ(sector_t::floor) > viewz) return; if (seg->sidedef == seg->linedef->sidedef[0]) { v1=seg->linedef->v1; v2=seg->linedef->v2; } else { v1=seg->linedef->v2; v2=seg->linedef->v1; } ws.x1= FIXED2FLOAT(v1->x); ws.y1= FIXED2FLOAT(v1->y); ws.x2= FIXED2FLOAT(v2->x); ws.y2= FIXED2FLOAT(v2->y); ws.z2= FIXED2FLOAT(frontz); ws.z1= FIXED2FLOAT(backz); // Step1: Draw a stencil into the gap SetupFloodStencil(&ws); // Step2: Project the ceiling plane into the gap DrawFloodedPlane(&ws, ws.z1, fakebsector, false); // Step3: Delete the stencil ClearFloodStencil(&ws); }
void FDrawInfo::FloodLowerGap(seg_t * seg) { wallseg ws; sector_t ffake, bfake; sector_t * fakefsector = hw_FakeFlat(seg->frontsector, &ffake, in_area, true); sector_t * fakebsector = hw_FakeFlat(seg->backsector, &bfake, in_area, false); vertex_t * v1, * v2; // Although the plane can be sloped this code will only be called // when the edge itself is not. double backz = fakebsector->floorplane.ZatPoint(seg->v1); double frontz = fakefsector->floorplane.ZatPoint(seg->v1); if (fakebsector->GetTexture(sector_t::floor) == skyflatnum) return; if (fakebsector->GetPlaneTexZ(sector_t::floor) > Viewpoint.Pos.Z) return; if (seg->sidedef == seg->linedef->sidedef[0]) { v1=seg->linedef->v1; v2=seg->linedef->v2; } else { v1=seg->linedef->v2; v2=seg->linedef->v1; } ws.x1 = v1->fX(); ws.y1 = v1->fY(); ws.x2 = v2->fX(); ws.y2 = v2->fY(); ws.z2= frontz; ws.z1= backz; // Step1: Draw a stencil into the gap SetupFloodStencil(&ws); // Step2: Project the ceiling plane into the gap DrawFloodedPlane(&ws, ws.z1, fakebsector, false); // Step3: Delete the stencil ClearFloodStencil(&ws); }