use SlotGuard

This commit is contained in:
2025-08-06 14:13:38 +02:00
parent 079d653405
commit 0d9e5b647f
3 changed files with 10 additions and 14 deletions

View File

@@ -4,6 +4,7 @@
#include <td/render/Camera.h>
#include <td/render/loader/GLLoader.h>
#include <td/render/shader/CameraShaderProgram.h>
#include <td/misc/SlotGuard.h>
namespace td {
namespace render {
@@ -17,7 +18,7 @@ class BasicRenderer {
};
template <typename TShader>
class Renderer : public BasicRenderer {
class Renderer : public BasicRenderer, public utils::SlotGuard {
protected:
std::unique_ptr<TShader> m_Shader;
Camera& m_Camera;
@@ -62,12 +63,12 @@ class RenderPipeline {
template <typename TShader>
Renderer<TShader>::Renderer(Camera& a_Camera) : m_Shader(std::make_unique<TShader>()), m_Camera(a_Camera) {
a_Camera.OnPerspectiveChange.Connect([this]() {
Connect(a_Camera.OnPerspectiveChange, [this](){
m_Shader->Start();
m_Shader->SetProjectionMatrix(m_Camera.GetProjectionMatrix());
});
a_Camera.OnViewChange.Connect([this]() {
Connect(a_Camera.OnViewChange, [this]() {
m_Shader->Start();
m_Shader->SetViewMatrix(m_Camera.GetViewMatrix());
});