Exemplo n.º 1
0
void CDeferredLight::UpdateOnRemove()
{
	BaseClass::UpdateOnRemove();

	if ( m_pLight != NULL )
	{
		GetLightingManager()->RemoveLight( m_pLight );
		delete m_pLight;
		m_pLight = NULL;
	}
}
void CDeferredLightContainer::UpdateOnRemove()
{
	BaseClass::UpdateOnRemove();

	Assert( m_iSanityCounter == 1 );
	m_iSanityCounter--;

	for ( int i = 0; i < m_hLights.Count(); i++ )
		GetLightingManager()->RemoveLight( m_hLights[i] );

	m_hLights.PurgeAndDeleteElements();
}
Exemplo n.º 3
0
//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
void C_BaseExplosionEffect::CreateDynamicLight( void )
{
	if ( m_fFlags & TE_EXPLFLAG_DLIGHT )
	{
#ifdef DEFERRED_ENABLED
		if( GetDeferredManager()->IsDeferredRenderingEnabled() == false )
#endif // DEFERRED_ENABLED
		{
			dlight_t *dl = effects->CL_AllocDlight( 0 );
		
			VectorCopy (m_vecOrigin, dl->origin);
		
			dl->decay	= 200;
			dl->radius	= 255 * m_flScale;
			dl->color.r = 255;
			dl->color.g = 220;
			dl->color.b = 128;
			dl->die		= gpGlobals->curtime + 0.1f;
		}
#ifdef DEFERRED_ENABLED
		else
		{
			def_light_temp_t *l = new def_light_temp_t( false, 0.2f );

			l->ang = vec3_angle;
			l->pos = m_vecOrigin + Vector(0, 0, 32.0f);

			l->col_diffuse = Vector( 0.964705882f, 0.82745098f, 0.403921569f ); //GetColor_Diffuse();

			l->flRadius = m_flScale * 512.0f;
			l->flFalloffPower = 1.0f;

			l->iVisible_Dist = 1024.0f;
			l->iVisible_Range = 1024.0f;
			l->iShadow_Dist = 512.0f;
			l->iShadow_Range = 512.0f;

			l->iFlags >>= DEFLIGHTGLOBAL_FLAGS_MAX_SHARED_BITS;
			l->iFlags <<= DEFLIGHTGLOBAL_FLAGS_MAX_SHARED_BITS;
			//l->iFlags |= DEFLIGHT_SHADOW_ENABLED;

			GetLightingManager()->AddTempLight( l );
		}
#endif // DEFERRED_ENABLED
	}
}
void CDeferredLightContainer::PostDataUpdate( DataUpdateType_t type )
{
	BaseClass::PostDataUpdate( type );

	if ( type == DATA_UPDATE_CREATED )
	{
		Assert( m_iSanityCounter == 0 );
		m_iSanityCounter++;

		for ( int i = 0; i < GetLightsAmount(); i++ )
		{
			def_light_t *l = new def_light_t( true );
			m_hLights.AddToTail( l );

			ReadWorldLight( i, *l );

			l->MakeDirtyAll();

			GetLightingManager()->AddLight( l );
		}
	}
}
Exemplo n.º 5
0
void CDeferredLight::PostDataUpdate( DataUpdateType_t t )
{
	BaseClass::PostDataUpdate( t );

	if ( t == DATA_UPDATE_CREATED )
	{
		Assert( m_pLight == NULL );

		m_pLight = new def_light_t();

		ApplyDataToLight();

		GetLightingManager()->AddLight( m_pLight );

		SetNextClientThink( CLIENT_THINK_ALWAYS );
	}
	else
	{
		ApplyDataToLight();

		m_pLight->MakeDirtyAll();
	}
}
static void LightingResourceRelease( int nChangeFlags )
{
	GetLightingManager()->OnMaterialReload();
}