mirror of
https://github.com/antopilo/Nuake.git
synced 2026-09-21 20:08:40 +03:00
Fixed input manager for UI + WorldSpace UI
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include <glad/glad.h>
|
||||
#include <src/Vendors/imgui/imgui.h>
|
||||
#include <Tracy.hpp>
|
||||
#include <src/UI/Renderer.h>
|
||||
|
||||
|
||||
namespace Nuake
|
||||
@@ -436,20 +437,23 @@ namespace Nuake
|
||||
continue;
|
||||
}
|
||||
|
||||
// Fetch resource from resource manager using UUID
|
||||
Ref<UIResource> uiResource = ResourceManager::GetResource<UIResource>(uiComponent.UIResource);
|
||||
uiResource->Resize(framebuffer.GetSize());
|
||||
|
||||
// Copy UI onto final viewport
|
||||
framebuffer.Bind();
|
||||
if (!uiComponent.IsWorldSpace)
|
||||
{
|
||||
Shader* shader = ShaderManager::GetShader("Resources/Shaders/add.shader");
|
||||
shader->Bind();
|
||||
shader->SetUniform("u_Source", mTempFrameBuffer->GetTexture().get(), 0);
|
||||
shader->SetUniform("u_Source2", uiResource->GetOutputTexture().get(), 1);
|
||||
Renderer::DrawQuad();
|
||||
// Fetch resource from resource manager using UUID
|
||||
Ref<UIResource> uiResource = ResourceManager::GetResource<UIResource>(uiComponent.UIResource);
|
||||
uiResource->Resize(framebuffer.GetSize());
|
||||
|
||||
// Copy UI onto final viewport
|
||||
framebuffer.Bind();
|
||||
{
|
||||
Shader* shader = ShaderManager::GetShader("Resources/Shaders/add.shader");
|
||||
shader->Bind();
|
||||
shader->SetUniform("u_Source", mTempFrameBuffer->GetTexture().get(), 0);
|
||||
shader->SetUniform("u_Source2", uiResource->GetOutputTexture().get(), 1);
|
||||
Renderer::DrawQuad();
|
||||
}
|
||||
framebuffer.Unbind();
|
||||
}
|
||||
framebuffer.Unbind();
|
||||
}
|
||||
|
||||
glDepthMask(true);
|
||||
@@ -909,14 +913,25 @@ namespace Nuake
|
||||
Renderer::QuadMesh->SetMaterial(previousMaterial);
|
||||
}
|
||||
|
||||
auto uiView = scene.m_Registry.view<TransformComponent, UIComponent>();
|
||||
for (auto e : uiView)
|
||||
{
|
||||
auto [transform, uiComponent] = uiView.get<TransformComponent, UIComponent>(e);
|
||||
if (!uiComponent.IsWorldSpace)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Temp models
|
||||
|
||||
|
||||
|
||||
|
||||
Ref<UIResource> uiResource = ResourceManager::GetResource<UIResource>(uiComponent.UIResource);
|
||||
Matrix4 finalTransform = transform.GetGlobalTransform();
|
||||
Renderer::QuadMesh->GetMaterial()->SetAlbedo(uiResource->GetOutputTexture());
|
||||
Renderer::SubmitMesh(Renderer::QuadMesh, finalTransform, (uint32_t)e);
|
||||
Renderer::Flush(gBufferShader, false);
|
||||
//Renderer::DrawQuad(finalTransform);
|
||||
}
|
||||
|
||||
// Reset material on quadmesh
|
||||
// Renderer::QuadMesh->SetMaterial(previousMaterial);
|
||||
Renderer::QuadMesh->SetMaterial(previousMaterial);
|
||||
|
||||
// Skinned mesh at the end because we switch shader
|
||||
gBufferSkinnedMeshShader->Bind();
|
||||
|
||||
@@ -56,8 +56,8 @@ p = j[#p]; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define SERIALIZE_OBJECT(v) j[#v] = v->Serialize();
|
||||
#define SERIALIZE_OBJECT_REF(v) j[#v] = v.Serialize();
|
||||
#define SERIALIZE_OBJECT(v) j[#v] = v->Serialize();
|
||||
#define SERIALIZE_OBJECT_REF(v) j[#v] = v.Serialize();
|
||||
#define SERIALIZE_OBJECT_REF_LBL(lbl, v) j[lbl] = v.Serialize();
|
||||
#define END_SERIALIZE() return j;
|
||||
#define DUMP_SERIALIZE() j.dump(4);
|
||||
|
||||
@@ -34,6 +34,7 @@ void UIResource::Draw()
|
||||
{
|
||||
framebuffer->Bind();
|
||||
{
|
||||
RenderCommand::SetClearColor({ 0, 0, 0, 0 });
|
||||
RenderCommand::Clear();
|
||||
|
||||
if (canvas)
|
||||
|
||||
@@ -19,12 +19,14 @@ namespace Nuake
|
||||
{
|
||||
BEGIN_SERIALIZE();
|
||||
SERIALIZE_VAL(UIFilePath);
|
||||
SERIALIZE_VAL(IsWorldSpace);
|
||||
END_SERIALIZE();
|
||||
}
|
||||
|
||||
bool Deserialize(const json& j)
|
||||
{
|
||||
DESERIALIZE_VAL(UIFilePath);
|
||||
DESERIALIZE_VAL(IsWorldSpace);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "InputManager.h"
|
||||
#include "src/Core/Input.h"
|
||||
|
||||
#include <src/Window.h>
|
||||
|
||||
@@ -16,45 +17,39 @@ namespace Nuake
|
||||
{
|
||||
mWindow = window.GetHandle();
|
||||
|
||||
glfwSetScrollCallback(mWindow, MyInputManager::scroll_callback);
|
||||
glfwSetCharCallback(mWindow, MyInputManager::char_callback);
|
||||
glfwSetKeyCallback(mWindow, MyInputManager::key_callback);
|
||||
//glfwSetScrollCallback(mWindow, MyInputManager::scroll_callback);
|
||||
//glfwSetCharCallback(mWindow, MyInputManager::char_callback);
|
||||
//glfwSetKeyCallback(mWindow, MyInputManager::key_callback);
|
||||
}
|
||||
|
||||
bool IsMouseInputDown() override
|
||||
{
|
||||
auto state = glfwGetMouseButton(mWindow, GLFW_MOUSE_BUTTON_1);
|
||||
return state == GLFW_PRESS;
|
||||
return Input::IsMouseButtonDown(1);
|
||||
}
|
||||
|
||||
bool IsKeyPressed(uint32_t key) override
|
||||
{
|
||||
auto states = glfwGetKey(mWindow, key);
|
||||
return states == GLFW_PRESS;
|
||||
return Input::IsKeyPressed((Nuake::Key)key);
|
||||
}
|
||||
|
||||
float GetMouseX() override
|
||||
{
|
||||
double xpos, ypos;
|
||||
glfwGetCursorPos(mWindow, &xpos, &ypos);
|
||||
return (float)xpos;
|
||||
return Input::GetMouseX();
|
||||
}
|
||||
|
||||
float GetMouseY() override
|
||||
{
|
||||
double xpos, ypos;
|
||||
glfwGetCursorPos(mWindow, &xpos, &ypos);
|
||||
return (float)ypos;
|
||||
return Input::GetMouseY();
|
||||
}
|
||||
|
||||
float GetScrollX() override
|
||||
{
|
||||
return ScrollX;
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
float GetScrollY() override
|
||||
{
|
||||
return ScrollY;
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
static void scroll_callback(GLFWwindow* window, double xoffset, double yoffset)
|
||||
|
||||
Reference in New Issue
Block a user