diff --git a/include/Engine/Rendering/PickingPass.h b/include/Engine/Rendering/PickingPass.h index e4ff9e27..eaca4b04 100644 --- a/include/Engine/Rendering/PickingPass.h +++ b/include/Engine/Rendering/PickingPass.h @@ -37,6 +37,7 @@ private: const IRenderer* m_Renderer; ShaderProgram* m_PickingProgram; + Camera* m_Camera; std::unordered_map m_PickingColorsToEntity; diff --git a/src/Engine/Rendering/PickingPass.cpp b/src/Engine/Rendering/PickingPass.cpp index f7f0558c..fbbbd7c0 100644 --- a/src/Engine/Rendering/PickingPass.cpp +++ b/src/Engine/Rendering/PickingPass.cpp @@ -59,6 +59,8 @@ void PickingPass::Draw(RenderFrame& rf) for(auto scene : rf.RenderScenes) { + m_Camera = scene->Camera; + for (auto &job : scene->Forward) { auto modelJob = std::dynamic_pointer_cast(job); @@ -99,8 +101,8 @@ void PickingPass::Draw(RenderFrame& rf) Events::Picking pickEvent = Events::Picking( &m_PickingBuffer, &m_DepthBuffer, - m_Renderer->Camera()->ProjectionMatrix(), - m_Renderer->Camera()->ViewMatrix(), + m_Camera->ProjectionMatrix(), + m_Camera->ViewMatrix(), Rectangle(fbWidth, fbHeight), &m_PickingColorsToEntity); @@ -109,6 +111,8 @@ void PickingPass::Draw(RenderFrame& rf) delete state; } + + void PickingPass::GenerateTexture(GLuint* texture, GLenum wrapping, GLenum filtering, glm::vec2 dimensions, GLint internalFormat, GLint format, GLenum type) const { //TODO: Renderer: Make this in a sparate class diff --git a/src/Engine/Rendering/RenderSystem.cpp b/src/Engine/Rendering/RenderSystem.cpp index 33c03e8f..f385037b 100644 --- a/src/Engine/Rendering/RenderSystem.cpp +++ b/src/Engine/Rendering/RenderSystem.cpp @@ -263,4 +263,5 @@ void RenderSystem::Update(World* world, double dt) rs->Camera = m_Camera; FillModels(&rs->Forward); m_RenderFrame->Add(*rs); + delete rs; } diff --git a/src/Engine/Rendering/Renderer.cpp b/src/Engine/Rendering/Renderer.cpp index 972a6df8..9a7bfd07 100644 --- a/src/Engine/Rendering/Renderer.cpp +++ b/src/Engine/Rendering/Renderer.cpp @@ -92,7 +92,7 @@ void Renderer::Update(double dt) void Renderer::Draw(RenderFrame& rf) { - m_Camera = (*rf.begin())->Camera; + m_Camera = (*rf.begin())->Camera; // Fix this with some better solution m_PickingPass->Draw(rf); glClearColor(255.f / 255, 163.f / 255, 176.f / 255, 1.f);