From 4039d16df0ae3343053e82d1bb05a16e807f4ab2 Mon Sep 17 00:00:00 2001 From: SirLynix Date: Wed, 27 Dec 2023 17:13:50 +0100 Subject: [PATCH] Graphics/Camera: Fix camera copy / movement by assignation --- include/Nazara/Graphics/Camera.inl | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Graphics/Camera.inl b/include/Nazara/Graphics/Camera.inl index 83ce6b067..4f2607fd1 100644 --- a/include/Nazara/Graphics/Camera.inl +++ b/include/Nazara/Graphics/Camera.inl @@ -125,33 +125,50 @@ namespace Nz inline Camera& Camera::operator=(const Camera& camera) { m_framePipelinePasses = camera.m_framePipelinePasses; + m_clearColor = camera.m_clearColor; m_fov = camera.m_fov; + m_renderOrder = camera.m_renderOrder; m_projectionType = camera.m_projectionType; m_targetRegion = camera.m_targetRegion; m_viewport = camera.m_viewport; m_size = camera.m_size; + m_renderMask = camera.m_renderMask; m_aspectRatio = camera.m_aspectRatio; m_zFar = camera.m_zFar; m_zNear = camera.m_zNear; UpdateTarget(camera.m_renderTarget); + if (m_renderTarget) + UpdateViewport(); + else + UpdateViewport(m_viewport); + return *this; } inline Camera& Camera::operator=(Camera&& camera) noexcept { m_framePipelinePasses = std::move(camera.m_framePipelinePasses); + m_clearColor = camera.m_clearColor; m_fov = camera.m_fov; + m_renderOrder = camera.m_renderOrder; m_projectionType = camera.m_projectionType; m_targetRegion = camera.m_targetRegion; m_viewport = camera.m_viewport; m_size = camera.m_size; + m_renderMask = camera.m_renderMask; m_aspectRatio = camera.m_aspectRatio; m_zFar = camera.m_zFar; m_zNear = camera.m_zNear; - UpdateTarget(camera.m_renderTarget); + UpdateTarget(std::move(camera.m_renderTarget)); + camera.UpdateTarget({}); + + if (m_renderTarget) + UpdateViewport(); + else + UpdateViewport(m_viewport); return *this; }