text: #include "cbase.h"
  #include "dlight.h"
  #include "iefx.h"
  #include "IViewRender.h"
  #include "c_asw_dynamic_light.h"
  #include "asw_shareddefs.h"
  
  // memdbgon must be the last include file in a .cpp file!!!
  #include "tier0/memdbgon.h"
  
  IMPLEMENT_CLIENTCLASS_DT(C_ASW_DynamicLight, DT_ASW_Dynamic_Light, CASW_Dynamic_Light)
  RecvPropInt		(RECVINFO(m_Flags)),
  RecvPropInt		(RECVINFO(m_LightStyle)),
  RecvPropFloat	(RECVINFO(m_Radius)),
  RecvPropInt		(RECVINFO(m_Exponent)),
  RecvPropFloat	(RECVINFO(m_InnerAngle)),
  RecvPropFloat	(RECVINFO(m_OuterAngle)),
  RecvPropFloat	(RECVINFO(m_SpotRadius)),
  END_RECV_TABLE()
  
  C_ASW_DynamicLight::C_ASW_DynamicLight(void) : m_pSpotlightEnd(0)
  {
  	m_pDynamicLight = NULL;
  }
  
  C_ASW_DynamicLight::~C_ASW_DynamicLight()
  {
  	if (m_pDynamicLight)
  	{
  		m_pDynamicLight->die = gpGlobals->curtime;
  		m_pDynamicLight = NULL;
  	}
  }
  
  void C_ASW_DynamicLight::OnDataChanged(DataUpdateType_t updateType)
  {
  	if ( updateType == DATA_UPDATE_CREATED )
  	{
  		SetNextClientThink(gpGlobals->curtime + 0.05);
  	}
  }
  
  bool C_ASW_DynamicLight::ShouldDraw()
  {
  	//return false;
  	return true;
  }
  
  void C_ASW_DynamicLight::ClientThink(void)
  {
  	Vector forward;
  	AngleVectors( GetAbsAngles(), &forward );
  
  	if ( (m_Flags & DLIGHT_NO_MODEL_ILLUMINATION) == 0 )
  	{
  		if (!m_pDynamicLight || m_pDynamicLight->key != ASW_LIGHT_INDEX_FIRES + index)
  		{
  			m_pDynamicLight = effects->CL_AllocDlight( ASW_LIGHT_INDEX_FIRES + index );	
  		}
  		m_pDynamicLight->color.b = GetRenderColorB();
  		m_pDynamicLight->color.g = GetRenderColorG();
  		m_pDynamicLight->color.r = GetRenderColorR();
  
  		m_pDynamicLight->origin	= GetAbsOrigin();
  		m_pDynamicLight->radius = m_Radius;
  		m_pDynamicLight->color.exponent = m_Exponent;
  
  		m_pDynamicLight->die		= gpGlobals->curtime + 30.0f;
  	}
  	else
  	{
  		// In this case, the m_Flags could have changed; which is how we turn the light off
  		if (m_pDynamicLight)
  		{
  			m_pDynamicLight->die = gpGlobals->curtime;
  			m_pDynamicLight = 0;
  		}
  	}
  
  	SetNextClientThink(gpGlobals->curtime + 0.001);
  }
  
  