Jittering gone + bugfix: chop animation works!

TODO: fix this unequip stuff
This commit is contained in:
gus 2013-07-16 09:50:59 +01:00
parent f7f23ac5d8
commit f6e3445414

View file

@ -477,16 +477,18 @@ void CharacterController::update(float duration, Movement &movement)
{ {
if(mUpperBodyState == UpperCharState_WeapEquiped) if(mUpperBodyState == UpperCharState_WeapEquiped)
{ {
std::cout << "ATTaquiomg \n";
std::string weapgroup; std::string weapgroup;
getWeaponGroup(mWeaponType, weapgroup); getWeaponGroup(mWeaponType, weapgroup);
mAnimation->play(weapgroup, Priority_Weapon, mAnimation->play(weapgroup, Priority_Weapon,
MWRender::Animation::Group_UpperBody, true, MWRender::Animation::Group_UpperBody, false,
"chop start", "chop min attack", 0.0f, 0); "chop start", "chop min attack", 0.0f, 0);
mUpperBodyState = UpperCharState_ChopStartToMinAttack; mUpperBodyState = UpperCharState_ChopStartToMinAttack;
} }
} }
else if(mUpperBodyState == UpperCharState_ChopMinAttackToMaxAttack) else if(mUpperBodyState == UpperCharState_ChopMinAttackToMaxAttack)
{ {
std::cout << "OMG \n";
std::string weapgroup; std::string weapgroup;
getWeaponGroup(mWeaponType, weapgroup); getWeaponGroup(mWeaponType, weapgroup);
std::string start; std::string start;
@ -498,9 +500,15 @@ void CharacterController::update(float duration, Movement &movement)
std::cout << "BLABLABLA"; std::cout << "BLABLABLA";
mAnimation->disable(weapgroup); mAnimation->disable(weapgroup);
mAnimation->play(weapgroup, Priority_Weapon, mAnimation->play(weapgroup, Priority_Weapon,
MWRender::Animation::Group_UpperBody, true, MWRender::Animation::Group_UpperBody, false,
"chop max attack", "chop min hit", 1-complete, 0); "chop max attack", "chop min hit", 1-complete, 0);
} }
else
{
mAnimation->play(weapgroup, Priority_Weapon,
MWRender::Animation::Group_UpperBody, false,
"chop max attack", "chop min hit", 0, 0);
}
mUpperBodyState = UpperCharState_ChopMaxAttackToMinHit; mUpperBodyState = UpperCharState_ChopMaxAttackToMinHit;
} }
@ -510,33 +518,40 @@ void CharacterController::update(float duration, Movement &movement)
std::string stop; std::string stop;
float complete; float complete;
bool animPlaying = mAnimation->getInfo(weapgroup,&complete,&start,&stop); bool animPlaying = mAnimation->getInfo(weapgroup,&complete,&start,&stop);
std::cout << "update";
if(animPlaying) std::cout << "playing\n";
if(mUpperBodyState == UpperCharState_EquipingWeap && !animPlaying) mUpperBodyState = UpperCharState_WeapEquiped; if(mUpperBodyState == UpperCharState_EquipingWeap && !animPlaying) mUpperBodyState = UpperCharState_WeapEquiped;
if(mUpperBodyState == UpperCharState_UnEquipingWeap && !animPlaying) mUpperBodyState = UpperCharState_Nothing; if(mUpperBodyState == UpperCharState_UnEquipingWeap && !animPlaying) mUpperBodyState = UpperCharState_Nothing;
if(mUpperBodyState == UpperCharState_ChopStartToMinAttack && !animPlaying) if(animPlaying)
{ {
mAnimation->play(weapgroup, Priority_Weapon, if(mUpperBodyState == UpperCharState_ChopStartToMinAttack && complete == 1)
MWRender::Animation::Group_UpperBody, true, {
"chop min attack", "chop max attack",0, 0); mAnimation->disable(weapgroup);
std::cout << "changing 1"; mAnimation->play(weapgroup, Priority_Weapon,
mUpperBodyState = UpperCharState_ChopMinAttackToMaxAttack; MWRender::Animation::Group_UpperBody, false,
} "chop min attack", "chop max attack",0, 0);
if(mUpperBodyState == UpperCharState_ChopMaxAttackToMinHit && !animPlaying) mUpperBodyState = UpperCharState_ChopMinAttackToMaxAttack;
{ }
mAnimation->play(weapgroup, Priority_Weapon, else if(mUpperBodyState == UpperCharState_ChopMaxAttackToMinHit && complete == 1)
MWRender::Animation::Group_UpperBody, true, {
"chop min hit", "chop hit",0, 0); mAnimation->disable(weapgroup);
mUpperBodyState = UpperCharState_ChopMinHitToHit; mAnimation->play(weapgroup, Priority_Weapon,
} MWRender::Animation::Group_UpperBody, false,
if(mUpperBodyState == UpperCharState_ChopMinHitToHit && !animPlaying) "chop min hit", "chop hit",0, 0);
{ mUpperBodyState = UpperCharState_ChopMinHitToHit;
mAnimation->play(weapgroup, Priority_Weapon, }
MWRender::Animation::Group_UpperBody, true, else if(mUpperBodyState == UpperCharState_ChopMinHitToHit && complete == 1)
"chop large follow start", "chop large follow stop",0, 0); {
mUpperBodyState = UpperCharState_ChopLargeFollowStartToLargeFollowStop; mAnimation->disable(weapgroup);
} mAnimation->play(weapgroup, Priority_Weapon,
if(mUpperBodyState == UpperCharState_ChopLargeFollowStartToLargeFollowStop && !animPlaying) MWRender::Animation::Group_UpperBody, false,
{ "chop large follow start", "chop large follow stop",0, 0);
mUpperBodyState = UpperCharState_WeapEquiped; mUpperBodyState = UpperCharState_ChopLargeFollowStartToLargeFollowStop;
}
else if(mUpperBodyState == UpperCharState_ChopLargeFollowStartToLargeFollowStop && complete == 1)
{
mUpperBodyState = UpperCharState_WeapEquiped;
}
} }
MWWorld::ContainerStoreIterator torch = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedLeft); MWWorld::ContainerStoreIterator torch = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedLeft);