From e8bbb755c3828b17c83e8405ca0679f5d8dc344f Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 17 May 2013 06:21:59 -0700 Subject: [PATCH] Play the left-arm torch animation when it's equipped --- apps/openmw/mwmechanics/character.cpp | 11 +++++++++++ apps/openmw/mwmechanics/character.hpp | 1 + apps/openmw/mwrender/characterpreview.cpp | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 75a68aee0..31ba83392 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -441,6 +441,17 @@ void CharacterController::update(float duration, Movement &movement) } } } + + MWWorld::ContainerStoreIterator torch = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedLeft); + if(torch != inv.end() && torch->getTypeName() == typeid(ESM::Light).name()) + { + if(!mAnimation->isPlaying("torch")) + mAnimation->play("torch", Priority_Torch, + MWRender::Animation::Group_LeftArm, false, + "start", "stop", 0.0f, (~(size_t)0)); + } + else if(mAnimation->isPlaying("torch")) + mAnimation->disable("torch"); } } diff --git a/apps/openmw/mwmechanics/character.hpp b/apps/openmw/mwmechanics/character.hpp index 49df43d99..7ffefab47 100644 --- a/apps/openmw/mwmechanics/character.hpp +++ b/apps/openmw/mwmechanics/character.hpp @@ -18,6 +18,7 @@ class Movement; enum Priority { Priority_Default, Priority_Weapon, + Priority_Torch, Priority_Death, diff --git a/apps/openmw/mwrender/characterpreview.cpp b/apps/openmw/mwrender/characterpreview.cpp index ba21528e0..c931c8e00 100644 --- a/apps/openmw/mwrender/characterpreview.cpp +++ b/apps/openmw/mwrender/characterpreview.cpp @@ -175,6 +175,16 @@ namespace MWRender mAnimation->play(mCurrentAnimGroup, 1, Animation::Group_All, false, "start", "stop", 0.0f, 0); } + MWWorld::ContainerStoreIterator torch = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedLeft); + if(torch != inv.end() && torch->getTypeName() == typeid(ESM::Light).name()) + { + if(!mAnimation->getInfo("torch")) + mAnimation->play("torch", 2, MWRender::Animation::Group_LeftArm, false, + "start", "stop", 0.0f, (~(size_t)0)); + } + else if(mAnimation->getInfo("torch")) + mAnimation->disable("torch"); + mAnimation->forceUpdate(); mAnimation->runAnimation(0.0f);