Files
HL2Overcharged/game/shared/deferred/CDefLight.h
2025-05-21 21:20:08 +03:00

219 lines
4.2 KiB
C++

#ifndef CDEF_LIGHT_H
#define CDEF_LIGHT_H
#include "deferred_shared_common.h"
#ifdef CLIENT_DLL
struct def_light_t;
#endif
class CDeferredLight : public CBaseEntity
{
DECLARE_CLASS( CDeferredLight, CBaseEntity );
DECLARE_NETWORKCLASS();
#ifdef GAME_DLL
DECLARE_DATADESC();
#endif
public:
CDeferredLight();
~CDeferredLight();
#ifdef GAME_DLL
virtual void Activate();
virtual int UpdateTransmitState();
#else
virtual void PostDataUpdate( DataUpdateType_t t );
virtual void UpdateOnRemove();
virtual void ClientThink();
#endif
inline Vector GetColor_Diffuse();
inline Vector GetColor_Ambient();
inline float GetRadius();
inline float GetFalloffPower();
inline float GetSpotCone_Inner();
inline float GetSpotCone_Outer();
inline int GetVisible_Distance();
inline int GetVisible_FadeRange();
inline int GetShadow_Distance();
inline int GetShadow_FadeRange();
inline int GetStyle_Seed();
inline float GetStyle_Amount();
inline float GetStyle_Speed();
inline float GetStyle_Smooth();
inline float GetStyle_Random();
inline int GetLight_Type();
inline int GetLight_Flags();
inline int GetCookieIndex();
#if DEFCFG_ADAPTIVE_VOLUMETRIC_LOD
inline void GetVolumeLODDistances( float& lod0, float& lod1, float& lod2, float& lod3 );
#endif
#if DEFCFG_CONFIGURABLE_VOLUMETRIC_LOD
inline int GetVolumeSamples();
#endif
#ifdef GAME_DLL
void SetRadius( float r );
#endif
private:
#ifdef GAME_DLL
bool m_bShouldTransmit;
string_t m_str_CookieString;
string_t m_str_Diff;
string_t m_str_Ambient;
void UpdateSize();
#else
def_light_t *m_pLight;
void ApplyDataToLight();
#endif
CNetworkVector( m_vecColor_Diff );
CNetworkVector( m_vecColor_Ambient );
CNetworkVar( float, m_flRadius );
CNetworkVar( float, m_flFalloffPower );
CNetworkVar( float, m_flSpotConeInner );
CNetworkVar( float, m_flSpotConeOuter );
CNetworkVar( int, m_iVisible_Dist );
CNetworkVar( int, m_iVisible_FadeRange );
CNetworkVar( int, m_iShadow_Dist );
CNetworkVar( int, m_iShadow_FadeRange );
CNetworkVar( float, m_flStyle_Amount );
CNetworkVar( float, m_flStyle_Speed );
CNetworkVar( float, m_flStyle_Smooth );
CNetworkVar( float, m_flStyle_Random );
CNetworkVar( int, m_iStyle_Seed );
CNetworkVar( int, m_iLightType );
CNetworkVar( int, m_iDefFlags );
CNetworkVar( int, m_iCookieIndex );
#if DEFCFG_ADAPTIVE_VOLUMETRIC_LOD
CNetworkVar( float, m_flVolumeLOD0Dist );
CNetworkVar( float, m_flVolumeLOD1Dist );
CNetworkVar( float, m_flVolumeLOD2Dist );
CNetworkVar( float, m_flVolumeLOD3Dist );
#endif
#if DEFCFG_CONFIGURABLE_VOLUMETRIC_LOD
CNetworkVar( int, m_iVolumeSamples );
#endif
};
Vector CDeferredLight::GetColor_Diffuse()
{
return m_vecColor_Diff;
}
Vector CDeferredLight::GetColor_Ambient()
{
return m_vecColor_Ambient;
}
float CDeferredLight::GetRadius()
{
return m_flRadius;
}
float CDeferredLight::GetFalloffPower()
{
return m_flFalloffPower;
}
float CDeferredLight::GetSpotCone_Inner()
{
return m_flSpotConeInner;
}
float CDeferredLight::GetSpotCone_Outer()
{
return m_flSpotConeOuter;
}
int CDeferredLight::GetVisible_Distance()
{
return m_iVisible_Dist;
}
int CDeferredLight::GetVisible_FadeRange()
{
return m_iVisible_FadeRange;
}
int CDeferredLight::GetShadow_Distance()
{
return m_iShadow_Dist;
}
int CDeferredLight::GetShadow_FadeRange()
{
return m_iShadow_FadeRange;
}
int CDeferredLight::GetStyle_Seed()
{
return m_iStyle_Seed;
}
float CDeferredLight::GetStyle_Amount()
{
return m_flStyle_Amount;
}
float CDeferredLight::GetStyle_Speed()
{
return m_flStyle_Speed;
}
float CDeferredLight::GetStyle_Smooth()
{
return m_flStyle_Smooth;
}
float CDeferredLight::GetStyle_Random()
{
return m_flStyle_Random;
}
int CDeferredLight::GetLight_Type()
{
return m_iLightType;
}
int CDeferredLight::GetLight_Flags()
{
return m_iDefFlags;
}
int CDeferredLight::GetCookieIndex()
{
return m_iCookieIndex;
}
#if DEFCFG_ADAPTIVE_VOLUMETRIC_LOD
void CDeferredLight::GetVolumeLODDistances( float& lod0, float& lod1, float& lod2, float& lod3 )
{
lod0 = m_flVolumeLOD0Dist;
lod1 = m_flVolumeLOD1Dist;
lod2 = m_flVolumeLOD2Dist;
lod3 = m_flVolumeLOD3Dist;
}
#endif
#if DEFCFG_CONFIGURABLE_VOLUMETRIC_LOD
int CDeferredLight::GetVolumeSamples()
{
return m_iVolumeSamples;
}
#endif
#endif