本文整理汇总了C++中Weather::SetFog方法的典型用法代码示例。如果您正苦于以下问题:C++ Weather::SetFog方法的具体用法?C++ Weather::SetFog怎么用?C++ Weather::SetFog使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Weather
的用法示例。
在下文中一共展示了Weather::SetFog方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoTick
void Game::DoTick()
{
// Tutorial 3: Walk the meteor list.
// This looks really clunky to me...there's probably a better way.
// Just be careful not to delete the iterator you are using.
std::list< Meteor* >::iterator it = meteorList.begin();
while ( it != meteorList.end() )
{
Meteor* meteor = *it;
if ( meteor->Done() )
{
std::list< Meteor* >::iterator deleteIt = it;
++it;
meteorList.erase( deleteIt );
delete meteor;
}
else
{
meteor->DoTick();
++it;
}
}
// Tutorial 4: Weather
U32 day, hour, minute, second;
Lilith3D::GetTimeClock()->CalcCalendarTime( &day, &hour, &minute, &second );
Weather* weather = lilith->GetTargetWeather();
// This is just so we don't keep calling this withou
// significant time change. Look for the 'minute' in
// game time to actually be different.
if ( weatherMinute != minute )
{
const float FOG_MAX = 0.7f;
const U32 FOG_START = 2;
const U32 FOG_PEAK = 7;
const U32 FOG_END = 11;
const int RAIN_START = 16;
const int RAIN_PEAK = 20;
const int RAIN_END = 23;
if ( hour >= FOG_START && hour <= FOG_END )
{
// Fog in the morning.
if ( hour < FOG_PEAK )
weather->SetFog( FOG_MAX * Interpolate( (float)FOG_START*60, (float)0.0f,
(float)FOG_PEAK*60, (float)1.0,
(float)(hour*60+minute) ) );
else
weather->SetFog( FOG_MAX * Interpolate( (float)FOG_PEAK*60, (float)1.0f,
(float)FOG_END*60, (float)0.0,
(float)(hour*60+minute) ) );
}
else if ( hour >= RAIN_START && hour <= RAIN_END )
{
// Rain in the evening - be sure to set a little fog too. Rain
// looks bad without fog.
if ( hour < RAIN_PEAK )
{
weather->SetRain( Interpolate( (float)RAIN_START*60, (float)0.0f,
(float)RAIN_PEAK*60, (float)1.0,
(float)(hour*60+minute) ) );
weather->SetFog( 0.5f * Interpolate( (float)RAIN_START*60, (float)0.0f,
(float)RAIN_PEAK*60, (float)1.0,
(float)(hour*60+minute) ) );
}
else
{
weather->SetRain( Interpolate( (float)RAIN_PEAK*60, (float)1.0f,
(float)RAIN_END*60, (float)0.0,
(float)(hour*60+minute) ) );
weather->SetFog( 0.5f * Interpolate( (float)RAIN_PEAK*60, (float)1.0f,
(float)RAIN_END*60, (float)0.0,
(float)(hour*60+minute) ) );
}
}
else
{
weather->SetRain( 0.0f );
weather->SetFog( 0.0f );
}
}
}