From ad9e4413fa3a4b9458d39bf9183db2de0d26a05f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 1 Apr 2015 11:48:47 +0200 Subject: [PATCH] - made the texture precaching code a bit more self-descriptive after finding a discrepancy in handling between ZDoom and GZDoom's versions. --- src/r_swrenderer.cpp | 2 +- src/textures/texturemanager.cpp | 2 +- src/textures/textures.h | 10 ++++++++++ src/v_video.cpp | 10 +++++----- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/r_swrenderer.cpp b/src/r_swrenderer.cpp index fb54b6f0a7..df928b25ec 100644 --- a/src/r_swrenderer.cpp +++ b/src/r_swrenderer.cpp @@ -84,7 +84,7 @@ void FSoftwareRenderer::PrecacheTexture(FTexture *tex, int cache) { if (tex != NULL) { - if (cache & 1) + if (cache & FTextureManager::HIT_Columnmode) { const FTexture::Span *spanp; tex->GetColumn(0, &spanp); diff --git a/src/textures/texturemanager.cpp b/src/textures/texturemanager.cpp index be0426e984..2944e4200b 100644 --- a/src/textures/texturemanager.cpp +++ b/src/textures/texturemanager.cpp @@ -1246,7 +1246,7 @@ void FTextureManager::PrecacheLevel (void) for (unsigned i = 0; i < level.info->PrecacheTextures.Size(); i++) { - hitlist[level.info->PrecacheTextures[i].GetIndex()] |= 1; + hitlist[level.info->PrecacheTextures[i].GetIndex()] |= FTextureManager::HIT_Wall; } for (int i = cnt - 1; i >= 0; i--) diff --git a/src/textures/textures.h b/src/textures/textures.h index aa8505d4ef..cb3680ead1 100644 --- a/src/textures/textures.h +++ b/src/textures/textures.h @@ -365,6 +365,16 @@ public: TEXMAN_DontCreate = 32 }; + enum + { + HIT_Wall = 1, + HIT_Flat = 2, + HIT_Sky = 4, + HIT_Sprite = 8, + + HIT_Columnmode = HIT_Wall|HIT_Sky|HIT_Sprite + }; + FTextureID CheckForTexture (const char *name, int usetype, BITFIELD flags=TEXMAN_TryAny); FTextureID GetTexture (const char *name, int usetype, BITFIELD flags=0); int ListTextures (const char *name, TArray &list); diff --git a/src/v_video.cpp b/src/v_video.cpp index 4537728863..aaf1aec3da 100644 --- a/src/v_video.cpp +++ b/src/v_video.cpp @@ -1245,7 +1245,7 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) FTextureID pic = frame->Texture[k]; if (pic.isValid()) { - hitlist[pic.GetIndex()] = 1; + hitlist[pic.GetIndex()] = HIT_Sprite; } } } @@ -1257,14 +1257,14 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) for (i = numsectors - 1; i >= 0; i--) { hitlist[sectors[i].GetTexture(sector_t::floor).GetIndex()] = - hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= 2; + hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= HIT_Flat; } for (i = numsides - 1; i >= 0; i--) { hitlist[sides[i].GetTexture(side_t::top).GetIndex()] = hitlist[sides[i].GetTexture(side_t::mid).GetIndex()] = - hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= 1; + hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= HIT_Wall; } // Sky texture is always present. @@ -1276,11 +1276,11 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) if (sky1texture.isValid()) { - hitlist[sky1texture.GetIndex()] |= 1; + hitlist[sky1texture.GetIndex()] |= HIT_Sky; } if (sky2texture.isValid()) { - hitlist[sky2texture.GetIndex()] |= 1; + hitlist[sky2texture.GetIndex()] |= HIT_Sky; } }