Skip to content

Commit

Permalink
Split Clear into two functions
Browse files Browse the repository at this point in the history
  • Loading branch information
dpjudas committed Jan 19, 2017
1 parent e94cb3f commit 112085e
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 25 deletions.
39 changes: 18 additions & 21 deletions src/swrenderer/plane/r_visibleplanelist.cpp
Expand Up @@ -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)
Expand Down
3 changes: 2 additions & 1 deletion src/swrenderer/plane/r_visibleplanelist.h
Expand Up @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions src/swrenderer/scene/r_portal.cpp
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/swrenderer/scene/r_scene.cpp
Expand Up @@ -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
Expand Down

0 comments on commit 112085e

Please sign in to comment.