mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 04:19:19 +02:00
ECS System WIP
This commit is contained in:
59
entitysystem/SceneManager.cpp
Normal file
59
entitysystem/SceneManager.cpp
Normal file
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user