diff --git a/editor/src/Viewport/SceneViewportCameraController.h b/editor/src/Viewport/SceneViewportCameraController.h index 520d2068..39ff2959 100644 --- a/editor/src/Viewport/SceneViewportCameraController.h +++ b/editor/src/Viewport/SceneViewportCameraController.h @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -94,7 +95,10 @@ public: void ApplyTo(Components::TransformComponent& transform) const { transform.SetPosition(GetPosition()); - transform.LookAt(m_focalPoint); + transform.SetRotation(Math::Quaternion::FromEulerAngles( + -m_pitchDegrees * Math::DEG_TO_RAD, + m_yawDegrees * Math::DEG_TO_RAD, + 0.0f)); } private: diff --git a/tests/editor/test_scene_viewport_camera_controller.cpp b/tests/editor/test_scene_viewport_camera_controller.cpp index 5e653699..0600d268 100644 --- a/tests/editor/test_scene_viewport_camera_controller.cpp +++ b/tests/editor/test_scene_viewport_camera_controller.cpp @@ -34,8 +34,11 @@ TEST(SceneViewportCameraController_Test, ApplyToMatchesComputedPositionAndForwar controller.ApplyTo(*cameraObject.GetTransform()); EXPECT_TRUE(NearlyEqual(cameraObject.GetTransform()->GetPosition(), controller.GetPosition())); - const Vector3 localFocus = cameraObject.GetTransform()->InverseTransformPoint(controller.GetFocalPoint()); - EXPECT_GT(localFocus.z, 0.0f); + EXPECT_TRUE(NearlyEqual( + cameraObject.GetTransform()->GetForward().Normalized(), + controller.GetForward(), + 1e-3f)); + EXPECT_GT(Vector3::Dot(cameraObject.GetTransform()->GetUp().Normalized(), Vector3::Up()), 0.0f); } TEST(SceneViewportCameraController_Test, ApplyInputUpdatesOrbitPanAndZoomState) {