|
|
|
@ -465,8 +465,12 @@ void NpcAnimation::updateNpcBase()
|
|
|
|
|
bool is1stPerson = mViewMode == VM_FirstPerson;
|
|
|
|
|
bool isBeast = (race->mData.mFlags & ESM::Race::Beast) != 0;
|
|
|
|
|
|
|
|
|
|
std::string smodel = SceneUtil::getActorSkeleton(is1stPerson, isFemale, isBeast, isWerewolf);
|
|
|
|
|
smodel = Misc::ResourceHelpers::correctActorModelPath(smodel, mResourceSystem->getVFS());
|
|
|
|
|
std::string defaultSkeleton = SceneUtil::getActorSkeleton(is1stPerson, isFemale, isBeast, isWerewolf);
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
@ -481,15 +485,13 @@ void NpcAnimation::updateNpcBase()
|
|
|
|
|
if (smodel != base)
|
|
|
|
|
addAnimSource(base, smodel);
|
|
|
|
|
|
|
|
|
|
if (smodel != defaultSkeleton && base != defaultSkeleton)
|
|
|
|
|
addAnimSource(defaultSkeleton, smodel);
|
|
|
|
|
|
|
|
|
|
addAnimSource(smodel, smodel);
|
|
|
|
|
|
|
|
|
|
if(!isWerewolf)
|
|
|
|
|
{
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
if(!isWerewolf && Misc::StringUtils::lowerCase(mNpc->mRace).find("argonian") != std::string::npos)
|
|
|
|
|
addAnimSource("meshes\\xargonian_swimkna.nif", smodel);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|