1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-05 06:40:09 +00:00

Consolidate refreshJumpAnims

This commit is contained in:
Alexei Kotov 2022-06-13 12:59:18 +03:00
parent ab46337c41
commit a105ba14e4

View File

@ -337,15 +337,20 @@ void CharacterController::refreshJumpAnims(const std::string& weapShortGroup, Ju
if (!force && jump == mJumpState && idle == CharState_None) if (!force && jump == mJumpState && idle == CharState_None)
return; return;
std::string jumpAnimName; if (jump == JumpState_None)
{
if (!mCurrentJump.empty())
{
mAnimation->disable(mCurrentJump);
mCurrentJump.clear();
}
mJumpState = JumpState_None;
return;
}
std::string jumpAnimName = "jump" + weapShortGroup;
MWRender::Animation::BlendMask jumpmask = MWRender::Animation::BlendMask_All; MWRender::Animation::BlendMask jumpmask = MWRender::Animation::BlendMask_All;
if (jump != JumpState_None) if (!weapShortGroup.empty() && !mAnimation->hasAnimation(jumpAnimName))
{
jumpAnimName = "jump";
if(!weapShortGroup.empty())
{
jumpAnimName += weapShortGroup;
if(!mAnimation->hasAnimation(jumpAnimName))
{ {
jumpAnimName = fallbackShortWeaponGroup("jump", &jumpmask); jumpAnimName = fallbackShortWeaponGroup("jump", &jumpmask);
@ -354,8 +359,6 @@ void CharacterController::refreshJumpAnims(const std::string& weapShortGroup, Ju
if (jumpmask == MWRender::Animation::BlendMask_LowerBody && idle == CharState_None) if (jumpmask == MWRender::Animation::BlendMask_LowerBody && idle == CharState_None)
idle = CharState_Idle; idle = CharState_Idle;
} }
}
}
if (!force && jump == mJumpState) if (!force && jump == mJumpState)
return; return;
@ -369,24 +372,14 @@ void CharacterController::refreshJumpAnims(const std::string& weapShortGroup, Ju
mCurrentJump.clear(); mCurrentJump.clear();
} }
if (!mAnimation->hasAnimation(jumpAnimName))
return;
mCurrentJump = jumpAnimName;
if(mJumpState == JumpState_InAir) if(mJumpState == JumpState_InAir)
{ mAnimation->play(jumpAnimName, Priority_Jump, jumpmask, false, 1.0f, startAtLoop ? "loop start" : "start", "stop", 0.f, ~0ul);
if (mAnimation->hasAnimation(jumpAnimName))
{
mAnimation->play(jumpAnimName, Priority_Jump, jumpmask, false,
1.0f, startAtLoop ? "loop start" : "start", "stop", 0.f, ~0ul);
mCurrentJump = jumpAnimName;
}
}
else if (mJumpState == JumpState_Landing) else if (mJumpState == JumpState_Landing)
{ mAnimation->play(jumpAnimName, Priority_Jump, jumpmask, true, 1.0f, "loop stop", "stop", 0.0f, 0);
if (mAnimation->hasAnimation(jumpAnimName))
{
mAnimation->play(jumpAnimName, Priority_Jump, jumpmask, true,
1.0f, "loop stop", "stop", 0.0f, 0);
mCurrentJump = jumpAnimName;
}
}
} }
bool CharacterController::onOpen() const bool CharacterController::onOpen() const