- removed level references in the software renderers.

This commit is contained in:
Christoph Oelckers 2019-01-27 17:21:36 +01:00
commit 8c542e9be8
31 changed files with 99 additions and 77 deletions

View file

@ -70,6 +70,7 @@ namespace swrenderer
RenderSkyPlane::RenderSkyPlane(RenderThread *thread)
{
Thread = thread;
auto Level = Thread->Viewport->Level();
auto skytex1 = TexMan.GetPalettedTexture(sky1texture, true);
auto skytex2 = TexMan.GetPalettedTexture(sky2texture, true);
@ -87,7 +88,7 @@ namespace swrenderer
}
else if (skyheight > 200)
{
skytexturemid = (200 - skyheight) * sskytex1->GetScale().Y + ((r_skymode == 2 && !(level.flags & LEVEL_FORCETILEDSKY)) ? skytex1->GetSkyOffset() : 0);
skytexturemid = (200 - skyheight) * sskytex1->GetScale().Y + ((r_skymode == 2 && !(Level->flags & LEVEL_FORCETILEDSKY)) ? skytex1->GetSkyOffset() : 0);
}
if (viewwidth != 0 && viewheight != 0)
@ -118,8 +119,9 @@ namespace swrenderer
{
FTextureID sky1tex, sky2tex;
double frontdpos = 0, backdpos = 0;
auto Level = Thread->Viewport->Level();
if ((level.flags & LEVEL_SWAPSKIES) && !(level.flags & LEVEL_DOUBLESKY))
if ((Level->flags & LEVEL_SWAPSKIES) && !(Level->flags & LEVEL_DOUBLESKY))
{
sky1tex = sky2texture;
}
@ -137,7 +139,7 @@ namespace swrenderer
{ // use sky1
sky1:
frontskytex = GetSWTex(sky1tex);
if (level.flags & LEVEL_DOUBLESKY)
if (Level->flags & LEVEL_DOUBLESKY)
backskytex = GetSWTex(sky2tex);
else
backskytex = NULL;
@ -158,7 +160,7 @@ namespace swrenderer
else
{ // MBF's linedef-controlled skies
// Sky Linedef
const line_t *l = &level.lines[(pl->sky & ~PL_SKYFLAT) - 1];
const line_t *l = &Level->lines[(pl->sky & ~PL_SKYFLAT) - 1];
// Sky transferred from first sidedef
const side_t *s = l->sidedef[0];
@ -166,7 +168,7 @@ namespace swrenderer
// Texture comes from upper texture of reference sidedef
// [RH] If swapping skies, then use the lower sidedef
if (level.flags & LEVEL_SWAPSKIES && s->GetTexture(side_t::bottom).isValid())
if (Level->flags & LEVEL_SWAPSKIES && s->GetTexture(side_t::bottom).isValid())
{
pos = side_t::bottom;
}
@ -224,6 +226,7 @@ namespace swrenderer
{
RenderPortal *renderportal = Thread->Portal.get();
auto viewport = Thread->Viewport.get();
auto Level = viewport->Level();
double uv_stepd = skyiscale * yrepeat;
double v = (texturemid + uv_stepd * (y1 - viewport->CenterY + 0.5)) / frontskytex->GetHeight();
@ -256,7 +259,7 @@ namespace swrenderer
drawerargs.SetTextureVPos(uv_pos);
drawerargs.SetDest(viewport, start_x, y1);
drawerargs.SetCount(y2 - y1);
drawerargs.SetFadeSky(r_skymode == 2 && !(level.flags & LEVEL_FORCETILEDSKY));
drawerargs.SetFadeSky(r_skymode == 2 && !(Level->flags & LEVEL_FORCETILEDSKY));
drawerargs.SetSolidTop(frontskytex->GetSkyCapColor(false));
drawerargs.SetSolidBottom(frontskytex->GetSkyCapColor(true));