mirror of
https://github.com/antopilo/Nuake.git
synced 2026-09-15 20:08:54 +03:00
Editor improvements, better cam, better gizmos, better lines
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -48,5 +48,5 @@ public:
|
||||
GizmoDrawer();
|
||||
~GizmoDrawer() = default;
|
||||
|
||||
void DrawGizmos(Ref<Scene> scene);
|
||||
void DrawGizmos(Ref<Scene> scene, bool occluded);
|
||||
};
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user