zengine-old/engine/src/engine/object/scene/scene_manager.cpp
2024-05-12 23:44:11 +08:00

86 lines
1.3 KiB
C++

#include "scene_manager.h"
#include "zlog.h"
namespace engineapi {
Scene* SceneManager::GetScene(const Name& name)
{
auto sceneInfo = GetSceneInfo(name);
if (sceneInfo == nullptr)
{
return nullptr;
}
else
{
return sceneInfo->scene;
}
}
void SceneManager::LoadScene(const Name& path, bool switchNow)
{
curScene = new SceneInfo{
path,
new Scene()
};
}
void SceneManager::SwitchScene(const Name& name)
{
}
void SceneManager::DeleteScene(const Name& name)
{
auto iter = scenes.find(name);
if (iter != scenes.end())
{
delete iter->second->scene;
delete iter->second;
scenes.erase(iter);
}
else
{
zlog::info("Attempt to delete a nonexistent scene: {}", name);
}
}
void SceneManager::DeleteAllScene()
{
for (auto& iter : scenes)
{
delete iter.second->scene;
delete iter.second;
}
scenes.clear();
}
void SceneManager::ReloadScene()
{
// 先等待当前所有绘制结束,再卸载场景释放资源
}
void SceneManager::Render()
{
curScene->scene->Render();
}
void SceneManager::Update()
{
curScene->scene->Update();
}
Scene* SceneManager::GetCurScene()
{
return curScene->scene;
}
SceneInfo* SceneManager::GetSceneInfo(const Name& name)
{
auto iter = scenes.find(name);
if (iter != scenes.end())
return iter->second;
else
return nullptr;
}
}