Example #1
0
// load point & distant lights from light wave scene file
// distant lights in the scene is loaded as directional lights
void CBSPMapData_LW::SetLight( CLightWaveSceneLoader& rLightWaveScene )
{
	float* pafAmbientColor = rLightWaveScene.GetAmbientColor();
	float fAmbientIntensity = rLightWaveScene.GetAmbientIntensity();

	if( pafAmbientColor[0] != 0 || pafAmbientColor[1] != 0 || pafAmbientColor[2] != 0 )
	{
		if( fAmbientIntensity != 0 )
		{
			CAmbientLight* pAmbientLight = new CAmbientLight;
			pAmbientLight->fIntensity   = fAmbientIntensity;
			pAmbientLight->Color.fRed   = pafAmbientColor[0];
			pAmbientLight->Color.fGreen = pafAmbientColor[1];
			pAmbientLight->Color.fBlue  = pafAmbientColor[2];

			this->m_vecpLight.push_back( pAmbientLight );
		}
	}

	float* pafColor;
	CPointLight* pPointLight;
	CDirectionalLight* pDirLight;
	Matrix33 matOrient;
	for(int i=0; i<rLightWaveScene.GetNumLights(); i++)
	{
		CLWS_Light* pLWS_Light = NULL;
		pLWS_Light = rLightWaveScene.GetLight(i);
		switch( pLWS_Light->GetType() )
		{
		case CLWS_Light::TYPE_POINT:
			pPointLight = new CPointLight;
			pafColor = pLWS_Light->GetColor();
			pPointLight->Color.fRed   = pafColor[0];
			pPointLight->Color.fGreen = pafColor[1];
			pPointLight->Color.fBlue  = pafColor[2];
			pPointLight->fIntensity   = pLWS_Light->GetIntensity();
			pPointLight->vPosition = pLWS_Light->GetPositionAt( 0 );

			this->m_vecpLight.push_back( pPointLight );

			break;

		case CLWS_Light::TYPE_DISTANT:
			pDirLight = new CDirectionalLight;
			pafColor = pLWS_Light->GetColor();
			pDirLight->Color.fRed   = pafColor[0];
			pDirLight->Color.fGreen = pafColor[1];
			pDirLight->Color.fBlue  = pafColor[2];
			pDirLight->fIntensity   = pLWS_Light->GetIntensity();
			pDirLight->vPseudoPosition = pLWS_Light->GetPositionAt( 0 );
			pLWS_Light->GetOrientationAt( 0, matOrient );
			pDirLight->vDirection = matOrient.GetColumn(2);

			this->m_vecpLight.push_back( pDirLight );

			break;

		default:
			break;	// ignore lights other that point / distant

		}

	}

}
Example #2
0
inline void Camera::SetOrientation( const Matrix33& matOrient )
{
	m_vRight = matOrient.GetColumn(0);
	m_vUp    = matOrient.GetColumn(1);
	m_vFront = matOrient.GetColumn(2);
}