Fix floor brightness affects sprites not in sector

This commit is contained in:
Magnus Norddahl 2017-01-17 02:16:13 +01:00
parent e154ff888d
commit 8e72e094ce
3 changed files with 11 additions and 13 deletions

View file

@ -872,17 +872,25 @@ namespace swrenderer
ThingSprite sprite; ThingSprite sprite;
if (GetThingSprite(thing, sprite)) if (GetThingSprite(thing, sprite))
{ {
FDynamicColormap *thingColormap = basecolormap;
if (sec->sectornum != thing->Sector->sectornum) // compare sectornums to account for R_FakeFlat copies.
{
int lightlevel = thing->Sector->GetTexture(sector_t::ceiling) == skyflatnum ? thing->Sector->GetCeilingLight() : thing->Sector->GetFloorLight();
spriteshade = LIGHT2SHADE(lightlevel + R_ActualExtraLight(foggy));
thingColormap = thing->Sector->ColorMap;
}
if ((sprite.renderflags & RF_SPRITETYPEMASK) == RF_WALLSPRITE) if ((sprite.renderflags & RF_SPRITETYPEMASK) == RF_WALLSPRITE)
{ {
RenderWallSprite::Project(thing, sprite.pos, sprite.picnum, sprite.spriteScale, sprite.renderflags, spriteshade, foggy, basecolormap); RenderWallSprite::Project(thing, sprite.pos, sprite.picnum, sprite.spriteScale, sprite.renderflags, spriteshade, foggy, thingColormap);
} }
else if (sprite.voxel) else if (sprite.voxel)
{ {
RenderVoxel::Project(thing, sprite.pos, sprite.voxel, sprite.spriteScale, sprite.renderflags, fakeside, fakefloor, fakeceiling, sec, spriteshade, foggy, basecolormap); RenderVoxel::Project(thing, sprite.pos, sprite.voxel, sprite.spriteScale, sprite.renderflags, fakeside, fakefloor, fakeceiling, sec, spriteshade, foggy, thingColormap);
} }
else else
{ {
RenderSprite::Project(thing, sprite.pos, sprite.tex, sprite.spriteScale, sprite.renderflags, fakeside, fakefloor, fakeceiling, sec, spriteshade, foggy, basecolormap); RenderSprite::Project(thing, sprite.pos, sprite.tex, sprite.spriteScale, sprite.renderflags, fakeside, fakefloor, fakeceiling, sec, spriteshade, foggy, thingColormap);
} }
} }
} }

View file

@ -216,11 +216,6 @@ namespace swrenderer
if (vis->RenderStyle.Flags & STYLEF_InvertSource) if (vis->RenderStyle.Flags & STYLEF_InvertSource)
invertcolormap = !invertcolormap; invertcolormap = !invertcolormap;
if (current_sector->sectornum != thing->Sector->sectornum) // compare sectornums to account for R_FakeFlat copies.
{
basecolormap = thing->Sector->ColorMap;
}
if (vis->RenderStyle == LegacyRenderStyles[STYLE_Add] && basecolormap->Fade != 0) if (vis->RenderStyle == LegacyRenderStyles[STYLE_Add] && basecolormap->Fade != 0)
{ {
basecolormap = GetSpecialLights(basecolormap->Color, 0, basecolormap->Desaturate); basecolormap = GetSpecialLights(basecolormap->Color, 0, basecolormap->Desaturate);

View file

@ -166,11 +166,6 @@ namespace swrenderer
invertcolormap = !invertcolormap; invertcolormap = !invertcolormap;
} }
if (current_sector->sectornum != thing->Sector->sectornum) // compare sectornums to account for R_FakeFlat copies.
{
basecolormap = thing->Sector->ColorMap;
}
// Sprites that are added to the scene must fade to black. // Sprites that are added to the scene must fade to black.
if (vis->RenderStyle == LegacyRenderStyles[STYLE_Add] && basecolormap->Fade != 0) if (vis->RenderStyle == LegacyRenderStyles[STYLE_Add] && basecolormap->Fade != 0)
{ {