From b158ae8a72de4f29f311f649b87b03b40b4981d4 Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Sat, 10 Jan 2026 16:53:35 +0000 Subject: [PATCH] Fix W3DView camera division by zero --- .../Source/W3DDevice/GameClient/W3DView.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp index 9a1d984a4db..9fa2c3b57da 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp @@ -379,8 +379,11 @@ void W3DView::buildCameraTransform( Matrix3D *transform ) // do fxPitch adjustment if (m_useRealZoomCam) { - sourcePos.X = targetPos.X + ((sourcePos.X - targetPos.X) / m_FXPitch); - sourcePos.Y = targetPos.Y + ((sourcePos.Y - targetPos.Y) / m_FXPitch); + if (m_FXPitch != 0.0f) + { + sourcePos.X = targetPos.X + ((sourcePos.X - targetPos.X) / m_FXPitch); + sourcePos.Y = targetPos.Y + ((sourcePos.Y - targetPos.Y) / m_FXPitch); + } } else { @@ -400,8 +403,11 @@ void W3DView::buildCameraTransform( Matrix3D *transform ) } else { - sourcePos.X = targetPos.X + ((sourcePos.X - targetPos.X) / m_FXPitch); - sourcePos.Y = targetPos.Y + ((sourcePos.Y - targetPos.Y) / m_FXPitch); + if (m_FXPitch != 0.0f) + { + sourcePos.X = targetPos.X + ((sourcePos.X - targetPos.X) / m_FXPitch); + sourcePos.Y = targetPos.Y + ((sourcePos.Y - targetPos.Y) / m_FXPitch); + } } #endif } @@ -576,7 +582,7 @@ void W3DView::setCameraTransform( void ) if (m_useRealZoomCam) //WST 10.19.2002 { - if (m_FXPitch<0.95f) + if (m_FXPitch<0.95f && m_FXPitch != 0.0f) { farZ = farZ / m_FXPitch; //Extend far Z when we pitch up for RealZoomCam }