- initialize texture offsets for images on construction.

This commit is contained in:
Christoph Oelckers 2020-04-17 23:50:30 +02:00
parent 61380fc505
commit eb369dbf41
2 changed files with 25 additions and 9 deletions

View file

@ -983,6 +983,30 @@ FWrapperTexture::FWrapperTexture(int w, int h, int bits)
}
FGameTexture::FGameTexture(FTexture* wrap) : Base(wrap)
{
id.SetInvalid();
TexelWidth = Base->GetWidth();
DisplayWidth = (float)TexelWidth;
TexelHeight = Base->GetHeight();
DisplayHeight = (float)TexelHeight;
auto img = Base->GetImage();
if (img)
{
auto ofs = img->GetOffsets();
LeftOffset[0] = LeftOffset[1] = ofs.first;
TopOffset[0] = TopOffset[1] = ofs.second;
}
else
{
LeftOffset[0] = LeftOffset[1] =
TopOffset[0] = TopOffset[1] = 0;
}
ScaleX = ScaleY = 1.f;
}
FGameTexture::~FGameTexture()
{
FGameTexture* link = fileSystem.GetLinkedTexture(GetSourceLump());

View file

@ -569,15 +569,7 @@ class FGameTexture
FMaterial* Material[4] = { };
public:
FGameTexture(FTexture* wrap) : Base(wrap)
{
id.SetInvalid();
TexelWidth = Base->GetWidth();
DisplayWidth = (float)TexelWidth;
TexelHeight = Base->GetHeight();
DisplayHeight = (float)TexelHeight;
ScaleX = ScaleY = 1.f;
}
FGameTexture(FTexture* wrap);
~FGameTexture();
FTextureID GetID() const { return id; }
void SetID(FTextureID newid) { id = newid; } // should only be called by the texture manager