From 120b2c0ffbd56b6db64b7aabf44b907417c6f87a Mon Sep 17 00:00:00 2001 From: codereader Date: Sat, 16 May 2020 08:24:01 +0200 Subject: [PATCH] #5180: Move more camera movement key handling to inner classes --- install/input.xml | 6 ++-- radiant/camera/Camera.cpp | 50 +++++++++++++++++++++++++++++---- radiant/camera/Camera.h | 2 ++ radiant/camera/GlobalCamera.cpp | 18 ++++++++---- 4 files changed, 60 insertions(+), 16 deletions(-) diff --git a/install/input.xml b/install/input.xml index 577d7fe3b3..4593dcdf55 100644 --- a/install/input.xml +++ b/install/input.xml @@ -90,16 +90,14 @@ - - + + - - diff --git a/radiant/camera/Camera.cpp b/radiant/camera/Camera.cpp index 1b4a177811..1e78de6acf 100644 --- a/radiant/camera/Camera.cpp +++ b/radiant/camera/Camera.cpp @@ -350,13 +350,13 @@ void Camera::onForwardKey(ui::KeyEventType eventType) { if (eventType == ui::KeyEventType::KeyPressed) { - if (!freeMoveEnabled) + if (freeMoveEnabled) { - moveForwardDiscrete(); + setMovementFlags(MOVE_FORWARD); } else { - setMovementFlags(MOVE_FORWARD); + moveForwardDiscrete(); } } else if (freeMoveEnabled) @@ -369,13 +369,13 @@ void Camera::onBackwardKey(ui::KeyEventType eventType) { if (eventType == ui::KeyEventType::KeyPressed) { - if (!freeMoveEnabled) + if (freeMoveEnabled) { - moveBackDiscrete(); + setMovementFlags(MOVE_BACK); } else { - setMovementFlags(MOVE_BACK); + moveBackDiscrete(); } } else if (freeMoveEnabled) @@ -384,4 +384,42 @@ void Camera::onBackwardKey(ui::KeyEventType eventType) } } +void Camera::onLeftKey(ui::KeyEventType eventType) +{ + if (eventType == ui::KeyEventType::KeyPressed) + { + if (freeMoveEnabled) + { + setMovementFlags(MOVE_STRAFELEFT); + } + else + { + rotateLeftDiscrete(); + } + } + else if (freeMoveEnabled) + { + clearMovementFlags(MOVE_STRAFELEFT); + } +} + +void Camera::onRightKey(ui::KeyEventType eventType) +{ + if (eventType == ui::KeyEventType::KeyPressed) + { + if (freeMoveEnabled) + { + setMovementFlags(MOVE_STRAFERIGHT); + } + else + { + rotateRightDiscrete(); + } + } + else if (freeMoveEnabled) + { + clearMovementFlags(MOVE_STRAFERIGHT); + } +} + } // namespace diff --git a/radiant/camera/Camera.h b/radiant/camera/Camera.h index a5a0047a51..0e3425b1c1 100644 --- a/radiant/camera/Camera.h +++ b/radiant/camera/Camera.h @@ -114,6 +114,8 @@ class Camera : void onForwardKey(ui::KeyEventType eventType); void onBackwardKey(ui::KeyEventType eventType); + void onLeftKey(ui::KeyEventType eventType); + void onRightKey(ui::KeyEventType eventType); }; // class Camera diff --git a/radiant/camera/GlobalCamera.cpp b/radiant/camera/GlobalCamera.cpp index bc4f44af57..72264e3556 100644 --- a/radiant/camera/GlobalCamera.cpp +++ b/radiant/camera/GlobalCamera.cpp @@ -81,8 +81,8 @@ void GlobalCameraManager::registerCommands() GlobalEventManager().addKeyEvent("CameraMoveForward", std::bind(&GlobalCameraManager::onFreelookMoveForwardKey, this, std::placeholders::_1)); GlobalEventManager().addKeyEvent("CameraMoveBack", std::bind(&GlobalCameraManager::onFreelookMoveBackKey, this, std::placeholders::_1)); - GlobalEventManager().addKeyEvent("CameraFreeMoveLeft", std::bind(&GlobalCameraManager::onFreelookMoveLeftKey, this, std::placeholders::_1)); - GlobalEventManager().addKeyEvent("CameraFreeMoveRight", std::bind(&GlobalCameraManager::onFreelookMoveRightKey, this, std::placeholders::_1)); + GlobalEventManager().addKeyEvent("CameraMoveLeft", std::bind(&GlobalCameraManager::onFreelookMoveLeftKey, this, std::placeholders::_1)); + GlobalEventManager().addKeyEvent("CameraMoveRight", std::bind(&GlobalCameraManager::onFreelookMoveRightKey, this, std::placeholders::_1)); GlobalEventManager().addKeyEvent("CameraFreeMoveUp", std::bind(&GlobalCameraManager::onFreelookMoveUpKey, this, std::placeholders::_1)); GlobalEventManager().addKeyEvent("CameraFreeMoveDown", std::bind(&GlobalCameraManager::onFreelookMoveDownKey, this, std::placeholders::_1)); } @@ -355,9 +355,11 @@ void GlobalCameraManager::onFreelookMoveBackKey(ui::KeyEventType eventType) void GlobalCameraManager::onFreelookMoveLeftKey(ui::KeyEventType eventType) { - CamWndPtr camWnd = getActiveCamWnd(); - if (camWnd == NULL) return; + auto camWnd = getActiveCamWnd(); + if (!camWnd) return; + camWnd->getCamera().onLeftKey(eventType); +#if 0 if (eventType == ui::KeyPressed) { camWnd->getCamera().setMovementFlags(MOVE_STRAFELEFT); @@ -366,13 +368,16 @@ void GlobalCameraManager::onFreelookMoveLeftKey(ui::KeyEventType eventType) { camWnd->getCamera().clearMovementFlags(MOVE_STRAFELEFT); } +#endif } void GlobalCameraManager::onFreelookMoveRightKey(ui::KeyEventType eventType) { - CamWndPtr camWnd = getActiveCamWnd(); - if (camWnd == NULL) return; + auto camWnd = getActiveCamWnd(); + if (!camWnd) return; + camWnd->getCamera().onRightKey(eventType); +#if 0 if (eventType == ui::KeyPressed) { camWnd->getCamera().setMovementFlags(MOVE_STRAFERIGHT); @@ -381,6 +386,7 @@ void GlobalCameraManager::onFreelookMoveRightKey(ui::KeyEventType eventType) { camWnd->getCamera().clearMovementFlags(MOVE_STRAFERIGHT); } +#endif } void GlobalCameraManager::onFreelookMoveUpKey(ui::KeyEventType eventType)