Added target parameter to Camera

Former-commit-id: a0f27d4a37aba8cfc9a2feba23866e95e7e90ea1
This commit is contained in:
Lynix 2013-03-02 19:09:46 +01:00
parent cd48d70844
commit cdda9706c3
2 changed files with 18 additions and 5 deletions

View File

@ -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;

View File

@ -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;