示例#1
0
文件: main.cpp 项目: rhoem1/3dspace
void updateLights() {

	for(LightList::iterator light = Lights.begin(); light != Lights.end(); light++) {
		if(light->on) {
			if(fabsf(light->orient.Yaw   += (kPi/180.0f) * light->origin.Yaw  ) >= k2Pi) light->orient.Yaw   -= k2Pi;
			if(fabsf(light->orient.Pitch += (kPi/180.0f) * light->origin.Pitch) >= k2Pi) light->orient.Pitch -= k2Pi;
			if(fabsf(light->orient.Roll  += (kPi/180.0f) * light->origin.Roll ) >= k2Pi) light->orient.Roll  -= k2Pi;
		}
	}

}
//------------------------------------------------------------------------------
void SegmentedDynamicLightManager::regenerateActiveLightList(const LightList& i_LightList)
{
	//add the buffers to the segmented lists
	LightList::const_iterator itLight = i_LightList.begin(),
		itLightEnd = i_LightList.end();
	for(;itLight != itLightEnd ; ++itLight)
	{
		const Light* pLight = (*itLight);
		Light::LightTypes type = pLight->getType();
		if (((type == Light::LT_SPOTLIGHT) || (type == Light::LT_POINT)) &&
			(pLight->getAttenuationRange() > 0))
		{
				
			MapLightData::iterator it = mActiveLights.insert(
				MapLightData::value_type(pLight,LightData())).first;
			LightData& lightData = it->second;
				
			calculateLightBounds(pLight, lightData);
		}
	}
}