mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-25 13:41:05 +00:00
- moved most material flags out of FTexture.
This commit is contained in:
parent
d812801707
commit
0a1bd458db
5 changed files with 77 additions and 84 deletions
|
@ -411,13 +411,11 @@ void FFont::ReadSheetFont(TArray<FolderEntry> &folderdata, int width, int height
|
||||||
part[0].Image = tex->GetTexture()->GetImage();
|
part[0].Image = tex->GetTexture()->GetImage();
|
||||||
FMultiPatchTexture *image = new FMultiPatchTexture(width, height, part, false, false);
|
FMultiPatchTexture *image = new FMultiPatchTexture(width, height, part, false, false);
|
||||||
FImageTexture *tex = new FImageTexture(image);
|
FImageTexture *tex = new FImageTexture(image);
|
||||||
tex->bMultiPatch = true;
|
auto gtex = MakeGameTexture(tex, nullptr, ETextureType::FontChar);
|
||||||
tex->bMasked = true;
|
tex->bMasked = true;
|
||||||
tex->bTranslucent = -1;
|
tex->bTranslucent = -1;
|
||||||
tex->bWorldPanning = true;
|
|
||||||
tex->bNoDecals = false;
|
|
||||||
tex->SourceLump = -1; // We do not really care.
|
tex->SourceLump = -1; // We do not really care.
|
||||||
auto gtex = MakeGameTexture(tex, nullptr, ETextureType::FontChar);
|
gtex->SetWorldPanning(true);
|
||||||
gtex->SetOffsets(0, 0, 0);
|
gtex->SetOffsets(0, 0, 0);
|
||||||
gtex->SetOffsets(1, 0, 0);
|
gtex->SetOffsets(1, 0, 0);
|
||||||
gtex->SetScale((float)Scale.X, (float)Scale.Y);
|
gtex->SetScale((float)Scale.X, (float)Scale.Y);
|
||||||
|
|
|
@ -140,6 +140,7 @@ class FMultipatchTextureBuilder
|
||||||
{
|
{
|
||||||
FTextureManager &TexMan;
|
FTextureManager &TexMan;
|
||||||
TArray<BuildInfo> BuiltTextures;
|
TArray<BuildInfo> BuiltTextures;
|
||||||
|
TMap<FTexture*, bool> complex;
|
||||||
void(*progressFunc)();
|
void(*progressFunc)();
|
||||||
void(*checkForHacks)(BuildInfo&);
|
void(*checkForHacks)(BuildInfo&);
|
||||||
|
|
||||||
|
|
|
@ -138,11 +138,9 @@ struct FPatchLookup
|
||||||
void FMultipatchTextureBuilder::MakeTexture(BuildInfo &buildinfo, ETextureType usetype)
|
void FMultipatchTextureBuilder::MakeTexture(BuildInfo &buildinfo, ETextureType usetype)
|
||||||
{
|
{
|
||||||
FImageTexture *tex = new FImageTexture(nullptr);
|
FImageTexture *tex = new FImageTexture(nullptr);
|
||||||
tex->bMultiPatch = true;
|
|
||||||
tex->SetSize(buildinfo.Width, buildinfo.Height);
|
tex->SetSize(buildinfo.Width, buildinfo.Height);
|
||||||
tex->bMasked = true; // we do not really know yet.
|
tex->bMasked = true; // we do not really know yet.
|
||||||
tex->bTranslucent = -1;
|
tex->bTranslucent = -1;
|
||||||
tex->bNoDecals = buildinfo.bNoDecals;
|
|
||||||
tex->SourceLump = buildinfo.DefinitionLump;
|
tex->SourceLump = buildinfo.DefinitionLump;
|
||||||
buildinfo.itex = tex;
|
buildinfo.itex = tex;
|
||||||
buildinfo.texture = MakeGameTexture(tex, buildinfo.Name, usetype);
|
buildinfo.texture = MakeGameTexture(tex, buildinfo.Name, usetype);
|
||||||
|
@ -150,6 +148,7 @@ void FMultipatchTextureBuilder::MakeTexture(BuildInfo &buildinfo, ETextureType u
|
||||||
buildinfo.texture->SetOffsets(1, buildinfo.LeftOffset[1], buildinfo.TopOffset[1]);
|
buildinfo.texture->SetOffsets(1, buildinfo.LeftOffset[1], buildinfo.TopOffset[1]);
|
||||||
buildinfo.texture->SetScale((float)buildinfo.Scale.X, (float)buildinfo.Scale.X);
|
buildinfo.texture->SetScale((float)buildinfo.Scale.X, (float)buildinfo.Scale.X);
|
||||||
buildinfo.texture->SetWorldPanning(buildinfo.bWorldPanning);
|
buildinfo.texture->SetWorldPanning(buildinfo.bWorldPanning);
|
||||||
|
buildinfo.texture->SetNoDecals(buildinfo.bNoDecals);
|
||||||
|
|
||||||
TexMan.AddGameTexture(buildinfo.texture);
|
TexMan.AddGameTexture(buildinfo.texture);
|
||||||
}
|
}
|
||||||
|
@ -778,9 +777,13 @@ void FMultipatchTextureBuilder::ResolvePatches(BuildInfo &buildinfo)
|
||||||
TexMan.ListTextures(buildinfo.Inits[i].TexName, list, true);
|
TexMan.ListTextures(buildinfo.Inits[i].TexName, list, true);
|
||||||
for (int i = list.Size() - 1; i >= 0; i--)
|
for (int i = list.Size() - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (list[i] != buildinfo.texture->GetID() && !TexMan.GetGameTexture(list[i])->isMultiPatch() )
|
if (list[i] != buildinfo.texture->GetID())
|
||||||
{
|
{
|
||||||
texno = list[i];
|
auto gtex = TexMan.GetGameTexture(list[i]);
|
||||||
|
if (gtex && !dynamic_cast<FMultiPatchTexture*>(gtex->GetTexture()))
|
||||||
|
{
|
||||||
|
texno = list[i];
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -813,8 +816,9 @@ void FMultipatchTextureBuilder::ResolvePatches(BuildInfo &buildinfo)
|
||||||
{
|
{
|
||||||
//We cannot set the image source yet. First all textures need to be resolved.
|
//We cannot set the image source yet. First all textures need to be resolved.
|
||||||
buildinfo.Inits[i].Texture = tex->GetTexture();
|
buildinfo.Inits[i].Texture = tex->GetTexture();
|
||||||
buildinfo.itex->bComplex |= tex->GetTexture()->bComplex; // this one's NOT a material property! It must remain on the texture image.
|
bool iscomplex = !!complex.CheckKey(tex->GetTexture());
|
||||||
buildinfo.bComplex |= tex->GetTexture()->bComplex;
|
if (iscomplex) complex.Insert(buildinfo.itex, true);
|
||||||
|
buildinfo.bComplex |= iscomplex;
|
||||||
if (buildinfo.Inits[i].UseOffsets)
|
if (buildinfo.Inits[i].UseOffsets)
|
||||||
{
|
{
|
||||||
buildinfo.Parts[i].OriginX -= tex->GetTexelLeftOffset(0);
|
buildinfo.Parts[i].OriginX -= tex->GetTexelLeftOffset(0);
|
||||||
|
|
|
@ -91,15 +91,10 @@ FTexture * FTexture::CreateTexture(int lumpnum, bool allowflats)
|
||||||
FTexture::FTexture (int lumpnum)
|
FTexture::FTexture (int lumpnum)
|
||||||
:
|
:
|
||||||
SourceLump(lumpnum),
|
SourceLump(lumpnum),
|
||||||
bNoDecals(false), bNoRemap0(false), bWorldPanning(false),
|
bNoRemap0(false), bMasked(true), bAlphaTexture(false), bHasCanvas(false),
|
||||||
bMasked(true), bAlphaTexture(false), bHasCanvas(false), bWarped(0), bComplex(false), bMultiPatch(false), bFullNameTexture(false),
|
|
||||||
Rotations(0xFFFF), SkyOffset(0), Width(0), Height(0)
|
Rotations(0xFFFF), SkyOffset(0), Width(0), Height(0)
|
||||||
{
|
{
|
||||||
bBrightmapChecked = false;
|
bBrightmapChecked = false;
|
||||||
bGlowing = false;
|
|
||||||
bAutoGlowing = false;
|
|
||||||
bFullbright = false;
|
|
||||||
bDisableFullbright = false;
|
|
||||||
bSkybox = false;
|
bSkybox = false;
|
||||||
bNoCompress = false;
|
bNoCompress = false;
|
||||||
bTranslucent = -1;
|
bTranslucent = -1;
|
||||||
|
@ -177,10 +172,10 @@ void FGameTexture::AddAutoMaterials()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int startindex = Base->bFullNameTexture ? 1 : 0;
|
bool fullname = !!(flags & GTexf_FullNameTexture);
|
||||||
FString searchname = GetName();
|
FString searchname = GetName();
|
||||||
|
|
||||||
if (Base->bFullNameTexture)
|
if (fullname)
|
||||||
{
|
{
|
||||||
auto dot = searchname.LastIndexOf('.');
|
auto dot = searchname.LastIndexOf('.');
|
||||||
auto slash = searchname.LastIndexOf('/');
|
auto slash = searchname.LastIndexOf('/');
|
||||||
|
@ -192,7 +187,7 @@ void FGameTexture::AddAutoMaterials()
|
||||||
auto &layer = autosearchpaths[i];
|
auto &layer = autosearchpaths[i];
|
||||||
if (this->*(layer.pointer) == nullptr) // only if no explicit assignment had been done.
|
if (this->*(layer.pointer) == nullptr) // only if no explicit assignment had been done.
|
||||||
{
|
{
|
||||||
FStringf lookup("%s%s%s", layer.path, Base->bFullNameTexture ? "" : "auto/", searchname.GetChars());
|
FStringf lookup("%s%s%s", layer.path, fullname ? "" : "auto/", searchname.GetChars());
|
||||||
auto lump = fileSystem.CheckNumForFullName(lookup, false, ns_global, true);
|
auto lump = fileSystem.CheckNumForFullName(lookup, false, ns_global, true);
|
||||||
if (lump != -1)
|
if (lump != -1)
|
||||||
{
|
{
|
||||||
|
@ -258,19 +253,19 @@ void FGameTexture::CreateDefaultBrightmap()
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void FTexture::GetGlowColor(float *data)
|
void FGameTexture::GetGlowColor(float *data)
|
||||||
{
|
{
|
||||||
if (bGlowing && GlowColor == 0)
|
if (isGlowing() && GlowColor == 0)
|
||||||
{
|
{
|
||||||
auto buffer = GetBgraBitmap(nullptr);
|
auto buffer = Base->GetBgraBitmap(nullptr);
|
||||||
GlowColor = averageColor((uint32_t*)buffer.GetPixels(), buffer.GetWidth() * buffer.GetHeight(), 153);
|
GlowColor = averageColor((uint32_t*)buffer.GetPixels(), buffer.GetWidth() * buffer.GetHeight(), 153);
|
||||||
|
|
||||||
// Black glow equals nothing so switch glowing off
|
// Black glow equals nothing so switch glowing off
|
||||||
if (GlowColor == 0) bGlowing = false;
|
if (GlowColor == 0) flags &= ~GTexf_Glowing;
|
||||||
}
|
}
|
||||||
data[0] = GlowColor.r / 255.0f;
|
data[0] = GlowColor.r * (1/255.0f);
|
||||||
data[1] = GlowColor.g / 255.0f;
|
data[1] = GlowColor.g * (1/255.0f);
|
||||||
data[2] = GlowColor.b / 255.0f;
|
data[2] = GlowColor.b * (1/255.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -614,19 +609,26 @@ TArray<uint8_t> FTexture::Get8BitPixels(bool alphatex)
|
||||||
|
|
||||||
bool FGameTexture::ShouldExpandSprite()
|
bool FGameTexture::ShouldExpandSprite()
|
||||||
{
|
{
|
||||||
if (Base->bExpandSprite != -1) return Base->bExpandSprite;
|
if (expandSprite != -1) return expandSprite;
|
||||||
if (isWarped() || isHardwareCanvas() || GetShaderIndex() != SHADER_Default)
|
// Only applicable to image textures with no shader effect.
|
||||||
|
if (GetShaderIndex() != SHADER_Default || !dynamic_cast<FImageTexture*>(Base.get()))
|
||||||
{
|
{
|
||||||
Base->bExpandSprite = false;
|
expandSprite = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (Brightmap != NULL && (Base->GetWidth() != Brightmap->GetWidth() || Base->GetHeight() != Brightmap->GetHeight()))
|
if (Brightmap != NULL && (Base->GetWidth() != Brightmap->GetWidth() || Base->GetHeight() != Brightmap->GetHeight()))
|
||||||
{
|
{
|
||||||
// do not expand if the brightmap's size differs.
|
// do not expand if the brightmap's physical size differs from the base.
|
||||||
Base->bExpandSprite = false;
|
expandSprite = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Base->bExpandSprite = true;
|
if (Glowmap != NULL && (Base->GetWidth() != Glowmap->GetWidth() || Base->GetHeight() != Glowmap->GetHeight()))
|
||||||
|
{
|
||||||
|
// same restriction for the glow map
|
||||||
|
expandSprite = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
expandSprite = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -251,38 +251,22 @@ protected:
|
||||||
int SourceLump;
|
int SourceLump;
|
||||||
FHardwareTextureContainer SystemTextures;
|
FHardwareTextureContainer SystemTextures;
|
||||||
|
|
||||||
uint8_t bNoDecals : 1; // Decals should not stick to texture
|
|
||||||
uint8_t bNoRemap0 : 1; // Do not remap color 0 (used by front layer of parallax skies)
|
uint8_t bNoRemap0 : 1; // Do not remap color 0 (used by front layer of parallax skies)
|
||||||
uint8_t bWorldPanning : 1; // Texture is panned in world units rather than texels
|
uint8_t bNoCompress : 1;
|
||||||
|
|
||||||
uint8_t bMasked : 1; // Texture (might) have holes
|
uint8_t bMasked : 1; // Texture (might) have holes
|
||||||
uint8_t bAlphaTexture : 1; // Texture is an alpha channel without color information
|
uint8_t bAlphaTexture : 1; // Texture is an alpha channel without color information
|
||||||
uint8_t bHasCanvas : 1; // Texture is based off FCanvasTexture
|
uint8_t bHasCanvas : 1; // Texture is based off FCanvasTexture
|
||||||
uint8_t bWarped : 2; // This is a warped texture. Used to avoid multiple warps on one texture
|
|
||||||
uint8_t bComplex : 1; // Will be used to mark extended MultipatchTextures that have to be
|
|
||||||
// fully composited before subjected to any kind of postprocessing instead of
|
|
||||||
// doing it per patch.
|
|
||||||
uint8_t bMultiPatch : 2; // This is a multipatch texture (we really could use real type info for textures...)
|
|
||||||
uint8_t bFullNameTexture : 1;
|
|
||||||
uint8_t bBrightmapChecked : 1; // Set to 1 if brightmap has been checked
|
uint8_t bBrightmapChecked : 1; // Set to 1 if brightmap has been checked
|
||||||
|
|
||||||
uint8_t bGlowing : 1; // Texture glow color
|
|
||||||
uint8_t bAutoGlowing : 1; // Glow info is determined from texture image.
|
|
||||||
uint8_t bFullbright : 1; // always draw fullbright
|
|
||||||
uint8_t bDisableFullbright : 1; // This texture will not be displayed as fullbright sprite
|
|
||||||
|
|
||||||
uint8_t bSkybox : 1; // is a cubic skybox
|
uint8_t bSkybox : 1; // is a cubic skybox
|
||||||
uint8_t bNoCompress : 1;
|
|
||||||
int8_t bTranslucent : 2;
|
int8_t bTranslucent : 2;
|
||||||
int8_t bExpandSprite = -1;
|
|
||||||
|
|
||||||
uint16_t Rotations;
|
uint16_t Rotations;
|
||||||
int16_t SkyOffset;
|
int16_t SkyOffset;
|
||||||
FloatRect* areas = nullptr;
|
FloatRect* areas = nullptr;
|
||||||
int areacount = 0;
|
int areacount = 0;
|
||||||
|
|
||||||
int GlowHeight = 128;
|
|
||||||
PalEntry GlowColor = 0;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
IHardwareTexture* GetHardwareTexture(int translation, int scaleflags);
|
IHardwareTexture* GetHardwareTexture(int translation, int scaleflags);
|
||||||
|
@ -296,29 +280,17 @@ public:
|
||||||
int GetHeight() { return Height; }
|
int GetHeight() { return Height; }
|
||||||
|
|
||||||
bool isSkybox() const { return bSkybox; }
|
bool isSkybox() const { return bSkybox; }
|
||||||
bool isFullbrightDisabled() const { return bDisableFullbright; }
|
|
||||||
bool isHardwareCanvas() const { return bHasCanvas; } // There's two here so that this can deal with software canvases in the hardware renderer later.
|
bool isHardwareCanvas() const { return bHasCanvas; } // There's two here so that this can deal with software canvases in the hardware renderer later.
|
||||||
bool isCanvas() const { return bHasCanvas; }
|
bool isCanvas() const { return bHasCanvas; }
|
||||||
int isWarped() const { return bWarped; }
|
|
||||||
int GetRotations() const { return Rotations; }
|
int GetRotations() const { return Rotations; }
|
||||||
void SetRotations(int rot) { Rotations = int16_t(rot); }
|
void SetRotations(int rot) { Rotations = int16_t(rot); }
|
||||||
|
|
||||||
void SetNoDecals(bool on) { bNoDecals = on; }
|
|
||||||
void SetWarpStyle(int style) { bWarped = style; }
|
|
||||||
bool allowNoDecals() const { return bNoDecals; }
|
|
||||||
bool isMasked() const { return bMasked; }
|
bool isMasked() const { return bMasked; }
|
||||||
void SetSkyOffset(int offs) { SkyOffset = offs; }
|
void SetSkyOffset(int offs) { SkyOffset = offs; }
|
||||||
int GetSkyOffset() const { return SkyOffset; }
|
int GetSkyOffset() const { return SkyOffset; }
|
||||||
virtual int GetSourceLump() { return SourceLump; } // needed by the scripted GetName method.
|
virtual int GetSourceLump() { return SourceLump; } // needed by the scripted GetName method.
|
||||||
void GetGlowColor(float *data);
|
|
||||||
bool isGlowing() const { return bGlowing; }
|
|
||||||
bool isAutoGlowing() const { return bAutoGlowing; }
|
|
||||||
int GetGlowHeight() const { return GlowHeight; }
|
|
||||||
bool isFullbright() const { return bFullbright; }
|
|
||||||
bool FindHoles(const unsigned char * buffer, int w, int h);
|
bool FindHoles(const unsigned char * buffer, int w, int h);
|
||||||
int GetSourceLump() const { return SourceLump; }
|
int GetSourceLump() const { return SourceLump; }
|
||||||
bool UseWorldPanning() const { return bWorldPanning; }
|
|
||||||
void SetWorldPanning(bool on) { bWorldPanning = on; }
|
|
||||||
|
|
||||||
|
|
||||||
void CopySize(FTexture* BaseTexture)
|
void CopySize(FTexture* BaseTexture)
|
||||||
|
@ -380,7 +352,6 @@ public:
|
||||||
bMasked = false;
|
bMasked = false;
|
||||||
bHasCanvas = true;
|
bHasCanvas = true;
|
||||||
bTranslucent = false;
|
bTranslucent = false;
|
||||||
bExpandSprite = false;
|
|
||||||
aspectRatio = (float)width / height;
|
aspectRatio = (float)width / height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,6 +479,17 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum EGameTexFlags
|
||||||
|
{
|
||||||
|
GTexf_NoDecals = 1, // Decals should not stick to texture
|
||||||
|
GTexf_WorldPanning = 2, // Texture is panned in world units rather than texels
|
||||||
|
GTexf_FullNameTexture = 4, // Name is taken from the file system.
|
||||||
|
GTexf_Glowing = 8, // Texture emits a glow
|
||||||
|
GTexf_AutoGlowing = 16, // Glow info is determined from texture image.
|
||||||
|
GTexf_RenderFullbright = 32, // always draw fullbright
|
||||||
|
Gtexf_DisableFullbrightSprites = 64, // This texture will not be displayed as fullbright sprite
|
||||||
|
};
|
||||||
|
|
||||||
// Refactoring helper to allow piece by piece adjustment of the API
|
// Refactoring helper to allow piece by piece adjustment of the API
|
||||||
class FGameTexture
|
class FGameTexture
|
||||||
{
|
{
|
||||||
|
@ -546,6 +528,11 @@ class FGameTexture
|
||||||
float shaderspeed = 1.f;
|
float shaderspeed = 1.f;
|
||||||
int shaderindex = 0;
|
int shaderindex = 0;
|
||||||
|
|
||||||
|
int flags = 0;
|
||||||
|
uint8_t warped = 0, expandSprite = -1;
|
||||||
|
uint16_t GlowHeight;
|
||||||
|
PalEntry GlowColor = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FGameTexture(FTexture* wrap, const char *name);
|
FGameTexture(FTexture* wrap, const char *name);
|
||||||
~FGameTexture();
|
~FGameTexture();
|
||||||
|
@ -580,22 +567,23 @@ public:
|
||||||
float GetDisplayLeftOffset(int adjusted = 0) const { return LeftOffset[adjusted] / ScaleX; }
|
float GetDisplayLeftOffset(int adjusted = 0) const { return LeftOffset[adjusted] / ScaleX; }
|
||||||
float GetDisplayTopOffset(int adjusted = 0) const { return TopOffset[adjusted] / ScaleY; }
|
float GetDisplayTopOffset(int adjusted = 0) const { return TopOffset[adjusted] / ScaleY; }
|
||||||
|
|
||||||
|
bool isMiscPatch() const { return GetUseType() == ETextureType::MiscPatch; } // only used by the intermission screen to decide whether to tile the background image or not.
|
||||||
|
bool isFullbrightDisabled() const { return !!(flags & Gtexf_DisableFullbrightSprites); }
|
||||||
|
bool isFullbright() const { return !!(flags & GTexf_RenderFullbright); }
|
||||||
|
bool isFullNameTexture() const { return !!(flags & GTexf_FullNameTexture); }
|
||||||
|
bool expandSprites() const { return !!expandSprite; }
|
||||||
|
bool useWorldPanning() const { return !!(flags & GTexf_WorldPanning); }
|
||||||
|
void SetWorldPanning(bool on) { if (on) flags |= GTexf_WorldPanning; else flags &= ~GTexf_WorldPanning; }
|
||||||
|
bool allowNoDecals() const { return !!(flags & GTexf_NoDecals); }
|
||||||
|
void SetNoDecals(bool on) { if (on) flags |= GTexf_NoDecals; else flags &= ~GTexf_NoDecals; }
|
||||||
|
|
||||||
bool isValid() const { return UseType != ETextureType::Null; }
|
bool isValid() const { return UseType != ETextureType::Null; }
|
||||||
int isWarped() { return Base->isWarped(); }
|
int isWarped() { return warped; }
|
||||||
void SetWarpStyle(int style) { Base->bWarped = style; }
|
void SetWarpStyle(int style) { warped = style; }
|
||||||
bool isMasked() { return Base->isMasked(); }
|
bool isMasked() { return Base->isMasked(); }
|
||||||
bool isHardwareCanvas() const { return Base->isHardwareCanvas(); } // There's two here so that this can deal with software canvases in the hardware renderer later.
|
bool isHardwareCanvas() const { return Base->isHardwareCanvas(); } // There's two here so that this can deal with software canvases in the hardware renderer later.
|
||||||
bool isSoftwareCanvas() const { return Base->isCanvas(); }
|
bool isSoftwareCanvas() const { return Base->isCanvas(); }
|
||||||
bool isMiscPatch() const { return GetUseType() == ETextureType::MiscPatch; } // only used by the intermission screen to decide whether to tile the background image or not.
|
|
||||||
bool isMultiPatch() const { return Base->bMultiPatch; }
|
|
||||||
bool isFullbrightDisabled() const { return Base->isFullbrightDisabled(); }
|
|
||||||
bool isFullbright() const { return Base->isFullbright(); }
|
|
||||||
bool isFullNameTexture() const { return Base->bFullNameTexture; }
|
|
||||||
bool expandSprites() const { return Base->bExpandSprite; }
|
|
||||||
bool useWorldPanning() const { return Base->UseWorldPanning(); }
|
|
||||||
void SetWorldPanning(bool on) { Base->SetWorldPanning(on); }
|
|
||||||
bool allowNoDecals() const { return Base->allowNoDecals(); }
|
|
||||||
void SetNoDecals(bool on) { Base->bNoDecals = on; }
|
|
||||||
void SetTranslucent(bool on) { Base->bTranslucent = on; }
|
void SetTranslucent(bool on) { Base->bTranslucent = on; }
|
||||||
void SetUseType(ETextureType type) { UseType = type; }
|
void SetUseType(ETextureType type) { UseType = type; }
|
||||||
uint16_t GetRotations() const { return Base->GetRotations(); }
|
uint16_t GetRotations() const { return Base->GetRotations(); }
|
||||||
|
@ -646,15 +634,15 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Glowing is a pure material property that should not filter down to the actual texture objects.
|
// Glowing is a pure material property that should not filter down to the actual texture objects.
|
||||||
void GetGlowColor(float* data) { Base->GetGlowColor(data); }
|
void GetGlowColor(float* data);
|
||||||
bool isGlowing() const { return Base->isGlowing(); }
|
bool isGlowing() const { return !!(flags & GTexf_Glowing); }
|
||||||
bool isAutoGlowing() const { return Base->isAutoGlowing(); }
|
bool isAutoGlowing() const { return !!(flags & GTexf_AutoGlowing); }
|
||||||
int GetGlowHeight() const { return Base->GetGlowHeight(); }
|
int GetGlowHeight() const { return GlowHeight; }
|
||||||
void SetAutoGlowing() { auto tex = GetTexture(); tex->bAutoGlowing = tex->bGlowing = tex->bFullbright = true; }
|
void SetAutoGlowing() { flags |= (GTexf_AutoGlowing | GTexf_Glowing | GTexf_RenderFullbright); }
|
||||||
void SetGlowHeight(int v) { Base->GlowHeight = v; }
|
void SetGlowHeight(int v) { GlowHeight = v; }
|
||||||
void SetFullbright() { Base->bFullbright = true; }
|
void SetFullbright() { flags |= GTexf_RenderFullbright; }
|
||||||
void SetDisableFullbright(bool on) { Base->bDisableFullbright = on; }
|
void SetDisableFullbright(bool on) { if (on) flags |= Gtexf_DisableFullbrightSprites; else flags &= ~Gtexf_DisableFullbrightSprites; }
|
||||||
void SetGlowing(PalEntry color) { auto tex = GetTexture(); tex->bAutoGlowing = false; tex->bGlowing = true; tex->GlowColor = color; }
|
void SetGlowing(PalEntry color) { flags = (flags & ~GTexf_AutoGlowing) | GTexf_Glowing; GlowColor = color; }
|
||||||
|
|
||||||
bool isUserContent() const;
|
bool isUserContent() const;
|
||||||
int CheckRealHeight() { return xs_RoundToInt(Base->CheckRealHeight() / ScaleY); }
|
int CheckRealHeight() { return xs_RoundToInt(Base->CheckRealHeight() / ScaleY); }
|
||||||
|
|
Loading…
Reference in a new issue