From 31f29bbe8a2ff277da96db8dccaaaf0f6677ab41 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Fri, 25 May 2018 19:23:47 +0200 Subject: [PATCH] - force model light to be attenuated --- src/hwrenderer/dynlights/hw_dynlightdata.cpp | 6 +++--- src/hwrenderer/dynlights/hw_dynlightdata.h | 2 +- src/hwrenderer/scene/hw_spritelight.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hwrenderer/dynlights/hw_dynlightdata.cpp b/src/hwrenderer/dynlights/hw_dynlightdata.cpp index dce24d689d..c881f9b4ec 100644 --- a/src/hwrenderer/dynlights/hw_dynlightdata.cpp +++ b/src/hwrenderer/dynlights/hw_dynlightdata.cpp @@ -63,7 +63,7 @@ bool FDynLightData::GetLight(int group, Plane & p, ADynamicLight * light, bool c return false; } - AddLightToList(group, light); + AddLightToList(group, light, false); return true; } @@ -72,7 +72,7 @@ bool FDynLightData::GetLight(int group, Plane & p, ADynamicLight * light, bool c // Add one dynamic light to the light data list // //========================================================================== -void FDynLightData::AddLightToList(int group, ADynamicLight * light) +void FDynLightData::AddLightToList(int group, ADynamicLight * light, bool forceAttenuate) { int i = 0; @@ -109,7 +109,7 @@ void FDynLightData::AddLightToList(int group, ADynamicLight * light) bool attenuate; // Store attenuate flag in the sign bit of the float. - if (gl_attenuate == -1) attenuate = !!(light->lightflags & LF_ATTENUATE); + if (gl_attenuate == -1) attenuate = !!(light->lightflags & LF_ATTENUATE) || forceAttenuate; else attenuate = !!gl_attenuate; if (attenuate) shadowIndex = -shadowIndex; diff --git a/src/hwrenderer/dynlights/hw_dynlightdata.h b/src/hwrenderer/dynlights/hw_dynlightdata.h index ec03db05bd..f1a1ffb7b0 100644 --- a/src/hwrenderer/dynlights/hw_dynlightdata.h +++ b/src/hwrenderer/dynlights/hw_dynlightdata.h @@ -54,7 +54,7 @@ struct FDynLightData } bool GetLight(int group, Plane & p, ADynamicLight * light, bool checkside); - void AddLightToList(int group, ADynamicLight * light); + void AddLightToList(int group, ADynamicLight * light, bool forceAttenuate); }; diff --git a/src/hwrenderer/scene/hw_spritelight.cpp b/src/hwrenderer/scene/hw_spritelight.cpp index 95219dc7bb..c44a3179a7 100644 --- a/src/hwrenderer/scene/hw_spritelight.cpp +++ b/src/hwrenderer/scene/hw_spritelight.cpp @@ -219,7 +219,7 @@ void hw_GetDynModelLight(AActor *self, FDynLightData &modellightdata) { if (std::find(addedLights.begin(), addedLights.end(), light) == addedLights.end()) // Check if we already added this light from a different subsector { - modellightdata.AddLightToList(group, light); + modellightdata.AddLightToList(group, light, true); addedLights.Push(light); } }