From 0ac395b1fb9ffbcf734c547948d4c81561732ed2 Mon Sep 17 00:00:00 2001 From: tovjemam Date: Sun, 14 Jun 2026 00:48:31 +0200 Subject: [PATCH] Disable sprinting when aiming --- src/game/character.cpp | 2 +- src/game/character.hpp | 2 ++ src/game/human_character.cpp | 7 ++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/game/character.cpp b/src/game/character.cpp index 7684e76..dad373e 100644 --- a/src/game/character.cpp +++ b/src/game/character.cpp @@ -272,7 +272,7 @@ void game::Character::UpdateMovement() { walking = true; - if (in_ & (1 << CIN_SPRINT)) + if ((in_ & (1 << CIN_SPRINT)) && can_sprint_) running = true; const bool directional = (movement_ == CMT_DIRECTIONAL); diff --git a/src/game/character.hpp b/src/game/character.hpp index 1f3ce2c..2eff8ea 100644 --- a/src/game/character.hpp +++ b/src/game/character.hpp @@ -100,6 +100,7 @@ public: ~Character() override; protected: + void SetCanSprint(bool can_sprint) { can_sprint_ = can_sprint; } void SetIdleAnim(const std::string& anim_name); void SetWalkAnim(const std::string& anim_name); void SetRunAnim(const std::string& anim_name); @@ -148,6 +149,7 @@ private: // glm::vec3 velocity_ = glm::vec3(0.0f); CharacterInputFlags in_ = 0; + bool can_sprint_ = true; btCapsuleShapeZ bt_shape_; float z_offset_ = 0.0f; // offset of controller from root diff --git a/src/game/human_character.cpp b/src/game/human_character.cpp index 17ed1cd..17e44da 100644 --- a/src/game/human_character.cpp +++ b/src/game/human_character.cpp @@ -254,28 +254,33 @@ void game::HumanCharacter::EnterActionState(ActionState state) if (state_ == HS_ON_FOOT) SetIdleAnim("idle_relaxed"); SetAiming(false); + SetCanSprint(true); PlayActionAnim("rifle_idle"); + SetViewItem("airsniper"); break; case ACTION_AIM: - SetViewItem("airsniper"); SetAiming(true); + SetCanSprint(false); PlayActionAnim("rifle_aim", 3.0f); break; case ACTION_AIMING: SetAiming(true); + SetCanSprint(false); PlayActionAnim("rifle_aiming"); break; case ACTION_FIRE: SetAiming(true); + SetCanSprint(false); PlayActionAnim("rifle_fire"); Fire(); break; case ACTION_UNAIM: SetAiming(false); + SetCanSprint(false); PlayActionAnim("rifle_aim", -3.0f); break;