7 #include "imstkSceneManager.h" 8 #include "imstkScene.h" 9 #include "imstkLogger.h" 10 #include "imstkDeviceControl.h" 14 SceneManager::SceneManager(std::string name) : m_activeScene(nullptr),
15 m_mode(Mode::Simulation), m_prevCamName(
"default")
18 m_executionType = ExecutionType::ADAPTIVE;
24 if (m_mode == Mode::Simulation && mode == Mode::Debug)
28 m_activeScene->getCameraName(m_activeScene->getActiveCamera());
29 m_activeScene->setActiveCamera(
"debug");
31 else if (m_mode == Mode::Debug && mode == Mode::Simulation)
34 m_activeScene->setActiveCamera(m_prevCamName);
42 return (m_sceneMap.find(name) != m_sceneMap.end());
49 if (!containsScene(name))
51 LOG(WARNING) <<
"Scene '" << name <<
"' not registered! Please register before setting active";
55 if (m_activeScene !=
nullptr && name == m_activeScene->getName())
57 LOG(INFO) <<
"Scene '" << name <<
"' is already active!";
61 auto newScene = this->getScene(name);
63 m_activeScene = newScene;
69 std::string name = scene->getName();
72 if (!containsScene(name))
82 if (m_activeScene !=
nullptr)
84 return m_activeScene->initialize();
93 if (m_activeScene !=
nullptr)
98 m_activeScene->advance(getDt());
105 if (scene ==
nullptr)
107 LOG(WARNING) <<
"Tried to add null scene!";
110 m_sceneMap[scene->getName()] = scene;
116 if (containsScene(name))
118 std::shared_ptr<Scene> scene = m_sceneMap[name];
119 if (m_activeScene == scene)
121 m_activeScene =
nullptr;
123 m_sceneMap.erase(name);
void doAllEvents()
Do all the events in the event queue.
void updateModule() override
Run the thread.
void removeScene(std::string name)
Remove a scene from the manager.
void setMode(Mode mode)
Switches the mode of the scene manager This alters the active scene.
void addScene(std::shared_ptr< Scene > scene)
Adds scene to the manager.
bool initModule() override
Initialize the thread.
void setActiveScene(std::string newSceneName)
Sets the currently updating scene.
bool containsScene(std::string name) const
Returns if the SceneManager contains the scene or not.