![]() |
MIR Engine
미래 지향 설계에 초점을 맞춘 자체 제작 게임 엔진
|
애니메이션 데이터를 관리하는 컴포넌트 구조체 더 자세히 ...
#include <Animation.hpp>
Public 멤버 함수 | |
Animation () | |
Animation 구조체의 기본 생성자 | |
![]() | |
virtual | ~Component ()=default |
가상 소멸자 | |
데이터 필드 | |
std::vector< sf::IntRect > | frames |
애니메이션을 구성하는 각 프레임의 영역 정보 목록 | |
float | delay |
각 프레임 간 전환에 소요되는 시간(초 단위) | |
float | elapsed |
현재까지 경과한 시간(초 단위) | |
std::size_t | curr_frame |
현재 표시 중인 프레임의 인덱스 | |
bool | is_looping |
애니메이션이 반복(loop) 재생되는지 여부 | |
bool | is_playing |
애니메이션이 현재 재생되고 있는지 여부 | |
추가로 상속된 멤버들 | |
![]() | |
using | Tag = std::uint32_t |
컴포넌트를 식별하기 위한 태그 타입 정의 | |
애니메이션 데이터를 관리하는 컴포넌트 구조체
이 구조체는 프레임 정보를 담는 벡터와 애니메이션 재생 시간, 현재 프레임 인덱스, 루프 여부, 재생 상태 등을 관리. SFML의 IntRect를 이용하여 각 프레임이 차지하는 텍스처 영역을 정의하며, delay값으로 프레임 전환 간격 조정.
|
inline |
Animation 구조체의 기본 생성자
초기값으로 delay를 0.16초, elapsed를 0초, curr_frame을 0으로 설정. 또한 기본적으로 애니메이션은 루프 재생(is_looping = true), 재생 중(is_playing = true) 상태.
std::size_t MIR::Animation::curr_frame |
현재 표시 중인 프레임의 인덱스
frames 벡터를 기준으로 0부터 시작하는 인덱스를 가짐. elapsed가 delay를 초과할 때마다 curr_frame을 증가시키며, is_looping이 true라면 마지막 프레임 후에 0으로 초기화.
float MIR::Animation::delay |
각 프레임 간 전환에 소요되는 시간(초 단위)
예를 들어 0.16f라면 약 0.16초마다 프레임이 다음으로 넘어감.
float MIR::Animation::elapsed |
현재까지 경과한 시간(초 단위)
프레임 전환을 위해 매 프레임 업데이트 시 누적되는 시간. delay를 초과하면 다음 프레임으로 전환되고, elapsed는 다시 0으로 초기화.
std::vector<sf::IntRect> MIR::Animation::frames |
애니메이션을 구성하는 각 프레임의 영역 정보 목록
이 벡터는 각 애니메이션 프레임에 해당하는 SFML의 IntRect 저장. IntRect는 텍스처 상에서 특정 부분을 지정하는 직사각형 영역.
bool MIR::Animation::is_looping |
애니메이션이 반복(loop) 재생되는지 여부
true일 경우 마지막 프레임 이후 다시 첫 프레임으로 돌아가며 재생. false일 경우 마지막 프레임에서 정지.
bool MIR::Animation::is_playing |
애니메이션이 현재 재생되고 있는지 여부
true일 경우 elapsed 시간을 증가시키며 delay를 넘으면 프레임 전환이 일어남. false라면 프레임 전환이 멈추며 현재 프레임 상태 유지.