ShitEngine
1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
Toggle main menu visibility
载入中...
搜索中...
未找到
Animation.h
浏览该文件的文档.
1
#pragma once
2
3
#include "
../Core/Core.h
"
4
#include "
../Math.h
"
5
#include "
../Animation/AnimationClip.h
"
// AnimFrame
6
#include <string>
7
#include <vector>
8
9
namespace
Shit
{
17
class
SHIT_API
Animation
final {
18
public
:
19
Animation
(
float
duration = 0.1f,
bool
loop =
true
);
20
~Animation
();
21
22
void
addFrame
(
const
AnimFrame
& frame);
23
void
addFrame
(
const
Rect
& rect);
24
void
addFrames
(
const
std::vector<Rect>& frames);
25
27
void
setFrameDurations
(
const
std::vector<float>& durations) { m_frameDurations = durations; }
29
void
clearFrameDurations
() { m_frameDurations.clear(); }
30
31
AnimFrame
getFrame
(
float
elapsedTime)
const
;
32
33
// --- getter & setter ---
34
void
setLoop
(
bool
loop) { m_loop = loop; }
35
void
setDuration
(
float
duration) { m_duration = duration; }
36
37
bool
isLooping
()
const
{
return
m_loop; }
38
float
getDuration
()
const
{
return
m_duration; }
40
float
getTotalDuration
()
const
;
42
float
getFrameDuration
(
int
i)
const
;
43
int
getFrameCount
()
const
{
return
static_cast<
int
>
(m_frames.size()); }
44
45
private
:
46
std::vector<AnimFrame> m_frames;
47
std::vector<float> m_frameDurations;
48
float
m_duration;
49
bool
m_loop =
true
;
50
};
51
}
AnimationClip.h
Core.h
SHIT_API
#define SHIT_API
定义
Core.h:14
Math.h
Shit::Animation::getFrameCount
int getFrameCount() const
定义
Animation.h:43
Shit::Animation::getDuration
float getDuration() const
定义
Animation.h:38
Shit::Animation::setFrameDurations
void setFrameDurations(const std::vector< float > &durations)
设置每帧独立时长(秒)。传入空 → 回退到统一 duration;传入长度须等于帧数。
定义
Animation.h:27
Shit::Animation::Animation
Animation(float duration=0.1f, bool loop=true)
Shit::Animation::addFrames
void addFrames(const std::vector< Rect > &frames)
批量添加(空路径,兼容)
Shit::Animation::getTotalDuration
float getTotalDuration() const
总时长(秒):有逐帧时长则累加,否则 frameCount × duration
Shit::Animation::isLooping
bool isLooping() const
定义
Animation.h:37
Shit::Animation::clearFrameDurations
void clearFrameDurations()
清除每帧独立时长,回退到统一 duration
定义
Animation.h:29
Shit::Animation::getFrameDuration
float getFrameDuration(int i) const
取第 i 帧的时长(秒):逐帧存在用逐帧值,否则统一 duration
Shit::Animation::setDuration
void setDuration(float duration)
定义
Animation.h:35
Shit::Animation::getFrame
AnimFrame getFrame(float elapsedTime) const
根据已播放时间返回当前帧(纹理+矩形)
Shit::Animation::setLoop
void setLoop(bool loop)
定义
Animation.h:34
Shit::Animation::addFrame
void addFrame(const AnimFrame &frame)
添加单帧(带纹理路径)
Shit::Animation::addFrame
void addFrame(const Rect &rect)
兼容:空路径(沿用当前纹理,动态 play API 用)
Shit::Animation::~Animation
~Animation()
Shit
定义
AnimationClip.h:12
Shit::AnimFrame
动画帧(参考 Unity:每帧引用一个 Sprite = 纹理路径 + 源矩形) texturePath 空 = 沿用 SpriteRenderer 当前纹理(兼容动态 play(name,...
定义
AnimationClip.h:15
Shit::Rect
Rectangle struct (float precision), with SDL_FRect conversion
定义
Math.h:10
include
ShitEngine
Render
Animation.h
制作者
1.17.0