mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-27 04:41:23 +00:00
Change upper/lower textures to not skew by default, add new linedef flags on normal linedefs:
Effect 1: Restore skewing on upper/lower textures Effect 2: Disable skewing on midtextures Effect 3: Flips effect of Lower Unpegged for midtextures only (Effect 3 w/o LU: midtexture sticks to bottom, bottom texture sticks to upper edge. Effect 3 w/ LU: midtexture sticks to top, bottom texture sticks to lower edge.)
This commit is contained in:
parent
7e13cb8b47
commit
2183912100
1 changed files with 42 additions and 4 deletions
46
src/r_segs.c
46
src/r_segs.c
|
@ -512,7 +512,7 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
|||
#ifdef ESLOPE
|
||||
dc_texturemid = ds->maskedtextureheight[dc_x];
|
||||
|
||||
if (curline->linedef->flags & ML_DONTPEGBOTTOM)
|
||||
if (!!(curline->linedef->flags & ML_DONTPEGBOTTOM) ^ !!(curline->linedef->flags & ML_EFFECT3))
|
||||
dc_texturemid += (textureheight[texnum])*times + textureheight[texnum];
|
||||
else
|
||||
dc_texturemid -= (textureheight[texnum])*times;
|
||||
|
@ -1379,7 +1379,7 @@ static void R_RenderSegLoop (void)
|
|||
|
||||
#ifdef ESLOPE
|
||||
if (maskedtextureheight != NULL) {
|
||||
maskedtextureheight[rw_x] = (curline->linedef->flags & ML_DONTPEGBOTTOM ?
|
||||
maskedtextureheight[rw_x] = (!!(curline->linedef->flags & ML_DONTPEGBOTTOM) ^ !!(curline->linedef->flags & ML_EFFECT3) ?
|
||||
max(rw_midtexturemid, rw_midtextureback) :
|
||||
min(rw_midtexturemid, rw_midtextureback));
|
||||
}
|
||||
|
@ -1672,7 +1672,14 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
midtexture = texturetranslation[sidedef->midtexture];
|
||||
// a single sided line is terminal, so it must mark ends
|
||||
markfloor = markceiling = true;
|
||||
|
||||
#ifdef ESLOPE
|
||||
if (!(linedef->flags & ML_EFFECT1)) {
|
||||
if (linedef->flags & ML_DONTPEGBOTTOM)
|
||||
rw_midtexturemid = frontsector->floorheight + textureheight[sidedef->midtexture] - viewz;
|
||||
else
|
||||
rw_midtexturemid = frontsector->ceilingheight;
|
||||
}
|
||||
#endif
|
||||
if (linedef->flags & ML_DONTPEGBOTTOM)
|
||||
{
|
||||
#ifdef ESLOPE
|
||||
|
@ -1912,6 +1919,14 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
if (!toptexture) //Second side has no texture, use the first side's instead.
|
||||
toptexture = texturetranslation[sidedef->toptexture];
|
||||
|
||||
#ifdef ESLOPE
|
||||
if (!(linedef->flags & ML_EFFECT1)) { // Ignore slopes for lower/upper textures unless flag is checked
|
||||
if (linedef->flags & ML_DONTPEGTOP)
|
||||
rw_toptexturemid = frontsector->ceilingheight - viewz;
|
||||
else
|
||||
rw_toptexturemid = backsector->ceilingheight - viewz;
|
||||
} else
|
||||
#endif
|
||||
if (linedef->flags & ML_DONTPEGTOP)
|
||||
{
|
||||
// top of texture at top
|
||||
|
@ -1936,6 +1951,14 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
{
|
||||
toptexture = texturetranslation[sidedef->toptexture];
|
||||
|
||||
#ifdef ESLOPE
|
||||
if (!(linedef->flags & ML_EFFECT1)) { // Ignore slopes for lower/upper textures unless flag is checked
|
||||
if (linedef->flags & ML_DONTPEGTOP)
|
||||
rw_toptexturemid = frontsector->ceilingheight - viewz;
|
||||
else
|
||||
rw_toptexturemid = backsector->ceilingheight - viewz;
|
||||
} else
|
||||
#endif
|
||||
if (linedef->flags & ML_DONTPEGTOP)
|
||||
{
|
||||
// top of texture at top
|
||||
|
@ -1967,6 +1990,14 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
// bottom texture
|
||||
bottomtexture = texturetranslation[sidedef->bottomtexture];
|
||||
|
||||
#ifdef ESLOPE
|
||||
if (!(linedef->flags & ML_EFFECT1)) { // Ignore slopes for lower/upper textures unless flag is checked
|
||||
if (linedef->flags & ML_DONTPEGBOTTOM)
|
||||
rw_bottomtexturemid = frontsector->floorheight - viewz;
|
||||
else
|
||||
rw_bottomtexturemid = backsector->floorheight - viewz;
|
||||
} else
|
||||
#endif
|
||||
if (linedef->flags & ML_DONTPEGBOTTOM)
|
||||
{
|
||||
// bottom of texture at bottom
|
||||
|
@ -2150,7 +2181,14 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
maskedtextureheight = &(ds_p->maskedtextureheight[0]); // ????
|
||||
|
||||
// Set midtexture starting height
|
||||
if (linedef->flags & ML_DONTPEGBOTTOM) {
|
||||
if (linedef->flags & ML_EFFECT2) { // Ignore slopes when texturing
|
||||
rw_midtextureslide = rw_midtexturebackslide = 0;
|
||||
if (!!(linedef->flags & ML_DONTPEGBOTTOM) ^ !!(linedef->flags & ML_EFFECT3))
|
||||
rw_midtexturemid = rw_midtextureback = max(frontsector->floorheight, backsector->floorheight) - viewz;
|
||||
else
|
||||
rw_midtexturemid = rw_midtextureback = min(frontsector->ceilingheight, backsector->ceilingheight) - viewz;
|
||||
|
||||
} else if (!!(linedef->flags & ML_DONTPEGBOTTOM) ^ !!(linedef->flags & ML_EFFECT3)) {
|
||||
rw_midtexturemid = worldbottom;
|
||||
rw_midtextureslide = floorfrontslide;
|
||||
rw_midtextureback = worldlow;
|
||||
|
|
Loading…
Reference in a new issue