Fix sphere winding and viewport middle-pan input

This commit is contained in:
2026-04-06 04:11:00 +08:00
parent 31d14abece
commit 3540dbc94d
4 changed files with 72 additions and 7 deletions

View File

@@ -13,6 +13,8 @@ using XCEngine::Editor::SceneViewportNavigationState;
using XCEngine::Editor::SceneViewportToolMode;
using XCEngine::Editor::SceneViewportToolShortcutRequest;
using XCEngine::Editor::UpdateSceneViewportNavigationState;
using XCEngine::UI::UIPoint;
using XCEngine::UI::UISize;
TEST(SceneViewportNavigationTest, ToolShortcutActionIgnoresShortcutsDuringTextInputOrDrag) {
SceneViewportToolShortcutRequest request = {};
@@ -73,6 +75,19 @@ TEST(SceneViewportNavigationTest, NavigationUpdateBeginsLookAndPanDrags) {
EXPECT_TRUE(panUpdate.beginLeftPanDrag);
EXPECT_TRUE(panUpdate.state.panDragging);
EXPECT_EQ(panUpdate.state.panDragButton, ImGuiMouseButton_Left);
SceneViewportNavigationRequest middlePanRequest = {};
middlePanRequest.hasInteractiveViewport = true;
middlePanRequest.viewportHovered = true;
middlePanRequest.clickedMiddle = true;
middlePanRequest.middleMouseDown = true;
const auto middlePanUpdate = UpdateSceneViewportNavigationState(middlePanRequest);
EXPECT_FALSE(middlePanUpdate.beginLookDrag);
EXPECT_TRUE(middlePanUpdate.beginPanDrag);
EXPECT_FALSE(middlePanUpdate.beginLeftPanDrag);
EXPECT_TRUE(middlePanUpdate.beginMiddlePanDrag);
EXPECT_TRUE(middlePanUpdate.state.panDragging);
EXPECT_EQ(middlePanUpdate.state.panDragButton, ImGuiMouseButton_Middle);
}
TEST(SceneViewportNavigationTest, NavigationUpdateEndsDragsWhenButtonsRelease) {
@@ -105,7 +120,7 @@ TEST(SceneViewportNavigationTest, CaptureFlagsTrackNavigationAndActiveGizmos) {
TEST(SceneViewportNavigationTest, BuildInputRoutesWheelFocusMovementAndMouseDelta) {
SceneViewportInputBuildRequest request = {};
request.viewportSize = ImVec2(640.0f, 360.0f);
request.viewportSize = UISize(640.0f, 360.0f);
request.viewportHovered = true;
request.viewportFocused = true;
request.mouseWheel = 2.0f;
@@ -117,10 +132,10 @@ TEST(SceneViewportNavigationTest, BuildInputRoutesWheelFocusMovementAndMouseDelt
request = {};
request.state.lookDragging = true;
request.viewportSize = ImVec2(640.0f, 360.0f);
request.viewportSize = UISize(640.0f, 360.0f);
request.viewportHovered = true;
request.mouseWheel = 1.5f;
request.mouseDelta = ImVec2(5.0f, -3.0f);
request.mouseDelta = UIPoint(5.0f, -3.0f);
request.fastMove = true;
request.focusSelectionKeyPressed = true;
request.moveForwardKeyDown = true;