ImGui
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
#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 <imgui.h>
|
||||
#include <imgui_impl_glfw.h>
|
||||
#include <imgui_impl_opengl3.h>
|
||||
|
||||
void HydraGUIManager::Intialise()
|
||||
{
|
||||
HydraID task_id = GetEngine()->TaskScheduler()->CreateTask<HydraInitialiseGUITask>(HydraThreadAffinity::Render);//, barrier_id);
|
||||
HydraInitialiseGUITask* task = static_cast<HydraInitialiseGUITask*>(GetEngine()->TaskScheduler()->GetTask(task_id));
|
||||
|
||||
GetEngine()->TaskScheduler()->WaitForTask(task_id);
|
||||
|
||||
std::unique_ptr<HydraSceneGraphWindow> window = std::make_unique<HydraSceneGraphWindow>();
|
||||
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<HydraShutdownGUITask>(HydraThreadAffinity::Render);//, barrier_id);
|
||||
GetEngine()->TaskScheduler()->WaitForTask(task_id);
|
||||
}
|
||||
|
||||
void HydraGUIManager::BeginFrame()
|
||||
{
|
||||
HydraID task_id = GetEngine()->TaskScheduler()->CreateTask<HydraStartGUIFrameTask>(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<HydraDrawWindowTask>(HydraThreadAffinity::Render);//, barrier_id);
|
||||
HydraDrawWindowTask* task = static_cast<HydraDrawWindowTask*>(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<HydraEndGUIFrameTask>(HydraThreadAffinity::Render);//, barrier_id);
|
||||
GetEngine()->TaskScheduler()->WaitForTask(task_id);
|
||||
}
|
||||
|
||||
void HydraGUIManager::AddWindow(std::unique_ptr<HydraGuiWindow> window)
|
||||
{
|
||||
m_windows.push_back(std::move(window));
|
||||
}
|
||||
Reference in New Issue
Block a user