forked from mirror/openmw-tes3mp
[Client] Reinstate "Merge pull request #1529 from drummyfish/animfix"
This reverts commit2f4cd6b713
and adds back the changes made by45993d3da2
because the OpenMW issue at https://bugs.openmw.org/issues/4250 has been fixed by57257d057f
This commit is contained in:
parent
47a3dc9ff2
commit
bca9c55046
1 changed files with 26 additions and 12 deletions
|
@ -390,21 +390,29 @@ void CharacterController::refreshJumpAnims(const WeaponInfo* weap, JumpingState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mJumpState == JumpState_InAir)
|
if (!mCurrentJump.empty())
|
||||||
{
|
|
||||||
mAnimation->disable(mCurrentJump);
|
|
||||||
mCurrentJump = jumpAnimName;
|
|
||||||
if (mAnimation->hasAnimation("jump"))
|
|
||||||
mAnimation->play(mCurrentJump, Priority_Jump, jumpmask, false,
|
|
||||||
1.0f, (startAtLoop?"loop start":"start"), "stop", 0.0f, ~0ul);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
mAnimation->disable(mCurrentJump);
|
mAnimation->disable(mCurrentJump);
|
||||||
mCurrentJump.clear();
|
mCurrentJump.clear();
|
||||||
if (mAnimation->hasAnimation("jump"))
|
}
|
||||||
|
|
||||||
|
if(mJumpState == JumpState_InAir)
|
||||||
|
{
|
||||||
|
if (mAnimation->hasAnimation(jumpAnimName))
|
||||||
|
{
|
||||||
|
mAnimation->play(jumpAnimName, Priority_Jump, jumpmask, false,
|
||||||
|
1.0f, (startAtLoop?"loop start":"start"), "stop", 0.0f, ~0ul);
|
||||||
|
mCurrentJump = jumpAnimName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (mJumpState == JumpState_Landing)
|
||||||
|
{
|
||||||
|
if (mAnimation->hasAnimation(jumpAnimName))
|
||||||
|
{
|
||||||
mAnimation->play(jumpAnimName, Priority_Jump, jumpmask, true,
|
mAnimation->play(jumpAnimName, Priority_Jump, jumpmask, true,
|
||||||
1.0f, "loop stop", "stop", 0.0f, 0);
|
1.0f, "loop stop", "stop", 0.0f, 0);
|
||||||
|
mCurrentJump = jumpAnimName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1825,7 +1833,6 @@ void CharacterController::update(float duration)
|
||||||
mHasMovedInXY = std::abs(vec.x())+std::abs(vec.y()) > 0.0f;
|
mHasMovedInXY = std::abs(vec.x())+std::abs(vec.y()) > 0.0f;
|
||||||
isrunning = isrunning && mHasMovedInXY;
|
isrunning = isrunning && mHasMovedInXY;
|
||||||
|
|
||||||
|
|
||||||
// advance athletics
|
// advance athletics
|
||||||
if(mHasMovedInXY && mPtr == getPlayer())
|
if(mHasMovedInXY && mPtr == getPlayer())
|
||||||
{
|
{
|
||||||
|
@ -1980,7 +1987,8 @@ void CharacterController::update(float duration)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
jumpstate = JumpState_None;
|
jumpstate = mAnimation->isPlaying(mCurrentJump) ? JumpState_Landing : JumpState_None;
|
||||||
|
|
||||||
vec.z() = 0.0f;
|
vec.z() = 0.0f;
|
||||||
|
|
||||||
inJump = false;
|
inJump = false;
|
||||||
|
@ -2010,9 +2018,15 @@ void CharacterController::update(float duration)
|
||||||
else if(rot.z() != 0.0f && !sneak && !(mPtr == getPlayer() && MWBase::Environment::get().getWorld()->isFirstPerson()))
|
else if(rot.z() != 0.0f && !sneak && !(mPtr == getPlayer() && MWBase::Environment::get().getWorld()->isFirstPerson()))
|
||||||
{
|
{
|
||||||
if(rot.z() > 0.0f)
|
if(rot.z() > 0.0f)
|
||||||
|
{
|
||||||
movestate = inwater ? CharState_SwimTurnRight : CharState_TurnRight;
|
movestate = inwater ? CharState_SwimTurnRight : CharState_TurnRight;
|
||||||
|
mAnimation->disable(mCurrentJump);
|
||||||
|
}
|
||||||
else if(rot.z() < 0.0f)
|
else if(rot.z() < 0.0f)
|
||||||
|
{
|
||||||
movestate = inwater ? CharState_SwimTurnLeft : CharState_TurnLeft;
|
movestate = inwater ? CharState_SwimTurnLeft : CharState_TurnLeft;
|
||||||
|
mAnimation->disable(mCurrentJump);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue