#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; }