Graphics/Camera: Fix camera copy / movement by assignation

This commit is contained in:
SirLynix 2023-12-27 17:13:50 +01:00
parent b37aaf6173
commit 4039d16df0
1 changed files with 18 additions and 1 deletions

View File

@ -125,33 +125,50 @@ namespace Nz
inline Camera& Camera::operator=(const Camera& camera) inline Camera& Camera::operator=(const Camera& camera)
{ {
m_framePipelinePasses = camera.m_framePipelinePasses; m_framePipelinePasses = camera.m_framePipelinePasses;
m_clearColor = camera.m_clearColor;
m_fov = camera.m_fov; m_fov = camera.m_fov;
m_renderOrder = camera.m_renderOrder;
m_projectionType = camera.m_projectionType; m_projectionType = camera.m_projectionType;
m_targetRegion = camera.m_targetRegion; m_targetRegion = camera.m_targetRegion;
m_viewport = camera.m_viewport; m_viewport = camera.m_viewport;
m_size = camera.m_size; m_size = camera.m_size;
m_renderMask = camera.m_renderMask;
m_aspectRatio = camera.m_aspectRatio; m_aspectRatio = camera.m_aspectRatio;
m_zFar = camera.m_zFar; m_zFar = camera.m_zFar;
m_zNear = camera.m_zNear; m_zNear = camera.m_zNear;
UpdateTarget(camera.m_renderTarget); UpdateTarget(camera.m_renderTarget);
if (m_renderTarget)
UpdateViewport();
else
UpdateViewport(m_viewport);
return *this; return *this;
} }
inline Camera& Camera::operator=(Camera&& camera) noexcept inline Camera& Camera::operator=(Camera&& camera) noexcept
{ {
m_framePipelinePasses = std::move(camera.m_framePipelinePasses); m_framePipelinePasses = std::move(camera.m_framePipelinePasses);
m_clearColor = camera.m_clearColor;
m_fov = camera.m_fov; m_fov = camera.m_fov;
m_renderOrder = camera.m_renderOrder;
m_projectionType = camera.m_projectionType; m_projectionType = camera.m_projectionType;
m_targetRegion = camera.m_targetRegion; m_targetRegion = camera.m_targetRegion;
m_viewport = camera.m_viewport; m_viewport = camera.m_viewport;
m_size = camera.m_size; m_size = camera.m_size;
m_renderMask = camera.m_renderMask;
m_aspectRatio = camera.m_aspectRatio; m_aspectRatio = camera.m_aspectRatio;
m_zFar = camera.m_zFar; m_zFar = camera.m_zFar;
m_zNear = camera.m_zNear; 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; return *this;
} }