mirror of
https://github.com/celisej567/Fake-CSM-Mapbase.git
synced 2025-12-31 21:48:38 +03:00
Angles
-Now You not have to copy pitch from "Pitch" to "Angles" in light_env. -Fixed pitch problems
This commit is contained in:
@@ -543,9 +543,6 @@ void C_EnvCascadeLightSecond::UpdateLight(bool bForceUpdate)
|
||||
state.m_fQuadraticAtten = 0.0;
|
||||
state.m_fLinearAtten = 100;
|
||||
state.m_fConstantAtten = 0.0f;
|
||||
//state.m_Color[0] = m_LinearFloatLightColor.x;
|
||||
//state.m_Color[1] = m_LinearFloatLightColor.y;
|
||||
//state.m_Color[2] = m_LinearFloatLightColor.z;
|
||||
|
||||
#ifdef MAPBASE
|
||||
float flAlpha = m_flCurrentLinearFloatLightAlpha * (1.0f / 255.0f);
|
||||
@@ -561,8 +558,8 @@ void C_EnvCascadeLightSecond::UpdateLight(bool bForceUpdate)
|
||||
state.m_Color[3] = 0.0f; // fixme: need to make ambient work m_flAmbient;
|
||||
state.m_NearZ = m_flNearZ;
|
||||
state.m_FarZ = m_flFarZ;
|
||||
state.m_flShadowSlopeScaleDepthBias = ConVarRef("mat_slopescaledepthbias_shadowmap").GetFloat();//csm_slopescaledepthbias_shadowmap.GetFloat();
|
||||
state.m_flShadowDepthBias = ConVarRef("mat_depthbias_shadowmap").GetFloat();//csm_depthbias_shadowmap.GetFloat();
|
||||
state.m_flShadowSlopeScaleDepthBias = ConVarRef("mat_slopescaledepthbias_shadowmap").GetFloat();
|
||||
state.m_flShadowDepthBias = ConVarRef("mat_depthbias_shadowmap").GetFloat();
|
||||
state.m_bEnableShadows = m_bEnableShadows;
|
||||
state.m_pSpotlightTexture = materials->FindTexture(m_SpotlightTextureName, TEXTURE_GROUP_OTHER, false);
|
||||
state.m_nSpotlightTextureFrame = m_nSpotlightTextureFrame;
|
||||
|
||||
@@ -78,16 +78,14 @@ void CLightOrigin::Spawn()
|
||||
if (pEntity)
|
||||
{
|
||||
CEnvLight* pEnv = dynamic_cast<CEnvLight*>(pEntity);
|
||||
|
||||
QAngle bb = pEnv->GetAbsAngles();
|
||||
SetAbsAngles(bb);
|
||||
|
||||
ConColorMsg(Color(0,230,0), "light_environment Founded!\n");
|
||||
SetAbsAngles(QAngle(-90 - pEnv->m_iPitch, pEnv->GetAbsAngles().y, pEnv->GetAbsAngles().z));
|
||||
DevMsg("[FAKE CSM] light_environment Founded!\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
//Msg("What the fuck? Map dont have light_environment with targetname!");
|
||||
ConColorMsg(Color(230, 0, 0), "What the fuck? Map dont have light_environment with targetname!\n");
|
||||
DevMsg("[FAKE CSM] Cant find light_environment with targetname!\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -449,7 +447,7 @@ private:
|
||||
CEnvCascadeLightThird* ThirdCSM;
|
||||
CNetworkVar(bool, m_bState);
|
||||
CNetworkVar(float, m_flLightFOV);
|
||||
CNetworkVar(bool, EnableAngleFromEnv);
|
||||
CNetworkVar(bool, m_bEnableAngleFromEnv);
|
||||
CNetworkVar(bool, m_bEnableShadows);
|
||||
CNetworkVar(bool, m_bLightOnlyTarget);
|
||||
CNetworkVar(bool, m_bLightWorld);
|
||||
@@ -485,7 +483,7 @@ DEFINE_KEYFIELD(m_flNearZ, FIELD_FLOAT, "nearz"),
|
||||
DEFINE_KEYFIELD(m_flFarZ, FIELD_FLOAT, "farz"),
|
||||
DEFINE_KEYFIELD(m_nShadowQuality, FIELD_INTEGER, "shadowquality"),
|
||||
DEFINE_FIELD(m_LinearFloatLightColor, FIELD_VECTOR),
|
||||
DEFINE_KEYFIELD(EnableAngleFromEnv, FIELD_BOOLEAN, "uselightenvangles"),
|
||||
DEFINE_KEYFIELD(m_bEnableAngleFromEnv, FIELD_BOOLEAN, "uselightenvangles"),
|
||||
|
||||
|
||||
//Inputs
|
||||
@@ -538,7 +536,7 @@ CEnvCascadeLight::CEnvCascadeLight(void)
|
||||
m_bLightOnlyTarget = false;
|
||||
m_bLightWorld = true;
|
||||
m_bCameraSpace = false;
|
||||
EnableAngleFromEnv = false;
|
||||
m_bEnableAngleFromEnv = false;
|
||||
|
||||
Q_strcpy(m_SpotlightTextureName.GetForModify(), "tools\\fakecsm\\mask_center");
|
||||
m_nSpotlightTextureFrame = 0;
|
||||
@@ -615,20 +613,13 @@ void CEnvCascadeLight::Preparation()
|
||||
|
||||
SetAbsOrigin(Vector(csm_origin->GetAbsOrigin().x, csm_origin->GetAbsOrigin().y, csm_origin->GetAbsOrigin().z + curdist.GetInt()));
|
||||
|
||||
if (EnableAngleFromEnv)
|
||||
{
|
||||
if (m_bEnableAngleFromEnv)
|
||||
csm_origin->angFEnv = true;
|
||||
SetLocalAngles(QAngle(90, 0, 0));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
csm_origin->SetAbsAngles(QAngle((GetLocalAngles().x - 90), GetLocalAngles().y, -GetLocalAngles().z));
|
||||
SetLocalAngles(QAngle(90, 0, 0));
|
||||
DevMsg("CSM using light_environment \n");
|
||||
}
|
||||
|
||||
|
||||
SetLocalAngles(QAngle(90, 0, 0));
|
||||
|
||||
DefaultAngle = csm_origin->GetAbsAngles();
|
||||
CurrentAngle = DefaultAngle;
|
||||
@@ -638,7 +629,7 @@ void CEnvCascadeLight::Preparation()
|
||||
}
|
||||
else
|
||||
{
|
||||
Msg("Main csm entity can't find \"csmorigin\" entity!");
|
||||
DevMsg("[FAKE CSM] Main csm entity can't find \"csmorigin\" entity!");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -654,11 +645,11 @@ void UTIL_ColorStringToLinearFloatColorCSMFake(Vector& color, const char* pStrin
|
||||
{
|
||||
float tmp[4];
|
||||
UTIL_StringToFloatArray(tmp, 4, pString);
|
||||
if (tmp[4] <= 0.0f)
|
||||
{
|
||||
tmp[4] = 255.0f;
|
||||
if (tmp[3] <= 0.0f)
|
||||
{
|
||||
tmp[3] = 255.0f;
|
||||
}
|
||||
tmp[4] *= (1.0f / 255.0f);
|
||||
tmp[3] *= (1.0f / 255.0f);
|
||||
color.x = GammaToLinear(tmp[0] * (1.0f / 255.0f)) * tmp[3];
|
||||
color.y = GammaToLinear(tmp[1] * (1.0f / 255.0f)) * tmp[3];
|
||||
color.z = GammaToLinear(tmp[2] * (1.0f / 255.0f)) * tmp[3];
|
||||
@@ -669,6 +660,7 @@ bool CEnvCascadeLight::KeyValue(const char* szKeyName, const char* szValue)
|
||||
|
||||
if (FStrEq(szKeyName, "lightcolor") || FStrEq(szKeyName, "color"))
|
||||
{
|
||||
|
||||
float tmp[4];
|
||||
UTIL_StringToFloatArray(tmp, 4, szValue);
|
||||
m_LightColor.SetR(tmp[0]);
|
||||
|
||||
@@ -236,12 +236,61 @@ LINK_ENTITY_TO_CLASS( light_glspot, CLight );
|
||||
|
||||
LINK_ENTITY_TO_CLASS( light_environment, CEnvLight );
|
||||
|
||||
BEGIN_DATADESC(CEnvLight)
|
||||
|
||||
// Fuctions
|
||||
DEFINE_FUNCTION(FadeThink),
|
||||
|
||||
// Inputs
|
||||
DEFINE_INPUTFUNC(FIELD_VOID, "Toggle", InputToggle),
|
||||
DEFINE_INPUTFUNC(FIELD_VOID, "TurnOn", InputTurnOn),
|
||||
DEFINE_INPUTFUNC(FIELD_VOID, "TurnOff", InputTurnOff),
|
||||
|
||||
END_DATADESC()
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Purpose : Fade light to new starting pattern value then stop thinking
|
||||
//------------------------------------------------------------------------------
|
||||
void CEnvLight::FadeThink(void)
|
||||
{
|
||||
if (m_iCurrentFade < m_iTargetFade)
|
||||
{
|
||||
m_iCurrentFade++;
|
||||
}
|
||||
else if (m_iCurrentFade > m_iTargetFade)
|
||||
{
|
||||
m_iCurrentFade--;
|
||||
}
|
||||
|
||||
// If we're done fading instantiate our light pattern and stop thinking
|
||||
if (m_iCurrentFade == m_iTargetFade)
|
||||
{
|
||||
engine->LightStyle(m_iStyle, (char*)STRING(m_iszPattern));
|
||||
SetNextThink(TICK_NEVER_THINK);
|
||||
}
|
||||
// Otherwise instantiate our current fade value and keep thinking
|
||||
else
|
||||
{
|
||||
char sCurString[2];
|
||||
sCurString[0] = m_iCurrentFade;
|
||||
sCurString[1] = 0;
|
||||
engine->LightStyle(m_iStyle, sCurString);
|
||||
|
||||
// UNDONE: Consider making this settable war to control fade speed
|
||||
SetNextThink(gpGlobals->curtime + 0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
bool CEnvLight::KeyValue( const char *szKeyName, const char *szValue )
|
||||
{
|
||||
if (FStrEq(szKeyName, "_light"))
|
||||
{
|
||||
// nothing
|
||||
}
|
||||
else if (FStrEq(szKeyName, "pitch"))
|
||||
{
|
||||
m_iPitch = atoi(szValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
return BaseClass::KeyValue( szKeyName, szValue );
|
||||
@@ -250,8 +299,77 @@ bool CEnvLight::KeyValue( const char *szKeyName, const char *szValue )
|
||||
return true;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Turn the light on
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEnvLight::TurnOn(void)
|
||||
{
|
||||
if (m_iszPattern != NULL_STRING)
|
||||
{
|
||||
engine->LightStyle(m_iStyle, (char*)STRING(m_iszPattern));
|
||||
}
|
||||
else
|
||||
{
|
||||
engine->LightStyle(m_iStyle, "m");
|
||||
}
|
||||
|
||||
CLEARBITS(m_spawnflags, SF_LIGHT_START_OFF);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Turn the light off
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEnvLight::TurnOff(void)
|
||||
{
|
||||
engine->LightStyle(m_iStyle, "a");
|
||||
SETBITS(m_spawnflags, SF_LIGHT_START_OFF);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Toggle the light on/off
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEnvLight::Toggle(void)
|
||||
{
|
||||
//Toggle it
|
||||
if (FBitSet(m_spawnflags, SF_LIGHT_START_OFF))
|
||||
{
|
||||
TurnOn();
|
||||
}
|
||||
else
|
||||
{
|
||||
TurnOff();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CEnvLight::Spawn( void )
|
||||
{
|
||||
BaseClass::Spawn( );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Handle the "turnon" input handler
|
||||
// Input : &inputdata -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEnvLight::InputTurnOn(inputdata_t& inputdata)
|
||||
{
|
||||
TurnOn();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Handle the "turnoff" input handler
|
||||
// Input : &inputdata -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEnvLight::InputTurnOff(inputdata_t& inputdata)
|
||||
{
|
||||
TurnOff();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Handle the "toggle" input handler
|
||||
// Input : &inputdata -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEnvLight::InputToggle(inputdata_t& inputdata)
|
||||
{
|
||||
Toggle();
|
||||
}
|
||||
|
||||
@@ -48,10 +48,32 @@ private:
|
||||
class CEnvLight : public CLight
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS(CEnvLight, CLight);
|
||||
DECLARE_CLASS( CEnvLight, CLight );
|
||||
DECLARE_DATADESC();
|
||||
|
||||
bool KeyValue(const char* szKeyName, const char* szValue);
|
||||
void Spawn(void);
|
||||
|
||||
|
||||
bool KeyValue( const char *szKeyName, const char *szValue );
|
||||
void Spawn( void );
|
||||
|
||||
void FadeThink(void);
|
||||
|
||||
void TurnOn(void);
|
||||
void TurnOff(void);
|
||||
void Toggle(void);
|
||||
|
||||
void InputToggle(inputdata_t& inputdata);
|
||||
void InputTurnOn(inputdata_t& inputdata);
|
||||
void InputTurnOff(inputdata_t& inputdata);
|
||||
|
||||
int m_iPitch;
|
||||
|
||||
private:
|
||||
int m_iStyle;
|
||||
int m_iDefaultStyle;
|
||||
string_t m_iszPattern;
|
||||
char m_iCurrentFade;
|
||||
char m_iTargetFade;
|
||||
};
|
||||
|
||||
#endif // LIGHTS_H
|
||||
|
||||
Reference in New Issue
Block a user