diff --git a/include/Engine/Rendering/RenderQueue.h b/include/Engine/Rendering/RenderQueue.h index e6d91f86..6d8962a9 100644 --- a/include/Engine/Rendering/RenderQueue.h +++ b/include/Engine/Rendering/RenderQueue.h @@ -7,6 +7,7 @@ #include "../Common.h" #include "../GLM.h" #include "../Core/Util/Rectangle.h" +#include "../Core/EntityWrapper.h" class Model; class Skeleton; @@ -37,6 +38,9 @@ struct ModelJob : RenderJob unsigned int ShaderID = 0; unsigned int TextureID = 0; + //TODO: RENDERER: Not sure if the best solution for pickingColor to entity link is this + EntityID Entity; + glm::mat4 ModelMatrix; const Texture* DiffuseTexture; const Texture* NormalTexture; diff --git a/include/Engine/Rendering/Renderer.h b/include/Engine/Rendering/Renderer.h index b1b93dc4..387651db 100644 --- a/include/Engine/Rendering/Renderer.h +++ b/include/Engine/Rendering/Renderer.h @@ -9,6 +9,7 @@ #include "../Core/ResourceManager.h" #include "Util/UnorderedMapVec2.h" #include "Util/FrameBuffer.h" +#include "../Core/World.h" class Renderer : public IRenderer { @@ -32,7 +33,7 @@ private: - std::unordered_map m_PickingColorsToModels; + std::unordered_map m_PickingColorsToEntity; //----------------------Functions----------------------// void InitializeWindow(); diff --git a/src/Engine/Rendering/RenderQueueFactory.cpp b/src/Engine/Rendering/RenderQueueFactory.cpp index aadaad64..66be272b 100644 --- a/src/Engine/Rendering/RenderQueueFactory.cpp +++ b/src/Engine/Rendering/RenderQueueFactory.cpp @@ -53,6 +53,9 @@ void RenderQueueFactory::FillModels(World* world, RenderQueue* renderQueue) job.ModelMatrix = model->m_Matrix * ModelMatrix(world, modelC.EntityID); job.Color = color; + //TODO: RENDERER: Not sure if the best solution for pickingColor to entity link is this + job.Entity = modelC.EntityID; + renderQueue->Add(job); } } diff --git a/src/Engine/Rendering/Renderer.cpp b/src/Engine/Rendering/Renderer.cpp index f8b7b1cf..f39580b7 100644 --- a/src/Engine/Rendering/Renderer.cpp +++ b/src/Engine/Rendering/Renderer.cpp @@ -125,10 +125,11 @@ void Renderer::InputUpdate(double dt) // glm::vec3 worldPos = glm::vec3(glm::inverse(m_Camera->ViewMatrix()) * glm::vec4(viewPos, 1.f)); //printf("R: %f, G: %f, Depth: %f\n", color.r, color.g, depth); - printf("view: x: %f, y: %f z: %f, Length: %f\n\n", viewPos.x, viewPos.y, viewPos.z, glm::length(viewPos)); + //printf("view: x: %f, y: %f z: %f, Length: %f\n\n", viewPos.x, viewPos.y, viewPos.z, glm::length(viewPos)); if (color != glm::vec2(0, 0)) { - const Model* pickModel = m_PickingColorsToModels[color]; + EntityID pickedEntity = m_PickingColorsToEntity[color]; + printf("Picked Entity: %i", pickedEntity); } } @@ -237,7 +238,8 @@ void Renderer::PickingPass(RenderQueueCollection& rq) if (modelJob) { glm::vec2 pickColor = glm::vec2(r/255.f, g/255.f); - m_PickingColorsToModels[pickColor] = modelJob->Model; + m_PickingColorsToEntity[pickColor] = modelJob->Entity; + //Render picking stuff //TODO: Kolla upp "header/include/common" shader saken så man slipper skicka in asmycket uniforms