Files
NS_unknown_game/Frostbite2D/include/frostbite2D/scene/scene_manager.h
T
2026-06-08 19:58:35 +08:00

50 lines
1.0 KiB
C++

#pragma once
#include <frostbite2D/event/event.h>
#include <frostbite2D/types/type_alias.h>
#include <vector>
namespace frostbite2D {
class Scene;
class UIScene;
class SceneManager {
public:
static SceneManager& get();
SceneManager(const SceneManager&) = delete;
SceneManager& operator=(const SceneManager&) = delete;
void PushScene(Ptr<Scene> scene);
void PopScene();
void ReplaceScene(Ptr<Scene> scene);
void PushUIScene(Ptr<UIScene> scene);
void PopUIScene();
void ReplaceUIScene(Ptr<UIScene> scene);
bool RemoveUIScene(UIScene* scene);
void ClearUIScenes();
void ClearAll();
void Update(float deltaTime);
void UpdateUI(float deltaTime);
void Render();
bool DispatchEvent(const Event& event);
bool DispatchUIEvent(const Event& event);
Scene* GetCurrentScene() const;
UIScene* GetCurrentUIScene() const;
bool HasActiveScene() const;
bool HasActiveUIScene() const;
private:
SceneManager() = default;
std::vector<Ptr<Scene>> sceneStack_;
std::vector<Ptr<UIScene>> uiSceneStack_;
};
} // namespace frostbite2D