#include "HydraGuiManager.h" #include "HydraSceneGraphWindow.h" #include "../scheduler/HydraTaskScheduler.h" #include "../task/gui/HydraInitialiseGUITask.hpp" #include "../task/gui/HydraShutdownGUITask.hpp" #include "../task/gui/HydraStartGUIFrameTask.hpp" #include "../task/gui/HydraDrawWindowTask.hpp" #include "../task/gui/HydraEndGUIFrameTask.hpp" #include #include #include void HydraGUIManager::Intialise() { HydraID task_id = GetEngine()->TaskScheduler()->CreateTask(HydraThreadAffinity::Render);//, barrier_id); HydraInitialiseGUITask* task = static_cast(GetEngine()->TaskScheduler()->GetTask(task_id)); GetEngine()->TaskScheduler()->WaitForTask(task_id); std::unique_ptr window = std::make_unique(); AddWindow(std::move(window)); } void HydraGUIManager::Shutdown() { for(uint32_t i = 0; i < m_windows.size(); i++) { m_windows[i].release(); } m_windows.clear(); HydraID task_id = GetEngine()->TaskScheduler()->CreateTask(HydraThreadAffinity::Render);//, barrier_id); GetEngine()->TaskScheduler()->WaitForTask(task_id); } void HydraGUIManager::BeginFrame() { HydraID task_id = GetEngine()->TaskScheduler()->CreateTask(HydraThreadAffinity::Render);//, barrier_id); GetEngine()->TaskScheduler()->WaitForTask(task_id); } void HydraGUIManager::DrawWindows() { for(uint32_t i = 0; i < m_windows.size(); i++) { HydraID task_id = GetEngine()->TaskScheduler()->CreateTask(HydraThreadAffinity::Render);//, barrier_id); HydraDrawWindowTask* task = static_cast(GetEngine()->TaskScheduler()->GetTask(task_id)); task->Initialise(m_windows[i].get()); GetEngine()->TaskScheduler()->WaitForTask(task_id); } } void HydraGUIManager::EndFrame() { HydraID task_id = GetEngine()->TaskScheduler()->CreateTask(HydraThreadAffinity::Render);//, barrier_id); GetEngine()->TaskScheduler()->WaitForTask(task_id); } void HydraGUIManager::AddWindow(std::unique_ptr window) { m_windows.push_back(std::move(window)); }