From bd61e9f3f4225b5e3e73a9e3b6d1a83bc7bd4be3 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Mon, 27 Feb 2017 08:20:26 -0500 Subject: [PATCH] - Disabled dynlights during invulnerability/lightamp (or any FixedColormap or FixedLightLevel) --- src/swrenderer/line/r_line.cpp | 9 +++++++++ src/swrenderer/plane/r_visibleplane.cpp | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/src/swrenderer/line/r_line.cpp b/src/swrenderer/line/r_line.cpp index 2b2417ec2..94b1cfc4b 100644 --- a/src/swrenderer/line/r_line.cpp +++ b/src/swrenderer/line/r_line.cpp @@ -1164,6 +1164,9 @@ namespace swrenderer FLightNode *light_list = (mLineSegment && mLineSegment->sidedef) ? mLineSegment->sidedef->lighthead : nullptr; + if ((cameraLight->FixedLightLevel() >= 0) || (cameraLight->FixedColormap() != nullptr)) + light_list = nullptr; // [SP] Don't draw dynlights if invul/lightamp active + RenderWallPart renderWallpart(Thread); renderWallpart.Render(drawerargs, mFrontSector, mLineSegment, WallC, rw_pic, x1, x2, walltop.ScreenY, wallupper.ScreenY, mTopPart.TextureMid, walltexcoords.VStep, walltexcoords.UPos, yscale, MAX(mFrontCeilingZ1, mFrontCeilingZ2), MIN(mBackCeilingZ1, mBackCeilingZ2), false, wallshade, offset, rw_light, rw_lightstep, light_list, foggy, basecolormap); } @@ -1208,6 +1211,9 @@ namespace swrenderer FLightNode *light_list = (mLineSegment && mLineSegment->sidedef) ? mLineSegment->sidedef->lighthead : nullptr; + if ((cameraLight->FixedLightLevel() >= 0) || (cameraLight->FixedColormap() != nullptr)) + light_list = nullptr; // [SP] Don't draw dynlights if invul/lightamp active + RenderWallPart renderWallpart(Thread); renderWallpart.Render(drawerargs, mFrontSector, mLineSegment, WallC, rw_pic, x1, x2, walltop.ScreenY, wallbottom.ScreenY, mMiddlePart.TextureMid, walltexcoords.VStep, walltexcoords.UPos, yscale, MAX(mFrontCeilingZ1, mFrontCeilingZ2), MIN(mFrontFloorZ1, mFrontFloorZ2), false, wallshade, offset, rw_light, rw_lightstep, light_list, foggy, basecolormap); } @@ -1253,6 +1259,9 @@ namespace swrenderer FLightNode *light_list = (mLineSegment && mLineSegment->sidedef) ? mLineSegment->sidedef->lighthead : nullptr; + if ((cameraLight->FixedLightLevel() >= 0) || (cameraLight->FixedColormap() != nullptr)) + light_list = nullptr; // [SP] Don't draw dynlights if invul/lightamp active + RenderWallPart renderWallpart(Thread); renderWallpart.Render(drawerargs, mFrontSector, mLineSegment, WallC, rw_pic, x1, x2, walllower.ScreenY, wallbottom.ScreenY, mBottomPart.TextureMid, walltexcoords.VStep, walltexcoords.UPos, yscale, MAX(mBackFloorZ1, mBackFloorZ2), MIN(mFrontFloorZ1, mFrontFloorZ2), false, wallshade, offset, rw_light, rw_lightstep, light_list, foggy, basecolormap); } diff --git a/src/swrenderer/plane/r_visibleplane.cpp b/src/swrenderer/plane/r_visibleplane.cpp index 70cd4164f..b32e092b4 100644 --- a/src/swrenderer/plane/r_visibleplane.cpp +++ b/src/swrenderer/plane/r_visibleplane.cpp @@ -61,6 +61,10 @@ namespace swrenderer if (!r_dynlights) return; + CameraLight *cameraLight = CameraLight::Instance(); + if (cameraLight->FixedColormap() != NULL || cameraLight->FixedLightLevel() >= 0) + return; // [SP] no dynlights if invul or lightamp + while (node) { if (!(node->lightsource->flags2&MF2_DORMANT))