mirror of
https://github.com/celisej567/Fake-CSM-Mapbase.git
synced 2026-01-05 22:10:24 +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_fQuadraticAtten = 0.0;
|
||||||
state.m_fLinearAtten = 100;
|
state.m_fLinearAtten = 100;
|
||||||
state.m_fConstantAtten = 0.0f;
|
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
|
#ifdef MAPBASE
|
||||||
float flAlpha = m_flCurrentLinearFloatLightAlpha * (1.0f / 255.0f);
|
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_Color[3] = 0.0f; // fixme: need to make ambient work m_flAmbient;
|
||||||
state.m_NearZ = m_flNearZ;
|
state.m_NearZ = m_flNearZ;
|
||||||
state.m_FarZ = m_flFarZ;
|
state.m_FarZ = m_flFarZ;
|
||||||
state.m_flShadowSlopeScaleDepthBias = ConVarRef("mat_slopescaledepthbias_shadowmap").GetFloat();//csm_slopescaledepthbias_shadowmap.GetFloat();
|
state.m_flShadowSlopeScaleDepthBias = ConVarRef("mat_slopescaledepthbias_shadowmap").GetFloat();
|
||||||
state.m_flShadowDepthBias = ConVarRef("mat_depthbias_shadowmap").GetFloat();//csm_depthbias_shadowmap.GetFloat();
|
state.m_flShadowDepthBias = ConVarRef("mat_depthbias_shadowmap").GetFloat();
|
||||||
state.m_bEnableShadows = m_bEnableShadows;
|
state.m_bEnableShadows = m_bEnableShadows;
|
||||||
state.m_pSpotlightTexture = materials->FindTexture(m_SpotlightTextureName, TEXTURE_GROUP_OTHER, false);
|
state.m_pSpotlightTexture = materials->FindTexture(m_SpotlightTextureName, TEXTURE_GROUP_OTHER, false);
|
||||||
state.m_nSpotlightTextureFrame = m_nSpotlightTextureFrame;
|
state.m_nSpotlightTextureFrame = m_nSpotlightTextureFrame;
|
||||||
|
|||||||
@@ -78,16 +78,14 @@ void CLightOrigin::Spawn()
|
|||||||
if (pEntity)
|
if (pEntity)
|
||||||
{
|
{
|
||||||
CEnvLight* pEnv = dynamic_cast<CEnvLight*>(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
|
else
|
||||||
{
|
{
|
||||||
//Msg("What the fuck? Map dont have light_environment with targetname!");
|
//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;
|
CEnvCascadeLightThird* ThirdCSM;
|
||||||
CNetworkVar(bool, m_bState);
|
CNetworkVar(bool, m_bState);
|
||||||
CNetworkVar(float, m_flLightFOV);
|
CNetworkVar(float, m_flLightFOV);
|
||||||
CNetworkVar(bool, EnableAngleFromEnv);
|
CNetworkVar(bool, m_bEnableAngleFromEnv);
|
||||||
CNetworkVar(bool, m_bEnableShadows);
|
CNetworkVar(bool, m_bEnableShadows);
|
||||||
CNetworkVar(bool, m_bLightOnlyTarget);
|
CNetworkVar(bool, m_bLightOnlyTarget);
|
||||||
CNetworkVar(bool, m_bLightWorld);
|
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_flFarZ, FIELD_FLOAT, "farz"),
|
||||||
DEFINE_KEYFIELD(m_nShadowQuality, FIELD_INTEGER, "shadowquality"),
|
DEFINE_KEYFIELD(m_nShadowQuality, FIELD_INTEGER, "shadowquality"),
|
||||||
DEFINE_FIELD(m_LinearFloatLightColor, FIELD_VECTOR),
|
DEFINE_FIELD(m_LinearFloatLightColor, FIELD_VECTOR),
|
||||||
DEFINE_KEYFIELD(EnableAngleFromEnv, FIELD_BOOLEAN, "uselightenvangles"),
|
DEFINE_KEYFIELD(m_bEnableAngleFromEnv, FIELD_BOOLEAN, "uselightenvangles"),
|
||||||
|
|
||||||
|
|
||||||
//Inputs
|
//Inputs
|
||||||
@@ -538,7 +536,7 @@ CEnvCascadeLight::CEnvCascadeLight(void)
|
|||||||
m_bLightOnlyTarget = false;
|
m_bLightOnlyTarget = false;
|
||||||
m_bLightWorld = true;
|
m_bLightWorld = true;
|
||||||
m_bCameraSpace = false;
|
m_bCameraSpace = false;
|
||||||
EnableAngleFromEnv = false;
|
m_bEnableAngleFromEnv = false;
|
||||||
|
|
||||||
Q_strcpy(m_SpotlightTextureName.GetForModify(), "tools\\fakecsm\\mask_center");
|
Q_strcpy(m_SpotlightTextureName.GetForModify(), "tools\\fakecsm\\mask_center");
|
||||||
m_nSpotlightTextureFrame = 0;
|
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()));
|
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;
|
csm_origin->angFEnv = true;
|
||||||
SetLocalAngles(QAngle(90, 0, 0));
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
csm_origin->SetAbsAngles(QAngle((GetLocalAngles().x - 90), GetLocalAngles().y, -GetLocalAngles().z));
|
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();
|
DefaultAngle = csm_origin->GetAbsAngles();
|
||||||
CurrentAngle = DefaultAngle;
|
CurrentAngle = DefaultAngle;
|
||||||
@@ -638,7 +629,7 @@ void CEnvCascadeLight::Preparation()
|
|||||||
}
|
}
|
||||||
else
|
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];
|
float tmp[4];
|
||||||
UTIL_StringToFloatArray(tmp, 4, pString);
|
UTIL_StringToFloatArray(tmp, 4, pString);
|
||||||
if (tmp[4] <= 0.0f)
|
if (tmp[3] <= 0.0f)
|
||||||
{
|
{
|
||||||
tmp[4] = 255.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.x = GammaToLinear(tmp[0] * (1.0f / 255.0f)) * tmp[3];
|
||||||
color.y = GammaToLinear(tmp[1] * (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];
|
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"))
|
if (FStrEq(szKeyName, "lightcolor") || FStrEq(szKeyName, "color"))
|
||||||
{
|
{
|
||||||
|
|
||||||
float tmp[4];
|
float tmp[4];
|
||||||
UTIL_StringToFloatArray(tmp, 4, szValue);
|
UTIL_StringToFloatArray(tmp, 4, szValue);
|
||||||
m_LightColor.SetR(tmp[0]);
|
m_LightColor.SetR(tmp[0]);
|
||||||
|
|||||||
@@ -236,12 +236,61 @@ LINK_ENTITY_TO_CLASS( light_glspot, CLight );
|
|||||||
|
|
||||||
LINK_ENTITY_TO_CLASS( light_environment, CEnvLight );
|
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 )
|
bool CEnvLight::KeyValue( const char *szKeyName, const char *szValue )
|
||||||
{
|
{
|
||||||
if (FStrEq(szKeyName, "_light"))
|
if (FStrEq(szKeyName, "_light"))
|
||||||
{
|
{
|
||||||
// nothing
|
// nothing
|
||||||
}
|
}
|
||||||
|
else if (FStrEq(szKeyName, "pitch"))
|
||||||
|
{
|
||||||
|
m_iPitch = atoi(szValue);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return BaseClass::KeyValue( szKeyName, szValue );
|
return BaseClass::KeyValue( szKeyName, szValue );
|
||||||
@@ -250,8 +299,77 @@ bool CEnvLight::KeyValue( const char *szKeyName, const char *szValue )
|
|||||||
return true;
|
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 )
|
void CEnvLight::Spawn( void )
|
||||||
{
|
{
|
||||||
BaseClass::Spawn( );
|
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
|
class CEnvLight : public CLight
|
||||||
{
|
{
|
||||||
public:
|
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
|
#endif // LIGHTS_H
|
||||||
|
|||||||
Reference in New Issue
Block a user