/// Update light-related shader variables void SetLightsToShader( CCopyEntity& entity, ShaderManager& rShaderMgr ) { shared_ptr<ShaderLightManager> pShaderLightMgr = rShaderMgr.GetShaderLightManager(); int i, num_current_lights = entity.GetNumLights(); LightEntity *pLightEntity = NULL; // clear any lights currenly stored in the shader light manager pShaderLightMgr->ClearLights(); ShaderLightParamsWriter light_params_writer( pShaderLightMgr.get() ); for( i=0; i<num_current_lights; i++ ) { EntityHandle<LightEntity>& light_entity = entity.GetLight( i ); LightEntity *pLightEntity = light_entity.GetRawPtr(); if( !pLightEntity ) continue; // pLightEntity->SetLightToShader( pShaderLightMgr ); // copy light properties to the shader registers pLightEntity->GetLightObject()->Accept( light_params_writer ); } pShaderLightMgr->CommitChanges(); }