Program Listing for File scene_manager.h¶
↰ Return to documentation for file (simple2dengine/managers/scene_manager.h
)
#ifndef _SIMPLE2DENGINE_MANAGERS_SCENE_MANAGER_H_
#define _SIMPLE2DENGINE_MANAGERS_SCENE_MANAGER_H_
#include <memory>
#include <string>
#include <unordered_map>
#include <vector>
#include "simple2dengine/nodes/node.h"
namespace simple2dengine
{
class SceneManager
{
public:
SceneManager() : currentScene(nullptr){};
void addScene(std::shared_ptr<Node> scene);
void removeSceneImmediately(const std::string& name);
void removeScene(const std::string& name);
void activateScene(const std::string& name);
int getSceneCount() const;
void clear();
void update(int deltaInMs);
void render();
void input(sf::Event event);
private:
std::shared_ptr<Node> currentScene = nullptr; // current scene
std::unordered_map<std::string, std::shared_ptr<Node>> scenes; // all scenes (nodes)
std::vector<std::shared_ptr<Node>> deletionQueue; // nodes that will be destroyed on next tick
Engine* engine = nullptr; // engine pointer
friend class Engine;
};
} // namespace simple2dengine
#endif // _SIMPLE2DENGINE_MANAGERS_SCENE_MANAGER_H_