// // Created by spenc on 5/14/2025. // #include "Core.h" namespace OX { void Core::AddLayer(std::unique_ptr layer) { Logger::LogDebug("Added Layer: '%s'", layer->GetName().c_str()); m_layers.emplace_back(std::move(layer)); } void Core::Init() { Logger::LogInfo("Initializing Core..."); if (!window.Init(m_name, 1280, 720)) return; for (auto& layer : m_layers) { Logger::LogDebug("Initializing Layer: '%s'", layer->GetName().c_str()); layer->Init(*this); } Logger::LogOk("Core Initialization Complete."); } void Core::Run() { m_running = true; while (!window.ShouldClose()) { Profiler::BeginFrame(); { PROFILE_LABEL("Frame"); Update(); window.BeginFrame(); Draw(); window.EndFrame(); } Profiler::EndFrame(); } } void Core::Update() { PROFILE_FUNCTION(); for (auto& layer : m_layers) { layer->Update(*this); } } void Core::Draw() { PROFILE_FUNCTION(); for (auto& layer : m_layers) { layer->Draw(*this); } } void Core::Shutdown() { Logger::LogDebug("Shutting down Core..."); for (auto& layer : m_layers) { Logger::LogDebug("Shutting down Layer: '%s'", layer->GetName().c_str()); layer->Shutdown(*this); } m_layers.clear(); window.Shutdown(); Logger::LogOk("Core Shutdown Complete."); } }