zengine-old/engine/src/engine/app.cpp
2024-07-12 11:31:33 +08:00

65 lines
1.3 KiB
C++

#include "app.h"
#include "render/renderapi.h"
#include "render/window.h"
#include "object/mesh/actor.h"
#include "data/property/actor_property.h"
#include "asset/file_manager.h"
#include "asset/resource_manager.h"
#include "object/scene/scene_manager.h"
namespace engineapi {
App::App(const string& path)
{
const char* name = "zengine";
SystemList.push_back(new FileManager());
SystemList.push_back(new ResourceManager());
SystemList.push_back(RenderAPI::API(GraphicsAPI::Vulkan));
SystemList.push_back(Window::MakeInstance(3, 640, 720, name));
SystemList.push_back(new SceneManager());
}
App::~App()
{
Shutdown();
for (auto system : SystemList) {
delete system;
}
SystemList.clear();
}
void App::Init()
{
for (auto system : SystemList) {
system->Init();
}
for (auto system : SystemList) {
system->LateInit();
}
}
void App::Shutdown()
{
for (auto system : SystemList) {
system->Shutdown();
}
}
int App::Launch()
{
Init();
int code = 0;
while (Loop && Window::ProcessMessages(code)) {
Update();
Render();
}
return code;
}
void App::Update()
{
SceneManager::GetSingletonPtr()->Update();
}
void App::Render()
{
RenderAPI::GetSingletonPtr()->BeginFrame();
SceneManager::GetSingletonPtr()->Render();
RenderAPI::GetSingletonPtr()->EndFrame();
}
}