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(); }
//----------------------------------------------------------------------------- // 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 ); } } }
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(); }