ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
AnimationComponent.h
浏览该文件的文档.
1#pragma once
2
3#include "Behavior.h"
4#include "../Core/Core.h"
6
7#include <string>
8#include <unordered_map>
9#include <memory>
10#include <vector>
11
12namespace Shit
13{
14 class Animation;
15
32 public:
35
36 // --- 生命周期 ---
37 void onAttach() override;
38 void onStart() override;
39 void onUpdate() override;
40 void onDestroy() override;
41
42 // --- 动画管理 ---
43 void addAnimation(const std::string& name, std::unique_ptr<Animation> animation);
44
45 void play(const std::string& name);
46 void stop();
47 void pause();
48 void resume();
49
62 void play(const std::string& name, const SpriteSheet& sheet,
63 const std::vector<int>& frames, float duration = 0.1f, bool loop = true);
64
65 // --- 查询 ---
66 bool isPlaying() const { return m_isPlaying; }
67 bool isPaused() const { return m_isPaused; }
68 const std::string& getCurrentAnimationName() const { return m_currentAnimationName; }
69
70 private:
71 // 把当前帧源矩形回写到 SpriteRenderer(若存在且纹理一致)
72 void applyCurrentFrame();
73
74 std::unordered_map<std::string, std::unique_ptr<Animation>> m_animations;
75 Animation* m_currentAnimation = nullptr;
76 std::string m_currentAnimationName;
77 float m_currentTime = 0.0f;
78
79 bool m_isPlaying = false;
80 bool m_isPaused = false;
81 };
82}
#define SHIT_API
定义 Core.h:12
void onStart() override
首次 update 前执行一次
const std::string & getCurrentAnimationName() const
定义 AnimationComponent.h:68
void play(const std::string &name)
bool isPlaying() const
定义 AnimationComponent.h:66
bool isPaused() const
定义 AnimationComponent.h:67
~AnimationComponent() override
void onAttach() override
void play(const std::string &name, const SpriteSheet &sheet, const std::vector< int > &frames, float duration=0.1f, bool loop=true)
用数字帧索引直接设置并播放一段动画
void onUpdate() override
每帧执行
void onDestroy() override
void addAnimation(const std::string &name, std::unique_ptr< Animation > animation)
逐帧动画数据
定义 Animation.h:16
Behavior()=default
精灵图集(sprite-sheet)网格切割器
定义 SpriteSheet.h:22
定义 AudioPlayer.h:9