Better gizmo drawing

This commit is contained in:
Antoine Pilote
2023-10-09 15:31:19 -04:00
parent d3ec4e1c02
commit 85ffe34d32
2 changed files with 29 additions and 11 deletions

View File

@@ -144,10 +144,11 @@ int ApplicationMain(int argc, char* argv[])
}
// Start application main loop
GizmoDrawer gizmoDrawer = GizmoDrawer();
GizmoDrawer gizmoDrawer = GizmoDrawer(&editor);
while (!window->ShouldClose())
{
Nuake::Engine::Tick(); // Update
Nuake::Engine::Draw(); // Render
// Render editor
@@ -155,15 +156,22 @@ int ApplicationMain(int argc, char* argv[])
glViewport(0, 0, WindowSize.x, WindowSize.y);
Nuake::Renderer2D::BeginDraw(WindowSize);
// Draw gizmos
auto sceneFramebuffer = window->GetFrameBuffer();
Ref<Nuake::Scene> currentScene = Nuake::Engine::GetCurrentScene();
// Draw gizmos
sceneFramebuffer->Bind();
{
Ref<Nuake::Scene> currentScene = Nuake::Engine::GetCurrentScene();
//glDepthMask(false);
Ref<EditorCamera> camera;
if (currentScene)
{
{
camera = currentScene->m_EditorCamera;
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, currentScene->m_SceneRenderer->GetGBuffer().GetTexture(GL_DEPTH_ATTACHMENT)->GetID(), 0);
//glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, currentScene->m_SceneRenderer->GetGBuffer().GetTexture(GL_COLOR_ATTACHMENT3)->GetID(), 0);
}
if (currentScene && !Nuake::Engine::IsPlayMode())
@@ -177,20 +185,26 @@ int ApplicationMain(int argc, char* argv[])
if (editor.ShouldDrawCollision())
{
gizmoDrawer.DrawGizmos(currentScene);
gizmoDrawer.DrawGizmos(currentScene, false);
glDepthFunc(GL_GREATER);
gizmoDrawer.DrawGizmos(currentScene, true);
glDepthFunc(GL_LESS);
}
}
//glDepthMask(true);
}
sceneFramebuffer->Unbind();
// Update & Draw editor
editor.Update(Nuake::Engine::GetTimestep());
editor.Draw();
// Update & Draw editor
editor.Draw();
editor.Update(Nuake::Engine::GetTimestep());
Nuake::Engine::EndDraw();
}
// Shutdown
Nuake::Engine::Close();
return 0;
}

View File

@@ -1446,6 +1446,10 @@ namespace Nuake {
{
Engine::GetCurrentScene()->CreateEntity("Sprite").AddComponent<SpriteComponent>();
}
if (ImGui::MenuItem("Particle Emitter"))
{
Engine::GetCurrentScene()->CreateEntity("Particle Emitter").AddComponent<ParticleEmitterComponent>();
}
if (ImGui::MenuItem("Light"))
{
Engine::GetCurrentScene()->CreateEntity("Light").AddComponent<LightComponent>();
@@ -1523,8 +1527,8 @@ namespace Nuake {
ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, { 8, 4 });
if (ImGui::BeginTable("entity_table", 3, ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_NoPadInnerX | ImGuiTableFlags_NoPadOuterX))
{
ImGui::TableSetupColumn("Label", ImGuiTableColumnFlags_IndentEnable);
ImGui::TableSetupColumn("Type", ImGuiTableColumnFlags_IndentEnable);
ImGui::TableSetupColumn("Label", ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_NoResize | ImGuiTableColumnFlags_WidthStretch);
ImGui::TableSetupColumn("Type", ImGuiTableColumnFlags_IndentDisable | ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Visibility", ImGuiTableColumnFlags_NoResize | ImGuiTableColumnFlags_IndentDisable | ImGuiTableColumnFlags_WidthFixed);
ImGui::TableHeadersRow();