68 lines
1.2 KiB
C++
68 lines
1.2 KiB
C++
|
#include "StdAfx.h"
|
||
|
#include "GrpRatioInstance.h"
|
||
|
#include "../eterBase/Timer.h"
|
||
|
|
||
|
CGraphicRatioInstance::CGraphicRatioInstance()
|
||
|
{
|
||
|
m_baseTime = 0;
|
||
|
m_blendTime = 0;
|
||
|
}
|
||
|
|
||
|
CGraphicRatioInstance::~CGraphicRatioInstance()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void CGraphicRatioInstance::Clear()
|
||
|
{
|
||
|
m_curRatio = 0.0f;
|
||
|
m_srcRatio = 0.0f;
|
||
|
m_dstRatio = 0.0f;
|
||
|
|
||
|
m_baseTime = 0;
|
||
|
m_blendTime = 0;
|
||
|
}
|
||
|
|
||
|
void CGraphicRatioInstance::SetRatioReference(const float& c_rRatio)
|
||
|
{
|
||
|
m_curRatio = c_rRatio;
|
||
|
m_srcRatio = m_curRatio;
|
||
|
m_dstRatio = m_curRatio;
|
||
|
}
|
||
|
|
||
|
void CGraphicRatioInstance::BlendRatioReference(DWORD blendTime, const float& c_rDstRatio)
|
||
|
{
|
||
|
m_baseTime = GetTime();
|
||
|
m_blendTime = blendTime;
|
||
|
|
||
|
m_srcRatio = m_curRatio;
|
||
|
m_dstRatio = c_rDstRatio;
|
||
|
}
|
||
|
|
||
|
void CGraphicRatioInstance::Update()
|
||
|
{
|
||
|
DWORD curTime = GetTime();
|
||
|
DWORD elapsedTime = curTime - m_baseTime;
|
||
|
|
||
|
if (elapsedTime < m_blendTime)
|
||
|
{
|
||
|
float diff = m_dstRatio - m_srcRatio;
|
||
|
float rate = elapsedTime / float(m_blendTime);
|
||
|
m_curRatio = diff * rate + m_srcRatio;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_curRatio = m_dstRatio;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DWORD CGraphicRatioInstance::GetTime()
|
||
|
{
|
||
|
return CTimer::Instance().GetCurrentMillisecond();
|
||
|
}
|
||
|
|
||
|
const float& CGraphicRatioInstance::GetCurrentRatioReference() const
|
||
|
{
|
||
|
return m_curRatio;
|
||
|
}
|
||
|
|