diff --git a/src/p_3dmidtex.cpp b/src/p_3dmidtex.cpp index ac6d7aca79..7f934e2f53 100644 --- a/src/p_3dmidtex.cpp +++ b/src/p_3dmidtex.cpp @@ -223,11 +223,12 @@ bool P_GetMidTexturePosition(const line_t *line, int sideno, fixed_t *ptextop, f FTexture * tex= TexMan(texnum); if (!tex) return false; + fixed_t totalscale = FixedMul(side->GetTextureYScale(side_t::mid), tex->yScale); fixed_t y_offset = side->GetTextureYOffset(side_t::mid); - fixed_t textureheight = tex->GetScaledHeight() << FRACBITS; - if (tex->yScale != FRACUNIT && !tex->bWorldPanning) + fixed_t textureheight = tex->GetScaledHeight(totalscale) << FRACBITS; + if (totalscale != FRACUNIT && !tex->bWorldPanning) { - y_offset = FixedDiv(y_offset, tex->yScale); + y_offset = FixedDiv(y_offset, totalscale); } if(line->flags & ML_DONTPEGBOTTOM) diff --git a/src/textures/textures.h b/src/textures/textures.h index fbdce0f5c9..5269799382 100644 --- a/src/textures/textures.h +++ b/src/textures/textures.h @@ -256,6 +256,7 @@ public: int GetScaledWidth () { int foo = (Width << 17) / xScale; return (foo >> 1) + (foo & 1); } int GetScaledHeight () { int foo = (Height << 17) / yScale; return (foo >> 1) + (foo & 1); } + int GetScaledHeight(fixed_t scale) { int foo = (Height << 17) / scale; return (foo >> 1) + (foo & 1); } double GetScaledWidthDouble () { return (Width * 65536.) / xScale; } double GetScaledHeightDouble () { return (Height * 65536.) / yScale; }