mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-03 13:09:40 +00:00
Use the skeleton from the NPC's set model (bug #4747)
This commit is contained in:
parent
c5176321ee
commit
6660f2f8e6
2 changed files with 12 additions and 9 deletions
|
@ -14,6 +14,7 @@
|
||||||
Bug #4723: ResetActors command works incorrectly
|
Bug #4723: ResetActors command works incorrectly
|
||||||
Bug #4745: Editor: Interior cell lighting field values are not displayed as colors
|
Bug #4745: Editor: Interior cell lighting field values are not displayed as colors
|
||||||
Bug #4746: Non-solid player can't run or sneak
|
Bug #4746: Non-solid player can't run or sneak
|
||||||
|
Bug #4747: Bones are not read from X.NIF file for NPC animation
|
||||||
Bug #4750: Sneaking doesn't work in first person view if the player is in attack ready state
|
Bug #4750: Sneaking doesn't work in first person view if the player is in attack ready state
|
||||||
Bug #4768: Fallback numerical value recovery chokes on invalid arguments
|
Bug #4768: Fallback numerical value recovery chokes on invalid arguments
|
||||||
Bug #4775: Slowfall effect resets player jumping flag
|
Bug #4775: Slowfall effect resets player jumping flag
|
||||||
|
|
|
@ -465,8 +465,12 @@ void NpcAnimation::updateNpcBase()
|
||||||
bool is1stPerson = mViewMode == VM_FirstPerson;
|
bool is1stPerson = mViewMode == VM_FirstPerson;
|
||||||
bool isBeast = (race->mData.mFlags & ESM::Race::Beast) != 0;
|
bool isBeast = (race->mData.mFlags & ESM::Race::Beast) != 0;
|
||||||
|
|
||||||
std::string smodel = SceneUtil::getActorSkeleton(is1stPerson, isFemale, isBeast, isWerewolf);
|
std::string defaultSkeleton = SceneUtil::getActorSkeleton(is1stPerson, isFemale, isBeast, isWerewolf);
|
||||||
smodel = Misc::ResourceHelpers::correctActorModelPath(smodel, mResourceSystem->getVFS());
|
defaultSkeleton = Misc::ResourceHelpers::correctActorModelPath(defaultSkeleton, mResourceSystem->getVFS());
|
||||||
|
|
||||||
|
std::string smodel = defaultSkeleton;
|
||||||
|
if (!is1stPerson && !isWerewolf & !mNpc->mModel.empty())
|
||||||
|
smodel = Misc::ResourceHelpers::correctActorModelPath("meshes\\" + mNpc->mModel, mResourceSystem->getVFS());
|
||||||
|
|
||||||
setObjectRoot(smodel, true, true, false);
|
setObjectRoot(smodel, true, true, false);
|
||||||
|
|
||||||
|
@ -481,15 +485,13 @@ void NpcAnimation::updateNpcBase()
|
||||||
if (smodel != base)
|
if (smodel != base)
|
||||||
addAnimSource(base, smodel);
|
addAnimSource(base, smodel);
|
||||||
|
|
||||||
|
if (smodel != defaultSkeleton && base != defaultSkeleton)
|
||||||
|
addAnimSource(defaultSkeleton, smodel);
|
||||||
|
|
||||||
addAnimSource(smodel, smodel);
|
addAnimSource(smodel, smodel);
|
||||||
|
|
||||||
if(!isWerewolf)
|
if(!isWerewolf && Misc::StringUtils::lowerCase(mNpc->mRace).find("argonian") != std::string::npos)
|
||||||
{
|
addAnimSource("meshes\\xargonian_swimkna.nif", smodel);
|
||||||
if(mNpc->mModel.length() > 0)
|
|
||||||
addAnimSource(Misc::ResourceHelpers::correctActorModelPath("meshes\\" + mNpc->mModel, mResourceSystem->getVFS()), smodel);
|
|
||||||
if(Misc::StringUtils::lowerCase(mNpc->mRace).find("argonian") != std::string::npos)
|
|
||||||
addAnimSource("meshes\\xargonian_swimkna.nif", smodel);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue