ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
Toggle main menu visibility
载入中...
搜索中...
未找到
AnimationComponent.h
浏览该文件的文档.
1
#pragma once
2
3
#include "
Behavior.h
"
4
#include "
../Core/Core.h
"
5
#include "
../Render/SpriteSheet.h
"
6
7
#include <string>
8
#include <unordered_map>
9
#include <memory>
10
#include <vector>
11
12
namespace
Shit
13
{
14
class
Animation
;
15
31
class
SHIT_API
AnimationComponent
:
public
Behavior
{
32
public
:
33
AnimationComponent
();
34
~AnimationComponent
()
override
;
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
}
Behavior.h
Core.h
SHIT_API
#define SHIT_API
定义
Core.h:12
SpriteSheet.h
Shit::AnimationComponent::onStart
void onStart() override
首次 update 前执行一次
Shit::AnimationComponent::getCurrentAnimationName
const std::string & getCurrentAnimationName() const
定义
AnimationComponent.h:68
Shit::AnimationComponent::play
void play(const std::string &name)
Shit::AnimationComponent::isPlaying
bool isPlaying() const
定义
AnimationComponent.h:66
Shit::AnimationComponent::resume
void resume()
Shit::AnimationComponent::isPaused
bool isPaused() const
定义
AnimationComponent.h:67
Shit::AnimationComponent::pause
void pause()
Shit::AnimationComponent::stop
void stop()
Shit::AnimationComponent::~AnimationComponent
~AnimationComponent() override
Shit::AnimationComponent::onAttach
void onAttach() override
Shit::AnimationComponent::AnimationComponent
AnimationComponent()
Shit::AnimationComponent::play
void play(const std::string &name, const SpriteSheet &sheet, const std::vector< int > &frames, float duration=0.1f, bool loop=true)
用数字帧索引直接设置并播放一段动画
Shit::AnimationComponent::onUpdate
void onUpdate() override
每帧执行
Shit::AnimationComponent::onDestroy
void onDestroy() override
Shit::AnimationComponent::addAnimation
void addAnimation(const std::string &name, std::unique_ptr< Animation > animation)
Shit::Animation
逐帧动画数据
定义
Animation.h:16
Shit::Behavior::Behavior
Behavior()=default
Shit::SpriteSheet
精灵图集(sprite-sheet)网格切割器
定义
SpriteSheet.h:22
Shit
定义
AudioPlayer.h:9
ShitEngine
Component
AnimationComponent.h
制作者
1.17.0