diff --git a/client/c_env_cascade_light.cpp b/client/c_env_cascade_light.cpp index 16c222a..f2162de 100644 --- a/client/c_env_cascade_light.cpp +++ b/client/c_env_cascade_light.cpp @@ -24,6 +24,7 @@ static ConVar scissor("r_flashlightscissor", "0"); ConVar csm_intensity("csm_intensity", "200"); ConVar csm_second_intensity("csm_second_intensity", "200"); ConVar csm_third_intensity("csm_third_intensity", "200"); +ConVar csm_brightness_general("csm_brightness_general", "1"); ConVar csm_filter("csm_filter", "1"); @@ -282,9 +283,9 @@ void C_EnvCascadeLight::UpdateLight( bool bForceUpdate ) #ifdef MAPBASE float flAlpha = m_flCurrentLinearFloatLightAlpha * (1.0f / 255.0f); - state.m_Color[0] = (m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * flAlpha) * csm_intensity.GetFloat(); - state.m_Color[1] = (m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * flAlpha) * csm_intensity.GetFloat(); - state.m_Color[2] = (m_CurrentLinearFloatLightColor.z * (1.0f / 255.0f) * flAlpha) * csm_intensity.GetFloat(); + state.m_Color[0] = (m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * flAlpha) * csm_intensity.GetFloat() * csm_brightness_general.GetFloat(); + state.m_Color[1] = (m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * flAlpha) * csm_intensity.GetFloat() * csm_brightness_general.GetFloat(); + state.m_Color[2] = (m_CurrentLinearFloatLightColor.z * (1.0f / 255.0f) * flAlpha) * csm_intensity.GetFloat() * csm_brightness_general.GetFloat(); #else state.m_Color[0] = m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * csm_intensity.GetFloat(); state.m_Color[1] = m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * csm_intensity.GetFloat(); @@ -333,6 +334,7 @@ void C_EnvCascadeLight::UpdateLight( bool bForceUpdate ) void C_EnvCascadeLight::Simulate( void ) { + m_bState = csm_enable.GetBool(); UpdateLight(true); BaseClass::Simulate(); @@ -445,11 +447,11 @@ void C_EnvCascadeLightSecond::UpdateLight(bool bForceUpdate) if(m_LightHandle!=CLIENTSHADOW_INVALID_HANDLE) ShutDownLightHandle(); - - return; } + + Vector vForward, vRight, vUp, vPos = GetAbsOrigin(); FlashlightState_t state; state.m_flShadowFilterSize = csm_filter.GetFloat(); @@ -546,9 +548,9 @@ void C_EnvCascadeLightSecond::UpdateLight(bool bForceUpdate) #ifdef MAPBASE float flAlpha = m_flCurrentLinearFloatLightAlpha * (1.0f / 255.0f); - state.m_Color[0] = (m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * flAlpha) * csm_second_intensity.GetFloat(); - state.m_Color[1] = (m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * flAlpha) * csm_second_intensity.GetFloat(); - state.m_Color[2] = (m_CurrentLinearFloatLightColor.z * (1.0f / 255.0f) * flAlpha) * csm_second_intensity.GetFloat(); + state.m_Color[0] = (m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * flAlpha) * csm_second_intensity.GetFloat() * csm_brightness_general.GetFloat(); + state.m_Color[1] = (m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * flAlpha) * csm_second_intensity.GetFloat() * csm_brightness_general.GetFloat(); + state.m_Color[2] = (m_CurrentLinearFloatLightColor.z * (1.0f / 255.0f) * flAlpha) * csm_second_intensity.GetFloat() * csm_brightness_general.GetFloat(); #else state.m_Color[0] = m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * csm_second_intensity.GetFloat(); state.m_Color[1] = m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * csm_second_intensity.GetFloat(); @@ -706,11 +708,8 @@ void C_EnvCascadeLightThird::UpdateLight(bool bForceUpdate) if (m_bState == false) { - if (m_LightHandle != CLIENTSHADOW_INVALID_HANDLE) ShutDownLightHandle(); - - return; } @@ -814,9 +813,9 @@ void C_EnvCascadeLightThird::UpdateLight(bool bForceUpdate) #ifdef MAPBASE float flAlpha = m_flCurrentLinearFloatLightAlpha * (1.0f / 255.0f); - state.m_Color[0] = (m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * flAlpha) * csm_third_intensity.GetFloat(); - state.m_Color[1] = (m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * flAlpha) * csm_third_intensity.GetFloat(); - state.m_Color[2] = (m_CurrentLinearFloatLightColor.z * (1.0f / 255.0f) * flAlpha) * csm_third_intensity.GetFloat(); + state.m_Color[0] = (m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * flAlpha) * csm_third_intensity.GetFloat() * csm_brightness_general.GetFloat(); + state.m_Color[1] = (m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * flAlpha) * csm_third_intensity.GetFloat() * csm_brightness_general.GetFloat(); + state.m_Color[2] = (m_CurrentLinearFloatLightColor.z * (1.0f / 255.0f) * flAlpha) * csm_third_intensity.GetFloat() * csm_brightness_general.GetFloat(); #else state.m_Color[0] = m_CurrentLinearFloatLightColor.x * (1.0f / 255.0f) * csm_third_intensity.GetFloat(); state.m_Color[1] = m_CurrentLinearFloatLightColor.y * (1.0f / 255.0f) * csm_third_intensity.GetFloat(); diff --git a/fgd/csm.fgd b/fgd/csm.fgd index 88d7f85..9a30370 100644 --- a/fgd/csm.fgd +++ b/fgd/csm.fgd @@ -9,6 +9,7 @@ 1 : "Enabled" : 1 ] lightcolor(color255) : "Light Color" : "255 255 255 200" : "Light Color RGB-Intensity" + brightnessscale(float) : "Brightness Scale" : "1" : "ConVar csm_brightness_general = this parameter. You change this parameter - game changes csm_brightness_general to this value. Want to change brightness using inputs - use point_servercommand and change csm_brightness_general itself." cameraspace(integer) : "Camera Space" : 0 : "Angles are interpreted as being relative to camera." uselightenvangles(Choices) : "Use light_environment's angles" : 1 : "If true, the CSM shadow angles are automatically harvested from the light_environment's angles. If false, this entity's angles are used." = @@ -24,7 +25,7 @@ ] - ambient(integer) :"Ambient" : 0 : "idk" + ambient(integer) :"Ambient" : 0 : "[DOESNT WORK] Ambient of the light. I know how to make it work, but i will do it later." input Enable(void) : "Turn on the texture" input Disable(void) : "Turn off the texture" diff --git a/server/env_cascade_light.cpp b/server/env_cascade_light.cpp index 6de831f..aba009a 100644 --- a/server/env_cascade_light.cpp +++ b/server/env_cascade_light.cpp @@ -18,19 +18,18 @@ //distance static ConVar defdist("csm_default_distance", "1000", FCVAR_DEVELOPMENTONLY, "Default Z distance. Used for some fov calculations. Please dont change"); -static ConVar curdist("csm_current_distance", "100000", 0, "Current Z distance. You can change it."); +ConVar curdist("csm_current_distance", "100000", 0, "Current Z distance. You can change it."); //fov things static ConVar defFOV("csm_default_fov", "15", FCVAR_DEVELOPMENTONLY, "Default FOV. Used for some fov calculations. Please dont change"); -static ConVar curFOV("csm_current_fov", "15", 0, "Current FOV. You can change it"); -static ConVar csm_second_fov("csm_second_fov", "360", FCVAR_NONE, "FOV of the second csm."); -static ConVar csm_third_fov("csm_third_fov", "2800", FCVAR_NONE, "FOV of the second csm."); +ConVar curFOV("csm_current_fov", "15", 0, "Current FOV. You can change it"); +ConVar csm_second_fov("csm_second_fov", "360", FCVAR_NONE, "FOV of the second csm."); +ConVar csm_third_fov("csm_third_fov", "2800", FCVAR_NONE, "FOV of the second csm."); //farz and nearz ConVar csm_nearz("csm_nearz", "90000"); ConVar csm_farz("csm_farz", "200000"); -ConVar csm_enable("csm_enable", "1"); @@ -185,7 +184,7 @@ CEnvCascadeLightThird::CEnvCascadeLightThird(void) #else m_LightColor.Init(255, 255, 255, 1); #endif - m_bState = csm_enable.GetBool(); + m_bState = true; m_flLightFOV = 45.0f; m_bEnableShadows = true; m_bLightOnlyTarget = false; @@ -237,7 +236,6 @@ void CEnvCascadeLightThird::Activate(void) void CEnvCascadeLightThird::InitialThink(void) { - m_bState = csm_enable.GetBool(); float bibigon = defdist.GetFloat() / curdist.GetFloat(); m_flLightFOV = csm_third_fov.GetFloat() * bibigon; m_hTargetEntity = gEntList.FindEntityByName(NULL, m_target); @@ -339,7 +337,7 @@ CEnvCascadeLightSecond::CEnvCascadeLightSecond(void) #else m_LightColor.Init(255, 255, 255, 1); #endif - m_bState = csm_enable.GetBool(); + m_bState = true; m_flLightFOV = 45.0f; m_bEnableShadows = true; m_bLightOnlyTarget = false; @@ -391,7 +389,6 @@ void CEnvCascadeLightSecond::Activate(void) void CEnvCascadeLightSecond::InitialThink(void) { - m_bState = csm_enable.GetBool(); float bibigon = defdist.GetFloat() / curdist.GetFloat(); m_flLightFOV = csm_second_fov.GetFloat() * bibigon; m_hTargetEntity = gEntList.FindEntityByName(NULL, m_target); @@ -424,8 +421,6 @@ public: void Preparation(); //Inputs - void InputTurnOn(inputdata_t& inputdata); - void InputTurnOff(inputdata_t& inputdata); void InputSetEnableShadows(inputdata_t& inputdata); void InputSetLightColor( inputdata_t &inputdata ); void InputSetSpotlightTexture(inputdata_t& inputdata); @@ -459,6 +454,7 @@ private: CNetworkVar(float, m_flNearZ); CNetworkVar(float, m_flFarZ); CNetworkVar(int, m_nShadowQuality); + float m_flBrightnessScale; bool m_bEnableThird; @@ -484,11 +480,10 @@ DEFINE_KEYFIELD(m_flFarZ, FIELD_FLOAT, "farz"), DEFINE_KEYFIELD(m_nShadowQuality, FIELD_INTEGER, "shadowquality"), DEFINE_FIELD(m_LinearFloatLightColor, FIELD_VECTOR), DEFINE_KEYFIELD(m_bEnableAngleFromEnv, FIELD_BOOLEAN, "uselightenvangles"), +DEFINE_KEYFIELD(m_flBrightnessScale, FIELD_FLOAT, "brightnessscale"), //Inputs -DEFINE_INPUTFUNC(FIELD_VOID, "Enable", InputTurnOn), -DEFINE_INPUTFUNC(FIELD_VOID, "Disable", InputTurnOff), DEFINE_INPUTFUNC(FIELD_BOOLEAN, "EnableShadows", InputSetEnableShadows), DEFINE_INPUTFUNC(FIELD_COLOR32, "LightColor", InputSetLightColor), DEFINE_INPUTFUNC(FIELD_FLOAT, "Ambient", InputSetAmbient), @@ -530,13 +525,14 @@ CEnvCascadeLight::CEnvCascadeLight(void) #else m_LightColor.Init(255, 255, 255, 1); #endif - m_bState = csm_enable.GetBool(); + m_bState = true; m_flLightFOV = 45.0f; m_bEnableShadows = true; m_bLightOnlyTarget = false; m_bLightWorld = true; m_bCameraSpace = false; m_bEnableAngleFromEnv = false; + m_flBrightnessScale = 1.0f; Q_strcpy(m_SpotlightTextureName.GetForModify(), "tools\\fakecsm\\mask_center"); m_nSpotlightTextureFrame = 0; @@ -632,6 +628,8 @@ void CEnvCascadeLight::Preparation() DevMsg("[FAKE CSM] Main csm entity can't find \"csmorigin\" entity!"); } + ConVarRef("csm_brightness_general").SetValue(m_flBrightnessScale); + } void CEnvCascadeLight::Spawn() @@ -677,16 +675,6 @@ bool CEnvCascadeLight::KeyValue(const char* szKeyName, const char* szValue) return true; } -void CEnvCascadeLight::InputTurnOn(inputdata_t& inputdata) -{ - m_bState = true; -} - -void CEnvCascadeLight::InputTurnOff(inputdata_t& inputdata) -{ - m_bState = false; -} - void CEnvCascadeLight::InputSetEnableShadows(inputdata_t& inputdata) { @@ -706,10 +694,10 @@ void CEnvCascadeLight::InputSetSpotlightTexture(inputdata_t& inputdata) void CEnvCascadeLight::Activate(void) { - if (GetSpawnFlags() & ENV_CASCADE_STARTON) + /*if (GetSpawnFlags() & ENV_CASCADE_STARTON) { m_bState = true; - } + }*/ SetThink(&CEnvCascadeLight::InitialThink); SetNextThink(gpGlobals->curtime + 0.1f); @@ -718,7 +706,6 @@ void CEnvCascadeLight::Activate(void) void CEnvCascadeLight::InitialThink(void) { - m_bState = csm_enable.GetBool(); m_hTargetEntity = gEntList.FindEntityByName(NULL, m_target); float bibigon = defdist.GetFloat() / curdist.GetFloat(); curFOV.SetValue(defFOV.GetFloat() * bibigon);