From 91813ec43d511d2952bb03ebab51095ebb7c2eb3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 3 Apr 2018 20:55:36 +0200 Subject: [PATCH] - moved part of the fade init for LEVEL_HASFADETABLE to the common colormap initialization to have all of it in one place. Otherwise this is easily overlooked when changing things later and potentially causing problems. --- src/g_levellocals.h | 1 + src/p_setup.cpp | 8 ++++++++ src/swrenderer/r_swrenderer.cpp | 10 ---------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/g_levellocals.h b/src/g_levellocals.h index 78d6e90343..183005c533 100644 --- a/src/g_levellocals.h +++ b/src/g_levellocals.h @@ -86,6 +86,7 @@ struct FLevelLocals TArray sectorPortals; TArray linePortals; + // Portal information. FDisplacementTable Displacements; FPortalBlockmap PortalBlockmap; TArray linkedPortals; // only the linked portals, this is used to speed up looking for them in P_CollectConnectedGroups. diff --git a/src/p_setup.cpp b/src/p_setup.cpp index ab4d519f45..47877784ad 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1502,6 +1502,8 @@ void P_LoadSectors (MapData *map, FMissingTextureTracker &missingtex) ss->ZoneNumber = 0xFFFF; ss->terrainnum[sector_t::ceiling] = ss->terrainnum[sector_t::floor] = -1; + + // [RH] Sectors default to white light with the default fade. // If they are outside (have a sky ceiling), they use the outside fog. ss->Colormap.LightColor = PalEntry(255, 255, 255); @@ -1509,11 +1511,16 @@ void P_LoadSectors (MapData *map, FMissingTextureTracker &missingtex) { ss->Colormap.FadeColor.SetRGB(level.outsidefog); } + else if (level.flags & LEVEL_HASFADETABLE) + { + ss->Colormap.FadeColor= 0x939393; // The true color software renderer needs this. (The hardware renderer will ignore this value if LEVEL_HASFADETABLE is set.) + } else { ss->Colormap.FadeColor.SetRGB(level.fadeto); } + // killough 8/28/98: initialize all sectors to normal friction ss->friction = ORIG_FRICTION; ss->movefactor = ORIG_FRICTION_FACTOR; @@ -4123,6 +4130,7 @@ void P_SetupLevel (const char *lumpname, int position) // This must be done BEFORE the PolyObj Spawn!!! InitRenderInfo(); Renderer->PreprocessLevel(); + SWRenderer->PreprocessLevel(); InitPortalGroups(); times[16].Clock(); diff --git a/src/swrenderer/r_swrenderer.cpp b/src/swrenderer/r_swrenderer.cpp index 17038521a3..583582d26d 100644 --- a/src/swrenderer/r_swrenderer.cpp +++ b/src/swrenderer/r_swrenderer.cpp @@ -335,19 +335,9 @@ void FSoftwareRenderer::PreprocessLevel() NormalLight.Maps = realcolormaps.Maps; NormalLight.ChangeColor(PalEntry(255, 255, 255), 0); NormalLight.ChangeFade(level.fadeto); - if (level.fadeto == 0) { SetDefaultColormap(level.info->FadeTable); - if (level.flags & LEVEL_HASFADETABLE) - { - // This should really be done differently. - level.fadeto = 0xff939393; //[SP] Hexen True-color compatibility, just use gray. - for (auto &s : level.sectors) - { - s.Colormap.FadeColor = level.fadeto; - } - } } }