1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-13 07:14:31 +00:00

Use the actual sneak state to determine visibility of indicator (Fixes #2915)

This commit is contained in:
scrawl 2015-09-16 15:37:36 +02:00
parent 4d94f38f4b
commit 84747fbdd7
3 changed files with 12 additions and 2 deletions

View File

@ -1094,7 +1094,7 @@ namespace MWMechanics
static float sneakTimer = 0.f; // times update of sneak icon static float sneakTimer = 0.f; // times update of sneak icon
// if player is in sneak state see if anyone detects him // if player is in sneak state see if anyone detects him
if (player.getClass().getCreatureStats(player).getMovementFlag(MWMechanics::CreatureStats::Flag_Sneak)) if (playerCharacter && playerCharacter->isSneaking())
{ {
static float sneakSkillTimer = 0.f; // times sneak skill progress from "avoid notice" static float sneakSkillTimer = 0.f; // times sneak skill progress from "avoid notice"

View File

@ -1768,7 +1768,7 @@ void CharacterController::update(float duration)
if(mAnimQueue.empty() || inwater || sneak) if(mAnimQueue.empty() || inwater || sneak)
{ {
idlestate = (inwater ? CharState_IdleSwim : (sneak ? CharState_IdleSneak : CharState_Idle)); idlestate = (inwater ? CharState_IdleSwim : (sneak && !inJump ? CharState_IdleSneak : CharState_Idle));
} }
else if(mAnimQueue.size() > 1) else if(mAnimQueue.size() > 1)
{ {
@ -2048,6 +2048,15 @@ bool CharacterController::isKnockedOut() const
return mHitState == CharState_KnockOut; return mHitState == CharState_KnockOut;
} }
bool CharacterController::isSneaking() const
{
return mIdleState == CharState_IdleSneak ||
mMovementState == CharState_SneakForward ||
mMovementState == CharState_SneakBack ||
mMovementState == CharState_SneakLeft ||
mMovementState == CharState_SneakRight;
}
void CharacterController::setAttackingOrSpell(bool attackingOrSpell) void CharacterController::setAttackingOrSpell(bool attackingOrSpell)
{ {
mAttackingOrSpell = attackingOrSpell; mAttackingOrSpell = attackingOrSpell;

View File

@ -241,6 +241,7 @@ public:
bool isReadyToBlock() const; bool isReadyToBlock() const;
bool isKnockedOut() const; bool isKnockedOut() const;
bool isSneaking() const;
void setAttackingOrSpell(bool attackingOrSpell); void setAttackingOrSpell(bool attackingOrSpell);