engine/include/scene_manager.hpp

42 lines
759 B
C++
Raw Normal View History

2022-11-29 14:22:03 +00:00
#pragma once
2022-12-15 10:07:22 +00:00
#include "resource_manager.hpp"
2022-11-30 10:36:50 +00:00
#include <vector>
2022-11-30 00:46:03 +00:00
#include <memory>
2022-11-29 14:22:03 +00:00
namespace engine {
2022-12-20 23:51:04 +00:00
class Application;
2022-11-30 00:46:03 +00:00
class Scene; // "scene.hpp"
2022-12-15 15:54:11 +00:00
namespace resources {
class Texture;
}
2022-11-30 00:46:03 +00:00
2022-11-29 14:22:03 +00:00
class SceneManager {
public:
2022-12-20 23:51:04 +00:00
SceneManager(Application* app);
2022-11-29 14:22:03 +00:00
~SceneManager();
SceneManager(const SceneManager&) = delete;
SceneManager& operator=(const SceneManager&) = delete;
2022-12-20 23:51:04 +00:00
Scene* createScene();
2022-11-30 10:36:50 +00:00
2022-12-15 10:07:22 +00:00
void updateActiveScene(float ts);
2022-11-30 10:36:50 +00:00
2022-12-15 15:54:11 +00:00
/* getters */
ResourceManager<resources::Texture>* getTextureManager() { return m_textureManager.get(); }
2022-11-29 14:22:03 +00:00
private:
2022-12-20 23:51:04 +00:00
Application* const m_app;
2022-11-30 10:36:50 +00:00
std::vector<std::unique_ptr<Scene>> m_scenes;
int m_activeSceneIndex = -1;
2022-11-29 14:22:03 +00:00
2022-12-15 15:54:11 +00:00
std::unique_ptr<ResourceManager<resources::Texture>> m_textureManager;
2022-12-01 15:54:28 +00:00
2022-11-29 14:22:03 +00:00
};
2022-12-15 10:07:22 +00:00
}