Fixed light color

yes, before this option doesnt effect anything
This commit is contained in:
2022-12-15 23:03:39 +03:00
parent 0d1c43a87c
commit 0217dc8674

View File

@@ -221,9 +221,19 @@ bool CEnvCascadeLightThird::KeyValue(const char* szKeyName, const char* szValue)
{ {
if (FStrEq(szKeyName, "lightcolor")) if (FStrEq(szKeyName, "lightcolor"))
{ {
Vector tmp; float tmp[4];
UTIL_ColorStringToLinearFloatColorCSMFakeThird(tmp, szValue); UTIL_StringToFloatArray(tmp, 4, szValue);
m_LinearFloatLightColor = tmp; /*
if (tmp[3] <= 0.0f)
{
tmp[3] = 255.0f;
}
tmp[3] *= (1.0f / 255.0f);
*/
m_LightColor.SetR(GammaToLinear(tmp[0]));
m_LightColor.SetG(GammaToLinear(tmp[1]));
m_LightColor.SetB(GammaToLinear(tmp[2]));
m_LightColor.SetA(GammaToLinear(tmp[3]));
} }
else else
{ {
@@ -384,9 +394,19 @@ bool CEnvCascadeLightSecond::KeyValue(const char* szKeyName, const char* szValue
{ {
if (FStrEq(szKeyName, "lightcolor")) if (FStrEq(szKeyName, "lightcolor"))
{ {
Vector tmp; float tmp[4];
UTIL_ColorStringToLinearFloatColorCSMFakeSecond(tmp, szValue); UTIL_StringToFloatArray(tmp, 4, szValue);
m_LinearFloatLightColor = tmp; /*
if (tmp[3] <= 0.0f)
{
tmp[3] = 255.0f;
}
tmp[3] *= (1.0f / 255.0f);
*/
m_LightColor.SetR(GammaToLinear(tmp[0] * (1.0f / 255.0f)) * tmp[3]);
m_LightColor.SetG(GammaToLinear(tmp[1] * (1.0f / 255.0f)) * tmp[3]);
m_LightColor.SetB(GammaToLinear(tmp[2] * (1.0f / 255.0f)) * tmp[3]);
m_LightColor.SetA(tmp[3]);
} }
else else
{ {
@@ -593,7 +613,11 @@ void CEnvCascadeLight::Preparation()
SecondCSM->SetAbsAngles(GetAbsAngles()); SecondCSM->SetAbsAngles(GetAbsAngles());
SecondCSM->SetAbsOrigin(GetAbsOrigin()); SecondCSM->SetAbsOrigin(GetAbsOrigin());
SecondCSM->SetParent(GetBaseEntity()); SecondCSM->SetParent(GetBaseEntity());
SecondCSM->m_LinearFloatLightColor = m_LinearFloatLightColor * ConVarRef("csm_second_intensity").GetFloat();
SecondCSM->m_LightColor.SetR(GammaToLinear(m_LightColor.GetR()) * ConVarRef("csm_second_intensity").GetFloat());
SecondCSM->m_LightColor.SetG(GammaToLinear(m_LightColor.GetG()) * ConVarRef("csm_second_intensity").GetFloat());
SecondCSM->m_LightColor.SetB(GammaToLinear(m_LightColor.GetB()) * ConVarRef("csm_second_intensity").GetFloat());
SecondCSM->m_LightColor.SetA(GammaToLinear(m_LightColor.GetA()) * ConVarRef("csm_second_intensity").GetFloat());
DispatchSpawn(SecondCSM); DispatchSpawn(SecondCSM);
} }
@@ -610,7 +634,12 @@ void CEnvCascadeLight::Preparation()
ThirdCSM->SetAbsAngles(GetAbsAngles()); ThirdCSM->SetAbsAngles(GetAbsAngles());
ThirdCSM->SetAbsOrigin(GetAbsOrigin()); ThirdCSM->SetAbsOrigin(GetAbsOrigin());
ThirdCSM->SetParent(GetBaseEntity()); ThirdCSM->SetParent(GetBaseEntity());
ThirdCSM->m_LinearFloatLightColor = m_LinearFloatLightColor * ConVarRef("csm_second_intensity").GetFloat(); //ThirdCSM->m_LinearFloatLightColor = m_LinearFloatLightColor * ConVarRef("csm_second_intensity").GetFloat();
ThirdCSM->m_LightColor.SetR(GammaToLinear(m_LightColor.GetR()) * ConVarRef("csm_third_intensity").GetFloat());
ThirdCSM->m_LightColor.SetG(GammaToLinear(m_LightColor.GetG()) * ConVarRef("csm_third_intensity").GetFloat());
ThirdCSM->m_LightColor.SetB(GammaToLinear(m_LightColor.GetB()) * ConVarRef("csm_third_intensity").GetFloat());
ThirdCSM->m_LightColor.SetA(GammaToLinear(m_LightColor.GetA()) * ConVarRef("csm_third_intensity").GetFloat());
DispatchSpawn(ThirdCSM); DispatchSpawn(ThirdCSM);
} }
@@ -623,8 +652,6 @@ void CEnvCascadeLight::Preparation()
if (EnableAngleFromEnv) if (EnableAngleFromEnv)
{ {
csm_origin->angFEnv = true; csm_origin->angFEnv = true;
SetLocalAngles(QAngle(90, 0, 0)); SetLocalAngles(QAngle(90, 0, 0));
@@ -677,11 +704,21 @@ bool CEnvCascadeLight::KeyValue(const char* szKeyName, const char* szValue)
{ {
if (FStrEq(szKeyName, "lightcolor") || FStrEq(szKeyName, "color")) if (FStrEq(szKeyName, "lightcolor") || FStrEq(szKeyName, "color"))
{ {
Vector tmp; float tmp[4];
UTIL_ColorStringToLinearFloatColorCSMFake(tmp, szValue); UTIL_StringToFloatArray(tmp, 4, szValue);
m_LinearFloatLightColor = tmp; /*
if (tmp[3] <= 0.0f)
{
tmp[3] = 255.0f;
}
tmp[3] *= (1.0f / 255.0f);
*/
m_LightColor.SetR(tmp[0]);
m_LightColor.SetG(tmp[1]);
m_LightColor.SetB(tmp[2]);
m_LightColor.SetA(tmp[3]);
} }
else else
{ {