diff --git a/src/playsim/actor.h b/src/playsim/actor.h index 3339adeb99..00993106d5 100644 --- a/src/playsim/actor.h +++ b/src/playsim/actor.h @@ -508,6 +508,7 @@ enum ActorRenderFlag2 RF2_ISOMETRICSPRITES = 0x0080, RF2_SQUAREPIXELS = 0x0100, // apply +ROLLSPRITE scaling math so that non rolling sprites get the same scaling RF2_STRETCHPIXELS = 0x0200, // don't apply SQUAREPIXELS for ROLLSPRITES + RF2_LIGHTMULTALPHA = 0x0400, // attached lights use alpha as intensity multiplier }; // This translucency value produces the closest match to Heretic's TINTTAB. diff --git a/src/rendering/hwrenderer/hw_dynlightdata.cpp b/src/rendering/hwrenderer/hw_dynlightdata.cpp index 0c264a1f7b..bf516e6374 100644 --- a/src/rendering/hwrenderer/hw_dynlightdata.cpp +++ b/src/rendering/hwrenderer/hw_dynlightdata.cpp @@ -92,7 +92,7 @@ void AddLightToList(FDynLightData &dld, int group, FDynamicLight * light, bool f cs = 1.0f; } - if (light->target) + if (light->target && (light->target->renderflags2 & RF2_LIGHTMULTALPHA)) cs *= (float)light->target->Alpha; float r = light->GetRed() / 255.0f * cs; diff --git a/src/rendering/hwrenderer/scene/hw_spritelight.cpp b/src/rendering/hwrenderer/scene/hw_spritelight.cpp index 0310d1008b..ad2c59d7f0 100644 --- a/src/rendering/hwrenderer/scene/hw_spritelight.cpp +++ b/src/rendering/hwrenderer/scene/hw_spritelight.cpp @@ -186,7 +186,7 @@ void HWDrawInfo::GetDynSpriteLight(AActor *self, float x, float y, float z, FSec lg = light->GetGreen() / 255.0f; lb = light->GetBlue() / 255.0f; - if (light->target) + if (light->target && (light->target->renderflags2 & RF2_LIGHTMULTALPHA)) { float alpha = (float)light->target->Alpha; lr *= alpha; diff --git a/src/scripting/thingdef_data.cpp b/src/scripting/thingdef_data.cpp index c1e8dd045f..c8d37c3982 100644 --- a/src/scripting/thingdef_data.cpp +++ b/src/scripting/thingdef_data.cpp @@ -390,6 +390,7 @@ static FFlagDef ActorFlagDefs[]= DEFINE_FLAG(RF2, ISOMETRICSPRITES, AActor, renderflags2), DEFINE_FLAG(RF2, SQUAREPIXELS, AActor, renderflags2), DEFINE_FLAG(RF2, STRETCHPIXELS, AActor, renderflags2), + DEFINE_FLAG(RF2, LIGHTMULTALPHA, AActor, renderflags2), // Bounce flags DEFINE_FLAG2(BOUNCE_Walls, BOUNCEONWALLS, AActor, BounceFlags), diff --git a/wadsrc/static/zscript/actors/shared/dynlights.zs b/wadsrc/static/zscript/actors/shared/dynlights.zs index 8c5d0850dd..5e4670c99f 100644 --- a/wadsrc/static/zscript/actors/shared/dynlights.zs +++ b/wadsrc/static/zscript/actors/shared/dynlights.zs @@ -73,6 +73,7 @@ class DynamicLight : Actor +FIXMAPTHINGPOS +INVISIBLE +NOTONAUTOMAP + +LIGHTMULTALPHA } //==========================================================================