55 lines
1005 B
C++
55 lines
1005 B
C++
#include "stdafx.h"
|
|
#include "SGameSceneLifeActor.h"
|
|
#include "SGameSceneManager.h"
|
|
|
|
using namespace rp;
|
|
|
|
SGameSceneLifeActor::SGameSceneLifeActor(
|
|
DWORD lifeTime
|
|
, DWORD fadeInTime
|
|
, DWORD fadeOutTime )
|
|
: SGameSceneActor()
|
|
, mBeginTime ( 0 )
|
|
, mLifeTime ( lifeTime )
|
|
, mFadeInTime ( fadeInTime )
|
|
, mFadeOutTime ( fadeOutTime )
|
|
{
|
|
}
|
|
|
|
SGameSceneLifeActor::~SGameSceneLifeActor()
|
|
{
|
|
}
|
|
|
|
void SGameSceneLifeActor::onActivate()
|
|
{
|
|
mBeginTime = 0;
|
|
}
|
|
|
|
void SGameSceneLifeActor::update( SGameScene* scene )
|
|
{
|
|
DWORD CurTime = scene->getSceneManager().timer().getTime();
|
|
|
|
if( mBeginTime == 0 )
|
|
mBeginTime = CurTime;
|
|
|
|
DWORD DiffTime = CurTime - mBeginTime;
|
|
|
|
if( DiffTime >= mLifeTime )
|
|
{
|
|
scene->activate( false );
|
|
return;
|
|
}
|
|
|
|
float Visibility = 1.f;
|
|
|
|
if( DiffTime < mFadeInTime )
|
|
{
|
|
Visibility = (float)DiffTime / mFadeInTime;
|
|
}
|
|
else if( DiffTime >= mLifeTime - mFadeOutTime )
|
|
{
|
|
Visibility = (float)( mLifeTime - DiffTime ) / mFadeOutTime;
|
|
}
|
|
|
|
scene->setLocalVisibility( Visibility );
|
|
} |