- everything compiles again.
As a bonus this already fixes several bugs caused by the botched texture scaling implementation the original texture manager came with. System cursors are currently disabled because they rely on functionality that needs to be moved to different classes.
This commit is contained in:
parent
6eab4a882c
commit
a4d61e6fb1
41 changed files with 268 additions and 197 deletions
|
|
@ -72,8 +72,9 @@ EXTERN_CVAR(Bool, gl_light_sprites)
|
|||
|
||||
namespace swrenderer
|
||||
{
|
||||
void RenderSprite::Project(RenderThread *thread, AActor *thing, const DVector3 &pos, FTexture *tex, const DVector2 &spriteScale, int renderflags, WaterFakeSide fakeside, F3DFloor *fakefloor, F3DFloor *fakeceiling, sector_t *current_sector, int spriteshade, bool foggy, FDynamicColormap *basecolormap)
|
||||
void RenderSprite::Project(RenderThread *thread, AActor *thing, const DVector3 &pos, FTexture *ttex, const DVector2 &spriteScale, int renderflags, WaterFakeSide fakeside, F3DFloor *fakefloor, F3DFloor *fakeceiling, sector_t *current_sector, int spriteshade, bool foggy, FDynamicColormap *basecolormap)
|
||||
{
|
||||
FSoftwareTexture *tex = ttex->GetSoftwareTexture();
|
||||
// transform the origin point
|
||||
double tr_x = pos.X - thread->Viewport->viewpoint.Pos.X;
|
||||
double tr_y = pos.Y - thread->Viewport->viewpoint.Pos.Y;
|
||||
|
|
@ -151,7 +152,7 @@ namespace swrenderer
|
|||
renderflags ^= RF_XFLIP;
|
||||
|
||||
// calculate edges of the shape
|
||||
const double thingxscalemul = spriteScale.X / tex->Scale.X;
|
||||
const double thingxscalemul = spriteScale.X / tex->GetScale().X;
|
||||
|
||||
tx -= ((renderflags & RF_XFLIP) ? (tex->GetWidth() - tex->GetLeftOffsetSW() - 1) : tex->GetLeftOffsetSW()) * thingxscalemul;
|
||||
double dtx1 = tx * xscale;
|
||||
|
|
@ -168,10 +169,10 @@ namespace swrenderer
|
|||
if ((x2 < renderportal->WindowLeft || x2 <= x1))
|
||||
return;
|
||||
|
||||
xscale = spriteScale.X * xscale / tex->Scale.X;
|
||||
xscale = spriteScale.X * xscale / tex->GetScale().X;
|
||||
fixed_t iscale = (fixed_t)(FRACUNIT / xscale); // Round towards zero to avoid wrapping in edge cases
|
||||
|
||||
double yscale = spriteScale.Y / tex->Scale.Y;
|
||||
double yscale = spriteScale.Y / tex->GetScale().Y;
|
||||
|
||||
// store information in a vissprite
|
||||
RenderSprite *vis = thread->FrameMemory->NewObject<RenderSprite>();
|
||||
|
|
@ -309,7 +310,7 @@ namespace swrenderer
|
|||
auto vis = this;
|
||||
|
||||
fixed_t frac;
|
||||
FTexture *tex;
|
||||
FSoftwareTexture *tex;
|
||||
int x2;
|
||||
fixed_t xiscale;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue