mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 07:49:19 +02:00
59 lines
909 B
C++
59 lines
909 B
C++
//
|
|
// Created by Daniu
|
|
//
|
|
|
|
#include "SceneManager.h"
|
|
#include "ECScene.h"
|
|
|
|
SceneManager::SceneManager() = default;
|
|
|
|
SceneManager::~SceneManager()
|
|
{
|
|
if (m_currentScene)
|
|
m_currentScene->Unload();
|
|
}
|
|
|
|
void SceneManager::SetScene(std::unique_ptr<ECScene> scene)
|
|
{
|
|
m_pendingScene = std::move(scene);
|
|
if (m_currentScene)
|
|
m_currentScene->Load();
|
|
}
|
|
|
|
void SceneManager::Update(float dt)
|
|
{
|
|
if (m_pendingScene)
|
|
SwitchScene();
|
|
|
|
if (m_currentScene){
|
|
m_currentScene->Update(dt);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void SceneManager::SwitchScene()
|
|
{
|
|
if (m_currentScene)
|
|
m_currentScene->Unload();
|
|
|
|
m_currentScene = std::move(m_pendingScene);
|
|
|
|
if (m_currentScene)
|
|
m_currentScene->Load();
|
|
}
|
|
|
|
ECScene* SceneManager::CurrentScene()
|
|
{
|
|
return m_currentScene.get();
|
|
}
|
|
|
|
const ECScene* SceneManager::CurrentScene() const
|
|
{
|
|
return m_currentScene.get();
|
|
}
|
|
|
|
bool SceneManager::HasScene() const
|
|
{
|
|
return m_currentScene != nullptr;
|
|
} |