Merge pull request #551 from MihailRis/fix-zoom

fix player camera zoom (fix #550)
This commit is contained in:
MihailRis 2025-07-14 23:40:16 +03:00 committed by GitHub
commit a8e521c780
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 12 deletions

View File

@ -125,19 +125,22 @@ glm::vec3 CameraControl::updateCameraShaking(
return offset; return offset;
} }
void CameraControl::updateFovEffects( void CameraControl::updateFov(
const Hitbox& hitbox, PlayerInput input, float delta const Hitbox& hitbox, PlayerInput input, float delta, bool effects
) { ) {
bool crouch = input.shift && hitbox.grounded && !input.sprint; bool crouch = input.shift && hitbox.grounded && !input.sprint;
float dt = fmin(1.0f, delta * ZOOM_SPEED); float dt = fmin(1.0f, delta * ZOOM_SPEED);
float zoomValue = 1.0f; float zoomValue = 1.0f;
if (effects) {
if (crouch) { if (crouch) {
offset += glm::vec3(0.f, CROUCH_SHIFT_Y, 0.f); offset += glm::vec3(0.f, CROUCH_SHIFT_Y, 0.f);
zoomValue = CROUCH_ZOOM; zoomValue = CROUCH_ZOOM;
} else if (input.sprint && (input.moveForward || input.moveBack || input.moveLeft || input.moveRight)) { } else if (input.sprint && (input.moveForward || input.moveBack ||
input.moveLeft || input.moveRight)) {
zoomValue = RUN_ZOOM; zoomValue = RUN_ZOOM;
} }
}
if (input.zoom) zoomValue *= C_ZOOM; if (input.zoom) zoomValue *= C_ZOOM;
camera->zoom = zoomValue * dt + camera->zoom * (1.0f - dt); camera->zoom = zoomValue * dt + camera->zoom * (1.0f - dt);
} }
@ -176,9 +179,7 @@ void CameraControl::update(
if (!input.cheat) { if (!input.cheat) {
offset += updateCameraShaking(*hitbox, delta); offset += updateCameraShaking(*hitbox, delta);
} }
if (settings.fovEffects.get()) { updateFov(*hitbox, input, delta, settings.fovEffects.get());
updateFovEffects(*hitbox, input, delta);
}
} }
if (input.cameraMode) { if (input.cameraMode) {
switchCamera(); switchCamera();

View File

@ -32,10 +32,13 @@ class CameraControl {
/// @return camera offset /// @return camera offset
glm::vec3 updateCameraShaking(const Hitbox& hitbox, float delta); glm::vec3 updateCameraShaking(const Hitbox& hitbox, float delta);
/// @brief Update field-of-view effects /// @brief Update field-of-view
/// @param input player inputs /// @param input player inputs
/// @param delta delta time /// @param delta delta time
void updateFovEffects(const Hitbox& hitbox, PlayerInput input, float delta); /// @param effects movement-related effects
void updateFov(
const Hitbox& hitbox, PlayerInput input, float delta, bool effects
);
/// @brief Switch active player camera /// @brief Switch active player camera
void switchCamera(); void switchCamera();