fix: correct scene view fly and pan controls
This commit is contained in:
@@ -92,6 +92,8 @@ TEST(SceneViewportCameraController_Test, PanAndZoomUpdateCameraStateConsistently
|
||||
const Vector3 initialPosition = controller.GetPosition();
|
||||
const Vector3 initialFocus = controller.GetFocalPoint();
|
||||
const float initialDistance = controller.GetDistance();
|
||||
const Vector3 right = Vector3::Normalize(Vector3::Cross(Vector3::Up(), controller.GetForward()));
|
||||
const Vector3 up = Vector3::Normalize(Vector3::Cross(controller.GetForward(), right));
|
||||
|
||||
SceneViewportCameraInputState input = {};
|
||||
input.viewportHeight = 720.0f;
|
||||
@@ -103,6 +105,10 @@ TEST(SceneViewportCameraController_Test, PanAndZoomUpdateCameraStateConsistently
|
||||
EXPECT_FALSE(NearlyEqual(controller.GetPosition(), initialPosition));
|
||||
EXPECT_FALSE(NearlyEqual(controller.GetFocalPoint(), initialFocus));
|
||||
EXPECT_LT(controller.GetDistance(), initialDistance);
|
||||
const Vector3 panDelta = controller.GetFocalPoint() - initialFocus;
|
||||
EXPECT_NEAR(Vector3::Dot(panDelta, controller.GetForward()), 0.0f, 1e-3f);
|
||||
EXPECT_GT(std::abs(Vector3::Dot(panDelta, right)), 0.0f);
|
||||
EXPECT_GT(std::abs(Vector3::Dot(panDelta, up)), 0.0f);
|
||||
EXPECT_TRUE(NearlyEqual(
|
||||
controller.GetFocalPoint(),
|
||||
controller.GetPosition() + controller.GetForward() * controller.GetDistance(),
|
||||
@@ -116,6 +122,8 @@ TEST(SceneViewportCameraController_Test, FlyInputMovesCameraAndFocalPointTogethe
|
||||
const Vector3 initialPosition = controller.GetPosition();
|
||||
const Vector3 initialFocus = controller.GetFocalPoint();
|
||||
const Vector3 initialOffset = initialFocus - initialPosition;
|
||||
const Vector3 forward = controller.GetForward();
|
||||
const Vector3 right = Vector3::Normalize(Vector3::Cross(Vector3::Up(), forward));
|
||||
|
||||
SceneViewportCameraInputState input = {};
|
||||
input.viewportHeight = 720.0f;
|
||||
@@ -126,6 +134,9 @@ TEST(SceneViewportCameraController_Test, FlyInputMovesCameraAndFocalPointTogethe
|
||||
|
||||
EXPECT_FALSE(NearlyEqual(controller.GetPosition(), initialPosition));
|
||||
EXPECT_FALSE(NearlyEqual(controller.GetFocalPoint(), initialFocus));
|
||||
const Vector3 positionDelta = controller.GetPosition() - initialPosition;
|
||||
EXPECT_GT(std::abs(Vector3::Dot(positionDelta, forward)), 0.0f);
|
||||
EXPECT_GT(std::abs(Vector3::Dot(positionDelta, right)), 0.0f);
|
||||
EXPECT_TRUE(NearlyEqual(controller.GetFocalPoint() - controller.GetPosition(), initialOffset, 1e-3f));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user