mirror of
https://github.com/HowestDAE/dae16-VerhulstBram.git
synced 2025-12-16 21:01:48 +01:00
36 lines
967 B
C++
36 lines
967 B
C++
#include "pch.h"
|
|
#include "Animation.h"
|
|
|
|
#include <iostream>
|
|
|
|
#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<float>(m_CurrentFrame) * src.width;
|
|
|
|
m_pTexture->Draw(dst, src, m_isFlipped);
|
|
}
|