ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
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
9namespace Shit{
17 class SHIT_API Animation final {
18 public:
19 Animation(float duration = 0.1f, bool loop = true);
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}
#define SHIT_API
定义 Core.h:14
int getFrameCount() const
定义 Animation.h:43
float getDuration() const
定义 Animation.h:38
void setFrameDurations(const std::vector< float > &durations)
设置每帧独立时长(秒)。传入空 → 回退到统一 duration;传入长度须等于帧数。
定义 Animation.h:27
Animation(float duration=0.1f, bool loop=true)
void addFrames(const std::vector< Rect > &frames)
批量添加(空路径,兼容)
float getTotalDuration() const
总时长(秒):有逐帧时长则累加,否则 frameCount × duration
bool isLooping() const
定义 Animation.h:37
void clearFrameDurations()
清除每帧独立时长,回退到统一 duration
定义 Animation.h:29
float getFrameDuration(int i) const
取第 i 帧的时长(秒):逐帧存在用逐帧值,否则统一 duration
void setDuration(float duration)
定义 Animation.h:35
AnimFrame getFrame(float elapsedTime) const
根据已播放时间返回当前帧(纹理+矩形)
void setLoop(bool loop)
定义 Animation.h:34
void addFrame(const AnimFrame &frame)
添加单帧(带纹理路径)
void addFrame(const Rect &rect)
兼容:空路径(沿用当前纹理,动态 play API 用)
定义 AnimationClip.h:12
动画帧(参考 Unity:每帧引用一个 Sprite = 纹理路径 + 源矩形) texturePath 空 = 沿用 SpriteRenderer 当前纹理(兼容动态 play(name,...
定义 AnimationClip.h:15
Rectangle struct (float precision), with SDL_FRect conversion
定义 Math.h:10