mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-24 13:21:20 +00:00
Fix #523
This commit is contained in:
parent
47bcad4ab1
commit
b3418cd685
1 changed files with 26 additions and 6 deletions
|
@ -500,6 +500,20 @@ void P_LineOpening(line_t *linedef, mobj_t *mobj)
|
|||
INT32 texnum = R_GetTextureNum(side->midtexture); // make sure the texture is actually valid
|
||||
|
||||
if (texnum) {
|
||||
fixed_t midopentop, midopenbottom;
|
||||
|
||||
if (linedef->flags & ML_NOSKEW)
|
||||
{
|
||||
// Use the sector's actual heights if the midtexture is not skewed
|
||||
midopentop = min(front->ceilingheight, back->ceilingheight);
|
||||
midopenbottom = max(front->floorheight, back->floorheight);
|
||||
}
|
||||
else
|
||||
{
|
||||
midopentop = opentop;
|
||||
midopenbottom = openbottom;
|
||||
}
|
||||
|
||||
// Get the midtexture's height
|
||||
texheight = textures[texnum]->height << FRACBITS;
|
||||
|
||||
|
@ -522,13 +536,13 @@ void P_LineOpening(line_t *linedef, mobj_t *mobj)
|
|||
#endif
|
||||
{
|
||||
if (linedef->flags & ML_WRAPMIDTEX && !side->repeatcnt) { // "infinite" repeat
|
||||
texbottom = openbottom + side->rowoffset + side->offsety_mid;
|
||||
textop = opentop + side->rowoffset + side->offsety_mid;
|
||||
texbottom = midopenbottom + side->rowoffset + side->offsety_mid;
|
||||
textop = midopentop + side->rowoffset + side->offsety_mid;
|
||||
} else if (linedef->flags & ML_MIDPEG) {
|
||||
texbottom = openbottom + side->rowoffset + side->offsety_mid;
|
||||
texbottom = midopenbottom + side->rowoffset + side->offsety_mid;
|
||||
textop = texbottom + texheight*(side->repeatcnt+1);
|
||||
} else {
|
||||
textop = opentop + side->rowoffset + side->offsety_mid;
|
||||
textop = midopentop + side->rowoffset + side->offsety_mid;
|
||||
texbottom = textop - texheight*(side->repeatcnt+1);
|
||||
}
|
||||
}
|
||||
|
@ -539,11 +553,17 @@ void P_LineOpening(line_t *linedef, mobj_t *mobj)
|
|||
delta2 = abs(thingtop - texmid);
|
||||
|
||||
if (delta1 > delta2) { // Below
|
||||
if (opentop > texbottom)
|
||||
if (opentop > texbottom) {
|
||||
opentop = texbottom;
|
||||
if (linedef->flags & ML_NOSKEW)
|
||||
opentopslope = NULL; // Object is not actually on a slope
|
||||
}
|
||||
} else { // Above
|
||||
if (openbottom < textop)
|
||||
if (openbottom < textop) {
|
||||
openbottom = textop;
|
||||
if (linedef->flags & ML_NOSKEW)
|
||||
openbottomslope = NULL; // Object is not actually on a slope
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue