From adf2331ab187cfc862cc2b8268bf059a1b374d69 Mon Sep 17 00:00:00 2001 From: nigelbarink Date: Sun, 23 Oct 2022 14:36:23 +0200 Subject: [PATCH] Render position of the cube based on the transform component, fixed some compile issues with the previous commit --- BarinkEngine/src/Graphics/RenderSurface.h | 2 ++ BarinkEngine/src/Graphics/Renderer.cpp | 6 +++-- BarinkEngine/src/Graphics/Renderer.h | 1 - BarinkEngine/src/Scene/Components.h | 4 ++-- BarinkEngine/src/Scene/Entity.h | 4 ++-- BarinkEngine/src/Scene/TransformTree/Node.cpp | 2 +- BarinkEngine/src/Scene/TransformTree/Node.h | 2 -- SandboxApp/src/Sandbox.cpp | 23 +++++++++++++++++-- 8 files changed, 32 insertions(+), 12 deletions(-) diff --git a/BarinkEngine/src/Graphics/RenderSurface.h b/BarinkEngine/src/Graphics/RenderSurface.h index 0046d7e..545afe9 100644 --- a/BarinkEngine/src/Graphics/RenderSurface.h +++ b/BarinkEngine/src/Graphics/RenderSurface.h @@ -1,5 +1,7 @@ #pragma once #include "../BarinkEngine.h" +#include "../Graphics/Memory/Buffer.h" +#include "../Graphics/Memory/VertexArray.h" #include class RenderSurface { diff --git a/BarinkEngine/src/Graphics/Renderer.cpp b/BarinkEngine/src/Graphics/Renderer.cpp index f344789..3ac0f54 100644 --- a/BarinkEngine/src/Graphics/Renderer.cpp +++ b/BarinkEngine/src/Graphics/Renderer.cpp @@ -1,9 +1,11 @@ #include "Renderer.h" #include "../Scene/Components.h" +#include "../Graphics/Memory/VertexArray.h" +#include "../Graphics/Memory/Buffer.h" #include float Angle = 0.0; -Camera cam = Camera(glm::vec3(16.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, 0.0f), 90.0f); +Camera cam = Camera(glm::vec3(12.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, 0.0f), 90.0f); glm::mat4 projection = glm::perspective(glm::radians(cam.Zoom), (800.0f / 600.0f), 0.001f, 100.0f); BarinkEngine::Renderer::Renderer(){} @@ -56,7 +58,7 @@ void BarinkEngine::Renderer::Render(Scene& scene) renderComponent.shader.setUniformVec3("Color", renderComponent.color); - renderComponent.shader.setUniformMat4("M", glm::mat4(1.0f)); + renderComponent.shader.setUniformMat4("M", trans.transform); renderComponent.shader.setUniformMat4("V", cam.GetViewMatrix()); renderComponent.shader.setUniformMat4("P", projection); diff --git a/BarinkEngine/src/Graphics/Renderer.h b/BarinkEngine/src/Graphics/Renderer.h index dd91238..f9c3366 100644 --- a/BarinkEngine/src/Graphics/Renderer.h +++ b/BarinkEngine/src/Graphics/Renderer.h @@ -9,7 +9,6 @@ #include "Primitives/Camera.h" #include "Renderable.h" -#include "GPUBucket.h" #include "Memory/Framebuffer.h" #include "../Scene/Components.h" diff --git a/BarinkEngine/src/Scene/Components.h b/BarinkEngine/src/Scene/Components.h index f71c703..f098382 100644 --- a/BarinkEngine/src/Scene/Components.h +++ b/BarinkEngine/src/Scene/Components.h @@ -8,13 +8,13 @@ namespace BarinkEngine { }; struct TransformComponent { - glm::mat4& transform = glm::mat4(1.0f); + glm::mat4 transform = glm::mat4(1.0f); }; struct CameraComponent { - glm::mat4& view; + glm::mat4 view; }; diff --git a/BarinkEngine/src/Scene/Entity.h b/BarinkEngine/src/Scene/Entity.h index 18ca19e..4b34657 100644 --- a/BarinkEngine/src/Scene/Entity.h +++ b/BarinkEngine/src/Scene/Entity.h @@ -15,8 +15,8 @@ public: } template - T* GetComponent() { - return m_scene->m_registry.try_get(m_entity); + T& GetComponent() { + return m_scene->m_registry.get(m_entity); } private: diff --git a/BarinkEngine/src/Scene/TransformTree/Node.cpp b/BarinkEngine/src/Scene/TransformTree/Node.cpp index 1b06517..e137d86 100644 --- a/BarinkEngine/src/Scene/TransformTree/Node.cpp +++ b/BarinkEngine/src/Scene/TransformTree/Node.cpp @@ -4,4 +4,4 @@ Node::Node(const std::string& name) : name(name), parent(nullptr), children(std::vector()) {} Group::Group(const std::string& name ) - : Node(name), transform(Transform()) {} + : Node(name) {} diff --git a/BarinkEngine/src/Scene/TransformTree/Node.h b/BarinkEngine/src/Scene/TransformTree/Node.h index 3039714..4f73f0c 100644 --- a/BarinkEngine/src/Scene/TransformTree/Node.h +++ b/BarinkEngine/src/Scene/TransformTree/Node.h @@ -1,7 +1,6 @@ #pragma once #include #include -#include "../../Graphics/Transform.h" class Node { public: @@ -19,6 +18,5 @@ class Node { class Group : public Node { public: Group(const std::string& name); - Transform& transform; }; diff --git a/SandboxApp/src/Sandbox.cpp b/SandboxApp/src/Sandbox.cpp index c96ba23..f53c1f7 100644 --- a/SandboxApp/src/Sandbox.cpp +++ b/SandboxApp/src/Sandbox.cpp @@ -30,10 +30,29 @@ void Start() { renderable = object->renderable; render3DComponent.mesh = *renderable->mesh; + cube.GetComponent() + .transform = glm::rotate(glm::mat4(1.0f), 32.0f, glm::vec3(0.5f,1.0f,0.0f)); + // Create a second cube + + auto cube2 = scene.AddEntity((std::string&)"Cube2"); + auto& cube2Render = cube2.AddComponent(); + cube2Render.mesh = *renderable->mesh; + cube2Render.color = glm::vec3(0.0f, 1.0f, 0.0f); + auto& cube2Trans = cube2.GetComponent(); + cube2Trans.transform = glm::translate( glm::mat4(1.0f), glm::vec3(1.0f,0.0f, 5.0f)); + + renderer.Prepare(scene); + + + } + + + + /* * Runs every frame * - Use to draw Immediate mode graphics (Not meant for HUD's ) @@ -45,9 +64,9 @@ void ImmediateGraphicsDraw() ImGui::Begin("Render edit"); - auto a = cube.GetComponent(); + auto& a = cube.GetComponent(); - ImGui::DragFloat3("Color", &a->color[0], 0.01f, 0.0f, 1.0f); + ImGui::DragFloat3("Color", &a.color[0], 0.01f, 0.0f, 1.0f); ImGui::End();