ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
Toggle main menu visibility
载入中...
搜索中...
未找到
SceneManager.h
浏览该文件的文档.
1
#pragma once
2
#include "
../Core/Core.h
"
3
4
namespace
Shit
{
5
class
Scene
;
// 前向声明
6
19
class
SHIT_API
SceneManager
final {
20
public
:
21
22
// 禁止拷贝和移动
23
SceneManager
(
const
SceneManager
&) =
delete
;
24
SceneManager
&
operator=
(
const
SceneManager
&) =
delete
;
25
SceneManager
(
SceneManager
&&) =
delete
;
26
SceneManager
&
operator=
(
SceneManager
&&) =
delete
;
27
28
// --- 静态API ---
29
static
SceneManager
&
GetInstance
();
30
inline
static
void
Update
() {
GetInstance
().update(); }
31
inline
static
void
Destroy
() {
GetInstance
().destroy(); }
32
inline
static
void
PushScene
(std::unique_ptr<Scene>&& scene) {
GetInstance
().pushScene(std::move(scene)); }
33
inline
static
void
PopScene
() {
GetInstance
().popScene(); }
34
inline
static
void
ClearScene
() {
GetInstance
().clearScene(); }
35
inline
static
void
ReplaceScene
(std::unique_ptr<Scene>&& scene) {
GetInstance
().replaceScene(std::move(scene)); }
36
37
private
:
38
explicit
SceneManager
();
39
~SceneManager
();
40
41
void
pushScene(std::unique_ptr<Scene>&& scene);
42
void
popScene();
43
void
clearScene();
44
void
replaceScene(std::unique_ptr<Scene>&& scene);
45
46
void
update();
47
void
destroy();
48
49
void
processPendingActions();
50
void
processPushScene(std::unique_ptr<Scene>&& scene);
51
void
processPopScene();
52
void
processClearScene();
53
void
processReplaceScene(std::unique_ptr<Scene>&& scene);
54
55
Scene
* getCurrentScene()
const
;
56
57
enum class
StackAction { None, Push, Pop, Clear, Replace };
58
struct
PendingAction {
59
StackAction action;
60
std::unique_ptr<Scene> scene;
61
};
62
63
std::vector<std::unique_ptr<Scene>> m_sceneStack;
64
std::vector<PendingAction> m_pendingActions;
65
};
66
}
Core.h
SHIT_API
#define SHIT_API
定义
Core.h:12
Shit::Scene
场景类
定义
Scene.h:34
Shit::SceneManager
场景管理器(单例)
定义
SceneManager.h:19
Shit::SceneManager::operator=
SceneManager & operator=(const SceneManager &)=delete
Shit::SceneManager::ReplaceScene
static void ReplaceScene(std::unique_ptr< Scene > &&scene)
替换栈顶场景
定义
SceneManager.h:35
Shit::SceneManager::Update
static void Update()
更新当前场景
定义
SceneManager.h:30
Shit::SceneManager::SceneManager
SceneManager(const SceneManager &)=delete
Shit::SceneManager::Destroy
static void Destroy()
销毁所有场景
定义
SceneManager.h:31
Shit::SceneManager::PopScene
static void PopScene()
弹出栈顶场景(下个帧循环生效)
定义
SceneManager.h:33
Shit::SceneManager::PushScene
static void PushScene(std::unique_ptr< Scene > &&scene)
压入新场景(下个帧循环生效)
定义
SceneManager.h:32
Shit::SceneManager::SceneManager
SceneManager(SceneManager &&)=delete
Shit::SceneManager::ClearScene
static void ClearScene()
清空场景栈
定义
SceneManager.h:34
Shit::SceneManager::GetInstance
static SceneManager & GetInstance()
Shit::SceneManager::operator=
SceneManager & operator=(SceneManager &&)=delete
Shit
定义
AudioPlayer.h:9
ShitEngine
Scene
SceneManager.h
制作者
1.17.0