diff --git a/src/common/textures/texturemanager.cpp b/src/common/textures/texturemanager.cpp index 21b9013f7..ebdfab465 100644 --- a/src/common/textures/texturemanager.cpp +++ b/src/common/textures/texturemanager.cpp @@ -1300,11 +1300,12 @@ void FTextureManager::InitPalettedVersions() // //========================================================================== -FTextureID FTextureManager::GetRawTexture(FTextureID texid) +FTextureID FTextureManager::GetRawTexture(FTextureID texid, bool dontlookup) { int texidx = texid.GetIndex(); if ((unsigned)texidx >= Textures.Size()) return texid; - if (Textures[texidx].FrontSkyLayer != -1) return FSetTextureID(Textures[texidx].FrontSkyLayer); + if (Textures[texidx].RawTexture != -1) return FSetTextureID(Textures[texidx].RawTexture); + if (dontlookup) return texid; // Reject anything that cannot have been a front layer for the sky in original Hexen, i.e. it needs to be an unscaled wall texture only using Doom patches. auto tex = Textures[texidx].Texture; diff --git a/src/common/textures/texturemanager.h b/src/common/textures/texturemanager.h index bed10e659..7d9815991 100644 --- a/src/common/textures/texturemanager.h +++ b/src/common/textures/texturemanager.h @@ -77,7 +77,15 @@ public: void FlushAll(); FTextureID GetFrontSkyLayer(FTextureID); - FTextureID GetRawTexture(FTextureID); + FTextureID GetRawTexture(FTextureID tex, bool dontlookup = false); + void SetRawTexture(FTextureID texid) + { + int texidx = texid.GetIndex(); + if ((unsigned)texidx < Textures.Size()) + { + Textures[texidx].RawTexture = texidx; + } + } enum