Skip to content

Commit 2158ca4

Browse files
committed
feat: add controller sensitivity settings for free camera controls
1 parent 88f7151 commit 2158ca4

4 files changed

Lines changed: 11 additions & 4 deletions

File tree

config/app.jsonc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,7 @@
575575
{
576576
"type": "Free Camera Controller",
577577
"baseRotationSensitivity": 0.003,
578+
"controllerBaseSensitivity":0.007,
578579
"aimSensitivityMultiplier": 0.5,
579580
"aimFovY": 30,
580581
"aimSpeed": 8.0

src/common/components/free-camera-controller.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ namespace our {
1010
aimSensitivityMultiplier = data.value("aimSensitivityMultiplier", aimSensitivityMultiplier);
1111
aimFovY = data.value("aimFovY", 30.0f) * (glm::pi<float>() / 180.0f);
1212
aimSpeed = data.value("aimSpeed", aimSpeed);
13+
controllerBaseSensitivity = data.value("controllerBaseSensitivity", controllerBaseSensitivity);
1314
}
1415
} // namespace our

src/common/components/free-camera-controller.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ namespace our {
1313
class FreeCameraControllerComponent : public Component {
1414
public:
1515
// The senstivity paramter defined sensitive the camera rotation & fov is to the mouse moves and wheel scrolling
16-
float baseRotationSensitivity = 0.01f; // The angle change per pixel of mouse movement
16+
float baseRotationSensitivity = 0.01f; // The angle change per pixel of mouse movement
17+
float controllerBaseSensitivity = 0.01f; // The angle change per pixel of controller stick movement
1718
float rotationSensitivity = 0.01f;
19+
float controllerSensitivity = 0.01f;
1820
float aimSensitivityMultiplier = 0.5f;
1921

2022
// Aim-down-sight

src/common/systems/free-camera-controller.hpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ namespace our {
6262
}
6363

6464
delta = app->getJoystick().getRightStick();
65-
if (glm::length(delta) > 0.1f) { // deadzone
66-
rotation.x -= delta.y * controller->rotationSensitivity; // The y-axis controls the pitch
67-
rotation.y -= delta.x * controller->rotationSensitivity; // The x-axis controls the yaw
65+
if (glm::length(delta) > 0.1f) { // deadzone
66+
rotation.x -= delta.y * controller->controllerSensitivity; // The y-axis controls the pitch
67+
rotation.y -= delta.x * controller->controllerSensitivity; // The x-axis controls the yaw
6868
}
6969

7070
// We prevent the pitch from exceeding a certain angle from the XZ plane to prevent gimbal locks
@@ -86,9 +86,12 @@ namespace our {
8686
targetFov = controller->aimFovY;
8787
controller->rotationSensitivity =
8888
controller->baseRotationSensitivity * controller->aimSensitivityMultiplier;
89+
controller->controllerSensitivity =
90+
controller->controllerBaseSensitivity * controller->aimSensitivityMultiplier;
8991
} else {
9092
targetFov = baseFov;
9193
controller->rotationSensitivity = controller->baseRotationSensitivity;
94+
controller->controllerSensitivity = controller->controllerBaseSensitivity;
9295
}
9396
camera->fovY = glm::mix(camera->fovY, targetFov, glm::clamp(controller->aimSpeed * deltaTime, 0.0f, 1.0f));
9497
}

0 commit comments

Comments
 (0)