Editor improvements, better cam, better gizmos, better lines

This commit is contained in:
Antoine Pilote
2023-10-08 13:26:41 -04:00
parent ac1db17e55
commit 2620fa548e
8 changed files with 142 additions and 87 deletions

View File

@@ -1,4 +1,6 @@
#include "GizmoDrawer.h"
#include <src/Rendering/SceneRenderer.h>
#include <src/Rendering/Buffers/VertexBuffer.h>
#include <src/Scene/Components/LightComponent.h>
@@ -21,6 +23,7 @@
#include <src/Scene/Components/BoneComponent.h>
#include <src/Scene/Components/AudioEmitterComponent.h>
GizmoDrawer::GizmoDrawer()
{
mLineShader = Nuake::ShaderManager::GetShader("Resources/Shaders/line.shader");
@@ -128,17 +131,19 @@ void GizmoDrawer::GenerateSphereGizmo()
mCircleBuffer->AddBuffer(*mCircleVertexBuffer, *vblayout);
}
void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
void GizmoDrawer::DrawGizmos(Ref<Scene> scene, bool occluded)
{
using namespace Nuake;
//RenderCommand::Disable(RendererEnum::DEPTH_TEST);
//RenderCommand::Enable(RendererEnum::DEPTH_TEST);
RenderCommand::Enable(RendererEnum::DEPTH_TEST);
// Draw Axis lignes.
//glDepthFunc(GL_ALWAYS); // Disable built-in depth testing
//glDepthMask(false); // Disable writing to the depth buffer
{
mLineShader->Bind();
mLineShader->SetUniformMat4f("u_View", scene->m_EditorCamera->GetTransform());
mLineShader->SetUniformMat4f("u_Projection", scene->m_EditorCamera->GetPerspective());
mLineShader->SetUniform1f("u_Opacity", occluded ? 0.1f : 0.5f);
mAxisLineBuffer->Bind();
Nuake::RenderCommand::DrawLines(0, 6);
}
@@ -304,7 +309,7 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
gizmoShader->Bind();
gizmoShader->SetUniformMat4f("u_View", scene->m_EditorCamera->GetTransform());
gizmoShader->SetUniformMat4f("u_Projection", scene->m_EditorCamera->GetPerspective());
gizmoShader->SetUniform1f("u_Opacity", occluded ? 0.1f : 0.5f);
RenderCommand::Disable(RendererEnum::FACE_CULL);
// Camera
@@ -413,5 +418,10 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
renderList.Flush(gizmoShader, true);
// Revert to default depth testing
//glDepthFunc(GL_LESS);
//
//// Revert to default depth buffer writing
//glDepthMask(true);
RenderCommand::Enable(RendererEnum::DEPTH_TEST);
}

View File

@@ -48,5 +48,5 @@ public:
GizmoDrawer();
~GizmoDrawer() = default;
void DrawGizmos(Ref<Scene> scene);
void DrawGizmos(Ref<Scene> scene, bool occluded);
};

View File

@@ -54,6 +54,7 @@
#include <src/Resource/StaticResources.h>
namespace Nuake {
Ref<UI::UserInterface> userInterface;
ImFont* normalFont;
ImFont* boldFont;
@@ -1796,7 +1797,7 @@ namespace Nuake {
Logger::Log("Failed creating project directory: " + dirPath);
}
finalPath += "\\" + fileName;
finalPath += "/" + fileName;
Ref<Project> project = Project::New(String::Split(fileName, '.')[0], "no description", finalPath);
Engine::LoadProject(project);
@@ -2105,13 +2106,11 @@ namespace Nuake {
auto& editorCam = Engine::GetCurrentScene()->m_EditorCamera;
if (m_IsViewportFocused)
{
editorCam->Update(ts, m_IsHoveringViewport);
}
editorCam->Update(ts, m_IsHoveringViewport);
const bool entityIsSelected = Selection.Type == EditorSelectionType::Entity && Selection.Entity.IsValid();
if (entityIsSelected && Input::IsKeyPressed(GLFW_KEY_F))
if (editorCam->IsFlying() && entityIsSelected && Input::IsKeyPressed(GLFW_KEY_F))
{
editorCam->IsMoving = true;
editorCam->TargetPos = Selection.Entity.GetComponent<TransformComponent>().GetGlobalPosition();