From 1e92f8922dc3c936160133f5e9d555d975a2cead Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Tue, 20 Dec 2022 01:05:05 +0800 Subject: [PATCH] [UI][ADD] Camera wasd move --- FinalProject/sceneviewer.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/FinalProject/sceneviewer.cpp b/FinalProject/sceneviewer.cpp index 6d4e4ec..79f0811 100644 --- a/FinalProject/sceneviewer.cpp +++ b/FinalProject/sceneviewer.cpp @@ -477,6 +477,7 @@ void SceneViewer::keyPressEvent(QKeyEvent* event) { Logger::debug("Control pressed"); _controlPressed = true; } + if (event->modifiers() == Qt::NoModifier && _selectedObject != nullptr) { switch (event->key()) { case Qt::Key_W: { @@ -510,6 +511,40 @@ void SceneViewer::keyPressEvent(QKeyEvent* event) { } parentWidget()->update(); } + else if (event->modifiers() == Qt::NoModifier) { + // move camera + switch (event->key()) { + case Qt::Key_W: { + // move a bit forward + glm::vec3 front = _camera.front(); + _camera.push(1.0f); + _rotateCenter += front; + break; + } + case Qt::Key_S: { + // move a bit backward + glm::vec3 front = _camera.front(); + _camera.push(-1.0f); + _rotateCenter -= front; + break; + } + case Qt::Key_A: { + // move a bit left + glm::vec3 right = _camera.right(); + _camera.move(-right * 0.5f); + _rotateCenter -= right * 0.5f; + break; + } + case Qt::Key_D: { + // move a bit right + glm::vec3 right = _camera.right(); + _camera.move(right * 0.5f); + _rotateCenter += right * 0.5f; + break; + } + } + parentWidget()->update(); + } } void SceneViewer::keyReleaseEvent(QKeyEvent* event) {