Merge pull request #551 from MihailRis/fix-zoom
fix player camera zoom (fix #550)
This commit is contained in:
commit
a8e521c780
@ -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();
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user