#include "pch.h" #include "Animation.h" #include #include "utils.h" Animation::Animation(Texture* pTexture, int frames, float frameDuration, Rectf srcRect, bool isLooping): m_pTexture(pTexture), m_SrcRect(srcRect), m_Frames(frames), m_isLooping(isLooping), m_FrameDuration(frameDuration) { } void Animation::Update(float elapsedSec) { if (m_isPlaying) { m_FrameTimer -= elapsedSec; if (m_FrameTimer <= 0.0f) { m_FrameTimer = m_FrameDuration; ++m_CurrentFrame; if (m_CurrentFrame >= m_Frames) { m_CurrentFrame = 0; if(!m_isLooping) { m_hasPlayedOnce = true; m_isPlaying = false; } } } } } void Animation::Draw(const Vector2f& pos) const { Draw(pos, Rectf{ pos.x, pos.y, m_SrcRect.width, m_SrcRect.height }); } void Animation::Draw(const Vector2f& pos, const Rectf& dst) const { Rectf src = m_SrcRect; src.left += static_cast(m_CurrentFrame) * src.width; m_pTexture->Draw(dst, src, m_isFlipped); }