diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-05-18 16:44:29 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-05-18 16:44:29 +1000 |
commit | 4838a92ef39c22533544ce8456b0b6bcec1f12c1 (patch) | |
tree | da752e99a51452c8c3cc14e16bd82469bfe65050 /source/client | |
parent | 8d1c30b3e38c2adfc66897e3e1476a37d4b496e9 (diff) |
make camera free-look framerate-independant
Diffstat (limited to 'source/client')
-rw-r--r-- | source/client/StarClientApplication.cpp | 7 | ||||
-rw-r--r-- | source/client/StarClientApplication.hpp | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp index f79226e..dfe79eb 100644 --- a/source/client/StarClientApplication.cpp +++ b/source/client/StarClientApplication.cpp @@ -1213,12 +1213,13 @@ void ClientApplication::updateCamera(float dt) { const float deadzone = 0.1f; const float panFactor = 1.5f; float cameraSpeedFactor = 30.0f / m_root->configuration()->get("cameraSpeedFactor").toFloat(); + cameraSpeedFactor /= (dt * 60.f); auto playerCameraPosition = m_player->cameraPosition(); if (isActionTaken(InterfaceAction::CameraShift)) { m_snapBackCameraOffset = false; - m_cameraOffsetDownTicks++; + m_cameraOffsetDownTime += dt; Vec2F aim = m_universeClient->worldClient()->geometry().diff(m_mainInterface->cursorWorldPosition(), playerCameraPosition); float magnitude = aim.magnitude() / (triggerRadius / camera.pixelRatio()); @@ -1234,13 +1235,13 @@ void ClientApplication::updateCamera(float dt) { m_cameraYOffset = (m_cameraYOffset * (cameraSpeedFactor - 1.0) + cameraYOffset) / cameraSpeedFactor; } } else { - if ((m_cameraOffsetDownTicks > 0) && (m_cameraOffsetDownTicks < 20)) + if (m_cameraOffsetDownTime > 0.0f && m_cameraOffsetDownTime < 0.333333f) m_snapBackCameraOffset = true; if (m_snapBackCameraOffset) { m_cameraXOffset = (m_cameraXOffset * (cameraSpeedFactor - 1.0)) / cameraSpeedFactor; m_cameraYOffset = (m_cameraYOffset * (cameraSpeedFactor - 1.0)) / cameraSpeedFactor; } - m_cameraOffsetDownTicks = 0; + m_cameraOffsetDownTime = 0.f; } Vec2F newCameraPosition; diff --git a/source/client/StarClientApplication.hpp b/source/client/StarClientApplication.hpp index 8824ea0..5f05657 100644 --- a/source/client/StarClientApplication.hpp +++ b/source/client/StarClientApplication.hpp @@ -126,7 +126,7 @@ private: float m_cameraXOffset = 0.0f; float m_cameraYOffset = 0.0f; bool m_snapBackCameraOffset = false; - int m_cameraOffsetDownTicks = 0; + float m_cameraOffsetDownTime = 0.f; Vec2F m_cameraPositionSmoother; Vec2F m_cameraSmoothDelta; int m_cameraZoomDirection = 0; |