diff --git a/include/Nazara/3D/Camera.hpp b/include/Nazara/3D/Camera.hpp index 33485206a..7884b264e 100644 --- a/include/Nazara/3D/Camera.hpp +++ b/include/Nazara/3D/Camera.hpp @@ -34,6 +34,7 @@ class NAZARA_API NzCamera : public NzSceneNode const NzFrustumf& GetFrustum() const; const NzMatrix4f& GetProjectionMatrix() const; nzSceneNodeType GetSceneNodeType() const override; + const NzRenderTarget* GetTarget() const; const NzVector3f& GetUpVector() const; const NzMatrix4f& GetViewMatrix() const; const NzRectf& GetViewport() const; @@ -41,6 +42,7 @@ class NAZARA_API NzCamera : public NzSceneNode float GetZNear() const; void SetFOV(float fov); + void SetTarget(const NzRenderTarget* renderTarget); void SetUpVector(const NzVector3f& upVector); void SetViewport(const NzRectf& viewport); void SetZFar(float zFar); @@ -61,6 +63,7 @@ class NAZARA_API NzCamera : public NzSceneNode mutable NzMatrix4f m_viewMatrix; NzRectf m_viewport; NzVector3f m_upVector; + const NzRenderTarget* m_target; mutable bool m_frustumUpdated; mutable bool m_projectionMatrixUpdated; mutable bool m_viewMatrixUpdated; diff --git a/src/Nazara/3D/Camera.cpp b/src/Nazara/3D/Camera.cpp index 08c8b9e35..76a66f6c7 100644 --- a/src/Nazara/3D/Camera.cpp +++ b/src/Nazara/3D/Camera.cpp @@ -25,18 +25,18 @@ NzCamera::~NzCamera() = default; void NzCamera::Activate() const { - NzRenderTarget* renderTarget = NzRenderer::GetTarget(); - #ifdef NAZARA_3D_SAFE - if (!renderTarget) + if (!m_target) { NazaraError("No render target !"); return; } #endif - unsigned int width = renderTarget->GetWidth(); - unsigned int height = std::max(renderTarget->GetHeight(), 1U); + NzRenderer::SetTarget(m_target); + + unsigned int width = m_target->GetWidth(); + unsigned int height = std::max(m_target->GetHeight(), 1U); float vWidth = width * m_viewport.width; float vHeight = height * m_viewport.height; @@ -126,6 +126,11 @@ nzSceneNodeType NzCamera::GetSceneNodeType() const return nzSceneNodeType_Camera; } +const NzRenderTarget* NzCamera::GetTarget() const +{ + return m_target; +} + const NzVector3f& NzCamera::GetUpVector() const { return m_upVector; @@ -162,6 +167,11 @@ void NzCamera::SetFOV(float fov) m_projectionMatrixUpdated= false; } +void NzCamera::SetTarget(const NzRenderTarget* renderTarget) +{ + m_target = renderTarget; +} + void NzCamera::SetUpVector(const NzVector3f& upVector) { m_upVector = upVector;