diff --git a/src/polyrenderer/scene/poly_playersprite.cpp b/src/polyrenderer/scene/poly_playersprite.cpp index ded5a55b3..5baa7bda3 100644 --- a/src/polyrenderer/scene/poly_playersprite.cpp +++ b/src/polyrenderer/scene/poly_playersprite.cpp @@ -139,18 +139,22 @@ void RenderPolyPlayerSprites::RenderSprite(DPSprite *sprite, AActor *owner, floa sy += wy; } + double pspritexscale = centerxwide / 160.0; + double pspriteyscale = pspritexscale * swrenderer::YaspectMul; + double pspritexiscale = 1 / pspritexscale; + // calculate edges of the shape double tx = sx - BaseXCenter; tx -= tex->GetScaledLeftOffset(); - int x1 = xs_RoundToInt(swrenderer::CenterX + tx * swrenderer::pspritexscale); + int x1 = xs_RoundToInt(swrenderer::CenterX + tx * pspritexscale); // off the right side if (x1 > viewwidth) return; tx += tex->GetScaledWidth(); - int x2 = xs_RoundToInt(swrenderer::CenterX + tx * swrenderer::pspritexscale); + int x2 = xs_RoundToInt(swrenderer::CenterX + tx * pspritexscale); // off the left side if (x2 <= 0) @@ -183,19 +187,19 @@ void RenderPolyPlayerSprites::RenderSprite(DPSprite *sprite, AActor *owner, floa int clipped_x1 = MAX(x1, 0); int clipped_x2 = MIN(x2, viewwidth); - double xscale = swrenderer::pspritexscale / tex->Scale.X; - double yscale = swrenderer::pspriteyscale / tex->Scale.Y; + double xscale = pspritexscale / tex->Scale.X; + double yscale = pspriteyscale / tex->Scale.Y; uint32_t translation = 0; // [RH] Use default colors double xiscale, startfrac; if (flip) { - xiscale = -swrenderer::pspritexiscale * tex->Scale.X; + xiscale = -pspritexiscale * tex->Scale.X; startfrac = 1; } else { - xiscale = swrenderer::pspritexiscale * tex->Scale.X; + xiscale = pspritexiscale * tex->Scale.X; startfrac = 0; } diff --git a/src/swrenderer/r_main.cpp b/src/swrenderer/r_main.cpp index 71031486a..771653fff 100644 --- a/src/swrenderer/r_main.cpp +++ b/src/swrenderer/r_main.cpp @@ -68,6 +68,7 @@ #include "version.h" #include "c_console.h" #include "r_memory.h" +#include "swrenderer/things/r_playersprite.h" CVAR (String, r_viewsize, "", CVAR_NOSET) CVAR (Bool, r_shadercolormaps, true, CVAR_ARCHIVE) @@ -345,9 +346,7 @@ void R_SWRSetWindow(int windowSize, int fullWidth, int fullHeight, int stHeight, WallTMapScale2 = IYaspectMul / CenterX; // psprite scales - pspritexscale = centerxwide / 160.0; - pspriteyscale = pspritexscale * YaspectMul; - pspritexiscale = 1 / pspritexscale; + R_SetupPlayerSpriteScale(); // thing clipping fillshort (screenheightarray, viewwidth, (short)viewheight); diff --git a/src/swrenderer/scene/r_things.cpp b/src/swrenderer/scene/r_things.cpp index c91120c7f..c6b7ef90f 100644 --- a/src/swrenderer/scene/r_things.cpp +++ b/src/swrenderer/scene/r_things.cpp @@ -85,9 +85,6 @@ namespace swrenderer // This is not the same as the angle, // which increases counter clockwise (protractor). // -double pspritexscale; -double pspritexiscale; -double pspriteyscale; fixed_t sky1scale; // [RH] Sky 1 scale factor fixed_t sky2scale; // [RH] Sky 2 scale factor diff --git a/src/swrenderer/scene/r_things.h b/src/swrenderer/scene/r_things.h index f0d9c098a..ae7acce45 100644 --- a/src/swrenderer/scene/r_things.h +++ b/src/swrenderer/scene/r_things.h @@ -38,10 +38,6 @@ EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor); namespace swrenderer { -extern double pspritexscale; -extern double pspritexiscale; -extern double pspriteyscale; - extern FTexture *WallSpriteTile; extern int spriteshade; diff --git a/src/swrenderer/things/r_playersprite.cpp b/src/swrenderer/things/r_playersprite.cpp index 0af6c0421..bd4556577 100644 --- a/src/swrenderer/things/r_playersprite.cpp +++ b/src/swrenderer/things/r_playersprite.cpp @@ -74,6 +74,17 @@ namespace swrenderer TArray vispsprites; unsigned int vispspindex; + + double pspritexscale; + double pspritexiscale; + double pspriteyscale; + } + + void R_SetupPlayerSpriteScale() + { + pspritexscale = centerxwide / 160.0; + pspriteyscale = pspritexscale * YaspectMul; + pspritexiscale = 1 / pspritexscale; } void R_DrawPlayerSprites() diff --git a/src/swrenderer/things/r_playersprite.h b/src/swrenderer/things/r_playersprite.h index 4569a5436..68e174654 100644 --- a/src/swrenderer/things/r_playersprite.h +++ b/src/swrenderer/things/r_playersprite.h @@ -17,6 +17,8 @@ namespace swrenderer { + void R_SetupPlayerSpriteScale(); + void R_DrawPlayerSprites(); void R_DrawPSprite(DPSprite *pspr, AActor *owner, float bobx, float boby, double wx, double wy, double ticfrac); void R_DrawRemainingPlayerSprites();