Merge pull request #551 from MihailRis/fix-zoom
fix player camera zoom (fix #550)
This commit is contained in:
commit
a8e521c780
@ -125,18 +125,21 @@ glm::vec3 CameraControl::updateCameraShaking(
|
||||
return offset;
|
||||
}
|
||||
|
||||
void CameraControl::updateFovEffects(
|
||||
const Hitbox& hitbox, PlayerInput input, float delta
|
||||
void CameraControl::updateFov(
|
||||
const Hitbox& hitbox, PlayerInput input, float delta, bool effects
|
||||
) {
|
||||
bool crouch = input.shift && hitbox.grounded && !input.sprint;
|
||||
|
||||
float dt = fmin(1.0f, delta * ZOOM_SPEED);
|
||||
float zoomValue = 1.0f;
|
||||
if (crouch) {
|
||||
offset += glm::vec3(0.f, CROUCH_SHIFT_Y, 0.f);
|
||||
zoomValue = CROUCH_ZOOM;
|
||||
} else if (input.sprint && (input.moveForward || input.moveBack || input.moveLeft || input.moveRight)) {
|
||||
zoomValue = RUN_ZOOM;
|
||||
if (effects) {
|
||||
if (crouch) {
|
||||
offset += glm::vec3(0.f, CROUCH_SHIFT_Y, 0.f);
|
||||
zoomValue = CROUCH_ZOOM;
|
||||
} else if (input.sprint && (input.moveForward || input.moveBack ||
|
||||
input.moveLeft || input.moveRight)) {
|
||||
zoomValue = RUN_ZOOM;
|
||||
}
|
||||
}
|
||||
if (input.zoom) zoomValue *= C_ZOOM;
|
||||
camera->zoom = zoomValue * dt + camera->zoom * (1.0f - dt);
|
||||
@ -176,9 +179,7 @@ void CameraControl::update(
|
||||
if (!input.cheat) {
|
||||
offset += updateCameraShaking(*hitbox, delta);
|
||||
}
|
||||
if (settings.fovEffects.get()) {
|
||||
updateFovEffects(*hitbox, input, delta);
|
||||
}
|
||||
updateFov(*hitbox, input, delta, settings.fovEffects.get());
|
||||
}
|
||||
if (input.cameraMode) {
|
||||
switchCamera();
|
||||
|
||||
@ -32,10 +32,13 @@ class CameraControl {
|
||||
/// @return camera offset
|
||||
glm::vec3 updateCameraShaking(const Hitbox& hitbox, float delta);
|
||||
|
||||
/// @brief Update field-of-view effects
|
||||
/// @brief Update field-of-view
|
||||
/// @param input player inputs
|
||||
/// @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
|
||||
void switchCamera();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user