Magic_Game/Easy2D/Transition/ETransitionFade.cpp

58 lines
1.2 KiB
C++
Raw Normal View History

#include "..\etransitions.h"
#include "..\enodes.h"
e2d::ETransitionFade::ETransitionFade(float fadeOutDuration, float fadeInDuration)
: ETransition(0)
, m_fFadeOutDuration(fadeOutDuration * 1000)
, m_fFadeInDuration(fadeInDuration * 1000)
, m_bFadeOutTransioning(true)
{
m_fTotalDuration = m_fFadeOutDuration;
}
void e2d::ETransitionFade::_update()
{
if (_isDelayEnough())
{
if (m_bFadeOutTransioning)
{
m_pPrevScene->getRoot()->setOpacity(1 - m_fRateOfProgress);
if (m_fDuration >= m_fTotalDuration)
{
m_bFadeOutTransioning = false;
m_fTotalDuration = m_fFadeInDuration;
m_fDuration = 0;
}
}
else
2017-10-21 19:09:31 +08:00
{
m_pNextScene->getRoot()->setOpacity(m_fRateOfProgress);
if (m_fDuration >= m_fTotalDuration)
{
this->_stop();
}
2017-10-21 19:09:31 +08:00
}
}
}
void e2d::ETransitionFade::_init()
{
if (m_pPrevScene)
{
m_bFadeOutTransioning = true;
m_pPrevScene->getRoot()->setOpacity(1);
}
else
{
m_bFadeOutTransioning = false;
m_fTotalDuration = m_fFadeInDuration;
}
m_pNextScene->getRoot()->setOpacity(0);
}
void e2d::ETransitionFade::_reset()
{
if (m_pPrevScene) m_pPrevScene->getRoot()->setOpacity(1);
m_pNextScene->getRoot()->setOpacity(1);
}