- change per-level attenuation of dynamic lights for each viewpoint.

To avoid unnecessary work, the current state is tracked.
This commit is contained in:
Christoph Oelckers 2019-01-29 20:09:06 +01:00
commit 4af5ea25c1
5 changed files with 16 additions and 7 deletions

View file

@ -55,6 +55,7 @@ inline PClassActor * GetRealType(PClassActor * ti)
}
TDeletingArray<FLightDefaults *> LightDefaults;
int AttenuationIsSet = -1;
//-----------------------------------------------------------------------------
//
@ -101,14 +102,18 @@ void FLightDefaults::ApplyProperties(FDynamicLight * light) const
light->SetOffset(m_Pos); // this must be the last thing to do.
}
void FLightDefaults::SetAttenuationForLevel()
void FLightDefaults::SetAttenuationForLevel(bool yes)
{
for (auto ldef : LightDefaults)
if (AttenuationIsSet != int(yes))
{
if (ldef->m_attenuate == -1)
for (auto ldef : LightDefaults)
{
if (level.flags3 & LEVEL3_ATTENUATE) ldef->m_lightFlags |= LF_ATTENUATE; else ldef->m_lightFlags &= ~LF_ATTENUATE;
if (ldef->m_attenuate == -1)
{
if (yes) ldef->m_lightFlags |= LF_ATTENUATE; else ldef->m_lightFlags &= ~LF_ATTENUATE;
}
}
AttenuationIsSet = yes;
}
}