Counter Strike : Global Offensive Source Code
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//===== Copyright � 1996-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose: Ambient light controller entity with simple radial falloff
//
// $NoKeywords: $
//===========================================================================//
#include "cbase.h"
#include "c_spatialentity.h"
#include "spatialentitymgr.h"
#include "c_env_ambient_light.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
static ConVar cl_ambient_light_disableentities( "cl_ambient_light_disableentities", "0", FCVAR_NONE, "Disable map ambient light entities." );
static CSpatialEntityMgr s_EnvAmbientLightMgr;
IMPLEMENT_CLIENTCLASS_DT( C_EnvAmbientLight, DT_EnvAmbientLight, CEnvAmbientLight ) RecvPropVector( RECVINFO_NAME( m_Value, m_vecColor ) ), END_RECV_TABLE()
void C_EnvAmbientLight::ApplyAccumulation( void ) { Vector rgbVal = BlendedValue();
static ConVarRef mat_ambient_light_r( "mat_ambient_light_r" ); static ConVarRef mat_ambient_light_g( "mat_ambient_light_g" ); static ConVarRef mat_ambient_light_b( "mat_ambient_light_b" );
if ( mat_ambient_light_r.IsValid() ) { mat_ambient_light_r.SetValue( rgbVal.x ); }
if ( mat_ambient_light_g.IsValid() ) { mat_ambient_light_g.SetValue( rgbVal.y ); }
if ( mat_ambient_light_b.IsValid() ) { mat_ambient_light_b.SetValue( rgbVal.z ); } }
void C_EnvAmbientLight::AddToPersonalSpatialEntityMgr( void ) { s_EnvAmbientLightMgr.AddSpatialEntity( this ); }
void C_EnvAmbientLight::RemoveFromPersonalSpatialEntityMgr( void ) { s_EnvAmbientLightMgr.RemoveSpatialEntity( this ); }
void C_EnvAmbientLight::SetColor( const Vector &vecColor, float flLerpTime ) { if ( flLerpTime <= 0 ) { m_Value = vecColor / 255.0f; m_colorTimer.Invalidate(); return; }
m_vecStartColor = m_Value; m_vecTargetColor = vecColor / 255.0f; m_colorTimer.Start( flLerpTime ); }
void C_EnvAmbientLight::ClientThink( void ) { BaseClass::ClientThink();
if ( m_colorTimer.HasStarted() ) { if ( m_colorTimer.IsElapsed() ) { m_Value = m_vecTargetColor; m_colorTimer.Invalidate(); } else { m_Value = m_vecTargetColor - ( m_vecTargetColor - m_vecStartColor ) * m_colorTimer.GetRemainingRatio(); } } }
|