mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 23:32:02 +00:00
Split Clear into two functions
This commit is contained in:
parent
e94cb3f114
commit
112085ebff
4 changed files with 23 additions and 25 deletions
|
@ -64,33 +64,30 @@ namespace swrenderer
|
|||
return newplane;
|
||||
}
|
||||
|
||||
void VisiblePlaneList::Clear(bool fullclear)
|
||||
void VisiblePlaneList::Clear()
|
||||
{
|
||||
// Don't clear fake planes if not doing a full clear.
|
||||
if (!fullclear)
|
||||
for (int i = 0; i <= MAXVISPLANES; i++)
|
||||
visplanes[i] = nullptr;
|
||||
}
|
||||
|
||||
void VisiblePlaneList::ClearKeepFakePlanes()
|
||||
{
|
||||
for (int i = 0; i <= MAXVISPLANES - 1; i++)
|
||||
{
|
||||
for (int i = 0; i <= MAXVISPLANES - 1; i++)
|
||||
for (VisiblePlane **probe = &visplanes[i]; *probe != nullptr; )
|
||||
{
|
||||
for (VisiblePlane **probe = &visplanes[i]; *probe != nullptr; )
|
||||
{
|
||||
if ((*probe)->sky < 0)
|
||||
{ // fake: move past it
|
||||
probe = &(*probe)->next;
|
||||
}
|
||||
else
|
||||
{ // not fake: move from list
|
||||
VisiblePlane *vis = *probe;
|
||||
*probe = vis->next;
|
||||
vis->next = nullptr;
|
||||
}
|
||||
if ((*probe)->sky < 0)
|
||||
{ // fake: move past it
|
||||
probe = &(*probe)->next;
|
||||
}
|
||||
else
|
||||
{ // not fake: move from list
|
||||
VisiblePlane *vis = *probe;
|
||||
*probe = vis->next;
|
||||
vis->next = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i <= MAXVISPLANES; i++)
|
||||
visplanes[i] = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
VisiblePlane *VisiblePlaneList::FindPlane(const secplane_t &height, FTextureID picnum, int lightlevel, double Alpha, bool additive, const FTransform &xxform, int sky, FSectorPortal *portal, FDynamicColormap *basecolormap)
|
||||
|
|
|
@ -27,7 +27,8 @@ namespace swrenderer
|
|||
public:
|
||||
static VisiblePlaneList *Instance();
|
||||
|
||||
void Clear(bool fullclear);
|
||||
void Clear();
|
||||
void ClearKeepFakePlanes();
|
||||
|
||||
VisiblePlane *FindPlane(const secplane_t &height, FTextureID picnum, int lightlevel, double Alpha, bool additive, const FTransform &xxform, int sky, FSectorPortal *portal, FDynamicColormap *basecolormap);
|
||||
VisiblePlane *GetRange(VisiblePlane *pl, int start, int stop);
|
||||
|
|
|
@ -165,7 +165,7 @@ namespace swrenderer
|
|||
R_SetViewAngle();
|
||||
validcount++; // Make sure we see all sprites
|
||||
|
||||
planes->Clear(false);
|
||||
planes->ClearKeepFakePlanes();
|
||||
RenderClipSegment::Instance()->Clear(pl->left, pl->right);
|
||||
WindowLeft = pl->left;
|
||||
WindowRight = pl->right;
|
||||
|
@ -408,7 +408,7 @@ namespace swrenderer
|
|||
PortalDrawseg* prevpds = CurrentPortal;
|
||||
CurrentPortal = pds;
|
||||
|
||||
VisiblePlaneList::Instance()->Clear(false);
|
||||
VisiblePlaneList::Instance()->ClearKeepFakePlanes();
|
||||
RenderClipSegment::Instance()->Clear(pds->x1, pds->x2);
|
||||
|
||||
WindowLeft = pds->x1;
|
||||
|
|
|
@ -133,7 +133,7 @@ namespace swrenderer
|
|||
// Clear buffers.
|
||||
RenderClipSegment::Instance()->Clear(0, viewwidth);
|
||||
R_ClearDrawSegs();
|
||||
VisiblePlaneList::Instance()->Clear(true);
|
||||
VisiblePlaneList::Instance()->Clear();
|
||||
RenderTranslucentPass::Clear();
|
||||
|
||||
// opening / clipping determination
|
||||
|
|
Loading…
Reference in a new issue