- Add "Intensity" property for dynamic lights in GLDEFS that will multiply the brightness of the light, useful for overbrightening/underbrightening a light.

- Also add an "intensity" parameter for A_AttachLight in ZScript.

Note that for any kind of light overbrightening to do anything at all, one of the unclamped LightBlendModes in MAPINFO must be enabled.
This commit is contained in:
nashmuhandes 2025-05-17 00:47:13 +08:00 committed by Ricardo Luís Vaz Silva
commit b44f8f0cc9
7 changed files with 38 additions and 3 deletions

View file

@ -81,6 +81,7 @@ FSerializer &Serialize(FSerializer &arc, const char *key, FLightDefaults &value,
("spotinner", value.m_spotInnerAngle)
("spotouter", value.m_spotOuterAngle)
("pitch", value.m_pitch)
("lightdefintensity", value.m_LightDefIntensity)
.EndObject();
}
return arc;
@ -125,6 +126,7 @@ void FLightDefaults::ApplyProperties(FDynamicLight * light) const
light->m_active = true;
light->lighttype = m_type;
light->specialf1 = m_Param;
light->lightDefIntensity = m_LightDefIntensity;
light->pArgs = m_Args;
light->pLightFlags = &m_lightFlags;
if (m_lightFlags & LF_SPOT)

View file

@ -200,6 +200,7 @@ static const char *LightTags[]=
"noshadowmap",
"dontlightothers",
"dontlightmap",
"intensity",
nullptr
};
@ -226,6 +227,7 @@ enum {
LIGHTTAG_NOSHADOWMAP,
LIGHTTAG_DONTLIGHTOTHERS,
LIGHTTAG_DONTLIGHTMAP,
LIGHTTAG_INTENSITY,
};
//==========================================================================
@ -541,6 +543,9 @@ class GLDefsParser
defaults->SetSpotOuterAngle(outerAngle);
}
break;
case LIGHTTAG_INTENSITY:
defaults->SetLightDefIntensity(ParseFloat(sc));
break;
default:
sc.ScriptError("Unknown tag: %s\n", sc.String);
}
@ -643,6 +648,9 @@ class GLDefsParser
defaults->SetSpotOuterAngle(outerAngle);
}
break;
case LIGHTTAG_INTENSITY:
defaults->SetLightDefIntensity(ParseFloat(sc));
break;
default:
sc.ScriptError("Unknown tag: %s\n", sc.String);
}
@ -748,6 +756,9 @@ class GLDefsParser
defaults->SetSpotOuterAngle(outerAngle);
}
break;
case LIGHTTAG_INTENSITY:
defaults->SetLightDefIntensity(ParseFloat(sc));
break;
default:
sc.ScriptError("Unknown tag: %s\n", sc.String);
}
@ -852,6 +863,9 @@ class GLDefsParser
defaults->SetSpotOuterAngle(outerAngle);
}
break;
case LIGHTTAG_INTENSITY:
defaults->SetLightDefIntensity(ParseFloat(sc));
break;
default:
sc.ScriptError("Unknown tag: %s\n", sc.String);
}
@ -953,6 +967,9 @@ class GLDefsParser
defaults->SetSpotOuterAngle(outerAngle);
}
break;
case LIGHTTAG_INTENSITY:
defaults->SetLightDefIntensity(ParseFloat(sc));
break;
default:
sc.ScriptError("Unknown tag: %s\n", sc.String);
}