mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
Remove the goto in RenderDecal::Render!
This commit is contained in:
parent
5f38b15635
commit
fe40ad200e
2 changed files with 10 additions and 14 deletions
|
@ -59,7 +59,7 @@ namespace swrenderer
|
|||
// = 1: drawing masked textures (including sprites)
|
||||
// Currently, only pass = 0 is done or used
|
||||
|
||||
void RenderDecal::Render(side_t *wall, DBaseDecal *decal, DrawSegment *clipper, int wallshade, float lightleft, float lightstep, seg_t *curline, FWallCoords WallC, bool foggy, FDynamicColormap *basecolormap, const short *walltop, const short *wallbottom, int pass)
|
||||
void RenderDecal::Render(side_t *wall, DBaseDecal *decal, DrawSegment *clipper, int wallshade, float lightleft, float lightstep, seg_t *curline, const FWallCoords &savecoord, bool foggy, FDynamicColormap *basecolormap, const short *walltop, const short *wallbottom, int pass)
|
||||
{
|
||||
DVector2 decal_left, decal_right, decal_pos;
|
||||
int x1, x2;
|
||||
|
@ -130,8 +130,6 @@ namespace swrenderer
|
|||
// to a wall, we use the wall's angle instead of the decal's. This is
|
||||
// pretty much the same as what R_AddLine() does.
|
||||
|
||||
FWallCoords savecoord = WallC;
|
||||
|
||||
double edge_right = WallSpriteTile->GetWidth();
|
||||
double edge_left = WallSpriteTile->LeftOffset;
|
||||
edge_right = (edge_right - edge_left) * decal->ScaleX;
|
||||
|
@ -150,14 +148,15 @@ namespace swrenderer
|
|||
CameraLight *cameraLight;
|
||||
double texturemid;
|
||||
|
||||
FWallCoords WallC;
|
||||
if (WallC.Init(decal_left, decal_right, TOO_CLOSE_Z))
|
||||
goto done;
|
||||
return;
|
||||
|
||||
x1 = WallC.sx1;
|
||||
x2 = WallC.sx2;
|
||||
|
||||
if (x1 >= clipper->x2 || x2 <= clipper->x1)
|
||||
goto done;
|
||||
return;
|
||||
|
||||
FWallTmapVals WallT;
|
||||
WallT.InitFromWallCoords(&WallC);
|
||||
|
@ -170,7 +169,7 @@ namespace swrenderer
|
|||
{
|
||||
if (pass != 0)
|
||||
{
|
||||
goto done;
|
||||
return;
|
||||
}
|
||||
mceilingclip = walltop;
|
||||
mfloorclip = wallbottom;
|
||||
|
@ -191,7 +190,7 @@ namespace swrenderer
|
|||
case RF_CLIPUPPER:
|
||||
if (pass != 0)
|
||||
{
|
||||
goto done;
|
||||
return;
|
||||
}
|
||||
mceilingclip = walltop;
|
||||
mfloorclip = RenderOpaquePass::Instance()->ceilingclip;
|
||||
|
@ -200,7 +199,7 @@ namespace swrenderer
|
|||
case RF_CLIPMID:
|
||||
if (curline->backsector != NULL && pass != 2)
|
||||
{
|
||||
goto done;
|
||||
return;
|
||||
}
|
||||
mceilingclip = clipper->sprtopclip - clipper->x1;
|
||||
mfloorclip = clipper->sprbottomclip - clipper->x1;
|
||||
|
@ -209,7 +208,7 @@ namespace swrenderer
|
|||
case RF_CLIPLOWER:
|
||||
if (pass != 0)
|
||||
{
|
||||
goto done;
|
||||
return;
|
||||
}
|
||||
mceilingclip = RenderOpaquePass::Instance()->floorclip;
|
||||
mfloorclip = wallbottom;
|
||||
|
@ -224,7 +223,7 @@ namespace swrenderer
|
|||
x2 = MIN<int>(clipper->x2, x2);
|
||||
if (x1 >= x2)
|
||||
{
|
||||
goto done;
|
||||
return;
|
||||
}
|
||||
|
||||
ProjectedWallTexcoords walltexcoords;
|
||||
|
@ -311,9 +310,6 @@ namespace swrenderer
|
|||
mceilingclip = RenderOpaquePass::Instance()->floorclip;
|
||||
mfloorclip = wallbottom;
|
||||
} while (needrepeat--);
|
||||
|
||||
done:
|
||||
WallC = savecoord;
|
||||
}
|
||||
|
||||
void RenderDecal::DrawColumn(DrawerStyle &drawerstyle, int x, FTexture *WallSpriteTile, const ProjectedWallTexcoords &walltexcoords, double texturemid, float maskedScaleY, bool sprflipvert, const short *mfloorclip, const short *mceilingclip)
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace swrenderer
|
|||
static void RenderDecals(side_t *wall, DrawSegment *draw_segment, int wallshade, float lightleft, float lightstep, seg_t *curline, const FWallCoords &wallC, bool foggy, FDynamicColormap *basecolormap, const short *walltop, const short *wallbottom);
|
||||
|
||||
private:
|
||||
static void Render(side_t *wall, DBaseDecal *first, DrawSegment *clipper, int wallshade, float lightleft, float lightstep, seg_t *curline, FWallCoords wallC, bool foggy, FDynamicColormap *basecolormap, const short *walltop, const short *wallbottom, int pass);
|
||||
static void Render(side_t *wall, DBaseDecal *first, DrawSegment *clipper, int wallshade, float lightleft, float lightstep, seg_t *curline, const FWallCoords &wallC, bool foggy, FDynamicColormap *basecolormap, const short *walltop, const short *wallbottom, int pass);
|
||||
static void DrawColumn(DrawerStyle &drawerstyle, int x, FTexture *WallSpriteTile, const ProjectedWallTexcoords &walltexcoords, double texturemid, float maskedScaleY, bool sprflipvert, const short *mfloorclip, const short *mceilingclip);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue